Repository navigation
fix: keep select text from clipping in Safari - #1636
Conversation
WebKit renders native <select> as a fixed-height menulist that ignores our vertical padding, cutting off the selected text. Add a risu-select class that drops the native appearance and draws a currentColor chevron, falling back to the native arrow in forced-colors mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cubicj
left a comment
There was a problem hiding this comment.
I went through 9499b87 on this. Your before and after screenshots show the clipping gone. With appearance: none the chevron is drawn in currentColor, so it matches each select's text color, and the class covers SelectInput and the four raw selects, which are all the <select> elements in the source.
I rendered the selects in WebKitGTK at each SelectInput size, and the chevron stays inside the reserved right padding without touching the text. pnpm check, pnpm test, and pnpm build are clean on this head.
Approving — thanks for the contribution!
sub-hub
left a comment
There was a problem hiding this comment.
Thanks for the PR.
Dropping the native appearance and drawing the chevron in currentColor fixes the clipping without touching behavior, and the forced-colors fallback keeps an arrow visible in high-contrast mode.


PR Checklist
Summary
In Safari (and other WebKit browsers), dropdowns render with a fixed-height native menulist that ignores the vertical padding, so the selected text is cut off in half. This replaces the native appearance with a custom-drawn arrow so the selects size correctly.
Related Issues
None
Changes
.risu-selectclass instyles.cssthat setsappearance: noneand draws a chevron incurrentColor, with a native-arrow fallback for forced-colors mode.SelectInputand the remaining raw<select>elements.Impact
CSS-only. Dropdowns now show the custom chevron instead of the native arrow in every browser; layout and behavior are otherwise unchanged.
Additional Notes
Tested on a Vercel preview in Safari;
pnpm checkpasses.Footnotes
Modifies the behavior of prompting, requesting, or handling responses from AI models. ↩
Over 80% of the code is AI generated. ↩