summaryrefslogtreecommitdiff
path: root/src/components/StatusDisplay.tsx
blob: 767e5fcc41342149618c3beb694a973152ba976d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { PanelSectionRow } from "@decky/ui";
import type { SteamBranchStatus } from "../api/lsfgApi";

interface StatusDisplayProps {
  isInstalled: boolean;
  installationStatus: string;
  losslessScalingInstalled: boolean;
  losslessScalingStatus: string;
  steamBranchStatus: SteamBranchStatus | null;
}

export function StatusDisplay({
  isInstalled,
  installationStatus,
  losslessScalingInstalled,
  losslessScalingStatus,
  steamBranchStatus
}: StatusDisplayProps) {
  const losslessScalingAppInstalled = losslessScalingInstalled || steamBranchStatus?.installed === true;

  return (
    <>
      <PanelSectionRow>
        <div style={{ marginBottom: "8px", fontSize: "14px" }}>
          <div
            style={{
              color: losslessScalingAppInstalled ? "#4CAF50" : "#F44336",
              fontWeight: "600",
              marginBottom: "6px",
              display: "flex",
              alignItems: "center",
              gap: "6px"
            }}
          >
            {losslessScalingAppInstalled ? "Lossless Scaling Installed" : "Lossless Scaling Not Installed"}
          </div>
          {!losslessScalingAppInstalled && losslessScalingStatus && (
            <div style={{ color: "#B8B8B8", fontSize: "12px", margin: "0 0 6px 22px" }}>
              {losslessScalingStatus}
            </div>
          )}
          <div
            style={{
              color: isInstalled ? "#4CAF50" : "#FF9800",
              fontWeight: "600",
              display: "flex",
              alignItems: "center",
              gap: "6px"
            }}
          >
            {installationStatus}
          </div>
        </div>
      </PanelSectionRow>

      {steamBranchStatus?.installed && (
        <PanelSectionRow>
          <div style={{ width: "100%" }}>
            <div
              style={{
                color: steamBranchStatus.needs_switch ? "#FF9800" : "#4CAF50",
                fontSize: "12px",
                margin: "0 0 6px 22px"
              }}
            >
              Steam branch: {steamBranchStatus.current_branch || "public"}
              {steamBranchStatus.needs_switch && (
                <div style={{ color: "#B8B8B8", marginTop: "3px" }}>
                  {steamBranchStatus.message}
                </div>
              )}
            </div>
          </div>
        </PanelSectionRow>
      )}
    </>
  );
}