Files
kandev/apps/web
José Almeida d209d2ce2a feat(web): sidebar filter UX polish — align ops, group steps by workflow (#647)
* fix(web): align operator column across sidebar filter rows

Dimension select was `flex-1`, which made the op column drift horizontally
between rows — especially on boolean dimensions where the value input is
omitted. Fix by pinning the dimension and op selects to fixed widths so
only the value column flexes, keeping the middle "is/in/not in" aligned
across every row.

* feat(web): group workflow steps by workflow in sidebar filter dropdowns

The Workflow step filter previously flattened steps from every workflow
into one unlabelled list, making it impossible to tell which workflow a
step belonged to. Tag each step option with its workflow name and render
the single- and multi-select dropdowns with a labelled group + separator
per workflow. Other enum dimensions stay flat (backward-compatible via
an optional `group` field on the option).

* refactor(web): extract shared helper for sidebar filter option groups

Both the single- and multi-select value dropdowns built group buckets
with the same consecutive-key loop, which implicitly assumed options of
the same group arrived back-to-back. Extract a `buildOptionGroups`
helper backed by a Map so the adjacency assumption goes away and the
rendering call sites shrink to one line each. Also include the stable
`option.value` in the cmdk `CommandItem` value so same-titled steps
inside one workflow don't collide on identity/search.

* fix(web): truncate sidebar filter single-select value within popover

The single-select value trigger and the free-text input were `flex-1`
without `min-w-0`, so a long value (e.g. repository slug) pushed the
row wider than the popover and bled the remove button past the right
edge. The multi-select trigger already had `min-w-0`, which is why the
"in" operator rendered correctly. Add `min-w-0` to both so the flex
items can shrink and the built-in SelectValue `line-clamp-1` ellipsis
engages.
2026-04-20 19:32:36 +01:00
..
2026-02-26 23:08:15 +00:00
2026-01-10 11:27:28 +00:00
2026-03-02 08:54:58 +00:00