diff options
| author | Aaron Iker <[email protected]> | 2026-02-02 01:17:14 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-02 01:17:14 +0100 |
| commit | 377bf7ff21a4f05807c38675ac70cd08fe67b516 (patch) | |
| tree | 018639c6a87c248d2df325f6a32c511d7e9caf15 /packages/ui/src/components/popover.css | |
| parent | b39c1f158f5e78b41edd944dce792a8b602819c1 (diff) | |
| download | opencode-377bf7ff21a4f05807c38675ac70cd08fe67b516.tar.gz opencode-377bf7ff21a4f05807c38675ac70cd08fe67b516.zip | |
feat(ui): Select, dropdown, popover styles & transitions (#11675)
Diffstat (limited to 'packages/ui/src/components/popover.css')
| -rw-r--r-- | packages/ui/src/components/popover.css | 58 |
1 files changed, 46 insertions, 12 deletions
diff --git a/packages/ui/src/components/popover.css b/packages/ui/src/components/popover.css index b49542afd..d200fe8b2 100644 --- a/packages/ui/src/components/popover.css +++ b/packages/ui/src/components/popover.css @@ -15,16 +15,35 @@ transform-origin: var(--kb-popover-content-transform-origin); - &:focus-within { - outline: none; - } + animation: popoverContentHide var(--transition-duration) var(--transition-easing) forwards; - &[data-closed] { - animation: popover-close 0.15s ease-out; + @starting-style { + animation: none; } &[data-expanded] { - animation: popover-open 0.15s ease-out; + pointer-events: auto; + animation: popoverContentShow var(--transition-duration) var(--transition-easing) forwards; + } + + [data-origin-top-right] { + transform-origin: top right; + } + + [data-origin-top-left] { + transform-origin: top left; + } + + [data-origin-bottom-right] { + transform-origin: bottom right; + } + + [data-origin-bottom-left] { + transform-origin: bottom left; + } + + &:focus-within { + outline: none; } [data-slot="popover-header"] { @@ -75,24 +94,39 @@ } } -@keyframes popover-open { +@keyframes popoverContentShow { from { opacity: 0; - transform: scale(0.96); + transform: scaleY(0.95); } to { opacity: 1; - transform: scale(1); + transform: scaleY(1); } } -@keyframes popover-close { +@keyframes popoverContentHide { from { opacity: 1; - transform: scale(1); + transform: scaleY(1); } to { opacity: 0; - transform: scale(0.96); + transform: scaleY(0.95); + } +} + +[data-component="model-popover-content"] { + transform-origin: var(--kb-popper-content-transform-origin); + pointer-events: none; + animation: popoverContentHide var(--transition-duration) var(--transition-easing) forwards; + + @starting-style { + animation: none; + } + + &[data-expanded] { + pointer-events: auto; + animation: popoverContentShow var(--transition-duration) var(--transition-easing) forwards; } } |
