Panel, le cockpit CSS pour interfaces web

Habillez vos interfaces web avec des contrôles inspirés des consoles de studio, des cockpits analogiques et des tableaux de bord vintage.
Boutons, curseurs, faders, potentiomètres et interrupteurs s'intègrent en CSS pur, sans dépendance.

  • Zéro dépendance
  • CSS pur
  • Style cockpit
  • Widgets réutilisables
Libre Local Souverain Vintage
panel.css → <button class="sxp-btn">
<!-- 1. la feuille de style --> <link rel="stylesheet" href="panel.css"> <!-- 2. un contrôle console --> <button class="sxp-btn is-on"> ARM </button>
0 dépendance HTML / CSS / JS natif Canvas pilotable API JavaScript Composants synchronisables Compatible WebSocket Animations temps réel Responsive

🎛️ Pourquoi Panel ?

Panel est un SDK front-end d'instruments interactifs et de composants de contrôle, pas un thème graphique ni une simple collection de widgets. Chaque élément repose sur du Canvas, du CSS et du JavaScript natif, se pilote par API, se synchronise avec les autres composants, fonctionne sans dépendance externe et réagit en temps réel.

Conçu pour les cockpits, consoles audio, tableaux de bord industriels, outils métiers, simulateurs et laboratoires, Panel donne aux interfaces professionnelles une couche de contrôle précise, lisible et souveraine. Développé par SynapxLab, il s'inscrit dans une solution libre, hébergée en France, sans dépendance aux GAFA.

<!-- feuille de style + moteur + API (zéro dépendance) -->
<link rel="stylesheet" href="/assets/sdk/panel/panel.css">
<script defer src="/assets/sdk/panel/panel.js"></script>
<script defer src="/assets/sdk/panel/panel-instruments.js"></script>
<script defer src="/assets/sdk/panel/panel-cockpit.js"></script>
<script defer src="/assets/sdk/panel/panel-api.js"></script>

API JavaScript

Chaque instrument Panel s'instancie via un sélecteur et se pilote par code, notamment avec la méthode set(). Les composants se synchronisent entre eux et acceptent des données temps réel issues de WebSocket, SSE ou de toute autre source applicative.

// Poste de vol : instancier par sélecteur, piloter par API
const cockpit = new SXP.Panel.Cockpit("#cockpit");
cockpit.set({ pitch: 12, roll: -18, heading: 270, altitude: 3000, airspeed: 145 });

// Cadran à aiguille avec zones (l'aiguille vibre en butée rouge)
const bar = new SXP.Panel.Gauge("#pressure", {
  min: 0, max: 10, unit: "bar",
  zones: [{ from: 0, to: 7, color: "#33ff66" }, { from: 9, to: 10, color: "#ff3355" }]
});
bar.set(8.4);

// Synchroniser deux composants : un potentiomètre pilote l'oscilloscope
const scope = new SXP.Panel.Scope("#scope", { wave: "sine", freq: 3 });
const knob  = new SXP.Panel.Knob("#freq", { min: 1, max: 12, val: 3 });
knob.on(v => scope.set({ freq: v }));

// Alimenter un radar depuis n'importe quelle source temps réel
const radar = new SXP.Panel.Radar("#radar", { range: 0.7 });
socket.onmessage = e => radar.set(JSON.parse(e.data));

Instruments Canvas

Gauge, Scope, Radar.set(valeur) ou .set({…}), animés en temps réel.

Poste de vol

Cockpit, Stickcockpit.set({pitch, roll, heading, altitude, airspeed}), stick.onInput(fn).

Contrôles pilotés

Knob, Selector, Equalizer.set(), .on(fn), .feed(spectre).

Boutons

Des boutons d'action lumineux, lisibles et déclinables, pensés pour afficher clairement les états et les variantes d'une interface.

Variantes
Tailles
Segments (accent ambre)
<button class="sxp-btn is-on">Actif</button>

Interrupteurs on/off

Des toggles animés à LED pour rendre les activations, désactivations et changements d'état immédiatement compréhensibles. Chaque passage à ON déclenche une brève rampe d'allumage.

Pastille LED
Glissant
Rocker
Poussoir lumineux
<label class="sxp-toggle">
  <input type="checkbox" checked><span class="sxp-led-dot"></span> Reverb
</label>

Curseurs, faders & indicateurs

Sliders horizontaux, faders verticaux et voyants LED. Le banc de faders, le vumètre et le voyant d'activité sont pilotés en direct par le spectre de notre simulation musicale.

Curseurs
Gain
Ton
Voyants
Repos Actif Occupé Erreur
Banc de faders
63
250
1k
4k
16k
Égaliseur 32 bandes — audio réel (boucle 4 s générée localement)

Potentiomètres

Des knobs rotatifs qui donnent aux réglages fins une présence visuelle inspirée des équipements audio et industriels. Glissez verticalement, à la molette ou au clavier.

Drive
Mix
Cutoff
<div class="sxp-knob" data-min="0" data-max="100" data-val="35"></div>

Radar 1940

Un écran radar PPI d'époque : balayage tournant à rémanence phosphore, échos qui s'illuminent au passage du faisceau puis s'estompent lentement. Les potentiomètres pilotent le balayage, le gain, la portée et la rémanence.

Balayage
Gain
Portée
Rémanence

Phase 2 — Appareils de mesure

Des instruments vintage réellement fonctionnels : cadrans à aiguille dessinés sur canvas, pilotables par API (set(valeur)) et ici directement par les contrôles de la Phase 1. Le voltmètre embarque un sélecteur de mode (V / A / Ω). Les assemblages refmanche et refcockpit viendront ensuite composer des tableaux de bord complets.

Baromètre
Régler
Manomètre
Voltmètre
Mesure
Oscilloscope
Mode d'affichage
Réglages
Fréq.
Balayage
Ampl.
Intensité
Netteté
// API : chaque cadran expose canvas._sxp.set(valeur)
<canvas class="sxp-inst" data-inst="manometer" data-min="0" data-max="10"
        data-zones="0,7,#33ff66;7,9,#ffb000;9,10,#ff3355"></canvas>

Poste de vol — refmanche + refcockpit

Le manche à balai (ressort de rappel au centre) et la manette des gaz (à friction) pilotent en direct le cluster d'instruments de vol : assiette, inclinaison, cap, variomètre, altitude et vitesse. Tout est dessiné sur canvas et pilotable par API.

// le manche pilote le cockpit
stick._sxp.onInput(function (s) {
  cockpit._sxp.set({ pitch: s.y * 60, roll: s.x * 45, heading: cap, speed: s.throttle });
});

Instruments Canvas en mouvement

Panel étend sa collection avec des instruments de mesure vintage bien au-delà des cadrans ronds : VU-mètre, enregistreur à bande, odomètre, rotamètre, thermomètre, boussole et compteur Geiger. Chaque appareil est dessiné sur Canvas, pilotable en JavaScript via set(), animé en temps réel et fonctionne sans aucune dépendance.

↻ Glissez pour orienter le globe
Globe · position ciblée
VU-mètre
Enregistreur à bande
Compteur à rouleaux
Rotamètre
Thermomètre
Boussole
Compteur Geiger
// chaque instrument s'instancie par sélecteur et se pilote par API
const vu = new SXP.Panel.Vumeter("#vu");
vu.set(0.82);                 // niveau audio 0..1 (ballistique VU)

const compas = new SXP.Panel.Compass("#compas");
compas.set(270);                // cap en degrés

const trace = new SXP.Panel.Recorder("#trace");
socket.onmessage = e => trace.feed(JSON.parse(e.data).v);