zmk/docs/src/components/interconnect-tabs.tsx
Pete Johanson cb00077273
chore(docs): Fix prettier warnings (#2952)
* chore(docs): Fix prettier warnings
2025-06-01 12:02:39 -07:00

76 lines
2.2 KiB
TypeScript

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import { HardwareMetadata, Interconnect } from "../hardware-metadata";
import { groupedMetadata } from "./hardware-utils";
interface InterconnectTabsProps {
items: HardwareMetadata[];
gpio: boolean;
}
function mapInterconnect(interconnect: Interconnect, gpio: boolean) {
const content = require(
`@site/src/data/interconnects/${interconnect.id}/design_guideline.md`
);
const imageUrl = require(
`@site/docs/assets/interconnects/${interconnect.id}/pinout.png`
);
return (
<TabItem value={interconnect.id} key={interconnect.id}>
<img src={imageUrl.default} />
{gpio && <content.default />}
{interconnect.node_labels && !gpio && (
<>
<br></br>
The following node labels are available:
<ul>
{interconnect.node_labels.i2c && (
<li>
I2C bus: <code>&{interconnect.node_labels.i2c}</code>
</li>
)}
{interconnect.node_labels.spi && (
<li>
SPI bus: <code>&{interconnect.node_labels.spi}</code>
</li>
)}
{interconnect.node_labels.uart && (
<li>
UART: <code>&{interconnect.node_labels.uart}</code>
</li>
)}
{interconnect.node_labels.adc && (
<li>
ADC: <code>&{interconnect.node_labels.adc}</code>
</li>
)}
</ul>
</>
)}
</TabItem>
);
}
function mapInterconnectValue(interconnect: Interconnect) {
return { label: `${interconnect.name} Shields`, value: interconnect.id };
}
function InterconnectTabs({ items, gpio }: InterconnectTabsProps) {
const grouped = Object.values(groupedMetadata(items).interconnects)
.map((i) => i?.interconnect as Interconnect)
.filter((i) => i?.design_guideline)
.sort((a, b) => a.id.localeCompare(b.id));
return (
<Tabs
queryString="interconnect"
defaultValue={"pro_micro"}
values={grouped.map(mapInterconnectValue)}
>
{grouped.map((items) => mapInterconnect(items, gpio))}
</Tabs>
);
}
export default InterconnectTabs;