From e4f40811b6bbfb6b726e79ec769ba7d593fde08f Mon Sep 17 00:00:00 2001 From: Vishesh 'ironeagle' Bangotra Date: Sat, 11 Oct 2025 15:23:51 +0530 Subject: [PATCH] ident fixes and config --- .idea/codeStyles/codeStyleConfig.xml | 5 + app/components/ServiceList.tsx | 56 ++++---- app/components/Services.tsx | 198 ++++++++++++++++----------- 3 files changed, 151 insertions(+), 108 deletions(-) create mode 100644 .idea/codeStyles/codeStyleConfig.xml diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/components/ServiceList.tsx b/app/components/ServiceList.tsx index ded86d5..6a6fa4d 100644 --- a/app/components/ServiceList.tsx +++ b/app/components/ServiceList.tsx @@ -2,40 +2,40 @@ import React from 'react'; import {Grid, Paper, Link, Typography} from '@mui/material'; interface ServiceList { - name: string; - url: string; - desc: string; - external?: boolean; + name: string; + url: string; + desc: string; + external?: boolean; } interface ServiceListProps { - serviceList: ServiceList[]; + serviceList: ServiceList[]; } const ServiceList: React.FC = ({serviceList}) => { - return ( - - {serviceList.map((s) => ( - - - {s.name} - - - {s.desc} - - - ))} - - ); + return ( + + {serviceList.map((s) => ( + + + {s.name} + + + {s.desc} + + + ))} + + ); }; export default ServiceList; diff --git a/app/components/Services.tsx b/app/components/Services.tsx index 9deb633..e0d7df6 100644 --- a/app/components/Services.tsx +++ b/app/components/Services.tsx @@ -5,7 +5,7 @@ import Card from '@mui/material/Card'; import MuiChip from '@mui/material/Chip'; import Container from '@mui/material/Container'; import Typography from '@mui/material/Typography'; -import { styled } from '@mui/material/styles'; +import {styled} from '@mui/material/styles'; import PermMediaIcon from '@mui/icons-material/PermMedia'; import CodeIcon from '@mui/icons-material/Code'; @@ -15,33 +15,73 @@ import ServiceList from "~/components/ServiceList"; const items = [ { - icon: , + icon: , title: 'The Vox Sanctum', 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: "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 + }, ], description: "Behold the archive of visual legends, where the eternal campaigns of film and series march forth in eternal crusade against chaos and forgetfulness.", }, { - icon: , + icon: , title: 'The Forge Conclave', 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 }, + { + 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: "The bastion of creation — where code is forged in the fires of discipline, guarded like relics, and deployed with unyielding precision to uphold the empire's might.", }, { - icon: , + icon: , title: 'The Vigilant Watch', serviceList: [ - { name: "Portainer", url: "http://portainer.aetoskia.com", desc: "Oversee the fleet of containers with unyielding vigilance.", external: true }, - { name: "Traefik", url: "http://traefik.aetoskia.com", desc: "Marshal your gateways and protect the flow between realms.", external: true }, + { + name: "Portainer", + url: "http://portainer.aetoskia.com", + desc: "Oversee the fleet of containers with unyielding vigilance.", + external: true + }, + { + name: "Traefik", + url: "http://traefik.aetoskia.com", + desc: "Marshal your gateways and protect the flow between realms.", + external: true + }, ], description: "Eyes ever watchful, guarding the realm’s sanctity — these sentinels oversee the flow of life and command the paths between digital dominions.", @@ -52,10 +92,10 @@ interface ChipProps { selected?: boolean; } -const Chip = styled(MuiChip)(({ theme }) => ({ +const Chip = styled(MuiChip)(({theme}) => ({ variants: [ { - props: ({ selected }) => !!selected, + props: ({selected}) => !!selected, style: { background: 'linear-gradient(to bottom right, hsl(210, 98%, 48%), hsl(210, 98%, 35%))', @@ -79,10 +119,10 @@ interface MobileLayoutProps { } export function MobileLayout({ - selectedItemIndex, - handleItemClick, - selectedFeature, -}: MobileLayoutProps) { + selectedItemIndex, + handleItemClick, + selectedFeature, + }: MobileLayoutProps) { if (!items[selectedItemIndex]) { return null; } @@ -90,13 +130,13 @@ export function MobileLayout({ return ( - - {items.map(({ title }, index) => ( + + {items.map(({title}, index) => ( - + {selectedFeature.title} - + {selectedFeature.description} - + ); @@ -134,84 +174,82 @@ export default function Services() { const selectedFeature = items[selectedItemIndex]; return ( - + -
- - {items.map(({ icon, title, description }, index) => ( + + {items.map(({icon, title, description}, index) => ( + handleItemClick(index)} + sx={[ + (theme) => ({ + p: 2, + height: '100%', + width: '100%', + '&:hover': { + backgroundColor: (theme.vars || theme).palette.action.hover, + }, + }), + selectedItemIndex === index && { + backgroundColor: 'action.selected', + }, + ]} + > handleItemClick(index)} sx={[ - (theme) => ({ - p: 2, - height: '100%', + { width: '100%', - '&:hover': { - backgroundColor: (theme.vars || theme).palette.action.hover, - }, - }), + display: 'flex', + flexDirection: 'column', + alignItems: 'left', + gap: 1, + textAlign: 'left', + textTransform: 'none', + color: 'text.secondary', + }, selectedItemIndex === index && { - backgroundColor: 'action.selected', + color: 'text.primary', }, ]} > - - {icon} {title} - {description} - + {icon} {title} + {description} - ))} - - -
+
+ ))} +
+ - +