klun-ui 0.1.16 → 0.1.20

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,92 @@ 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.20] — 2026-07-11
9
+
10
+ ### Added
11
+ - **`StatCard` (data-display) — a KPI metric card.** A tinted icon tile
12
+ (`tint` = feature | success | warning | information | error), a `label`, a big
13
+ `value`, and an optional up/down `delta` pill (`trend`). For a bare metric
14
+ without the card surface, use `Statistic`.
15
+ - **`EmptyState` (feedback) — a centered placeholder for empty lists/views.**
16
+ `icon` medallion, `title`, `description` and an `action` slot.
17
+ - **`Result` (feedback) — a full-page outcome screen.** `status` presets
18
+ (success / error / warning / info / 404 / 403 / 500) each supply an icon and
19
+ color (override with a custom `icon`), plus `title`, `subtitle`, an `extra`
20
+ actions row and optional body `children`.
21
+
22
+ These three existed in the legacy inline-style design-system but had never been
23
+ ported to the token-based `src/` package, so they were missing from the npm
24
+ build (and the browser bundle). Now ported to the standard CSS-class + token
25
+ architecture and exported.
26
+
27
+ ## [0.1.19] — 2026-07-11
28
+
29
+ ### Added
30
+ - **`PageHeader` (navigation) — the standard header band for detail/secondary
31
+ pages.** Breadcrumb + back arrow, a `title` with inline `tags` (StatusBadge /
32
+ CrossRefBadge / severity Chip) and a `subtitle`, right-aligned `extra` actions,
33
+ and an optional docked sub-nav (`tabs` / `activeTab` / `onTabChange`, backed by
34
+ the library's own `Tabs`). `sticky` pins it to a scrolling page. Composes
35
+ `Button` (back) and `Tabs` rather than re-implementing them.
36
+ - **`CrossRefBadge` (data-display) — the `#123` / `!42` / commit cross-reference
37
+ atom.** A `Chip`-based token that reveals a hover card (title · status ·
38
+ assignee · updated time) on hover **and** keyboard focus (Popover is
39
+ click-only), with `Esc`/blur dismissal. `preview` accepts a structured object,
40
+ an arbitrary node, or a `() => Promise<…>` lazy loader (Skeleton placeholder).
41
+ `kind` (`artifact`/`pr`/`commit`/`doc`/`wiki`) drives the leading icon; supports
42
+ `href`/`onClick`, `resolved` (strike-through), and `disabled`.
43
+ - **`DiffViewer` (data-display) — side-by-side / unified code diff.** Accepts
44
+ structured `hunks` or a raw unified `patch` (parsed by the exported
45
+ `parsePatch`); add/remove tinting, dual line-number gutters, `collapsible`
46
+ body, and inline-comment anchors (`comments` keyed by `` `${side}:${lineNo}` ``
47
+ + `onAddComment`). Complements `CodeViewer`, which stays a single-column
48
+ read-only block. `dark` (opt-in) forces a dark surface; the default follows the
49
+ page theme.
50
+
51
+ ### Changed
52
+ - **`StatusBadge` now reaches the full semantic palette.** `StatusTone` gains
53
+ `feature` (purple), `verified` (sky), `stable` (teal), `away` (yellow) and
54
+ `highlighted` (pink), and the built-in vocabulary registers ALM / issue-tracker
55
+ workflow states (`new`, `in-progress`, `in-review`, `verified`, `released`,
56
+ `blocked`, `reopened`, `merged`, …). No change to `Badge`.
57
+ - **Breaking (minor, pre-1.0):** the `verified` status now maps to the new
58
+ `verified`/sky tone instead of `ok`/green — existing `verified` badges change
59
+ from green to sky blue. Pass `tone="ok"` to keep the old green.
60
+
61
+ ## [0.1.18] — 2026-06-29
62
+
63
+ ### Fixed
64
+ - **`Popover` panel no longer gets clipped by scrolling/`overflow:hidden` ancestors.**
65
+ Same treatment as the select family in 0.1.17: the panel now renders in a
66
+ `document.body` portal, positioned with `fixed` coordinates anchored to the
67
+ trigger. It follows the trigger on scroll/resize, flips above when there's no
68
+ room below, is clamped to the viewport, and sits above overlays (z-index 1150)
69
+ — so a popover inside an `overflow:hidden` card (e.g. the admin ticket "view"
70
+ dropdown) opens fully instead of being cut off. Outside-click now treats the
71
+ portaled panel as inside. The `trigger`/`align`/`width`/`children` API is
72
+ unchanged; this also fixes the date pickers (`DatePicker`/`DateRangePicker`/
73
+ `DateTimePicker`), emoji picker and filter bars built on `Popover`.
74
+
75
+ ## [0.1.17] — 2026-06-28
76
+
77
+ ### Fixed
78
+ - **Select dropdowns no longer get clipped by scrolling/`overflow:hidden` ancestors.**
79
+ The custom select family (`Select`, `CompactSelect`, `CompactSelectForInput`,
80
+ `InlineSelect`) now renders its listbox in a `document.body` portal, positioned
81
+ with `fixed` coordinates anchored to the trigger. It follows the trigger on
82
+ scroll/resize, flips above when there's no room below, is clamped to the
83
+ viewport, and sits above overlays (drawers/modals) — so a select inside a
84
+ horizontally-scrolling table or an `overflow:hidden` card opens fully instead
85
+ of being cut off. `TimePicker` keeps its in-flow listbox unchanged.
86
+ `useSelect`'s outside-click now treats the portaled panel as inside.
87
+
88
+ ### Build
89
+ - `scripts/build-css.mjs` now derives the repo root from its own location and
90
+ uses esbuild's Node API instead of spawning `npx esbuild`, so `pnpm build`
91
+ works on Windows (and any machine) — previously it had a hardcoded absolute
92
+ path and failed to spawn `npx`.
93
+
8
94
  ## [0.1.15] — 2026-06-23
9
95
 
10
96
  ### Added