diff options
| author | Jeremy Osih <[email protected]> | 2025-06-27 00:38:14 +0200 |
|---|---|---|
| committer | Jeremy Osih <[email protected]> | 2025-06-27 00:38:14 +0200 |
| commit | e950ad5306944fe1897949dee9573526206a6860 (patch) | |
| tree | 1e3d4edc25b50664a8764d194f3e10ad770ffc7e /packages/web/src/components/share.module.css | |
| parent | 5394b5188bf192085891c457d1b054dd0dd93bdc (diff) | |
| download | opencode-e950ad5306944fe1897949dee9573526206a6860.tar.gz opencode-e950ad5306944fe1897949dee9573526206a6860.zip | |
feat(web): add scroll to last message button
Add intelligent floating scroll button for long conversations that:
- Only appears when scrolling down (direction-aware)
- Auto-hides after 3 seconds of inactivity
- Stays visible on hover to prevent accidental disappearance
- Uses consistent design patterns with repo styling
- Includes proper accessibility features
🤖 Generated with [opencode](https://opencode.ai)
Co-Authored-By: Jeremy Osih <[email protected]>
Co-Authored-By: opencode <[email protected]>
Diffstat (limited to 'packages/web/src/components/share.module.css')
| -rw-r--r-- | packages/web/src/components/share.module.css | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/web/src/components/share.module.css b/packages/web/src/components/share.module.css index 53f082c9b..a52fd1765 100644 --- a/packages/web/src/components/share.module.css +++ b/packages/web/src/components/share.module.css @@ -760,3 +760,38 @@ } } } + +.scrollButton { + position: fixed; + bottom: 2rem; + right: 2rem; + width: 2.5rem; + height: 2.5rem; + border-radius: 0.25rem; + border: 1px solid var(--sl-color-divider); + background-color: var(--sl-color-bg-surface); + color: var(--sl-color-text-secondary); + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + transition: all 0.15s ease, opacity 0.5s ease; + z-index: 100; + appearance: none; + opacity: 1; + + &:hover { + color: var(--sl-color-text); + border-color: var(--sl-color-hairline); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + } + + &:active { + transform: translateY(1px); + } + + svg { + display: block; + } +} |
