aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/components/ServiceIcon.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/renderer/src/components/ServiceIcon.tsx')
-rw-r--r--packages/renderer/src/components/ServiceIcon.tsx53
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/renderer/src/components/ServiceIcon.tsx b/packages/renderer/src/components/ServiceIcon.tsx
new file mode 100644
index 0000000..e02da71
--- /dev/null
+++ b/packages/renderer/src/components/ServiceIcon.tsx
@@ -0,0 +1,53 @@
1/*
2 * Copyright (C) 2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21import { styled } from '@mui/material/styles';
22import React from 'react';
23
24const ServiceIconRoot = styled('div', {
25 name: 'ServiceIcon',
26 slot: 'Root',
27})(({ theme }) => ({
28 width: 34,
29 height: 34,
30 borderRadius: theme.shape.borderRadius,
31 background: 'currentColor',
32 display: 'flex',
33 justifyContent: 'center',
34 alignItems: 'center',
35}));
36
37const ServiceIconText = styled('div', {
38 name: 'ServiceIcon',
39 slot: 'Text',
40})(({ theme }) => ({
41 display: 'inline-block',
42 flex: 0,
43 fontSize: theme.typography.pxToRem(24),
44 color: theme.palette.primary.contrastText,
45}));
46
47export default function ServiceIcon({ name }: { name: string }): JSX.Element {
48 return (
49 <ServiceIconRoot>
50 <ServiceIconText>{name.length > 0 ? name[0] : '?'}</ServiceIconText>
51 </ServiceIconRoot>
52 );
53}