{i18n.t("game.calculator.col.ship")} {i18n.t("game.calculator.col.tech")}
{#each BLOCK_ROWS as row (row.key)} {@const isComputed = computedInput === row.key}
{row.label()} {#if isComputed} {:else} {/if} {#if row.tech !== null} {@const techKey = row.tech} onTechInput(techKey)} aria-invalid={techError(techKey) !== "" ? "true" : "false"} title={techError(techKey)} data-testid={`calculator-tech-${techKey}`} /> {#if techOverridden[techKey]} {/if} {:else} {/if}
{/each}