summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/cycle-label.css
diff options
context:
space:
mode:
authorAaron Iker <[email protected]>2026-02-02 01:17:14 +0100
committerGitHub <[email protected]>2026-02-02 01:17:14 +0100
commit377bf7ff21a4f05807c38675ac70cd08fe67b516 (patch)
tree018639c6a87c248d2df325f6a32c511d7e9caf15 /packages/ui/src/components/cycle-label.css
parentb39c1f158f5e78b41edd944dce792a8b602819c1 (diff)
downloadopencode-377bf7ff21a4f05807c38675ac70cd08fe67b516.tar.gz
opencode-377bf7ff21a4f05807c38675ac70cd08fe67b516.zip
feat(ui): Select, dropdown, popover styles & transitions (#11675)
Diffstat (limited to 'packages/ui/src/components/cycle-label.css')
-rw-r--r--packages/ui/src/components/cycle-label.css49
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/ui/src/components/cycle-label.css b/packages/ui/src/components/cycle-label.css
new file mode 100644
index 000000000..3c98fcd26
--- /dev/null
+++ b/packages/ui/src/components/cycle-label.css
@@ -0,0 +1,49 @@
+.cycle-label {
+ --c-duration: 200ms;
+ --c-stagger: 30ms;
+ --c-opacity-start: 0;
+ --c-opacity-end: 1;
+ --c-blur-start: 0px;
+ --c-blur-end: 0px;
+ --c-skew: 10deg;
+
+ display: inline-flex;
+ position: relative;
+
+ transform-style: preserve-3d;
+ perspective: 500px;
+ transition: width var(--transition-duration) var(--transition-easing);
+ will-change: width;
+ overflow: hidden;
+
+ .cycle-char {
+ display: inline-block;
+ transform-style: preserve-3d;
+ min-width: 0.25em;
+ backface-visibility: hidden;
+
+ transition-property: transform, opacity, filter;
+ transition-duration: var(--transition-duration);
+ transition-timing-function: var(--transition-easing);
+ transition-delay: calc(var(--i, 0) * var(--c-stagger));
+
+ &.enter {
+ opacity: var(--c-opacity-end);
+ filter: blur(var(--c-blur-end));
+ transform: translateY(0) rotateX(0) skewX(0);
+ }
+
+ &.exit {
+ opacity: var(--c-opacity-start);
+ filter: blur(var(--c-blur-start));
+ transform: translateY(50%) rotateX(90deg) skewX(var(--c-skew));
+ }
+
+ &.pre {
+ opacity: var(--c-opacity-start);
+ filter: blur(var(--c-blur-start));
+ transition: none;
+ transform: translateY(-50%) rotateX(-90deg) skewX(calc(var(--c-skew) * -1));
+ }
+ }
+}