@domphy/ui 0.20.8 → 0.20.9

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 ADDED
@@ -0,0 +1,39 @@
1
+ # @domphy/ui Changelog
2
+
3
+ ## 0.20.9
4
+ - Requires @domphy/core >= 0.20.0 (string children are now text by default). Icon glyphs in `tag`, `rating` and `inputPassword` are wrapped in `rawHtml()` so they still render as SVG.
5
+
6
+ ## 0.20.2
7
+ - fix(dialog, drawer): guard `close()`/`showModal()` calls for environments where `HTMLDialogElement` exists but its methods are unimplemented (jsdom) — an unguarded `dlg.close()` in the close fallback timer crashed the test process with an unhandled async error. Metadata: fuller description/keywords, consistent author name.
8
+
9
+ ## 0.1.9
10
+ - Initial release
11
+ ## 0.1.11
12
+ - select patch use backgroundImage for arrow
13
+ ## 0.1.13
14
+ - update core
15
+ - table
16
+ ## 0.1.16
17
+ - chromametry palette
18
+ ## 0.1.17
19
+ - selectable menu
20
+ ## 0.1.20
21
+ - darkBias theme
22
+ ## 0.18.22
23
+ - fix: `popover`/`tooltip`/`selectBox`/`combobox`/`datePicker` (via `utils/floating.ts`) no longer lose outside-click/Escape dismissal after a reactive ancestor re-renders the trigger — migrated off a hand-rolled `WeakMap<Element, ...>` generation-eviction workaround onto `@domphy/core`'s new per-node `behavior()` contract (requires `@domphy/core` ^0.19.0)
24
+ ## 0.18.23
25
+ - fix: republish — 0.18.22 was published with `npm publish`, which leaked the raw `workspace:^` protocol into the tarball's `dependencies`/`peerDependencies` (`ERR_PNPM_WORKSPACE_PKG_NOT_FOUND` for every external consumer); publishing with `pnpm publish` rewrites them to real semver ranges. No code changes.
26
+ ## 0.19.0
27
+ - feat: polished patch defaults — the DEFAULT look of every patch is the de-facto design system, and it was reading "wireframe" (1px `shift-4` outlines everywhere, `density × 1` radius, zero elevation, no transitions). This release addresses that directly, with no breaking changes to existing DOM structure, tags, or props.
28
+ - feat(button): `variant?: "solid" | "outline" | "ghost"` (default `"outline"`, the existing look — backward compatible) and `size?: "small" | "medium" | "large"` (default `"medium"`). `variant: "ghost"` delegates straight to `buttonGhost()` so the two share one implementation.
29
+ - feat(buttonGhost): `size?: "small" | "medium" | "large"` (default `"medium"`), same presets as `button()`.
30
+ - feat: elevation for floating/raised surfaces — shared `elevation(level)` helper (`"low" | "medium" | "high"`, internal `packages/ui/src/utils/elevation.ts`), layered black-alpha box-shadows that work on both themes. Applied to popover/menu/combobox/selectBox-dropdown/datePicker-popup (`"border-strong"` outline + medium shadow), dialog/drawer (high shadow, shadow-only), toast (medium, shadow-only), tooltip (low, shadow-only), fab (low at rest, medium on hover). `combobox`/`selectBox` previously had NO default surface on their dropdown `content` at all (fully transparent until the caller styled it) — they now get the same background/outline/radius/shadow treatment as `popover`.
31
+ - feat: unified `:focus-visible` ring — shared `focusRing(listener, color)` helper (internal `packages/ui/src/utils/focusRing.ts`), a 2px accent-tone halo via `box-shadow`, replacing the previous inconsistent mix (some patches thickened their resting `outline` on focus, others used an inset ring). Applied to `button`, `buttonGhost`, `linkButton`, all `input*` text-like patches, `select`, `textarea`, `segmented`, `tabs`, `toggleGroup`, `rating`, `pagination`. `pagination`/`rating` previously had no visible custom focus indicator at all.
32
+ - feat: hover/press transitions — interactive patches now transition `background-color`/`color`/`outline-color`/`box-shadow` (~140ms ease) instead of snapping between states.
33
+ - feat(theme): control `borderRadius` formula bumped from `density × 1` to `density × 1.5` (matching the precedent already set by `textarea()`) across every bounded-control/floating-panel patch that used the old formula — softer, less boxy corners at default density. Canonical formula documented in `AGENTS.md` and `packages/theme/README.md` updated to match.
34
+ - refactor: adopted the `@domphy/theme` v0.20 semantic tone aliases (`surface`/`hover`/`border`/`border-strong`/`muted`/`text`) across the patches whose raw `shift-N` usage matched an alias's role — swapped only where the number AND the role matched (e.g. a `shift-2` background that is NOT a hover state, or a `shift-4` used as a background fill rather than an outline, was deliberately left as a raw `shift-N`).
35
+ ## 0.20.0
36
+ - feat: layout primitives — `stack()` (vertical flex column + density-aware gap), `row()` (horizontal flex + gap, centered by default, with `align`/`justify`/`wrap`), and `panelSection()` (density-aware padding + optional bottom divider, a thin wrapper meant to compose with `stack()`/`row()` — it does not impose flex layout on its children). Added after an audit of a consumer app found 409 raw `style: {}` blocks re-implementing the same handful of flex shapes across 30 files.
37
+ - refactor(toolbar): `toolbar()` now delegates to `row({ gap, align: "center" })` instead of duplicating the same `display: flex; alignItems: center; gap: ...` style object — no change to its own props or output.
38
+ ## 0.20.1
39
+ - fix(dialog, drawer): a closed dialog/drawer represented its state with ONLY `opacity` (dialog) or an off-screen `transform` (drawer) — neither removes an element from the tab order or the accessibility tree the way `visibility` does, and a consumer's own `style: { display: ... }` on the dialog element overrides the UA stylesheet's `dialog:not([open])` rule too. Both patches now also set `visibility`/`pointerEvents` inline (open = visible/auto, closed = hidden/none), so a closed dialog/drawer's content is never Tab-reachable or screen-reader-visible regardless of what the consumer's own style declares.