From 2c5cb966ad75aae139e0a83e898e8784c3a60548 Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Fri, 10 Oct 2025 17:29:17 +0530 Subject: [PATCH] added ServiceList.tsx for handling individual services --- app/components/ServiceList.tsx | 41 +++++++++++++++++++++ app/components/Services.tsx | 65 +++++++++------------------------- app/routes/home.tsx | 39 +------------------- 3 files changed, 59 insertions(+), 86 deletions(-) create mode 100644 app/components/ServiceList.tsx diff --git a/app/components/ServiceList.tsx b/app/components/ServiceList.tsx new file mode 100644 index 0000000..ded86d5 --- /dev/null +++ b/app/components/ServiceList.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import {Grid, Paper, Link, Typography} from '@mui/material'; + +interface ServiceList { + name: string; + url: string; + desc: string; + external?: boolean; +} + +interface ServiceListProps { + serviceList: ServiceList[]; +} + +const ServiceList: React.FC = ({serviceList}) => { + return ( + + {serviceList.map((s) => ( + + + {s.name} + + + {s.desc} + + + ))} + + ); +}; + +export default ServiceList; diff --git a/app/components/Services.tsx b/app/components/Services.tsx index 8385acf..a74f17b 100644 --- a/app/components/Services.tsx +++ b/app/components/Services.tsx @@ -10,6 +10,7 @@ import { styled } from '@mui/material/styles'; import DevicesRoundedIcon from '@mui/icons-material/DevicesRounded'; import EdgesensorHighRoundedIcon from '@mui/icons-material/EdgesensorHighRounded'; import ViewQuiltRoundedIcon from '@mui/icons-material/ViewQuiltRounded'; +import ServiceList from "~/components/ServiceList"; const services = { media: [ @@ -32,26 +33,34 @@ const items = [ { icon: , title: 'Dashboard', + serviceList: [ + { name: "Jellyseerr", url: "http://jellyseerr.aetoskia.com", desc: "Summon films and series from the digital void.", external: true }, + { name: "Sonarr", url: "http://sonarr.aetoskia.com", desc: "Keep the endless chronicles of TV under iron control.", external: true }, + { name: "Radarr", url: "http://radarr.aetoskia.com", desc: "Command the legions of cinema, enforce cinematic order.", external: true }, + { name: "qBit", url: "http://qbit.aetoskia.com", desc: "Torrent war engine, fetching data across the nether realms.", external: true }, + ], description: 'This item could provide a snapshot of the most important metrics or data points related to the product.', - imageLight: "url('/extended_sigil.png')", - imageDark: "url('/extended_sigil.png')", }, { icon: , title: 'Mobile integration', + serviceList: [ + { name: "Gitea", url: "http://gitea.aetoskia.com", desc: "Forge and safeguard code like a sacred relic.", external: true }, + { name: "Registry", url: "http://registry.aetoskia.com", desc: "Monitor core constructs of the digital empire.", external: true }, + { name: "Drone", url: "http://drone.aetoskia.com", desc: "Automaton architect, building pipelines of perfection.", external: true }, + ], description: 'This item could provide information about the mobile app version of the product.', - imageLight: "url('/extended_sigil.png')", - imageDark: "url('/extended_sigil.png')", }, { icon: , title: 'Available on all platforms', + serviceList:[ + { name: "Portainer", url: "http://portainer.aetoskia.com", desc: "Oversee the fleet of containers with unyielding vigilance.", external: true }, + ], description: 'This item could let users know the product is available on all platforms, such as web, mobile, and desktop.', - imageLight: "url('/extended_sigil.png')", - imageDark: "url('/extended_sigil.png')", }, ]; @@ -114,26 +123,7 @@ export function MobileLayout({ ))} - ({ - mb: 2, - backgroundSize: 'cover', - backgroundPosition: 'center', - minHeight: 280, - backgroundImage: 'var(--items-imageLight)', - ...theme.applyStyles('dark', { - backgroundImage: 'var(--items-imageDark)', - }), - })} - style={ - items[selectedItemIndex] - ? ({ - '--items-imageLight': items[selectedItemIndex].imageLight, - '--items-imageDark': items[selectedItemIndex].imageDark, - } as any) - : {} - } - /> + - ({ - m: 'auto', - width: 420, - height: 500, - backgroundSize: 'contain', - backgroundImage: 'var(--items-imageLight)', - ...theme.applyStyles('dark', { - backgroundImage: 'var(--items-imageDark)', - }), - })} - style={ - items[selectedItemIndex] - ? ({ - '--items-imageLight': items[selectedItemIndex].imageLight, - '--items-imageDark': items[selectedItemIndex].imageDark, - } as any) - : {} - } - /> + diff --git a/app/routes/home.tsx b/app/routes/home.tsx index 99c87d6..67e7d1c 100644 --- a/app/routes/home.tsx +++ b/app/routes/home.tsx @@ -6,6 +6,7 @@ import Link from "@mui/material/Link"; import Grid from "@mui/material/Grid"; import Paper from "@mui/material/Paper"; import Services from "~/components/Services"; +import ServiceList from "~/components/ServiceList"; export function meta() { return [ @@ -52,44 +53,6 @@ export default function Home() { - - {Object.entries(services).map(([sectionName, serviceList]) => ( - - - {sectionName.charAt(0).toUpperCase() + sectionName.slice(1)} Services - - - {serviceList.map((s) => ( - - - {s.name} - - - {s.desc} - - - ))} - - - ))} -