klun-ui 0.1.16 → 0.1.19

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/CHANGELOG.md CHANGED
@@ -5,6 +5,73 @@ All notable changes to **klun-ui** are documented here. The format follows
5
5
  [Semantic Versioning](https://semver.org/) (pre-1.0: minor/patch bumps may carry
6
6
  small breaking changes).
7
7
 
8
+ ## [0.1.19] — 2026-07-11
9
+
10
+ ### Added
11
+ - **`PageHeader` (navigation) — the standard header band for detail/secondary
12
+ pages.** Breadcrumb + back arrow, a `title` with inline `tags` (StatusBadge /
13
+ CrossRefBadge / severity Chip) and a `subtitle`, right-aligned `extra` actions,
14
+ and an optional docked sub-nav (`tabs` / `activeTab` / `onTabChange`, backed by
15
+ the library's own `Tabs`). `sticky` pins it to a scrolling page. Composes
16
+ `Button` (back) and `Tabs` rather than re-implementing them.
17
+ - **`CrossRefBadge` (data-display) — the `#123` / `!42` / commit cross-reference
18
+ atom.** A `Chip`-based token that reveals a hover card (title · status ·
19
+ assignee · updated time) on hover **and** keyboard focus (Popover is
20
+ click-only), with `Esc`/blur dismissal. `preview` accepts a structured object,
21
+ an arbitrary node, or a `() => Promise<…>` lazy loader (Skeleton placeholder).
22
+ `kind` (`artifact`/`pr`/`commit`/`doc`/`wiki`) drives the leading icon; supports
23
+ `href`/`onClick`, `resolved` (strike-through), and `disabled`.
24
+ - **`DiffViewer` (data-display) — side-by-side / unified code diff.** Accepts
25
+ structured `hunks` or a raw unified `patch` (parsed by the exported
26
+ `parsePatch`); add/remove tinting, dual line-number gutters, `collapsible`
27
+ body, and inline-comment anchors (`comments` keyed by `` `${side}:${lineNo}` ``
28
+ + `onAddComment`). Complements `CodeViewer`, which stays a single-column
29
+ read-only block. `dark` (opt-in) forces a dark surface; the default follows the
30
+ page theme.
31
+
32
+ ### Changed
33
+ - **`StatusBadge` now reaches the full semantic palette.** `StatusTone` gains
34
+ `feature` (purple), `verified` (sky), `stable` (teal), `away` (yellow) and
35
+ `highlighted` (pink), and the built-in vocabulary registers ALM / issue-tracker
36
+ workflow states (`new`, `in-progress`, `in-review`, `verified`, `released`,
37
+ `blocked`, `reopened`, `merged`, …). No change to `Badge`.
38
+ - **Breaking (minor, pre-1.0):** the `verified` status now maps to the new
39
+ `verified`/sky tone instead of `ok`/green — existing `verified` badges change
40
+ from green to sky blue. Pass `tone="ok"` to keep the old green.
41
+
42
+ ## [0.1.18] — 2026-06-29
43
+
44
+ ### Fixed
45
+ - **`Popover` panel no longer gets clipped by scrolling/`overflow:hidden` ancestors.**
46
+ Same treatment as the select family in 0.1.17: the panel now renders in a
47
+ `document.body` portal, positioned with `fixed` coordinates anchored to the
48
+ trigger. It follows the trigger on scroll/resize, flips above when there's no
49
+ room below, is clamped to the viewport, and sits above overlays (z-index 1150)
50
+ — so a popover inside an `overflow:hidden` card (e.g. the admin ticket "view"
51
+ dropdown) opens fully instead of being cut off. Outside-click now treats the
52
+ portaled panel as inside. The `trigger`/`align`/`width`/`children` API is
53
+ unchanged; this also fixes the date pickers (`DatePicker`/`DateRangePicker`/
54
+ `DateTimePicker`), emoji picker and filter bars built on `Popover`.
55
+
56
+ ## [0.1.17] — 2026-06-28
57
+
58
+ ### Fixed
59
+ - **Select dropdowns no longer get clipped by scrolling/`overflow:hidden` ancestors.**
60
+ The custom select family (`Select`, `CompactSelect`, `CompactSelectForInput`,
61
+ `InlineSelect`) now renders its listbox in a `document.body` portal, positioned
62
+ with `fixed` coordinates anchored to the trigger. It follows the trigger on
63
+ scroll/resize, flips above when there's no room below, is clamped to the
64
+ viewport, and sits above overlays (drawers/modals) — so a select inside a
65
+ horizontally-scrolling table or an `overflow:hidden` card opens fully instead
66
+ of being cut off. `TimePicker` keeps its in-flow listbox unchanged.
67
+ `useSelect`'s outside-click now treats the portaled panel as inside.
68
+
69
+ ### Build
70
+ - `scripts/build-css.mjs` now derives the repo root from its own location and
71
+ uses esbuild's Node API instead of spawning `npx esbuild`, so `pnpm build`
72
+ works on Windows (and any machine) — previously it had a hardcoded absolute
73
+ path and failed to spawn `npx`.
74
+
8
75
  ## [0.1.15] — 2026-06-23
9
76
 
10
77
  ### Added