Spaces:
Running
Running
RobotHub-Frontend
/
src
/lib
/components
/3d
/elements
/compute
/status
/ComputeInputBoxUIKit.svelte
<script lang="ts"> | |
import type { RemoteCompute } from "$lib/elements/compute//RemoteCompute.svelte"; | |
import { ICON } from "$lib/utils/icon"; | |
import { | |
BaseStatusBox, | |
StatusHeader, | |
StatusContent, | |
StatusIndicator, | |
StatusButton | |
} from "$lib/components/3d/ui"; | |
interface Props { | |
compute: RemoteCompute; | |
handleClick?: () => void; | |
} | |
let { compute, handleClick }: Props = $props(); | |
// Input theme color (green) | |
const inputColor = "rgb(34, 197, 94)"; | |
</script> | |
<BaseStatusBox | |
minWidth={120} | |
minHeight={80} | |
color={inputColor} | |
borderOpacity={compute.hasSession ? 0.8 : 0.4} | |
backgroundOpacity={0.2} | |
opacity={compute.hasSession ? 1 : 0.6} | |
onclick={handleClick} | |
> | |
{#if compute.hasSession && compute.inputConnections} | |
<!-- Active Input State --> | |
<StatusHeader | |
icon={ICON["icon-[material-symbols--download]"].svg} | |
text="INPUTS" | |
color={inputColor} | |
opacity={0.9} | |
fontSize={12} | |
/> | |
<!-- Camera Inputs --> | |
<StatusContent | |
title={`${Object.keys(compute.inputConnections.cameras).length} Cameras`} | |
subtitle="Joint States" | |
color="rgb(187, 247, 208)" | |
variant="primary" | |
/> | |
<!-- Active indicator --> | |
<StatusIndicator color={inputColor} /> | |
{:else} | |
<!-- No Session State --> | |
<StatusHeader | |
icon={ICON["icon-[material-symbols--download]"].svg} | |
text="NO INPUTS" | |
color={inputColor} | |
opacity={0.7} | |
iconSize={12} | |
fontSize={12} | |
/> | |
<StatusContent title="Setup Required" color="rgb(134, 239, 172)" variant="secondary" /> | |
<StatusButton | |
text="Add Session" | |
icon={ICON["icon-[mdi--plus]"].svg} | |
color={inputColor} | |
backgroundOpacity={0.1} | |
textOpacity={0.7} | |
/> | |
{/if} | |
</BaseStatusBox> | |