From 5d89f8a8d55c49d766e363ad15d53e7ad224e47c Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Thu, 27 Mar 2025 19:20:15 +1100
Subject: sidebar: package news module
---
scss/sidebar.scss | 40 +++++++++++
src/modules/sidebar/index.tsx | 3 +-
src/modules/sidebar/modules/news.tsx | 110 +++++++++++++++++++++++++++++++
src/modules/sidebar/modules/upcoming.tsx | 2 +-
src/modules/sidebar/packages.tsx | 9 +++
5 files changed, 162 insertions(+), 2 deletions(-)
create mode 100644 src/modules/sidebar/modules/news.tsx
create mode 100644 src/modules/sidebar/packages.tsx
diff --git a/scss/sidebar.scss b/scss/sidebar.scss
index 2a71995..2457bfc 100644
--- a/scss/sidebar.scss
+++ b/scss/sidebar.scss
@@ -704,4 +704,44 @@
}
}
}
+
+ .news {
+ min-height: lib.s(200);
+
+ .empty {
+ margin-top: lib.s(40);
+ }
+
+ .list {
+ @include lib.spacing(10, true);
+ }
+
+ .article {
+ @include lib.rounded(20);
+ @include lib.element-decel;
+
+ background-color: color.change(scheme.$surface1, $alpha: 0.4);
+ padding: lib.s(10) lib.s(15);
+
+ @include lib.spacing(5);
+
+ .icon {
+ font-size: lib.s(28);
+
+ &:not(:last-child) {
+ margin-right: lib.s(12);
+ }
+ }
+
+ .sublabel {
+ font-size: lib.s(14);
+ color: scheme.$subtext0;
+ }
+
+ .body {
+ margin-top: lib.s(10);
+ font-size: lib.s(14);
+ }
+ }
+ }
}
diff --git a/src/modules/sidebar/index.tsx b/src/modules/sidebar/index.tsx
index 5ae7670..d4c1855 100644
--- a/src/modules/sidebar/index.tsx
+++ b/src/modules/sidebar/index.tsx
@@ -6,6 +6,7 @@ import Audio from "./audio";
import Connectivity from "./connectivity";
import Dashboard from "./dashboard";
import NotifPane from "./notifpane";
+import Packages from "./packages";
@register()
export default class SideBar extends Widget.Window {
@@ -22,7 +23,7 @@ export default class SideBar extends Widget.Window {
visible: false,
});
- const panes = [, , , ];
+ const panes = [, , , , ];
this.shown = Variable(panes[0].name);
this.add(
diff --git a/src/modules/sidebar/modules/news.tsx b/src/modules/sidebar/modules/news.tsx
new file mode 100644
index 0000000..f3be53e
--- /dev/null
+++ b/src/modules/sidebar/modules/news.tsx
@@ -0,0 +1,110 @@
+import Palette from "@/services/palette";
+import Updates from "@/services/updates";
+import { setupCustomTooltip } from "@/utils/widgets";
+import { bind, Variable } from "astal";
+import { Gtk } from "astal/gtk3";
+
+const countNews = (news: string) => news.match(/^([0-9]{4}-[0-9]{2}-[0-9]{2} .+)$/gm)?.length ?? 0;
+
+const News = ({ header, body }: { header: string; body: string }) => {
+ const expanded = Variable(false);
+
+ body = body
+ .slice(0, -5) // Remove last unopened \x1b[0m
+ .replaceAll("\x1b[0m", ""); // Replace reset code with end span
+
+ return (
+
+
+
+
+
+ );
+};
+
+const List = () => (
+
+ {bind(Updates.get_default(), "news").as(n => {
+ const children = [];
+ const news = n.split(/^([0-9]{4}-[0-9]{2}-[0-9]{2} .+)$/gm);
+ for (let i = 1; i < news.length - 1; i += 2)
+ children.push();
+ return children;
+ })}
+
+);
+
+const NoNews = () => (
+
+
+
+
+
+
+);
+
+export default () => (
+
+
+
+ (n ? "list" : "empty"))}
+ >
+
+ !!n)}
+ hscroll={Gtk.PolicyType.NEVER}
+ name="list"
+ >
+
+
+
+
+);
diff --git a/src/modules/sidebar/modules/upcoming.tsx b/src/modules/sidebar/modules/upcoming.tsx
index 76dea56..816dff8 100644
--- a/src/modules/sidebar/modules/upcoming.tsx
+++ b/src/modules/sidebar/modules/upcoming.tsx
@@ -82,7 +82,7 @@ export default () => (
sensitive={bind(Calendar.get_default(), "loading").as(l => !l)}
cursor="pointer"
onClicked={() => Calendar.get_default().updateCalendars().catch(console.error)}
- label=" Reload"
+ label={bind(Calendar.get_default(), "loading").as(l => (l ? " Loading" : " Reload"))}
/>
(
+
+
+
+
+);
--
cgit v1.2.3-freya