From db71887ba509b630c9efb3e6c3817d57fff26bf7 Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Thu, 13 Mar 2025 23:34:49 +0000 Subject: [PATCH] rename component --- packages/app/src/components/AppMenu/index.jsx | 39 ------- .../app/src/components/AppMenu/index.less | 13 --- .../app/src/components/AppsMenu/index.jsx | 106 ++++++++++++++++++ .../app/src/components/AppsMenu/index.less | 70 ++++++++++++ 4 files changed, 176 insertions(+), 52 deletions(-) delete mode 100644 packages/app/src/components/AppMenu/index.jsx delete mode 100644 packages/app/src/components/AppMenu/index.less create mode 100644 packages/app/src/components/AppsMenu/index.jsx create mode 100644 packages/app/src/components/AppsMenu/index.less diff --git a/packages/app/src/components/AppMenu/index.jsx b/packages/app/src/components/AppMenu/index.jsx deleted file mode 100644 index 9d57f237..00000000 --- a/packages/app/src/components/AppMenu/index.jsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from "react" - -import "./index.less" - -const AppMenu = (props) => { - // TODO: Fetch from app core - const installedApps = [] - - return
-

Apps

- - { - installedApps.map((item) => { - return
{ - if (item.location) { - app.location.push(item.location) - } - - props.close() - }} - > -

{item.icon && createIconRender(item.icon)} {item.label}

-
- }) - } - - { - installedApps.length === 0 && - } -
-} - -export default AppMenu \ No newline at end of file diff --git a/packages/app/src/components/AppMenu/index.less b/packages/app/src/components/AppMenu/index.less deleted file mode 100644 index 71b80226..00000000 --- a/packages/app/src/components/AppMenu/index.less +++ /dev/null @@ -1,13 +0,0 @@ -.apps-menu { - display: flex; - flex-direction: column; - - gap: 10px; - - .apps-menu-item { - display: flex; - flex-direction: row; - - gap: 10px; - } -} \ No newline at end of file diff --git a/packages/app/src/components/AppsMenu/index.jsx b/packages/app/src/components/AppsMenu/index.jsx new file mode 100644 index 00000000..cafeb161 --- /dev/null +++ b/packages/app/src/components/AppsMenu/index.jsx @@ -0,0 +1,106 @@ +import React from "react" +import { Popover, Empty } from "antd" +import { FiInfo, FiBox, FiUser } from "react-icons/fi" + +import RouterLink from "@components/RouterLink" +import Image from "@components/Image" + +import "./index.less" + +function fetchInstalledApps() { + let apps = [] + + for (let extension of app.extensions.extensions.values()) { + if (extension.enabled == false || !extension.main) { + continue + } + + if (typeof extension.main.app === "object") { + apps.push({ + ...extension.main.app, + ...extension.manifest, + }) + } + } + + return apps +} + +const AppInfo = ({ item }) => { + return ( +
+ + + {item.author} + + + v{item.version} + +
+ ) +} + +const App = ({ item, close }) => { + function onClick() { + app.location.push(`/app/${item.id}`) + close() + } + + return ( +
+
+ {item.icon && {item.title}} +
+ +
+
+

{item.title}

+ + {item.description} + +
+ + } + classNames={{ + body: "apps-menu-item-info-extra", + }} + > + + +
+
+ ) +} + +const AppMenu = (props) => { + const installedApps = React.useMemo(() => { + return fetchInstalledApps() + }, []) + + return ( +
+

Apps

+ + {installedApps.map((item) => { + return + })} + + {installedApps.length === 0 && ( + + )} + +

+ Manage or install your apps from + + here + +

+
+ ) +} + +export default AppMenu diff --git a/packages/app/src/components/AppsMenu/index.less b/packages/app/src/components/AppsMenu/index.less new file mode 100644 index 00000000..0d9949d9 --- /dev/null +++ b/packages/app/src/components/AppsMenu/index.less @@ -0,0 +1,70 @@ +.apps-menu { + display: flex; + flex-direction: column; + + gap: 10px; +} + +.apps-menu-item { + display: flex; + flex-direction: row; + + align-items: center; + + gap: 10px; + + max-height: 55px; + width: 100%; + + padding: 10px; + + background-color: rgba(var(--bg_color_5), 0.2); + + overflow: hidden; + border-radius: 12px; + + cursor: pointer; + + .apps-menu-item-icon { + width: 30px; + height: 30px; + + overflow: hidden; + border-radius: 6px; + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + } + + .apps-menu-item-info { + display: flex; + flex-direction: row; + + width: 100%; + + justify-content: space-between; + align-items: center; + + color: var(--text-color); + + .apps-menu-item-info-titles { + display: flex; + flex-direction: column; + justify-content: center; + + .apps-menu-item-info-description { + font-size: 0.7rem; + } + } + } +} + +.apps-menu-item-info-extra { + display: flex; + flex-direction: column; + + color: var(--text-color); +}