summaryrefslogtreecommitdiffhomepage
path: root/packages/web/src/components/share.module.css
diff options
context:
space:
mode:
authorJeremy Osih <[email protected]>2025-06-27 00:38:14 +0200
committerJeremy Osih <[email protected]>2025-06-27 00:38:14 +0200
commite950ad5306944fe1897949dee9573526206a6860 (patch)
tree1e3d4edc25b50664a8764d194f3e10ad770ffc7e /packages/web/src/components/share.module.css
parent5394b5188bf192085891c457d1b054dd0dd93bdc (diff)
downloadopencode-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.css35
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;
+ }
+}