@aurora-blue/signalk-connector 0.2.0-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +122 -0
- package/THIRD_PARTY_NOTICES.md +11 -0
- package/VERSION +1 -0
- package/dist/src/backoff.d.ts +1 -0
- package/dist/src/backoff.js +9 -0
- package/dist/src/config.d.ts +192 -0
- package/dist/src/config.js +317 -0
- package/dist/src/connector.d.ts +69 -0
- package/dist/src/connector.js +487 -0
- package/dist/src/delta.d.ts +4 -0
- package/dist/src/delta.js +137 -0
- package/dist/src/geometry.d.ts +3 -0
- package/dist/src/geometry.js +25 -0
- package/dist/src/http-client.d.ts +22 -0
- package/dist/src/http-client.js +158 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +93 -0
- package/dist/src/safety/anchor-alarm.d.ts +33 -0
- package/dist/src/safety/anchor-alarm.js +79 -0
- package/dist/src/state-store.d.ts +45 -0
- package/dist/src/state-store.js +491 -0
- package/dist/src/storage-budget.d.ts +35 -0
- package/dist/src/storage-budget.js +88 -0
- package/dist/src/telemetry-catalog.d.ts +19 -0
- package/dist/src/telemetry-catalog.js +93 -0
- package/dist/src/telemetry-reducer.d.ts +22 -0
- package/dist/src/telemetry-reducer.js +150 -0
- package/dist/src/types.d.ts +115 -0
- package/dist/src/types.js +5 -0
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +4 -0
- package/package.json +60 -0
- package/public/aurora-blue-aboard-mark.svg +19 -0
- package/public/aurora-blue-archipelago-dark.svg +32 -0
- package/public/aurora-blue-archipelago-light.svg +81 -0
- package/public/ci-brand.css +77 -0
- package/public/ci-fonts.css +28 -0
- package/public/ci-tokens.css +139 -0
- package/public/favicon.svg +19 -0
- package/public/fonts/LICENSE +96 -0
- package/public/fonts/ubuntu-latin-300-normal.woff2 +0 -0
- package/public/fonts/ubuntu-latin-400-normal.woff2 +0 -0
- package/public/fonts/ubuntu-latin-500-normal.woff2 +0 -0
- package/public/fonts/ubuntu-latin-700-normal.woff2 +0 -0
- package/public/index.html +177 -0
- package/public/locales/de.json +82 -0
- package/public/locales/en.json +82 -0
- package/public/locales/es.json +82 -0
- package/public/locales/fr.json +82 -0
- package/public/status.css +262 -0
- package/public/status.js +237 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Aurora Blue ABOARD Connector Status",
|
|
3
|
+
"brand.context": "Signal K Connector",
|
|
4
|
+
"brand.label": "Aurora Blue ABOARD, Signal K Connector",
|
|
5
|
+
"appearance.system": "System appearance: {appearance}",
|
|
6
|
+
"appearance.dark": "dark",
|
|
7
|
+
"appearance.light": "light",
|
|
8
|
+
"hero.eyebrow": "Onboard connection",
|
|
9
|
+
"hero.title": "Signal K Connector",
|
|
10
|
+
"hero.subtitle": "Local runtime, transfer, and offline-buffer status",
|
|
11
|
+
"summary.label": "Connector summary",
|
|
12
|
+
"summary.pairing": "Pairing",
|
|
13
|
+
"summary.transfer": "Transfer",
|
|
14
|
+
"summary.offline_buffer": "Offline buffer",
|
|
15
|
+
"summary.buffer_pressure": "Buffer pressure",
|
|
16
|
+
"details.label": "Connector details",
|
|
17
|
+
"details.eyebrow": "Runtime diagnostics",
|
|
18
|
+
"details.title": "Transfer and storage",
|
|
19
|
+
"details.intro": "Live readings from this connector. No pairing changes are needed after an update.",
|
|
20
|
+
"details.accepted": "Accepted sequence",
|
|
21
|
+
"details.suppressed": "Suppressed events",
|
|
22
|
+
"details.dropped": "Dropped events",
|
|
23
|
+
"details.storage": "Storage profile",
|
|
24
|
+
"details.anchor": "Anchor state",
|
|
25
|
+
"details.version": "Connector version",
|
|
26
|
+
"action.open_configuration": "Open configuration",
|
|
27
|
+
"status.loading": "Loading",
|
|
28
|
+
"status.mode_unknown": "Mode unknown",
|
|
29
|
+
"status.unknown": "Unknown",
|
|
30
|
+
"status.control_unknown": "Control state unknown",
|
|
31
|
+
"status.no_timestamp": "No timestamp",
|
|
32
|
+
"status.capacity_unknown": "Capacity unknown",
|
|
33
|
+
"status.retention_unavailable": "Retention estimate unavailable",
|
|
34
|
+
"status.waiting": "Waiting for connector status",
|
|
35
|
+
"status.never": "Never",
|
|
36
|
+
"status.mode_unavailable": "Mode unavailable",
|
|
37
|
+
"status.unavailable": "Unavailable",
|
|
38
|
+
"status.updated": "Updated {time}",
|
|
39
|
+
"status.paired": "Paired",
|
|
40
|
+
"status.unpaired": "Unpaired",
|
|
41
|
+
"status.runtime_configuration": "Runtime configuration {state}",
|
|
42
|
+
"status.last_success": "Last success: {time}",
|
|
43
|
+
"status.events": "{current} / {limit} events",
|
|
44
|
+
"status.estimating_retention": "Estimating remaining retention",
|
|
45
|
+
"status.hours_remaining": "{hours} hours remaining",
|
|
46
|
+
"status.transfer_delayed": "Transfer delayed ({reason}) - retry in {seconds} s",
|
|
47
|
+
"status.transfer_delayed_generic": "Transfer is delayed. The connector will retry automatically.",
|
|
48
|
+
"status.target_unavailable": "target unavailable",
|
|
49
|
+
"status.http_error": "HTTP {status}",
|
|
50
|
+
"value.lifecycle.stopped": "Stopped",
|
|
51
|
+
"value.lifecycle.starting": "Starting",
|
|
52
|
+
"value.lifecycle.running": "Running",
|
|
53
|
+
"value.lifecycle.error": "Error",
|
|
54
|
+
"value.mode.active": "Active",
|
|
55
|
+
"value.mode.standby": "Standby",
|
|
56
|
+
"value.mode.disabled": "Disabled",
|
|
57
|
+
"value.configuration.cached": "cached",
|
|
58
|
+
"value.configuration.current": "current",
|
|
59
|
+
"value.configuration.unavailable": "unavailable",
|
|
60
|
+
"value.transfer.waiting": "Waiting",
|
|
61
|
+
"value.transfer.healthy": "Healthy",
|
|
62
|
+
"value.transfer.delayed": "Delayed",
|
|
63
|
+
"value.pressure.normal": "Normal",
|
|
64
|
+
"value.pressure.elevated": "Elevated",
|
|
65
|
+
"value.pressure.critical": "Critical",
|
|
66
|
+
"value.pressure.emergency": "Emergency",
|
|
67
|
+
"value.storage.auto": "Automatic",
|
|
68
|
+
"value.storage.constrained": "Constrained",
|
|
69
|
+
"value.storage.standard": "Standard",
|
|
70
|
+
"value.storage.extended": "Extended",
|
|
71
|
+
"value.storage.custom": "Custom",
|
|
72
|
+
"value.anchor.inactive": "Inactive",
|
|
73
|
+
"value.anchor.armed": "Armed",
|
|
74
|
+
"value.anchor.warning": "Warning",
|
|
75
|
+
"value.anchor.alarm": "Alarm",
|
|
76
|
+
"value.anchor.position_lost": "Position lost",
|
|
77
|
+
"error.admin_required": "Administrator access is required to read connector status.",
|
|
78
|
+
"error.load_failed": "Connector status could not be loaded.",
|
|
79
|
+
"error.startup_failed": "Connector startup failed.",
|
|
80
|
+
"error.configuration_invalid": "Connector configuration is invalid.",
|
|
81
|
+
"error.connector_reported": "The connector reported an error."
|
|
82
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "Estado del conector Aurora Blue ABOARD",
|
|
3
|
+
"brand.context": "Conector Signal K",
|
|
4
|
+
"brand.label": "Aurora Blue ABOARD, conector Signal K",
|
|
5
|
+
"appearance.system": "Apariencia del sistema: {appearance}",
|
|
6
|
+
"appearance.dark": "oscura",
|
|
7
|
+
"appearance.light": "clara",
|
|
8
|
+
"hero.eyebrow": "Conexión a bordo",
|
|
9
|
+
"hero.title": "Conector Signal K",
|
|
10
|
+
"hero.subtitle": "Estado local de ejecución, transferencia y búfer sin conexión",
|
|
11
|
+
"summary.label": "Resumen del conector",
|
|
12
|
+
"summary.pairing": "Emparejamiento",
|
|
13
|
+
"summary.transfer": "Transferencia",
|
|
14
|
+
"summary.offline_buffer": "Búfer sin conexión",
|
|
15
|
+
"summary.buffer_pressure": "Carga del búfer",
|
|
16
|
+
"details.label": "Detalles del conector",
|
|
17
|
+
"details.eyebrow": "Diagnóstico de ejecución",
|
|
18
|
+
"details.title": "Transferencia y almacenamiento",
|
|
19
|
+
"details.intro": "Lecturas en directo de este conector. No es necesario volver a emparejarlo después de una actualización.",
|
|
20
|
+
"details.accepted": "Secuencia aceptada",
|
|
21
|
+
"details.suppressed": "Eventos suprimidos",
|
|
22
|
+
"details.dropped": "Eventos descartados",
|
|
23
|
+
"details.storage": "Perfil de almacenamiento",
|
|
24
|
+
"details.anchor": "Estado del ancla",
|
|
25
|
+
"details.version": "Versión del conector",
|
|
26
|
+
"action.open_configuration": "Abrir configuración",
|
|
27
|
+
"status.loading": "Cargando",
|
|
28
|
+
"status.mode_unknown": "Modo desconocido",
|
|
29
|
+
"status.unknown": "Desconocido",
|
|
30
|
+
"status.control_unknown": "Estado de control desconocido",
|
|
31
|
+
"status.no_timestamp": "Sin marca de tiempo",
|
|
32
|
+
"status.capacity_unknown": "Capacidad desconocida",
|
|
33
|
+
"status.retention_unavailable": "Estimación de retención no disponible",
|
|
34
|
+
"status.waiting": "Esperando el estado del conector",
|
|
35
|
+
"status.never": "Nunca",
|
|
36
|
+
"status.mode_unavailable": "Modo no disponible",
|
|
37
|
+
"status.unavailable": "No disponible",
|
|
38
|
+
"status.updated": "Actualizado {time}",
|
|
39
|
+
"status.paired": "Emparejado",
|
|
40
|
+
"status.unpaired": "No emparejado",
|
|
41
|
+
"status.runtime_configuration": "Configuración de ejecución {state}",
|
|
42
|
+
"status.last_success": "Último éxito: {time}",
|
|
43
|
+
"status.events": "{current} / {limit} eventos",
|
|
44
|
+
"status.estimating_retention": "Estimando la retención restante",
|
|
45
|
+
"status.hours_remaining": "Quedan {hours} horas",
|
|
46
|
+
"status.transfer_delayed": "Transferencia retrasada ({reason}) - nuevo intento en {seconds} s",
|
|
47
|
+
"status.transfer_delayed_generic": "La transferencia está retrasada. El conector lo intentará de nuevo automáticamente.",
|
|
48
|
+
"status.target_unavailable": "destino no disponible",
|
|
49
|
+
"status.http_error": "HTTP {status}",
|
|
50
|
+
"value.lifecycle.stopped": "Detenido",
|
|
51
|
+
"value.lifecycle.starting": "Iniciando",
|
|
52
|
+
"value.lifecycle.running": "En ejecución",
|
|
53
|
+
"value.lifecycle.error": "Error",
|
|
54
|
+
"value.mode.active": "Activo",
|
|
55
|
+
"value.mode.standby": "En espera",
|
|
56
|
+
"value.mode.disabled": "Desactivado",
|
|
57
|
+
"value.configuration.cached": "en caché",
|
|
58
|
+
"value.configuration.current": "actual",
|
|
59
|
+
"value.configuration.unavailable": "no disponible",
|
|
60
|
+
"value.transfer.waiting": "Esperando",
|
|
61
|
+
"value.transfer.healthy": "Correcta",
|
|
62
|
+
"value.transfer.delayed": "Retrasada",
|
|
63
|
+
"value.pressure.normal": "Normal",
|
|
64
|
+
"value.pressure.elevated": "Elevada",
|
|
65
|
+
"value.pressure.critical": "Crítica",
|
|
66
|
+
"value.pressure.emergency": "Emergencia",
|
|
67
|
+
"value.storage.auto": "Automático",
|
|
68
|
+
"value.storage.constrained": "Limitado",
|
|
69
|
+
"value.storage.standard": "Estándar",
|
|
70
|
+
"value.storage.extended": "Ampliado",
|
|
71
|
+
"value.storage.custom": "Personalizado",
|
|
72
|
+
"value.anchor.inactive": "Inactivo",
|
|
73
|
+
"value.anchor.armed": "Armado",
|
|
74
|
+
"value.anchor.warning": "Advertencia",
|
|
75
|
+
"value.anchor.alarm": "Alarma",
|
|
76
|
+
"value.anchor.position_lost": "Posición perdida",
|
|
77
|
+
"error.admin_required": "Se requiere acceso de administrador para consultar el estado del conector.",
|
|
78
|
+
"error.load_failed": "No se pudo cargar el estado del conector.",
|
|
79
|
+
"error.startup_failed": "No se pudo iniciar el conector.",
|
|
80
|
+
"error.configuration_invalid": "La configuración del conector no es válida.",
|
|
81
|
+
"error.connector_reported": "El conector ha comunicado un error."
|
|
82
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"page.title": "État du connecteur Aurora Blue ABOARD",
|
|
3
|
+
"brand.context": "Connecteur Signal K",
|
|
4
|
+
"brand.label": "Aurora Blue ABOARD, connecteur Signal K",
|
|
5
|
+
"appearance.system": "Apparence du système : {appearance}",
|
|
6
|
+
"appearance.dark": "sombre",
|
|
7
|
+
"appearance.light": "claire",
|
|
8
|
+
"hero.eyebrow": "Connexion à bord",
|
|
9
|
+
"hero.title": "Connecteur Signal K",
|
|
10
|
+
"hero.subtitle": "État local de l'exécution, du transfert et du tampon hors ligne",
|
|
11
|
+
"summary.label": "Résumé du connecteur",
|
|
12
|
+
"summary.pairing": "Appairage",
|
|
13
|
+
"summary.transfer": "Transfert",
|
|
14
|
+
"summary.offline_buffer": "Tampon hors ligne",
|
|
15
|
+
"summary.buffer_pressure": "Charge du tampon",
|
|
16
|
+
"details.label": "Détails du connecteur",
|
|
17
|
+
"details.eyebrow": "Diagnostic d'exécution",
|
|
18
|
+
"details.title": "Transfert et stockage",
|
|
19
|
+
"details.intro": "Mesures en direct de ce connecteur. Aucun nouvel appairage n'est nécessaire après une mise à jour.",
|
|
20
|
+
"details.accepted": "Séquence acceptée",
|
|
21
|
+
"details.suppressed": "Événements supprimés",
|
|
22
|
+
"details.dropped": "Événements perdus",
|
|
23
|
+
"details.storage": "Profil de stockage",
|
|
24
|
+
"details.anchor": "État de l'ancre",
|
|
25
|
+
"details.version": "Version du connecteur",
|
|
26
|
+
"action.open_configuration": "Ouvrir la configuration",
|
|
27
|
+
"status.loading": "Chargement",
|
|
28
|
+
"status.mode_unknown": "Mode inconnu",
|
|
29
|
+
"status.unknown": "Inconnu",
|
|
30
|
+
"status.control_unknown": "État de contrôle inconnu",
|
|
31
|
+
"status.no_timestamp": "Aucun horodatage",
|
|
32
|
+
"status.capacity_unknown": "Capacité inconnue",
|
|
33
|
+
"status.retention_unavailable": "Estimation de conservation indisponible",
|
|
34
|
+
"status.waiting": "En attente de l'état du connecteur",
|
|
35
|
+
"status.never": "Jamais",
|
|
36
|
+
"status.mode_unavailable": "Mode indisponible",
|
|
37
|
+
"status.unavailable": "Indisponible",
|
|
38
|
+
"status.updated": "Mis à jour {time}",
|
|
39
|
+
"status.paired": "Appairé",
|
|
40
|
+
"status.unpaired": "Non appairé",
|
|
41
|
+
"status.runtime_configuration": "Configuration d'exécution {state}",
|
|
42
|
+
"status.last_success": "Dernier succès : {time}",
|
|
43
|
+
"status.events": "{current} / {limit} événements",
|
|
44
|
+
"status.estimating_retention": "Estimation de la conservation restante",
|
|
45
|
+
"status.hours_remaining": "{hours} heures restantes",
|
|
46
|
+
"status.transfer_delayed": "Transfert retardé ({reason}) - nouvelle tentative dans {seconds} s",
|
|
47
|
+
"status.transfer_delayed_generic": "Le transfert est retardé. Le connecteur réessaiera automatiquement.",
|
|
48
|
+
"status.target_unavailable": "cible indisponible",
|
|
49
|
+
"status.http_error": "HTTP {status}",
|
|
50
|
+
"value.lifecycle.stopped": "Arrêté",
|
|
51
|
+
"value.lifecycle.starting": "Démarrage",
|
|
52
|
+
"value.lifecycle.running": "En cours",
|
|
53
|
+
"value.lifecycle.error": "Erreur",
|
|
54
|
+
"value.mode.active": "Actif",
|
|
55
|
+
"value.mode.standby": "Veille",
|
|
56
|
+
"value.mode.disabled": "Désactivé",
|
|
57
|
+
"value.configuration.cached": "en cache",
|
|
58
|
+
"value.configuration.current": "actuelle",
|
|
59
|
+
"value.configuration.unavailable": "indisponible",
|
|
60
|
+
"value.transfer.waiting": "En attente",
|
|
61
|
+
"value.transfer.healthy": "Opérationnel",
|
|
62
|
+
"value.transfer.delayed": "Retardé",
|
|
63
|
+
"value.pressure.normal": "Normale",
|
|
64
|
+
"value.pressure.elevated": "Élevée",
|
|
65
|
+
"value.pressure.critical": "Critique",
|
|
66
|
+
"value.pressure.emergency": "Urgence",
|
|
67
|
+
"value.storage.auto": "Automatique",
|
|
68
|
+
"value.storage.constrained": "Limité",
|
|
69
|
+
"value.storage.standard": "Standard",
|
|
70
|
+
"value.storage.extended": "Étendu",
|
|
71
|
+
"value.storage.custom": "Personnalisé",
|
|
72
|
+
"value.anchor.inactive": "Inactif",
|
|
73
|
+
"value.anchor.armed": "Armé",
|
|
74
|
+
"value.anchor.warning": "Avertissement",
|
|
75
|
+
"value.anchor.alarm": "Alarme",
|
|
76
|
+
"value.anchor.position_lost": "Position perdue",
|
|
77
|
+
"error.admin_required": "Un accès administrateur est requis pour consulter l'état du connecteur.",
|
|
78
|
+
"error.load_failed": "Impossible de charger l'état du connecteur.",
|
|
79
|
+
"error.startup_failed": "Le démarrage du connecteur a échoué.",
|
|
80
|
+
"error.configuration_invalid": "La configuration du connecteur est invalide.",
|
|
81
|
+
"error.connector_reported": "Le connecteur a signalé une erreur."
|
|
82
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
* {
|
|
2
|
+
box-sizing: border-box;
|
|
3
|
+
}
|
|
4
|
+
body {
|
|
5
|
+
display: flow-root;
|
|
6
|
+
margin: 0;
|
|
7
|
+
min-height: 100vh;
|
|
8
|
+
isolation: isolate;
|
|
9
|
+
color: var(--aboard-text);
|
|
10
|
+
background: var(--aboard-bg);
|
|
11
|
+
}
|
|
12
|
+
body::before {
|
|
13
|
+
content: "";
|
|
14
|
+
position: fixed;
|
|
15
|
+
inset: -4px;
|
|
16
|
+
z-index: -1;
|
|
17
|
+
background: var(--aboard-chart) center 58% / cover no-repeat;
|
|
18
|
+
filter: blur(1.5px);
|
|
19
|
+
pointer-events: none;
|
|
20
|
+
}
|
|
21
|
+
.shell {
|
|
22
|
+
width: min(73.75rem, calc(100% - 3rem));
|
|
23
|
+
margin: 2rem auto;
|
|
24
|
+
padding: 2rem;
|
|
25
|
+
background: rgb(var(--aboard-surface-rgb) / 0.94);
|
|
26
|
+
border: 1px solid rgb(var(--aboard-border-rgb) / 0.28);
|
|
27
|
+
border-radius: 1.25rem;
|
|
28
|
+
box-shadow: 0 1.5rem 4rem rgb(0 17 31 / 0.16);
|
|
29
|
+
}
|
|
30
|
+
.brand-header,
|
|
31
|
+
.hero,
|
|
32
|
+
.badges,
|
|
33
|
+
footer {
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: space-between;
|
|
37
|
+
gap: 1rem;
|
|
38
|
+
}
|
|
39
|
+
.brand-header {
|
|
40
|
+
padding-bottom: 1.5rem;
|
|
41
|
+
border-bottom: 1px solid rgb(var(--aboard-border-rgb) / 0.28);
|
|
42
|
+
}
|
|
43
|
+
.appearance {
|
|
44
|
+
font-size: var(--aboard-font-xs);
|
|
45
|
+
color: var(--aboard-muted);
|
|
46
|
+
}
|
|
47
|
+
.hero {
|
|
48
|
+
align-items: flex-end;
|
|
49
|
+
margin: 1.8rem 0;
|
|
50
|
+
}
|
|
51
|
+
.eyebrow,
|
|
52
|
+
.label {
|
|
53
|
+
color: var(--aboard-accent-strong);
|
|
54
|
+
font-size: var(--aboard-font-xs);
|
|
55
|
+
font-weight: 700;
|
|
56
|
+
letter-spacing: 0.14em;
|
|
57
|
+
text-transform: uppercase;
|
|
58
|
+
}
|
|
59
|
+
.eyebrow {
|
|
60
|
+
margin: 0 0 0.45rem;
|
|
61
|
+
}
|
|
62
|
+
h1 {
|
|
63
|
+
font-size: var(--aboard-font-title);
|
|
64
|
+
line-height: 1.16;
|
|
65
|
+
margin: 0;
|
|
66
|
+
font-weight: 500;
|
|
67
|
+
color: var(--aboard-heading);
|
|
68
|
+
}
|
|
69
|
+
h2 {
|
|
70
|
+
font-size: var(--aboard-font-section);
|
|
71
|
+
font-weight: 500;
|
|
72
|
+
margin: 0;
|
|
73
|
+
color: var(--aboard-heading);
|
|
74
|
+
}
|
|
75
|
+
.subtitle,
|
|
76
|
+
.section-heading > p:last-child {
|
|
77
|
+
color: var(--aboard-muted);
|
|
78
|
+
font-size: var(--aboard-font-body);
|
|
79
|
+
line-height: 1.6;
|
|
80
|
+
}
|
|
81
|
+
.subtitle {
|
|
82
|
+
margin: 0.8rem 0 0;
|
|
83
|
+
}
|
|
84
|
+
.section-heading > p:last-child {
|
|
85
|
+
margin: 0.4rem 0 0;
|
|
86
|
+
}
|
|
87
|
+
.badges {
|
|
88
|
+
justify-content: flex-end;
|
|
89
|
+
flex-wrap: wrap;
|
|
90
|
+
gap: 0.5rem;
|
|
91
|
+
}
|
|
92
|
+
.badge {
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
min-width: 0;
|
|
96
|
+
max-width: 100%;
|
|
97
|
+
min-height: var(--aboard-badge-min-height);
|
|
98
|
+
padding: var(--aboard-badge-padding);
|
|
99
|
+
gap: var(--aboard-badge-gap);
|
|
100
|
+
border-radius: var(--aboard-badge-radius);
|
|
101
|
+
border: 1px solid rgb(var(--aboard-border-rgb) / 0.25);
|
|
102
|
+
font-size: var(--aboard-badge-font-size);
|
|
103
|
+
font-weight: 400;
|
|
104
|
+
letter-spacing: 0;
|
|
105
|
+
line-height: 1.2;
|
|
106
|
+
cursor: default;
|
|
107
|
+
text-transform: uppercase;
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
text-overflow: clip;
|
|
110
|
+
white-space: nowrap;
|
|
111
|
+
}
|
|
112
|
+
.good {
|
|
113
|
+
color: var(--aboard-success);
|
|
114
|
+
background: color-mix(in srgb, var(--aboard-success) 8%, transparent);
|
|
115
|
+
}
|
|
116
|
+
.warn {
|
|
117
|
+
color: var(--aboard-warning);
|
|
118
|
+
background: color-mix(in srgb, var(--aboard-warning) 8%, transparent);
|
|
119
|
+
}
|
|
120
|
+
.bad {
|
|
121
|
+
color: var(--aboard-danger);
|
|
122
|
+
background: color-mix(in srgb, var(--aboard-danger) 8%, transparent);
|
|
123
|
+
}
|
|
124
|
+
.neutral {
|
|
125
|
+
color: var(--aboard-muted-strong);
|
|
126
|
+
background: rgb(var(--aboard-control-rgb) / 0.08);
|
|
127
|
+
}
|
|
128
|
+
.notice {
|
|
129
|
+
padding: 0.9rem 1rem;
|
|
130
|
+
margin: 0 0 1rem;
|
|
131
|
+
border: 1px solid var(--aboard-warning);
|
|
132
|
+
border-radius: var(--aboard-section-radius);
|
|
133
|
+
color: var(--aboard-warning);
|
|
134
|
+
background: color-mix(in srgb, var(--aboard-warning) 8%, transparent);
|
|
135
|
+
}
|
|
136
|
+
.hidden {
|
|
137
|
+
display: none;
|
|
138
|
+
}
|
|
139
|
+
.grid {
|
|
140
|
+
display: grid;
|
|
141
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
142
|
+
gap: 0.85rem;
|
|
143
|
+
}
|
|
144
|
+
.card,
|
|
145
|
+
.details {
|
|
146
|
+
border: 1px solid rgb(var(--aboard-border-rgb) / 0.16);
|
|
147
|
+
border-radius: var(--aboard-section-radius);
|
|
148
|
+
background: rgb(var(--aboard-surface-rgb) / 0.82);
|
|
149
|
+
}
|
|
150
|
+
.card {
|
|
151
|
+
display: flex;
|
|
152
|
+
min-width: 0;
|
|
153
|
+
flex-direction: column;
|
|
154
|
+
min-height: 9.5rem;
|
|
155
|
+
padding: 1.5rem;
|
|
156
|
+
}
|
|
157
|
+
.card strong {
|
|
158
|
+
margin-top: 1.15rem;
|
|
159
|
+
font-size: var(--aboard-font-section);
|
|
160
|
+
font-weight: 500;
|
|
161
|
+
overflow-wrap: anywhere;
|
|
162
|
+
color: var(--aboard-heading);
|
|
163
|
+
}
|
|
164
|
+
.detail {
|
|
165
|
+
margin-top: 0.55rem;
|
|
166
|
+
color: var(--aboard-muted);
|
|
167
|
+
font-size: var(--aboard-font-body);
|
|
168
|
+
line-height: 1.45;
|
|
169
|
+
overflow-wrap: anywhere;
|
|
170
|
+
}
|
|
171
|
+
.details {
|
|
172
|
+
margin-top: 1rem;
|
|
173
|
+
padding: 1.5rem;
|
|
174
|
+
}
|
|
175
|
+
dl {
|
|
176
|
+
display: grid;
|
|
177
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
178
|
+
gap: 0 1.6rem;
|
|
179
|
+
margin: 1rem 0 0;
|
|
180
|
+
}
|
|
181
|
+
dl div {
|
|
182
|
+
min-width: 0;
|
|
183
|
+
padding: 0.9rem 0;
|
|
184
|
+
border-top: 1px solid rgb(var(--aboard-border-rgb) / 0.12);
|
|
185
|
+
}
|
|
186
|
+
dt {
|
|
187
|
+
font-size: var(--aboard-font-xs);
|
|
188
|
+
color: var(--aboard-muted-strong);
|
|
189
|
+
}
|
|
190
|
+
dd {
|
|
191
|
+
font-size: var(--aboard-font-body);
|
|
192
|
+
color: var(--aboard-text);
|
|
193
|
+
margin: 0.4rem 0 0;
|
|
194
|
+
overflow-wrap: anywhere;
|
|
195
|
+
}
|
|
196
|
+
footer {
|
|
197
|
+
margin-top: 1.4rem;
|
|
198
|
+
color: var(--aboard-muted);
|
|
199
|
+
font-size: var(--aboard-font-xs);
|
|
200
|
+
}
|
|
201
|
+
.button {
|
|
202
|
+
display: inline-flex;
|
|
203
|
+
align-items: center;
|
|
204
|
+
justify-content: center;
|
|
205
|
+
gap: 0.4rem;
|
|
206
|
+
min-height: var(--aboard-button-height);
|
|
207
|
+
padding: var(--aboard-button-padding);
|
|
208
|
+
font-size: var(--aboard-font-xs);
|
|
209
|
+
font-weight: 500;
|
|
210
|
+
line-height: 1.2;
|
|
211
|
+
background: rgb(var(--aboard-control-rgb) / 0.58);
|
|
212
|
+
color: var(--aboard-text);
|
|
213
|
+
border: 1px solid rgb(var(--aboard-border-rgb) / 0.23);
|
|
214
|
+
border-radius: var(--aboard-button-radius);
|
|
215
|
+
text-decoration: none;
|
|
216
|
+
white-space: nowrap;
|
|
217
|
+
}
|
|
218
|
+
.button:hover {
|
|
219
|
+
border-color: rgb(var(--aboard-accent-rgb) / 0.52);
|
|
220
|
+
}
|
|
221
|
+
.button:focus-visible {
|
|
222
|
+
outline: 2px solid var(--aboard-accent-strong);
|
|
223
|
+
outline-offset: 2px;
|
|
224
|
+
}
|
|
225
|
+
@media (max-width: 64rem) {
|
|
226
|
+
.grid {
|
|
227
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
@media (max-width: 42rem) {
|
|
231
|
+
.shell {
|
|
232
|
+
width: calc(100% - 1.5rem);
|
|
233
|
+
padding: 1.2rem;
|
|
234
|
+
margin: 0.75rem auto;
|
|
235
|
+
}
|
|
236
|
+
.hero {
|
|
237
|
+
align-items: flex-start;
|
|
238
|
+
flex-direction: column;
|
|
239
|
+
gap: 1rem;
|
|
240
|
+
}
|
|
241
|
+
.badges {
|
|
242
|
+
justify-content: flex-start;
|
|
243
|
+
}
|
|
244
|
+
dl {
|
|
245
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
246
|
+
}
|
|
247
|
+
.appearance {
|
|
248
|
+
max-width: 7.5rem;
|
|
249
|
+
text-align: right;
|
|
250
|
+
line-height: 1.4;
|
|
251
|
+
}
|
|
252
|
+
footer {
|
|
253
|
+
align-items: flex-start;
|
|
254
|
+
flex-direction: column;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
@media (max-width: 23rem) {
|
|
258
|
+
.grid,
|
|
259
|
+
dl {
|
|
260
|
+
grid-template-columns: 1fr;
|
|
261
|
+
}
|
|
262
|
+
}
|