Skip to content

style(portal): consistent dropdowns and Activity toolbars - #58

Merged
furqan-debug merged 6 commits into
mainfrom
style/idle-handling-dropdown
Sep 17, 2026
Merged

furqan-debug merged 6 commits into
mainfrom
style/idle-handling-dropdown

Conversation

@mhuzaifa2904

Copy link
Copy Markdown
Collaborator
  • Idle Time Handling was a native <select>, so the browser handed rendering to the operating system — grey rows, a blue selection bar, no dark-mode styling. It was the last one on the member form; every other field there uses FormSelect. Same three stored values (prompt / always / never), now with the app's own dropdown, an icon, the accent on the active row, and a tick beside it.
  • The Screenshots member pill was a pill inside a box. A wrapper <div> drew its own border, background, and 4px of padding, and FilterSelect drew its pill inside that — so the wrapper's surface showed as a ring around the control. The wrapper is gone; FilterSelect draws the whole pill, as on Timesheets and Reports. It is 8px narrower as a result, which was the wrapper's padding.
  • Filter pills flashed gold when opened. isOpen ? "text-primary" on the icon and chevron, and --primary is #FFD700 in dark mode, so an open pill read as a different control from the closed one beside it. Both stay muted now; the chevron still rotates, which is what actually signals the state.
  • App Usage and Screenshots had different toolbars despite sitting next to each other under Activity. App Usage boxed its filter in a fixed min-w-[200px], left the icon uncoloured so it inherited rather than staying muted, and gave the date picker no previous/next arrows — stepping one day meant opening the calendar every time. Both toolbars are now the same markup, verified by diffing them.
  • Renames App Usage's "Every Member" to "All Members." Same option and same id, but the two pages naming it differently read as two different filters. This is the only non-visual change in the PR.

Muhammad Huzaifa and others added 6 commits September 18, 2026 01:06
This was the last native <select> on the member form, so it opened the
operating system's list — grey rows, a blue selection bar, none of the
app's typography, and unstyled in dark mode. Every other field on the
page, Employment Type and Timezone beside it included, uses FormSelect.

Same options and the same three stored values; only the control changes.
It gains what FormSelect already provides: an icon, the accent colour on
the active row, a tick beside it, and click-outside to dismiss.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The member pill had no height, so it sized to its own text and came out
about two pixels shorter than the date pill (h-10) and the refresh button
(40px) either side of it. Three controls in a row, one of them not
matching.

Height only. The width still comes from the content, so the pill is the
same size it was.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
FilterSelect puts `className` on its outer wrapper, not on the trigger, so
the `border-none bg-transparent` this call site passed never reached the
element painting the border. The trigger kept its own border and fill
inside the panel's, which is the doubled, inset look on the Screenshots
toolbar — one pill drawn twice.

A `flush` prop drops the trigger's border and background for the case
where a surrounding panel already provides them. Opt-in and defaulted
off, so the four other FilterSelect call sites are untouched.

Nothing about the size changes: the panel still supplies the same
padding, border and height, and the trigger fills it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
--primary is #FFD700 in dark mode, so isOpen ? "text-primary" turned the
icon and chevron gold the moment the dropdown opened. The open pill read
as a different control from the closed one sitting beside it.

Both stay text-text-muted now. The chevron still rotates, which is what
actually signals the open state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…frame

The Screenshots member filter sat inside a wrapper panel that drew its own
border, background and 4px of padding. FilterSelect then drew its pill
inside that, so the wrapper's surface showed as a ring around it — the
background visible behind the control.

The wrapper is gone. FilterSelect draws the whole pill, as it already does
on Timesheets, Reports and App & URLs, and h-10 keeps it level with the
date pill and the refresh button.

This also retires `flush`, added two commits ago to stop the doubled
border from the other direction. With no wrapper there is nothing to be
flush against, and nothing else used it.

The pill is 8px narrower — that width was the wrapper's padding, which is
the thing being removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The two pages sit next to each other under Activity and had different
controls. App Usage wrapped its member filter in a fixed min-w-[200px]
box, left the icon uncoloured so it inherited rather than staying muted,
and gave the date picker no way to step a day at a time — no arrows, so
moving between days meant opening the calendar every time.

Both controls are now the same markup as Screenshots: a bare FilterSelect
at h-10, and the date pill with its previous/next arrows, the forward one
disabled on today.

Also renames "Every Member" to "All Members". It is the same option, and
the two pages naming it differently read as two different filters.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
trackowl Ready Ready Preview Sep 17, 2026 8:47pm UTC

@furqan-debug
furqan-debug merged commit ed00d65 into main Sep 17, 2026
4 checks passed

This branch was successfully deployed

2 active deployments
Preview – trackowl — 5f0c3487 Deployed Sep 17, 2026 by vercel[bot]
Preview – trackowl-admin — 5f0c3487 Deployed Sep 17, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants