fix(ui): add cursor pointer to buttons and link-buttons - #136
Merged
Merged
Conversation
Every interactive control in ui/src is a native <button> (tab headers,
icon buttons, and link-styled buttons included) - Tailwind v3+ dropped
the preflight cursor:pointer reset for buttons, so they all fell back
to the browser's default arrow cursor on hover.
Adds a single global rule to style.css instead of sprinkling
per-component styles: `button:not(:disabled) { cursor: pointer; }` in
the base layer. :not(:disabled) keeps disabled buttons on their
existing disabled:cursor-not-allowed utility.
Refs #34
Contributor
Coverage
Gate: passed - no coverage regression (epsilon 0.1 pp). |
pmaxhogan
enabled auto-merge (squash)
July 20, 2026 17:35
pmaxhogan
added a commit
that referenced
this pull request
Jul 24, 2026
🤖 I have created a release *beep* *boop* --- ## [2.1.0](v2.0.1...v2.1.0) (2026-07-24) ### Features * **core:** adaptive upload parallelism with throughput probe and disk-saturation gate ([#143](#143)) ([8ecced6](8ecced6)) * **core:** filesystem timestamp-granularity probe with ctime fallback and per-directory gitignore cascade ([#141](#141)) ([344262c](344262c)) * **drive:** support Google Shared Drive destinations end-to-end ([#142](#142)) ([d9c3161](d9c3161)) * **net:** native OS reachability backends with automatic fallback ([#138](#138)) ([319e85f](319e85f)) * **net:** SOCKS5 and PAC proxy support for all outbound connections ([#145](#145)) ([2f0b7d1](2f0b7d1)) * **net:** support a custom corporate root CA for all outbound connections ([#134](#134)) ([929e93d](929e93d)) * per-source toggle to back up OneDrive cloud-only placeholder files ([#133](#133)) ([6863ea3](6863ea3)) * **telemetry:** capture latency percentiles and add rollup query endpoint ([#132](#132)) ([4e9fde6](4e9fde6)) * **telemetry:** preview exactly what a telemetry ping sends ([#139](#139)) ([95fbd9a](95fbd9a)) ### Bug Fixes * **core:** commit file_state for a create that skipped post-upload so the next scan updates instead of re-creating ([#146](#146)) ([f5230d1](f5230d1)) * **deps:** bump tauri-winrt-notification to drop vulnerable quick-xml (closes [#89](#89)) ([#129](#129)) ([232fd8f](232fd8f)) * **telemetry:** exclude pre-schema rows from latency rollup ([#137](#137)) ([1ae6220](1ae6220)) * **ui:** add cursor pointer to buttons and link-buttons ([#136](#136)) ([dbd4809](dbd4809)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every interactive control in
ui/srcis a native<button>(this includes tab headers, icon buttons, and buttons styled to look like links) - Tailwind v3+ dropped the preflightcursor: pointerreset for buttons, so they were all falling back to the browser's default arrow cursor on hover.Approach
Global rule, not per-component: one addition to
ui/src/style.css's@layer base::not(:disabled)keeps disabled buttons on the existingdisabled:cursor-not-allowedTailwind utility already present on the shared button-class constants (primaryButtonClasses/secondaryBtn/destructiveBtnetc. acrossAccountList.vue,SourceTable.vue,Restore.vue,About.vue,Activity.vue,SetupWizard.vue, ...) - both layers cascade correctly since Tailwind'sutilitieslayer always wins overbaseregardless of source order/specificity.No per-component changes were needed: a full sweep of
ui/srcfound no@clickhandlers,role="button", ortabindexoutside of native<button>elements, and the app's only other clickable-looking control (RouterLink, which renders<a href>) already gets a pointer cursor from the browser's default UA stylesheet.<select>and checkbox/toggle inputs were left alone - out of scope (native controls, not reported).Verification
pnpm -C ui lint- clean (only pre-existing i18n unused-key warnings, 0 errors)pnpm -C ui test:unit- 264/265 passing;router-first-run.test.ts's "lands a fresh install on the setup wizard" case timed out under full-suite load but passes cleanly in isolation (pre-existing flake, unrelated to a CSS-only change)pnpm -C ui build(vue-tsc --noEmit && vite build) - clean; confirmed compiled CSS containsbutton:not(:disabled){cursor:pointer}claude-in-chrome, checkinggetComputedStyle(...).cursoron every<button>across Activity, About, Restore, and Setup Wizard: every enabled button reportspointer, every disabled button keeps its prior cursor (not-allowedvia the existing utility, or the browser's disableddefaultwhere no utility applies) - zero regressions, zero visual changes beyond the cursor.Refs #34
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01QZQVP2tUuTLh8oL31D8heC