feat(ui): component redesign pass and fixes, release ui 0.8.87
Redesign - Shared field foundation rules (duplicated across 15 form components and emitted globally) are now identical everywhere, so later copies no longer silently override earlier redesigns. - Drawn checkbox and radio controls, white switch thumbs (the thumb was the text colour, a black blob in light mode), recessed field wells, keycap actions in Modal, Drawer, Popover, Toaster, Pagination, Stepper, DataTable. - Menus (Dropdown, ContextMenu, Popover, Select dropdown, Navbar panels) share one flat raised panel with neutral hover rows and mono section labels. - Alerts with an accent rail and icon chip; card headers without the grey band; accordion, collapse, list, list group, timeline, stats, metrics, chat, skeleton, avatar group, clipboard, splitter, section, sidebar, navbar and upload progress restyled. - Chart rebuilt: nice y-axis ticks, gridlines, rounded bars, line and area modes, hover tooltips, hidden series leave the scale. Fixes - Checkbox and radio labels toggle their input again (empty for="" broke it). - TimePicker kept every clicked time pressed; only the chosen hour and minute are pressed now, and nothing is pressed before a value exists. - ColorPicker hex readout now follows the picked colour. - Disabled FileInput no longer shows the native file-input text. - Date and time panels float instead of pushing content. - ContextMenu opened at the pointer closes on scroll. - Drawer left/top/bottom placements slide from their own edge again. - Image-only Card no longer renders an empty body strip. - Timeline supports item.time, current/upcoming states, sizes and compact/alternate variants; showcase demos use distinct variants. - ChatBubble: delivery receipts (sending/sent/delivered/read/failed/error) and meta aligned to its bubble. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5eae6f3b3c
commit
1bed8e4b74
93 files changed
+4439
-1915
No files matched your search
@@ -898,7 +898,7 @@ test("alert exposes configurable radius and elevation treatments", async () => {
|
||||
expect(css).toContain('.wrn-next--alert[data-radius="xl"]');
|
||||
expect(css).toContain('.wrn-next--alert[data-shadow="lg"]');
|
||||
expect(css).toContain("border-radius: calc(var(--wrn-radius, 0.75rem) * 1.75)");
|
||||
expect(css).toContain("0 20px 48px color-mix(in srgb, #000 24%, transparent)");
|
||||
expect(css).toContain("box-shadow: var(--wrn-shadow-3)");
|
||||
});
|
||||
|
||||
test("avatar renders images, fallbacks, presence, badges, tooltips, and media copy", async () => {
|
||||
@@ -1430,7 +1430,7 @@ test("basic fields suppress native popups and render package constraint messages
|
||||
|
||||
const selectSource = readFileSync(uiComponentPath("Select"), "utf8");
|
||||
expect(selectSource).toContain("appearance: none");
|
||||
expect(selectSource).toContain("background-color: var(--wrn-color-surface)");
|
||||
expect(selectSource).toContain("background-color: var(--wrn-color-input-background, var(--wrn-color-surface))");
|
||||
expect(selectSource).toContain("wrn-next__select-indicator");
|
||||
});
|
||||
|
||||
@@ -3854,8 +3854,9 @@ test("chart renders accessible SVG bars and emits point and legend outputs", asy
|
||||
for (const name of ["dataPointClick", "select", "legendToggle"]) {
|
||||
root.addEventListener(name, () => events.push(name));
|
||||
}
|
||||
expect(root.querySelectorAll("svg rect")).toHaveLength(2);
|
||||
(root.querySelector("svg rect") as SVGElement).dispatchEvent(
|
||||
expect(root.querySelectorAll("svg path.wrn-chart__bar")).toHaveLength(2);
|
||||
expect(root.querySelectorAll("button.wrn-chart__hit")).toHaveLength(2);
|
||||
(root.querySelector("button.wrn-chart__hit") as HTMLElement).dispatchEvent(
|
||||
new (dom.window as { Event: typeof Event }).Event("click", { bubbles: true }),
|
||||
);
|
||||
(root.querySelector(".wrn-chart__legend button") as HTMLButtonElement).click();
|
||||
|
||||
Reference in new issue
Block a user