From 0518ec4214583bcc26f5b052f02fd93b12a00a77 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:16:40 +1100 Subject: bluetoothdevices: make popup window --- scss/notifications.scss | 58 ------------------- scss/popdowns/bluetoothdevices.scss | 43 ++++++++++++++ scss/popdowns/index.scss | 3 + scss/popdowns/notifications.scss | 58 +++++++++++++++++++ scss/popdowns/updates.scss | 41 ++++++++++++++ scss/updates.scss | 41 -------------- src/modules/bar.tsx | 37 +++++------- src/modules/popdowns/bluetoothdevices.tsx | 93 +++++++++++++++++++++++++++++++ src/modules/popdowns/index.tsx | 2 + src/modules/popdowns/notifications.tsx | 2 +- src/widgets/popdownwindow.tsx | 15 +++-- style.scss | 3 +- 12 files changed, 268 insertions(+), 128 deletions(-) delete mode 100644 scss/notifications.scss create mode 100644 scss/popdowns/bluetoothdevices.scss create mode 100644 scss/popdowns/index.scss create mode 100644 scss/popdowns/notifications.scss create mode 100644 scss/popdowns/updates.scss delete mode 100644 scss/updates.scss create mode 100644 src/modules/popdowns/bluetoothdevices.tsx diff --git a/scss/notifications.scss b/scss/notifications.scss deleted file mode 100644 index e955a4c..0000000 --- a/scss/notifications.scss +++ /dev/null @@ -1,58 +0,0 @@ -@use "sass:color"; -@use "scheme"; -@use "lib"; -@use "font"; - -@mixin popup($accent) { - .separator { - background-color: $accent; - } - - .image { - @include lib.border($accent, 0.05); - } -} - -.notifications { - @include lib.popdown-window(scheme.$mauve); - - min-width: lib.s(400); - min-height: lib.s(600); - - .notification { - .wrapper { - padding-bottom: lib.s(10); - } - - .inner { - background-color: color.mix(scheme.$surface0, scheme.$base, 70%); - - &.low { - @include popup(scheme.$overlay0); - } - - &.normal { - @include lib.border(scheme.$lavender, 0.3); - @include popup(scheme.$lavender); - } - - &.critical { - @include lib.border(scheme.$red, 0.5); - @include popup(scheme.$red); - } - } - - .actions > * { - background-color: scheme.$surface1; - - &:hover, - &:focus { - background-color: scheme.$surface2; - } - - &:active { - background-color: scheme.$overlay0; - } - } - } -} diff --git a/scss/popdowns/bluetoothdevices.scss b/scss/popdowns/bluetoothdevices.scss new file mode 100644 index 0000000..e426b27 --- /dev/null +++ b/scss/popdowns/bluetoothdevices.scss @@ -0,0 +1,43 @@ +@use "sass:color"; +@use "../scheme"; +@use "../lib"; +@use "../font"; + +$-accent: scheme.$rosewater; + +.bluetooth-devices { + @include lib.popdown-window($-accent); + + min-width: lib.s(500); + min-height: lib.s(400); + + .list { + @include lib.spacing($vertical: true); + + color: scheme.$text; + + .device { + @include lib.spacing(8); + + .icon { + font-size: lib.s(18); + } + + button { + @include lib.rounded(5); + @include lib.element-decel; + + padding: lib.s(3) lib.s(8); + + &:hover, + &:focus { + background-color: scheme.$surface0; + } + + &:active { + background-color: scheme.$surface1; + } + } + } + } +} diff --git a/scss/popdowns/index.scss b/scss/popdowns/index.scss new file mode 100644 index 0000000..81855d3 --- /dev/null +++ b/scss/popdowns/index.scss @@ -0,0 +1,3 @@ +@forward "notifications"; +@forward "updates"; +@forward "bluetoothdevices"; diff --git a/scss/popdowns/notifications.scss b/scss/popdowns/notifications.scss new file mode 100644 index 0000000..c7914c2 --- /dev/null +++ b/scss/popdowns/notifications.scss @@ -0,0 +1,58 @@ +@use "sass:color"; +@use "../scheme"; +@use "../lib"; +@use "../font"; + +@mixin popup($accent) { + .separator { + background-color: $accent; + } + + .image { + @include lib.border($accent, 0.05); + } +} + +.notifications { + @include lib.popdown-window(scheme.$mauve); + + min-width: lib.s(400); + min-height: lib.s(600); + + .notification { + .wrapper { + padding-bottom: lib.s(10); + } + + .inner { + background-color: color.mix(scheme.$surface0, scheme.$base, 70%); + + &.low { + @include popup(scheme.$overlay0); + } + + &.normal { + @include lib.border(scheme.$lavender, 0.3); + @include popup(scheme.$lavender); + } + + &.critical { + @include lib.border(scheme.$red, 0.5); + @include popup(scheme.$red); + } + } + + .actions > * { + background-color: scheme.$surface1; + + &:hover, + &:focus { + background-color: scheme.$surface2; + } + + &:active { + background-color: scheme.$overlay0; + } + } + } +} diff --git a/scss/popdowns/updates.scss b/scss/popdowns/updates.scss new file mode 100644 index 0000000..d11a551 --- /dev/null +++ b/scss/popdowns/updates.scss @@ -0,0 +1,41 @@ +@use "sass:color"; +@use "../scheme"; +@use "../lib"; +@use "../font"; + +$-accent: scheme.$blue; + +.updates { + @include lib.popdown-window($-accent); + + min-width: lib.s(600); + min-height: lib.s(400); + + .wrapper { + @include lib.element-decel; + + &:hover, + &:focus { + color: color.mix($-accent, scheme.$base, 80%); + } + + &:active { + color: color.mix($-accent, scheme.$base, 60%); + } + } + + .repos { + @include lib.spacing($vertical: true); + + .repo { + .header { + font-size: lib.s(16); + } + + .list { + color: scheme.$text; + margin-left: lib.s(12); + } + } + } +} diff --git a/scss/updates.scss b/scss/updates.scss deleted file mode 100644 index 12da977..0000000 --- a/scss/updates.scss +++ /dev/null @@ -1,41 +0,0 @@ -@use "sass:color"; -@use "scheme"; -@use "lib"; -@use "font"; - -$accent: scheme.$blue; - -.updates { - @include lib.popdown-window($accent); - - min-width: lib.s(600); - min-height: lib.s(400); - - .wrapper { - @include lib.element-decel; - - &:hover, - &:focus { - color: color.mix($accent, scheme.$base, 80%); - } - - &:active { - color: color.mix($accent, scheme.$base, 60%); - } - } - - .repos { - @include lib.spacing($vertical: true); - - .repo { - .header { - font-size: lib.s(16); - } - - .list { - color: scheme.$text; - margin-left: lib.s(12); - } - } - } -} diff --git a/src/modules/bar.tsx b/src/modules/bar.tsx index 1bcbc08..0bc4485 100644 --- a/src/modules/bar.tsx +++ b/src/modules/bar.tsx @@ -36,6 +36,14 @@ const hookFocusedClientProp = ( callback(lastClient); }; +const togglePopup = (self: JSX.Element, event: Astal.ClickEvent, name: string) => { + const popup = App.get_window(name) as PopupWindow | null; + if (popup) { + if (popup.visible) popup.hide(); + else popup.popup_at_widget(self, event); + } +}; + const OSIcon = () =>