<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Liste du matériel — Receiver_v0</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Inter',sans-serif;background:#000d4d;color:#e8edff;line-height:1.5;padding:2rem}
.wrap{max-width:1100px;margin:0 auto}
h1{font-size:1.6rem;font-weight:700;margin-bottom:.3rem}
.count{font-family:'JetBrains Mono',monospace;font-size:.8rem;color:#a8b2e8;margin-bottom:1.4rem}
.toolbar{margin-bottom:1.2rem}
#search{width:100%;max-width:340px;background:rgba(255,255,255,.08);border:1px solid rgba(168,178,232,.2);border-radius:20px;padding:.6rem 1rem;color:#e8edff;font-family:'Inter',sans-serif;font-size:.85rem;outline:none}
#search:focus{border-color:#6b8cff}
table{width:100%;border-collapse:collapse;font-size:.85rem;background:rgba(255,255,255,.03);border:1px solid rgba(168,178,232,.14);border-radius:12px;overflow:hidden}
th{text-align:left;font-family:'JetBrains Mono',monospace;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:#a8b2e8;padding:.75rem 1rem;border-bottom:1px solid rgba(168,178,232,.14);cursor:pointer;user-select:none}
th:hover{color:#8ba3ff}
th .arrow{opacity:.5;margin-left:.3rem}
td{padding:.6rem 1rem;border-bottom:1px solid rgba(168,178,232,.08)}
tr:hover td{background:rgba(107,140,255,.06)}
.mono{font-family:'JetBrains Mono',monospace}
.back{display:inline-block;margin-bottom:1.2rem;font-family:'JetBrains Mono',monospace;font-size:.75rem;color:#a8b2e8;text-decoration:none}
.back:hover{color:#e8edff}
</style>
</head>
<body>
<div class="wrap">
<a class="back" href="index.html">← Retour à la carte</a>
<h1>Receiver_v0 — Liste du matériel</h1>
<div class="count">40 référence(s)</div>
<div class="toolbar"><input id="search" type="text" placeholder="Filtrer (réf, valeur, empreinte, fournisseur…)"></div>
<table id="bomTable">
<thead><tr>
<th data-key="ref">Référence<span class="arrow">↕</span></th>
<th data-key="val">Valeur<span class="arrow">↕</span></th>
<th data-key="fp">Empreinte<span class="arrow">↕</span></th>
<th data-key="qty">Qté<span class="arrow">↕</span></th>
<th data-key="four">MPN / Fournisseur<span class="arrow">↕</span></th>
</tr></thead>
<tbody><tr><td class="mono">BT1</td><td>Battery_Cell</td><td class="mono">CREPP_Batteries_holders:MPD_BC501SM-TR</td><td>1</td><td></td></tr><tr><td class="mono">C1,C2,C6,C14-C17</td><td>100nF</td><td class="mono">Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">C3-C5,C7-C10,C12,C13,C18-C20</td><td>2.2uF</td><td class="mono">Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">C11</td><td>470µF-4V</td><td class="mono">Capacitor_SMD:C_1812_4532Metric</td><td>1</td><td></td></tr><tr><td class="mono">D1-D3</td><td>WS2812C-2020</td><td class="mono">CREPP_LEDs:LED_WS2812C-2020</td><td>1</td><td></td></tr><tr><td class="mono">D4,D6</td><td>LED</td><td class="mono">LED_SMD:LED_0805_2012Metric</td><td>1</td><td></td></tr><tr><td class="mono">D5</td><td>LED</td><td class="mono">LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">J1,J2</td><td>JST_ZH_B2B-ZR_1x02_P1.5mm</td><td class="mono">CREPP_Connectors_1_5mm:JST_ZH_B2B-ZR_1x02_P1.50mm_Vertical</td><td>1</td><td></td></tr><tr><td class="mono">J3</td><td>MSD-4-A</td><td class="mono">CREPP_SD_Readers:CUI_MSD-4-A</td><td>1</td><td>MSD-4-A</td></tr><tr><td class="mono">J4</td><td>BME</td><td class="mono">Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical</td><td>1</td><td></td></tr><tr><td class="mono">J5,J8,J9</td><td>JST_PH_B4B-PH-K_1x04_2mm</td><td class="mono">Connector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical</td><td>1</td><td></td></tr><tr><td class="mono">J6,J7</td><td>Conn_02x20_Odd_Even</td><td class="mono">Connector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_Vertical_SMD</td><td>1</td><td></td></tr><tr><td class="mono">J10</td><td>Conn_01x14_Pin</td><td class="mono">Connector_PinSocket_2.54mm:PinSocket_1x14_P2.54mm_Vertical</td><td>1</td><td></td></tr><tr><td class="mono">JP1,JP2</td><td>Jumper_2.54mm_blue</td><td class="mono">CREPP_Jumpers:Jumper_2.54mm_blue</td><td>1</td><td></td></tr><tr><td class="mono">JP3-JP16,JP20-JP29</td><td>Jumper_2.54mm_green</td><td class="mono">CREPP_Jumpers:Jumper_2.54mm_green</td><td>1</td><td></td></tr><tr><td class="mono">JP17-JP19</td><td>Jumper_2.54mm_red</td><td class="mono">CREPP_Jumpers:Jumper_2.54mm_red</td><td>1</td><td></td></tr><tr><td class="mono">LS1,LS2</td><td>Speaker_3525-4R-3W</td><td class="mono">CREPP_Speakers:3525_3W_8Ohms</td><td>1</td><td></td></tr><tr><td class="mono">R1,R2,R5,R15</td><td>10k</td><td class="mono">Resistor_SMD:R_1206_3216Metric</td><td>1</td><td></td></tr><tr><td class="mono">R3</td><td>0</td><td class="mono">Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">R4,R7</td><td>470</td><td class="mono">Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">R6</td><td>1k</td><td class="mono">Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">R8-R13</td><td>10k</td><td class="mono">Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder</td><td>1</td><td></td></tr><tr><td class="mono">SW1</td><td>SW_reset</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td></td></tr><tr><td class="mono">SW2</td><td>PB_Left</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td>430182043816</td></tr><tr><td class="mono">SW3</td><td>PB_Right</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td>430182043816</td></tr><tr><td class="mono">SW4</td><td>PB_Up</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td>430182043816</td></tr><tr><td class="mono">SW5</td><td>PB_Down</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td>430182043816</td></tr><tr><td class="mono">SW6</td><td>PB_Center</td><td class="mono">CREPP_Buttons_SMT:SW_SPST_PTS645</td><td>1</td><td>430182043816</td></tr><tr><td class="mono">TP1-TP6</td><td>TP_1mm_NH</td><td class="mono">TestPoint:TestPoint_Pad_D1.0mm</td><td>1</td><td></td></tr><tr><td class="mono">TP8,TP9</td><td>TestPoint_PowerSupply</td><td class="mono">TestPoint:TestPoint_Pad_1.0x1.0mm</td><td>1</td><td></td></tr><tr><td class="mono">U1</td><td>PCM5101</td><td class="mono">Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm</td><td>1</td><td></td></tr><tr><td class="mono">U2</td><td>PAM8403D</td><td class="mono">Package_SO:SOIC-16_3.9x9.9mm_P1.27mm</td><td>1</td><td></td></tr><tr><td class="mono">U3</td><td>AMS1117-3.3</td><td class="mono">Package_TO_SOT_SMD:SOT-223-3_TabPin2</td><td>1</td><td></td></tr><tr><td class="mono">U4</td><td>NRF24L01_Breakout_socket</td><td class="mono">CREPP_NRF24:nRF24L01_Breakout</td><td>1</td><td></td></tr><tr><td class="mono">U5</td><td></td><td class="mono">CREPP_NRF24:nRF24L01_Virtual</td><td>1</td><td></td></tr><tr><td class="mono">U6</td><td>DS3231M</td><td class="mono">Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm</td><td>1</td><td></td></tr><tr><td class="mono">U7</td><td></td><td class="mono">CREPP_Temperature_sensors:BME280_Breakout</td><td>1</td><td></td></tr><tr><td class="mono">U8</td><td></td><td class="mono">CREPP_MCU:RPI_Socket</td><td>1</td><td></td></tr><tr><td class="mono">U9</td><td>ST890</td><td class="mono">CREPP_PMOS_CMS:ST890</td><td>1</td><td></td></tr><tr><td class="mono">U18</td><td>PCF8574AT</td><td class="mono">Package_SO:SOIC-16W_7.5x10.3mm_P1.27mm</td><td>1</td><td></td></tr></tbody>
</table>
</div>
<script>
const table = document.getElementById('bomTable');
const tbody = table.querySelector('tbody');
const search = document.getElementById('search');
let sortKey = null, sortDir = 1;
search.addEventListener('input', () => {
const q = search.value.toLowerCase().trim();
[...tbody.rows].forEach(r => { r.style.display = (!q || r.textContent.toLowerCase().includes(q)) ? '' : 'none'; });
});
table.querySelectorAll('th').forEach((th, colIndex) => {
th.addEventListener('click', () => {
sortDir = (sortKey === colIndex) ? -sortDir : 1;
sortKey = colIndex;
const rows = [...tbody.rows];
rows.sort((a, b) => a.cells[colIndex].textContent.localeCompare(
b.cells[colIndex].textContent, undefined, {numeric: true}) * sortDir);
rows.forEach(r => tbody.appendChild(r));
});
});
</script>
</body>
</html>