import Image from 'next/image'; import { ActionIcon, Badge, Button, createStyles, Group, Modal, Table, Text, Title, } from '@mantine/core'; import { IconBrandDiscord, IconBrandGithub, IconLanguage, IconVersions, IconVocabulary, IconWorldWww, } from '@tabler/icons'; import { i18n } from 'next-i18next'; import { ReactNode } from 'react'; import { CURRENT_VERSION } from '../../../data/constants'; import { usePrimaryGradient } from '../layout/useGradient'; interface AboutModalProps { opened: boolean; closeModal: () => void; } export const AboutModal = ({ opened, closeModal }: AboutModalProps) => { const { classes } = useStyles(); const colorGradiant = usePrimaryGradient(); const informations = useInformationTableItems(); return ( closeModal()} opened={opened} title={ About Homarr } size="xl" > Homarr is a simple and modern homepage for your server that helps you access all of your services in one place. It integrates with the services you use to display useful information or control them. It's easy to install and supports many different devices. Version information: {informations.map((item, index) => ( ))}
{item.icon} {item.label} {item.content}
Having trouble or questions? Connect with us!
); }; interface InformationTableItem { icon: ReactNode; label: string; content: ReactNode; } const useInformationTableItems = (): InformationTableItem[] => { const colorGradiant = usePrimaryGradient(); const usedI18nNamespaces = i18n?.reportNamespaces?.getUsedNamespaces(); const configuredi18nLocales: string[] = i18n?.options.locales; return [ { icon: , label: 'Homarr version', content: ( {CURRENT_VERSION} ), }, { icon: , label: 'Loaded I18n translation namespaces', content: ( {usedI18nNamespaces?.length ?? 'loading'} ), }, { icon: , label: 'Configured I18n locales', content: ( {configuredi18nLocales?.length ?? 'loading'} ), }, ]; }; const useStyles = createStyles(() => ({ informationTableColumn: { textAlign: 'right', }, informationIcon: { cursor: 'default', }, }));