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:
ClintchizandClaude Opus 5.5 committed 2026-09-30 16:18:13 +05:30
1 parent 5eae6f3b3c
commit 1bed8e4b74
93 files changed
+4439 -1915

No files matched your search

+27 -31
View File
@@ -210,14 +210,16 @@ open: boolean = false
.wrn-drawer__trigger {
appearance: none;
min-height: var(--wrn-control-height, 2.5rem);
padding: 0.65rem 1rem;
padding: 0 0.95rem;
color: var(--wrn-color-primary-contrast);
background: var(--drawer-accent);
border: 0;
background: linear-gradient(180deg, color-mix(in srgb, var(--drawer-accent) 92%, white), var(--drawer-accent));
border: 1px solid color-mix(in srgb, var(--drawer-accent) 82%, black);
border-bottom-color: color-mix(in srgb, var(--drawer-accent) 64%, black);
border-radius: var(--wrn-radius-sm);
box-shadow: var(--wrn-highlight-edge, none), 0 1px 2px color-mix(in srgb, var(--drawer-accent) 30%, transparent);
font: inherit;
font-size: 0.85rem;
font-weight: 650;
font-size: 0.875rem;
font-weight: 600;
cursor: pointer;
}
@@ -255,9 +257,9 @@ open: boolean = false
z-index: 0;
appearance: none;
padding: 0;
background: color-mix(in srgb, black 56%, transparent);
background: rgb(10 11 14 / 0.5);
border: 0;
backdrop-filter: blur(7px);
backdrop-filter: blur(4px);
pointer-events: auto;
}
@@ -274,18 +276,11 @@ open: boolean = false
max-height: 100%;
margin-left: auto;
color: var(--wrn-color-text);
background:
radial-gradient(
circle at 100% 0%,
color-mix(in srgb, var(--drawer-accent) 8%, transparent),
transparent 34%
),
var(--wrn-color-surface-raised);
border-left: 1px solid color-mix(in srgb, var(--drawer-accent) 18%, var(--wrn-color-border));
box-shadow: -28px 0 80px color-mix(in srgb, black 28%, transparent);
background: var(--wrn-color-surface-raised);
border-left: 1px solid var(--wrn-color-border);
box-shadow: var(--wrn-shadow-3);
pointer-events: auto;
overflow: hidden;
/* Slides in from whichever edge the placement puts it on. */
transform: translateX(100%);
transition: transform var(--drawer-duration, 260ms) cubic-bezier(0.32, 0.72, 0, 1);
}
@@ -338,9 +333,9 @@ open: boolean = false
.wrn-drawer[data-placement="left"] .wrn-drawer__panel {
margin-right: auto;
margin-left: 0;
border-right: 1px solid color-mix(in srgb, var(--drawer-accent) 18%, var(--wrn-color-border));
border-right: 1px solid var(--wrn-color-border);
border-left: 0;
box-shadow: 28px 0 80px color-mix(in srgb, black 28%, transparent);
box-shadow: var(--wrn-shadow-3);
}
.wrn-drawer[data-placement="top"] .wrn-drawer__layer,
@@ -354,11 +349,11 @@ open: boolean = false
max-height: min(80vh, 44rem);
margin: 0;
border: 0;
box-shadow: 0 24px 80px color-mix(in srgb, black 28%, transparent);
box-shadow: var(--wrn-shadow-3);
}
.wrn-drawer[data-placement="top"] .wrn-drawer__panel {
border-bottom: 1px solid color-mix(in srgb, var(--drawer-accent) 18%, var(--wrn-color-border));
border-bottom: 1px solid var(--wrn-color-border);
}
.wrn-drawer[data-placement="bottom"] .wrn-drawer__layer {
@@ -366,13 +361,12 @@ open: boolean = false
}
.wrn-drawer[data-placement="bottom"] .wrn-drawer__panel {
border-top: 1px solid color-mix(in srgb, var(--drawer-accent) 18%, var(--wrn-color-border));
border-radius: 1.3rem 1.3rem 0 0;
border-top: 1px solid var(--wrn-color-border);
border-radius: var(--wrn-radius-lg) var(--wrn-radius-lg) 0 0;
}
.wrn-drawer[data-variant="soft"] .wrn-drawer__panel {
background:
linear-gradient(145deg, var(--drawer-soft), transparent 65%),
var(--wrn-color-surface-raised);
}
@@ -400,7 +394,7 @@ open: boolean = false
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 1.35rem 1.35rem 1.1rem;
padding: 1.25rem 1.25rem 1rem;
border-bottom: 1px solid var(--wrn-color-border);
}
@@ -435,14 +429,15 @@ open: boolean = false
}
.wrn-drawer__heading-copy h2 {
font-size: 1.05rem;
font-size: 1.0625rem;
font-weight: 650;
line-height: 1.3;
letter-spacing: -0.015em;
line-height: 1.35;
}
.wrn-drawer__heading-copy p {
color: var(--wrn-color-text-muted);
font-size: 0.8rem;
font-size: 0.8125rem;
line-height: 1.55;
}
@@ -474,8 +469,8 @@ open: boolean = false
.wrn-drawer__close:hover,
.wrn-drawer__close:focus-visible {
color: var(--drawer-accent);
border-color: color-mix(in srgb, var(--drawer-accent) 34%, var(--wrn-color-border));
color: var(--wrn-color-text);
background: var(--wrn-color-surface-muted, var(--wrn-color-surface-soft));
outline: none;
}
@@ -511,8 +506,9 @@ open: boolean = false
}
.wrn-drawer__footer {
padding: 1rem 1.35rem 1.35rem;
padding: 0.875rem 1.25rem;
border-top: 1px solid var(--wrn-color-border);
background: var(--wrn-color-surface-soft, transparent);
}
.wrn-drawer__footer:empty {