@esfaenza/dpe-builder 20.3.12 → 20.3.13
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/fesm2022/esfaenza-dpe-builder.mjs +3122 -667
- package/fesm2022/esfaenza-dpe-builder.mjs.map +1 -1
- package/index.d.ts +1302 -41
- package/package.json +1 -1
- package/styles/dpe-builder.css +379 -40
package/styles/dpe-builder.css
CHANGED
|
@@ -51,6 +51,34 @@
|
|
|
51
51
|
--dpe-text-muted: #6b7086;
|
|
52
52
|
--dpe-text-subtle: #98a2b3;
|
|
53
53
|
|
|
54
|
+
/*
|
|
55
|
+
* Il testo attenuato fa **due mestieri**, e per questo sono due token. La divisione e' la stessa
|
|
56
|
+
* gia' applicata agli stati (`--dpe-*-text` qui sotto): non un gusto, una soglia.
|
|
57
|
+
*
|
|
58
|
+
* - `--dpe-text-subtle` e' **decorazione**: testo secondario e ridondante, che dice una cosa gia'
|
|
59
|
+
* leggibile altrove. Il nome tecnico sulla card del nodo lo ripete la testata della dialog,
|
|
60
|
+
* l'etichetta di una porta la ripete il colore dell'arco, un separatore «·» non dice niente.
|
|
61
|
+
* Sta a 2.58:1 su bianco e va bene cosi': attenuare e' il suo lavoro.
|
|
62
|
+
* - `--dpe-text-subtle-strong` e' **informazione**: testo che l'utente deve leggere per agire e
|
|
63
|
+
* che non trova da nessun'altra parte. Sta sopra 4.5:1 su **tutte** le superfici chiare,
|
|
64
|
+
* compresa la piu' scura (`--dpe-surface-sunken`): da 4.6 a 5.2.
|
|
65
|
+
*
|
|
66
|
+
* Criterio per scegliere, uno solo: **se questo testo fosse illeggibile, l'utente perderebbe
|
|
67
|
+
* qualcosa che non trova altrove?** Si' -> `-strong`. No -> il token attenuato.
|
|
68
|
+
*
|
|
69
|
+
* Perche' non alzare il token unico: lo userebbero anche i trenta punti decorativi, e la card del
|
|
70
|
+
* nodo si appiattirebbe — nome tecnico, sottotitolo ed etichette delle porte tutti allo stesso
|
|
71
|
+
* peso del titolo. Perche' non usare `--dpe-text-muted` al loro posto: misura **4.29:1** su
|
|
72
|
+
* `--dpe-surface-sunken`, cioe' sotto il minimo proprio dove finiscono i messaggi di stato vuoto.
|
|
73
|
+
*
|
|
74
|
+
* Nota onesta sul valore: in tema chiaro non esiste un grigio **piu' chiaro** di
|
|
75
|
+
* `--dpe-text-muted` che regga 4.5:1 (il limite su bianco e' circa #767676, misurato in LV1), e
|
|
76
|
+
* lo stesso vale in scuro. Il token informativo cade quindi nella fascia di `--dpe-text-muted`,
|
|
77
|
+
* e la gerarchia fra i due la fanno corpo e peso, non il colore. Restano token distinti perche'
|
|
78
|
+
* governano usi diversi con soglie diverse e l'ospite deve poterli ritingere separatamente.
|
|
79
|
+
*/
|
|
80
|
+
--dpe-text-subtle-strong: #666c80;
|
|
81
|
+
|
|
54
82
|
/* Accento e stati */
|
|
55
83
|
--dpe-accent: #2f7d8f;
|
|
56
84
|
--dpe-accent-strong: #226270;
|
|
@@ -60,13 +88,46 @@
|
|
|
60
88
|
--dpe-success: #22a06b;
|
|
61
89
|
--dpe-info: #3b6fd4;
|
|
62
90
|
|
|
91
|
+
/*
|
|
92
|
+
* Gli stessi stati **quando colorano lettere**, e sono token separati per un fatto misurato, non
|
|
93
|
+
* per gusto.
|
|
94
|
+
*
|
|
95
|
+
* Un colore di stato fa due mestieri con due soglie diverse: bordo, pastiglia e banner sono
|
|
96
|
+
* elementi di interfaccia (WCAG chiede 3:1), un rilievo scritto e' testo (4.5:1). Su superficie
|
|
97
|
+
* chiara i valori qui sopra reggono il primo mestiere e non il secondo: `--dpe-warning` misura
|
|
98
|
+
* **3.64:1** su `--dpe-surface` e `--dpe-success` **3.33:1**. Un rilievo che l'utente fatica a
|
|
99
|
+
* leggere e' un rilievo che non arriva, e l'avviso e' il colore con cui arriva
|
|
100
|
+
* `DPE_EXPR_TYPE_WIDENED`.
|
|
101
|
+
*
|
|
102
|
+
* Perche' separare invece di alzare il token unico: alzarlo avrebbe imbrunito insieme al testo
|
|
103
|
+
* anche i bordi dei nodi, le pastiglie e il fondo tinto del banner — cioe' il linguaggio visivo
|
|
104
|
+
* dell'editor — e avrebbe chiesto di **argomentare** che nessuno di quegli usi peggiora. Con due
|
|
105
|
+
* token quegli usi restano identici al bit, e cambia solo il colore delle lettere.
|
|
106
|
+
*
|
|
107
|
+
* I valori chiari stanno sopra 4.5:1 su **tutte** le superfici chiare, compresa la piu' scura
|
|
108
|
+
* (`--dpe-surface-sunken`) e i fondi tinti del catalogo: da 5.0 a 5.9 su `--dpe-surface`.
|
|
109
|
+
*
|
|
110
|
+
* Regola d'uso, una sola: **se colora lettere si usa la variante `-text`; se colora un bordo o un
|
|
111
|
+
* fondo si usa il token di stato.**
|
|
112
|
+
*/
|
|
113
|
+
--dpe-error-text: #c81e1e;
|
|
114
|
+
--dpe-warning-text: #8f6115;
|
|
115
|
+
--dpe-success-text: #177a4f;
|
|
116
|
+
--dpe-info-text: #3161bd;
|
|
117
|
+
|
|
63
118
|
/*
|
|
64
119
|
* Nodo valido ma **non compilabile** (`DPE_NODE_NOT_COMPILABLE`, I10): non e' un errore
|
|
65
120
|
* dell'utente ed e' l'unica distinzione che deve leggersi a colpo d'occhio nel pannello
|
|
66
121
|
* delle diagnostiche. Colore proprio, ne' rosso ne' giallo, per non farlo confondere con
|
|
67
122
|
* qualcosa da correggere.
|
|
123
|
+
*
|
|
124
|
+
* Vale la stessa divisione di mestiere: il viola pieno disegna bordo e tratteggio, la variante
|
|
125
|
+
* `-text` scrive la pastiglia e l'etichetta. Il pieno su `--dpe-surface-alt` misura 4.53:1 e sulla
|
|
126
|
+
* riga tinta del pannello 4.47:1 — sopra e sotto il minimo a seconda di dove finisce, che e'
|
|
127
|
+
* esattamente il tipo di fortuna su cui non si costruisce.
|
|
68
128
|
*/
|
|
69
129
|
--dpe-not-compilable: #7c5cd6;
|
|
130
|
+
--dpe-not-compilable-text: #6f4fc4;
|
|
70
131
|
|
|
71
132
|
/*
|
|
72
133
|
* Velo della dialog modale (`::backdrop`). E' un token perche' la regola della casa e' «colori
|
|
@@ -94,8 +155,23 @@
|
|
|
94
155
|
--dpe-cat-uncompilable: #7c5cd6;
|
|
95
156
|
--dpe-cat-uncompilable-soft: #ebe6fa;
|
|
96
157
|
|
|
97
|
-
/*
|
|
98
|
-
|
|
158
|
+
/*
|
|
159
|
+
* Colori degli archi per tipo di ingresso.
|
|
160
|
+
*
|
|
161
|
+
* Un arco del DAG e' un **oggetto grafico necessario a capire il contenuto** (WCAG 1.4.11, 3:1):
|
|
162
|
+
* senza archi non c'e' grafo, e la topologia non e' scritta da nessun'altra parte
|
|
163
|
+
* dell'interfaccia. L'arco predefinito misurava **2.36:1** sul fondo del canvas in tema chiaro,
|
|
164
|
+
* cioe' sotto il minimo; e' lo stesso grigio-azzurro, trenta punti piu' scuro su ogni canale, e
|
|
165
|
+
* ora sta a **3.46:1**. Gli altri quattro erano gia' sopra (3.05-4.43) e non si toccano.
|
|
166
|
+
*
|
|
167
|
+
* In tema scuro il valore non cambia: li' l'arco predefinito misura gia' 4.18:1 sul canvas. La
|
|
168
|
+
* separazione esiste dove serve e non dove non serve.
|
|
169
|
+
*
|
|
170
|
+
* Nota: questa famiglia **coincide per valore** con i token di stato in piu' punti, ma e' una
|
|
171
|
+
* famiglia sua. Cambiare un colore di stato non cambia un arco, e viceversa — le due cose si
|
|
172
|
+
* assomigliano, non si condividono.
|
|
173
|
+
*/
|
|
174
|
+
--dpe-edge-source: #7a8496;
|
|
99
175
|
--dpe-edge-primary: #2f7d8f;
|
|
100
176
|
--dpe-edge-secondary: #8b5cf6;
|
|
101
177
|
--dpe-edge-append: #22a06b;
|
|
@@ -161,6 +237,12 @@
|
|
|
161
237
|
--dpe-text: #e8eaf0;
|
|
162
238
|
--dpe-text-muted: #8b90a0;
|
|
163
239
|
--dpe-text-subtle: #6b7684;
|
|
240
|
+
/*
|
|
241
|
+
* Qui la separazione **serve in entrambi i temi**, al contrario di quella degli stati: su fondo
|
|
242
|
+
* scuro `--dpe-text-subtle` misura 3.81:1 sulla superficie e 3.21:1 su quella incassata, cioe'
|
|
243
|
+
* sotto il minimo ovunque. Il valore informativo sta fra 4.9 e 5.8 sulle tre superfici scure.
|
|
244
|
+
*/
|
|
245
|
+
--dpe-text-subtle-strong: #8d94a6;
|
|
164
246
|
--dpe-accent: #5fb3c4;
|
|
165
247
|
--dpe-accent-strong: #7ac6d6;
|
|
166
248
|
--dpe-accent-contrast: #0c0e14;
|
|
@@ -169,6 +251,17 @@
|
|
|
169
251
|
--dpe-success: #63b57f;
|
|
170
252
|
--dpe-info: #7ea6f0;
|
|
171
253
|
--dpe-not-compilable: #a78bfa;
|
|
254
|
+
/*
|
|
255
|
+
* In tema scuro la separazione fra colore di stato e colore del testo **non serve**: misurati su
|
|
256
|
+
* tutte le superfici scure, fondi tinti compresi, i cinque stanno fra 4.8:1 e 7.6:1. Le varianti
|
|
257
|
+
* puntano quindi al token di stato invece di ripeterne il valore, cosi' un ospite che ritinge uno
|
|
258
|
+
* stato in tema scuro si porta dietro anche il testo senza doverlo sapere.
|
|
259
|
+
*/
|
|
260
|
+
--dpe-error-text: var(--dpe-error);
|
|
261
|
+
--dpe-warning-text: var(--dpe-warning);
|
|
262
|
+
--dpe-success-text: var(--dpe-success);
|
|
263
|
+
--dpe-info-text: var(--dpe-info);
|
|
264
|
+
--dpe-not-compilable-text: var(--dpe-not-compilable);
|
|
172
265
|
/* Su fondo scuro il velo deve pesare piu': la superficie sotto e' gia' scura. */
|
|
173
266
|
--dpe-scrim: rgba(4, 5, 8, 0.66);
|
|
174
267
|
/*
|
|
@@ -296,6 +389,11 @@ dpe-builder {
|
|
|
296
389
|
/*
|
|
297
390
|
* Indicatore di stato sporco. Colore **e** simbolo: il colore da solo non basta a distinguere
|
|
298
391
|
* due stati per chi non lo percepisce, e questo e' l'indicatore su cui si decide se salvare.
|
|
392
|
+
*
|
|
393
|
+
* **Decorativo nello stato a riposo**, informativo in quello acceso — che infatti prende
|
|
394
|
+
* `--dpe-warning-text` qui sotto. «○ nessuna modifica» e' la meta' ridondante della coppia:
|
|
395
|
+
* l'assenza di «● modificata» dice la stessa cosa, e «Salva» e' comunque spento con il motivo nel
|
|
396
|
+
* titolo. Attenuarlo e' voluto, perche' lo stato a riposo non deve chiamare l'attenzione.
|
|
299
397
|
*/
|
|
300
398
|
.dpe-shell__dirty {
|
|
301
399
|
flex: 0 0 auto;
|
|
@@ -305,7 +403,7 @@ dpe-builder {
|
|
|
305
403
|
}
|
|
306
404
|
|
|
307
405
|
.dpe-shell__dirty--on {
|
|
308
|
-
color: var(--dpe-warning, #
|
|
406
|
+
color: var(--dpe-warning-text, #8f6115);
|
|
309
407
|
font-weight: 600;
|
|
310
408
|
}
|
|
311
409
|
|
|
@@ -352,7 +450,7 @@ dpe-builder {
|
|
|
352
450
|
padding: 2px 8px;
|
|
353
451
|
border: 1px solid var(--dpe-success, #22a06b);
|
|
354
452
|
border-radius: 999px;
|
|
355
|
-
color: var(--dpe-success, #
|
|
453
|
+
color: var(--dpe-success-text, #177a4f);
|
|
356
454
|
font-size: 11px;
|
|
357
455
|
font-weight: 600;
|
|
358
456
|
white-space: nowrap;
|
|
@@ -398,19 +496,24 @@ dpe-builder {
|
|
|
398
496
|
font-size: 11px;
|
|
399
497
|
}
|
|
400
498
|
|
|
499
|
+
/*
|
|
500
|
+
* Pastiglie di stato: il bordo porta il colore di stato, le lettere la sua variante `-text`. E' la
|
|
501
|
+
* divisione dichiarata in testa al foglio, e qui si vede il perche': il bordo e il testo stanno
|
|
502
|
+
* sullo stesso fondo ma hanno due soglie diverse.
|
|
503
|
+
*/
|
|
401
504
|
.dpe-shell__pill--ok {
|
|
402
505
|
border-color: var(--dpe-success, #22a06b);
|
|
403
|
-
color: var(--dpe-success, #
|
|
506
|
+
color: var(--dpe-success-text, #177a4f);
|
|
404
507
|
}
|
|
405
508
|
|
|
406
509
|
.dpe-shell__pill--error {
|
|
407
510
|
border-color: var(--dpe-error, #dc2626);
|
|
408
|
-
color: var(--dpe-error, #
|
|
511
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
409
512
|
}
|
|
410
513
|
|
|
411
514
|
.dpe-shell__pill--busy {
|
|
412
515
|
border-color: var(--dpe-info, #3b6fd4);
|
|
413
|
-
color: var(--dpe-info, #
|
|
516
|
+
color: var(--dpe-info-text, #3161bd);
|
|
414
517
|
}
|
|
415
518
|
|
|
416
519
|
/* Banner di riga intera: disallineamento del dialetto, salvataggio fallito. Non e' un tooltip. */
|
|
@@ -729,6 +832,9 @@ dpe-canvas .dpe-flow .dpe-port {
|
|
|
729
832
|
min-width: 0;
|
|
730
833
|
}
|
|
731
834
|
|
|
835
|
+
/* **Decorativo**: quale porta sia quale lo dice gia' il **colore dell'arco** che ci arriva (vedi la
|
|
836
|
+
sezione «archi»), e la dialog del nodo nomina sorgente primaria e secondaria per esteso. A 9px
|
|
837
|
+
l'etichetta e' un promemoria sulla card, non la fonte del fatto. */
|
|
732
838
|
dpe-canvas .dpe-flow .dpe-port__label {
|
|
733
839
|
max-width: 96px;
|
|
734
840
|
overflow: hidden;
|
|
@@ -795,7 +901,7 @@ dpe-canvas .dpe-flow .dpe-node .dpe-connector--out {
|
|
|
795
901
|
border: 2px solid var(--dpe-surface, #fff);
|
|
796
902
|
border-radius: 50%;
|
|
797
903
|
background: var(--dpe-border-strong, #cfd4de);
|
|
798
|
-
/* Sporge oltre il bordo inferiore: e'
|
|
904
|
+
/* Sporge oltre il bordo inferiore: e' li' che gli archi partono. */
|
|
799
905
|
margin-bottom: -6px;
|
|
800
906
|
/*
|
|
801
907
|
* `--ff-connector-connected-color` e' il token con cui la libreria colora un connettore
|
|
@@ -858,6 +964,7 @@ dpe-canvas .dpe-flow .dpe-node__sub {
|
|
|
858
964
|
white-space: nowrap;
|
|
859
965
|
}
|
|
860
966
|
|
|
967
|
+
/* **Decorativo**: e' un separatore «·», non porta nessun contenuto. */
|
|
861
968
|
dpe-canvas .dpe-flow .dpe-node__dot {
|
|
862
969
|
padding: 0 4px;
|
|
863
970
|
color: var(--dpe-text-subtle, #98a2b3);
|
|
@@ -886,7 +993,7 @@ dpe-canvas .dpe-flow .dpe-node__btn:hover {
|
|
|
886
993
|
|
|
887
994
|
dpe-canvas .dpe-flow .dpe-node__btn--remove:hover {
|
|
888
995
|
border-color: var(--dpe-error, #dc2626);
|
|
889
|
-
color: var(--dpe-error, #
|
|
996
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
890
997
|
}
|
|
891
998
|
|
|
892
999
|
dpe-canvas .dpe-flow .dpe-node__meta {
|
|
@@ -898,6 +1005,10 @@ dpe-canvas .dpe-flow .dpe-node__meta {
|
|
|
898
1005
|
min-height: 18px;
|
|
899
1006
|
}
|
|
900
1007
|
|
|
1008
|
+
/* **Decorativo**, ed e' il posto che il token attenuato esiste per servire: il nome tecnico lo
|
|
1009
|
+
ripetono la testata della dialog (`.dpe-dialog__name`) e il pannello dello schema
|
|
1010
|
+
(`.dpe-schema__name`), entrambi leggibili. Alzarlo qui appiattirebbe la card, che e' il danno
|
|
1011
|
+
che la divisione dei due token evita. */
|
|
901
1012
|
dpe-canvas .dpe-flow .dpe-node__name {
|
|
902
1013
|
overflow: hidden;
|
|
903
1014
|
max-width: 130px;
|
|
@@ -918,24 +1029,29 @@ dpe-canvas .dpe-flow .dpe-badge {
|
|
|
918
1029
|
white-space: nowrap;
|
|
919
1030
|
}
|
|
920
1031
|
|
|
1032
|
+
/*
|
|
1033
|
+
* Le pastiglie sulla card: bordo con il colore di stato, lettere con la variante `-text`. Qui il
|
|
1034
|
+
* fondo e' `--dpe-surface-alt`, dove il viola pieno scendeva a 4.53:1 e l'azzurro a 4.48:1 — una
|
|
1035
|
+
* pastiglia da 10px e' il posto peggiore dove restare al filo del minimo.
|
|
1036
|
+
*/
|
|
921
1037
|
dpe-canvas .dpe-flow .dpe-badge--error {
|
|
922
1038
|
border-color: var(--dpe-error, #dc2626);
|
|
923
|
-
color: var(--dpe-error, #
|
|
1039
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
924
1040
|
}
|
|
925
1041
|
|
|
926
1042
|
dpe-canvas .dpe-flow .dpe-badge--warning {
|
|
927
1043
|
border-color: var(--dpe-warning, #b7791f);
|
|
928
|
-
color: var(--dpe-warning, #
|
|
1044
|
+
color: var(--dpe-warning-text, #8f6115);
|
|
929
1045
|
}
|
|
930
1046
|
|
|
931
1047
|
dpe-canvas .dpe-flow .dpe-badge--info {
|
|
932
1048
|
border-color: var(--dpe-info, #3b6fd4);
|
|
933
|
-
color: var(--dpe-info, #
|
|
1049
|
+
color: var(--dpe-info-text, #3161bd);
|
|
934
1050
|
}
|
|
935
1051
|
|
|
936
1052
|
dpe-canvas .dpe-flow .dpe-badge--not-compilable {
|
|
937
1053
|
border-color: var(--dpe-not-compilable, #7c5cd6);
|
|
938
|
-
color: var(--dpe-not-compilable, #
|
|
1054
|
+
color: var(--dpe-not-compilable-text, #6f4fc4);
|
|
939
1055
|
}
|
|
940
1056
|
|
|
941
1057
|
/* =================================================================== archi */
|
|
@@ -952,8 +1068,8 @@ dpe-canvas .dpe-flow .dpe-badge--not-compilable {
|
|
|
952
1068
|
*/
|
|
953
1069
|
|
|
954
1070
|
.dpe-edge {
|
|
955
|
-
--ff-connection-color: var(--dpe-edge-source, #
|
|
956
|
-
--ff-marker-color: var(--dpe-edge-source, #
|
|
1071
|
+
--ff-connection-color: var(--dpe-edge-source, #7a8496);
|
|
1072
|
+
--ff-marker-color: var(--dpe-edge-source, #7a8496);
|
|
957
1073
|
--ff-connection-selected-color: var(--dpe-accent, #2f7d8f);
|
|
958
1074
|
}
|
|
959
1075
|
|
|
@@ -1029,7 +1145,10 @@ dpe-node-palette input[type='search'] {
|
|
|
1029
1145
|
font-size: 12px;
|
|
1030
1146
|
}
|
|
1031
1147
|
|
|
1032
|
-
/* Intestazione di gruppo: piu' piccola del titolo della palette, e non cliccabile.
|
|
1148
|
+
/* Intestazione di gruppo: piu' piccola del titolo della palette, e non cliccabile.
|
|
1149
|
+
**Decorativa**: «Sorgenti / Trasformazioni / Scritture» e' il riassunto delle voci che contiene,
|
|
1150
|
+
e ogni voce porta la propria etichetta leggibile piu' l'icona colorata per famiglia. Illeggibile
|
|
1151
|
+
l'intestazione, non si perde nessuna voce. */
|
|
1033
1152
|
dpe-node-palette .dpe-palette__group {
|
|
1034
1153
|
margin: 8px 2px 2px;
|
|
1035
1154
|
color: var(--dpe-text-subtle, #98a2b3);
|
|
@@ -1136,7 +1255,7 @@ dpe-node-palette .dpe-palette__flag {
|
|
|
1136
1255
|
padding: 0 5px;
|
|
1137
1256
|
border: 1px solid var(--dpe-not-compilable, #7c5cd6);
|
|
1138
1257
|
border-radius: 999px;
|
|
1139
|
-
color: var(--dpe-not-compilable, #
|
|
1258
|
+
color: var(--dpe-not-compilable-text, #6f4fc4);
|
|
1140
1259
|
font-size: 9px;
|
|
1141
1260
|
font-weight: 700;
|
|
1142
1261
|
letter-spacing: 0.04em;
|
|
@@ -1187,24 +1306,41 @@ dpe-node-icon {
|
|
|
1187
1306
|
font-weight: 600;
|
|
1188
1307
|
}
|
|
1189
1308
|
|
|
1309
|
+
/*
|
|
1310
|
+
* Il suggerimento sotto un campo: testo attenuato, **non** testo che si puo' non leggere. Con
|
|
1311
|
+
* `--dpe-text-subtle` misurava 2.58:1 in tema chiaro e 3.81:1 in scuro — sotto il minimo in
|
|
1312
|
+
* entrambi — e ci passano le colonne disponibili e il conteggio del catalogo delle formule, cioe'
|
|
1313
|
+
* cio' che si legge per capire cosa si puo' scrivere nel campo sopra.
|
|
1314
|
+
*
|
|
1315
|
+
* Colore proprio e non token alzato: sulle nostre superfici chiare **non esiste** un terzo grigio
|
|
1316
|
+
* piu' chiaro di `--dpe-text-muted` che stia sopra 4.5:1 (su bianco il limite e' circa #767676, e
|
|
1317
|
+
* `--dpe-text-muted` e' gia' li'). Alzare `--dpe-text-subtle` lo renderebbe un doppione di
|
|
1318
|
+
* `--dpe-text-muted` e appiattirebbe dove serve davvero attenuare — il nome tecnico sulla card del
|
|
1319
|
+
* nodo. La gerarchia qui la fanno corpo e peso: etichetta 12px/600, suggerimento 11px/400.
|
|
1320
|
+
*/
|
|
1190
1321
|
.dpe-field__hint {
|
|
1191
|
-
color: var(--dpe-text-
|
|
1322
|
+
color: var(--dpe-text-muted, #6b7086);
|
|
1192
1323
|
font-size: 11px;
|
|
1193
1324
|
}
|
|
1194
1325
|
|
|
1195
|
-
/*
|
|
1326
|
+
/*
|
|
1327
|
+
* Un rilievo del backend sul campo: si mostra sotto, non in un tooltip — e con le varianti `-text`
|
|
1328
|
+
* degli stati, perche' qui il colore e' **lettere**. L'avviso con `--dpe-warning` misurava 3.64:1
|
|
1329
|
+
* sul fondo della dialog: e' il colore con cui arriva `DPE_EXPR_TYPE_WIDENED`, la diagnostica piu'
|
|
1330
|
+
* frequente dell'editor di formule.
|
|
1331
|
+
*/
|
|
1196
1332
|
.dpe-field__issue {
|
|
1197
|
-
color: var(--dpe-error, #
|
|
1333
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
1198
1334
|
font-size: 11px;
|
|
1199
1335
|
line-height: 1.45;
|
|
1200
1336
|
}
|
|
1201
1337
|
|
|
1202
1338
|
.dpe-field__issue--warning {
|
|
1203
|
-
color: var(--dpe-warning, #
|
|
1339
|
+
color: var(--dpe-warning-text, #8f6115);
|
|
1204
1340
|
}
|
|
1205
1341
|
|
|
1206
1342
|
.dpe-field__issue--info {
|
|
1207
|
-
color: var(--dpe-info, #
|
|
1343
|
+
color: var(--dpe-info-text, #3161bd);
|
|
1208
1344
|
}
|
|
1209
1345
|
|
|
1210
1346
|
.dpe-form input[type='text'],
|
|
@@ -1230,7 +1366,18 @@ dpe-node-icon {
|
|
|
1230
1366
|
outline-offset: 1px;
|
|
1231
1367
|
}
|
|
1232
1368
|
|
|
1233
|
-
|
|
1369
|
+
/*
|
|
1370
|
+
* Il bordo del rilievo vale per **tutti** i controlli, non per i soli `input`.
|
|
1371
|
+
*
|
|
1372
|
+
* Con la regola sul solo `input` l'utente impara «bordo rosso = qualcosa non va» e poi la tendina
|
|
1373
|
+
* che il backend segnala non ce l'ha: la diagnostica e' sotto il campo, ma il campo sembra sano.
|
|
1374
|
+
* Che questo cambi l'aspetto di ogni tendina diagnosticata non e' un effetto collaterale, e' la
|
|
1375
|
+
* correzione — dovevano gia' averlo tutte. Resta legato ad `aria-invalid`, che e' scritto solo
|
|
1376
|
+
* dove una diagnostica del backend nomina quel campo: nessuna regola locale decide il colore.
|
|
1377
|
+
*/
|
|
1378
|
+
.dpe-form input[aria-invalid='true'],
|
|
1379
|
+
.dpe-form select[aria-invalid='true'],
|
|
1380
|
+
.dpe-form textarea[aria-invalid='true'] {
|
|
1234
1381
|
border-color: var(--dpe-error, #dc2626);
|
|
1235
1382
|
}
|
|
1236
1383
|
|
|
@@ -1318,7 +1465,7 @@ dpe-node-icon {
|
|
|
1318
1465
|
|
|
1319
1466
|
.dpe-btn--danger:hover:not(:disabled) {
|
|
1320
1467
|
border-color: var(--dpe-error, #dc2626);
|
|
1321
|
-
color: var(--dpe-error, #
|
|
1468
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
1322
1469
|
}
|
|
1323
1470
|
|
|
1324
1471
|
.dpe-btn--icon {
|
|
@@ -1366,16 +1513,177 @@ dpe-node-icon {
|
|
|
1366
1513
|
border-left-color: var(--dpe-error, #dc2626);
|
|
1367
1514
|
}
|
|
1368
1515
|
|
|
1516
|
+
/*
|
|
1517
|
+
* **Informativo.** Un messaggio di stato vuoto e' l'**unico** contenuto della sua area: se non si
|
|
1518
|
+
* legge, al suo posto non c'e' un testo piu' debole, c'e' uno spazio bianco — e uno spazio bianco
|
|
1519
|
+
* non distingue «non c'e' niente» da «non e' ancora arrivato». Diversi di questi messaggi portano
|
|
1520
|
+
* anche la conseguenza («Nessun campo: la sorgente non produce colonne»), che non e' scritta
|
|
1521
|
+
* altrove.
|
|
1522
|
+
*/
|
|
1369
1523
|
.dpe-empty {
|
|
1370
|
-
color: var(--dpe-text-subtle, #
|
|
1524
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1371
1525
|
font-size: 12px;
|
|
1372
1526
|
font-style: italic;
|
|
1373
1527
|
}
|
|
1374
1528
|
|
|
1375
|
-
/*
|
|
1376
|
-
.
|
|
1529
|
+
/*
|
|
1530
|
+
* Il **linguaggio di formule** nominato nell'etichetta del campo (ADR 0031/0036). Sostituisce
|
|
1531
|
+
* `.dpe-expr__dialect`, che nominava il dialetto: da quando le espressioni sono formule il
|
|
1532
|
+
* dialetto non c'entra piu' con cio' che si scrive li'.
|
|
1533
|
+
*
|
|
1534
|
+
* Non e' un avviso e non ne prende i colori: e' un'etichetta di contesto, quindi tono attenuato.
|
|
1535
|
+
* L'avviso rosso che stava sotto questo campo diceva «cio' che scrivi verra' eseguito», ed e'
|
|
1536
|
+
* sparito perche' non e' piu' vero.
|
|
1537
|
+
*/
|
|
1538
|
+
.dpe-expr__language {
|
|
1539
|
+
margin-left: 6px;
|
|
1540
|
+
padding: 1px 6px;
|
|
1541
|
+
/* Scala dei raggi **unica**: niente pillola inventata qui, il gradino piu' piccolo e' questo. */
|
|
1542
|
+
border-radius: var(--dpe-radius-xs, 6px);
|
|
1543
|
+
background: var(--dpe-surface-alt, #f7f8fa);
|
|
1544
|
+
border: 1px solid var(--dpe-border, #e2e5eb);
|
|
1545
|
+
color: var(--dpe-text-muted, #6b7086);
|
|
1377
1546
|
font-family: var(--dpe-font-mono, monospace);
|
|
1547
|
+
font-size: 10px;
|
|
1378
1548
|
font-weight: 600;
|
|
1549
|
+
text-transform: none;
|
|
1550
|
+
letter-spacing: 0;
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
/*
|
|
1554
|
+
* La **forma** pretesa dal campo (`DpeFormulaCatalogResult.requiredForm`), accanto al linguaggio.
|
|
1555
|
+
*
|
|
1556
|
+
* Deve leggersi come una cosa **diversa** dalla pastiglia del linguaggio, che le sta a fianco: due
|
|
1557
|
+
* pastiglie identiche una accanto all'altra si leggono come un'unica etichetta spezzata. Stessa
|
|
1558
|
+
* scala di raggi e stesso corpo — la morbidezza e' unica in tutta la libreria — ma tinta d'accento
|
|
1559
|
+
* invece che di superficie.
|
|
1560
|
+
*
|
|
1561
|
+
* Il testo prende `--dpe-accent-strong` e non `--dpe-accent`: qui il colore e' **lettere**, ed e' la
|
|
1562
|
+
* stessa divisione di mestiere che LV1 ha introdotto per gli stati. Non si apre un token nuovo
|
|
1563
|
+
* perche' quello giusto esiste gia': in tema chiaro e' la versione scurita dell'accento (6.9:1 su
|
|
1564
|
+
* bianco, ~6.3:1 sul fondo tinto al 10%), in tema scuro la versione schiarita — cioe' in entrambi
|
|
1565
|
+
* i temi punta dalla parte leggibile senza che questa regola debba saperlo.
|
|
1566
|
+
*/
|
|
1567
|
+
.dpe-expr__form {
|
|
1568
|
+
margin-left: 6px;
|
|
1569
|
+
padding: 1px 6px;
|
|
1570
|
+
border-radius: var(--dpe-radius-xs, 6px);
|
|
1571
|
+
background: color-mix(in srgb, var(--dpe-accent, #2f7d8f) 10%, var(--dpe-surface, #fff));
|
|
1572
|
+
border: 1px solid color-mix(in srgb, var(--dpe-accent, #2f7d8f) 35%, var(--dpe-surface, #fff));
|
|
1573
|
+
color: var(--dpe-accent-strong, #226270);
|
|
1574
|
+
font-size: 10px;
|
|
1575
|
+
font-weight: 600;
|
|
1576
|
+
text-transform: none;
|
|
1577
|
+
letter-spacing: 0;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1580
|
+
/*
|
|
1581
|
+
* La stessa pastiglia **mentre una validazione e' in volo** (ADR 0042). La forma arriva da
|
|
1582
|
+
* `validate`, quindi fra il gesto che la cambia e la risposta c'e' una finestra — misurata a
|
|
1583
|
+
* 2,58 s dentro la pagina — in cui questa pastiglia mostra la forma **precedente** con la faccia
|
|
1584
|
+
* di un fatto. Qui non si afferma piu'.
|
|
1585
|
+
*
|
|
1586
|
+
* Come si ottiene «non asserito» senza togliere leggibilita': si **sottrae la tinta d'accento** —
|
|
1587
|
+
* che e' cio' che la faceva leggere come corrente — e si mette il bordo **tratteggiato**, che e'
|
|
1588
|
+
* l'idioma della cosa provvisoria. Non si abbassa l'opacita': un'etichetta che spiega un campo
|
|
1589
|
+
* bloccato deve restare leggibile per intero, e l'opacita' avrebbe portato il testo sotto la
|
|
1590
|
+
* soglia del contrasto proprio dove serve.
|
|
1591
|
+
*
|
|
1592
|
+
* Nessun token nuovo, e non per parsimonia: la coppia giusta esiste gia' ed e' quella che LV2 ha
|
|
1593
|
+
* fissato per il **testo attenuato che porta informazione** — `--dpe-text-subtle-strong` su
|
|
1594
|
+
* `--dpe-surface-alt`, misurata 4.91:1 in chiaro e 5.37:1 in scuro. Un token nuovo per questo
|
|
1595
|
+
* stato sarebbe una seconda dichiarazione della stessa decisione.
|
|
1596
|
+
*
|
|
1597
|
+
* La specificita' e' la stessa della regola qui sopra (0,1,0 contro 0,1,0) e questa viene **dopo**:
|
|
1598
|
+
* e' l'unico caso del foglio in cui l'ordine e' il presidio giusto, perche' i due selettori sono
|
|
1599
|
+
* lo stesso stato in due momenti — il modificatore non contende con una regola generale, la
|
|
1600
|
+
* specializza.
|
|
1601
|
+
*/
|
|
1602
|
+
.dpe-expr__form--updating {
|
|
1603
|
+
background: var(--dpe-surface-alt, #f7f8fa);
|
|
1604
|
+
border: 1px dashed var(--dpe-border-strong, #cfd4de);
|
|
1605
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
/* Il marcatore dentro la pastiglia: non e' un'altra pastiglia — due accostate si leggono come
|
|
1609
|
+
un'unica etichetta spezzata — quindi non ha fondo ne' bordo, solo il corsivo del provvisorio. */
|
|
1610
|
+
.dpe-expr__form-note {
|
|
1611
|
+
font-style: italic;
|
|
1612
|
+
font-weight: 500;
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
/*
|
|
1616
|
+
* Il campo formula **bloccato**: la forma che questo nodo pretende non e' fra quelle che il
|
|
1617
|
+
* compilatore registrato sa produrre (`DpeEnvironment.supportedForms` incrociato con
|
|
1618
|
+
* `requiredForm`).
|
|
1619
|
+
*
|
|
1620
|
+
* Il selettore dichiara la specificita' che gli serve — `.dpe-form .dpe-expr__input--blocked` e'
|
|
1621
|
+
* (0,2,0) contro (0,1,1) di `.dpe-form textarea` — invece di sperare nell'ordine: una classe sola
|
|
1622
|
+
* perderebbe fondo e colore contro la regola generale del controllo, che e' il modo tipico in cui
|
|
1623
|
+
* uno stato «si vede in ispezione e non a schermo».
|
|
1624
|
+
*
|
|
1625
|
+
* Il colore e' `--dpe-text-subtle-strong` e non `--dpe-text-muted`: qui dentro c'e' una formula
|
|
1626
|
+
* **scritta dall'utente**, cioe' testo che deve restare leggibile per essere portato altrove, e
|
|
1627
|
+
* per la divisione di LV2 il testo attenuato che porta informazione prende il token informativo.
|
|
1628
|
+
* Misurato: 4.91:1 in chiaro e 5.37:1 in scuro sulla superficie attenuata, contro 4.61:1 e 5.12:1
|
|
1629
|
+
* dell'altro — ed e' in elenco nel test di contrasto, perche' il colore non si giudica a occhio.
|
|
1630
|
+
*
|
|
1631
|
+
* Il controllo e' `readonly`, non `disabled`: `disabled` lo toglierebbe dalla tabulazione e ne
|
|
1632
|
+
* renderebbe il testo non selezionabile, cioe' toglierebbe la formula proprio a chi deve
|
|
1633
|
+
* riscriverla altrove. Per questo il fondo lo dichiara questa regola e non `:disabled`.
|
|
1634
|
+
*/
|
|
1635
|
+
.dpe-form .dpe-expr__input--blocked {
|
|
1636
|
+
background: var(--dpe-surface-alt, #f7f8fa);
|
|
1637
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1638
|
+
cursor: not-allowed;
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
/* Il motivo, attaccato al campo che spiega: e' l'unica cosa che l'utente puo' leggere per capire
|
|
1642
|
+
perche' non si scrive. Stessa scala di spaziatura dei rilievi qui sopra. */
|
|
1643
|
+
.dpe-expr__blocked {
|
|
1644
|
+
margin-top: 4px;
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
/*
|
|
1648
|
+
* La riga in testa del blocco «il catalogo non e' stato prodotto»: e' l'unica che l'utente deve
|
|
1649
|
+
* leggere per forza, quindi prende il colore pieno del testo invece dell'attenuato del blocco.
|
|
1650
|
+
*/
|
|
1651
|
+
.dpe-expr__catalog-lead {
|
|
1652
|
+
margin: 0;
|
|
1653
|
+
color: var(--dpe-text, #1a1c23);
|
|
1654
|
+
font-weight: 600;
|
|
1655
|
+
}
|
|
1656
|
+
|
|
1657
|
+
/*
|
|
1658
|
+
* Le strutturali che spiegano la causa, chiuse per difetto. Il sacco riguarda **tutta** la
|
|
1659
|
+
* definizione e puo' contenere voci che con questo nodo non c'entrano: non si filtrano per
|
|
1660
|
+
* pertinenza — l'errore che spiega lo schema puo' stare a piu' salti di distanza — quindi si
|
|
1661
|
+
* dichiarano come dettaglio. Aperte per difetto sarebbero il muro indistinguibile che la riga in
|
|
1662
|
+
* testa esiste per evitare.
|
|
1663
|
+
*/
|
|
1664
|
+
.dpe-expr__catalog-details {
|
|
1665
|
+
margin-top: 4px;
|
|
1666
|
+
font-size: 11px;
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
.dpe-expr__catalog-details summary {
|
|
1670
|
+
cursor: pointer;
|
|
1671
|
+
color: var(--dpe-text-muted, #6b7086);
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
/*
|
|
1675
|
+
* Cosa il linguaggio offre in questo nodo: un conteggio dentro il suggerimento, non un elenco.
|
|
1676
|
+
*
|
|
1677
|
+
* Colore **proprio** e non quello ereditato dal suggerimento: `--dpe-text-subtle` sul fondo del
|
|
1678
|
+
* pannello stava a 2.6:1 in tema chiaro, sotto il minimo WCAG, e questo e' testo che si legge per
|
|
1679
|
+
* capire se il catalogo e' arrivato. Il rilievo su `.dpe-field__hint` accanto, riportato allora
|
|
1680
|
+
* all'architetto, e' stato chiuso dopo: adesso il suggerimento porta lo stesso token e i due non
|
|
1681
|
+
* si contraddicono piu'. La dichiarazione resta esplicita invece di ereditare, cosi' il conteggio
|
|
1682
|
+
* si legge anche se un giorno finisce fuori da un suggerimento.
|
|
1683
|
+
*/
|
|
1684
|
+
.dpe-expr__catalog {
|
|
1685
|
+
color: var(--dpe-text-muted, #6b7086);
|
|
1686
|
+
font-style: italic;
|
|
1379
1687
|
}
|
|
1380
1688
|
|
|
1381
1689
|
/* ================================================= ispettore e fatti del nodo */
|
|
@@ -1652,7 +1960,7 @@ dpe-node-facts .dpe-badge {
|
|
|
1652
1960
|
|
|
1653
1961
|
dpe-node-facts .dpe-badge--not-compilable {
|
|
1654
1962
|
border-color: var(--dpe-not-compilable, #7c5cd6);
|
|
1655
|
-
color: var(--dpe-not-compilable, #
|
|
1963
|
+
color: var(--dpe-not-compilable-text, #6f4fc4);
|
|
1656
1964
|
}
|
|
1657
1965
|
|
|
1658
1966
|
/*
|
|
@@ -1769,7 +2077,7 @@ dpe-node-facts .dpe-badge--not-compilable {
|
|
|
1769
2077
|
|
|
1770
2078
|
.dpe-dialog__btn--danger:hover {
|
|
1771
2079
|
border-color: var(--dpe-error, #dc2626);
|
|
1772
|
-
color: var(--dpe-error, #
|
|
2080
|
+
color: var(--dpe-error-text, #c81e1e);
|
|
1773
2081
|
}
|
|
1774
2082
|
|
|
1775
2083
|
/* ============================================================ diagnostiche */
|
|
@@ -1850,8 +2158,14 @@ dpe-diagnostics-panel {
|
|
|
1850
2158
|
flex: 1 1 auto;
|
|
1851
2159
|
}
|
|
1852
2160
|
|
|
2161
|
+
/*
|
|
2162
|
+
* **Informativo**, ed e' il caso che decide la regola. E' l'unica resa testuale del percorso
|
|
2163
|
+
* diagnostico, cioe' esattamente l'aiuto per cui questo pannello esiste: un pannello in cui il
|
|
2164
|
+
* «dove» e' il pezzo meno leggibile e' un difetto di scopo, non di stile. Con il token decorativo
|
|
2165
|
+
* misurava 2.39:1 sulla riga «non compilabile», che e' anche il fondo peggiore delle tre.
|
|
2166
|
+
*/
|
|
1853
2167
|
.dpe-diag__where {
|
|
1854
|
-
color: var(--dpe-text-subtle, #
|
|
2168
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1855
2169
|
font-size: 10px;
|
|
1856
2170
|
}
|
|
1857
2171
|
|
|
@@ -1864,17 +2178,25 @@ dpe-diagnostics-panel {
|
|
|
1864
2178
|
text-transform: uppercase;
|
|
1865
2179
|
}
|
|
1866
2180
|
|
|
2181
|
+
/*
|
|
2182
|
+
* Le due etichette della riga: 9px maiuscoletto, con il bordo che prende il colore dal testo
|
|
2183
|
+
* (`currentcolor`). Quindi qui la variante `-text` colora **entrambi**, ed e' voluto: a 9px il
|
|
2184
|
+
* testo e' il vincolo piu' stretto dei due, e la riga «non compilabile» ha pure un fondo tinto che
|
|
2185
|
+
* portava il viola pieno a 4.47:1.
|
|
2186
|
+
*/
|
|
1867
2187
|
.dpe-diag__tag--not-compilable {
|
|
1868
|
-
color: var(--dpe-not-compilable, #
|
|
2188
|
+
color: var(--dpe-not-compilable-text, #6f4fc4);
|
|
1869
2189
|
}
|
|
1870
2190
|
|
|
1871
2191
|
.dpe-diag__tag--dialect {
|
|
1872
|
-
color: var(--dpe-info, #
|
|
2192
|
+
color: var(--dpe-info-text, #3161bd);
|
|
1873
2193
|
}
|
|
1874
2194
|
|
|
2195
|
+
/* **Informativo**: e' la riga che distingue «nessun rilievo» da «non ancora validata», e sono due
|
|
2196
|
+
stati che portano a due decisioni opposte. Vedi `.dpe-empty`. */
|
|
1875
2197
|
.dpe-diag__empty {
|
|
1876
2198
|
padding: 10px;
|
|
1877
|
-
color: var(--dpe-text-subtle, #
|
|
2199
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1878
2200
|
font-size: 11px;
|
|
1879
2201
|
font-style: italic;
|
|
1880
2202
|
}
|
|
@@ -1910,6 +2232,8 @@ dpe-schema-panel {
|
|
|
1910
2232
|
color: var(--dpe-accent, #2f7d8f);
|
|
1911
2233
|
}
|
|
1912
2234
|
|
|
2235
|
+
/* **Decorativa**: la riga e' identificata da `.dpe-schema__name`, e la categoria del nodo si legge
|
|
2236
|
+
sulla card del canvas e nella testata della dialog. Qui e' un promemoria, non la fonte. */
|
|
1913
2237
|
.dpe-schema__category {
|
|
1914
2238
|
color: var(--dpe-text-subtle, #98a2b3);
|
|
1915
2239
|
font-size: 10px;
|
|
@@ -1951,7 +2275,7 @@ dpe-schema-panel {
|
|
|
1951
2275
|
|
|
1952
2276
|
.dpe-col--dropped {
|
|
1953
2277
|
border-color: var(--dpe-warning, #b7791f);
|
|
1954
|
-
color: var(--dpe-warning, #
|
|
2278
|
+
color: var(--dpe-warning-text, #8f6115);
|
|
1955
2279
|
text-decoration: line-through;
|
|
1956
2280
|
}
|
|
1957
2281
|
|
|
@@ -1959,13 +2283,15 @@ dpe-schema-panel {
|
|
|
1959
2283
|
padding: 0 6px;
|
|
1960
2284
|
border: 1px solid var(--dpe-not-compilable, #7c5cd6);
|
|
1961
2285
|
border-radius: 999px;
|
|
1962
|
-
color: var(--dpe-not-compilable, #
|
|
2286
|
+
color: var(--dpe-not-compilable-text, #6f4fc4);
|
|
1963
2287
|
font-size: 9px;
|
|
1964
2288
|
text-transform: uppercase;
|
|
1965
2289
|
}
|
|
1966
2290
|
|
|
2291
|
+
/* **Informativo**: «in attesa della propagazione» e «nessuno schema propagato» sono l'unico modo di
|
|
2292
|
+
sapere se lo schema sta arrivando o non arrivera'. Vedi `.dpe-empty`. */
|
|
1967
2293
|
.dpe-schema__empty {
|
|
1968
|
-
color: var(--dpe-text-subtle, #
|
|
2294
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
1969
2295
|
font-size: 11px;
|
|
1970
2296
|
font-style: italic;
|
|
1971
2297
|
}
|
|
@@ -2047,8 +2373,11 @@ dpe-sql-preview td {
|
|
|
2047
2373
|
text-align: left;
|
|
2048
2374
|
}
|
|
2049
2375
|
|
|
2376
|
+
/* **Informativo**, e qui il testo porta **I10**: «nessuna istruzione prodotta» e «nessuna anteprima
|
|
2377
|
+
richiesta» sono situazioni diverse, e il pannello dell'SQL non ha altro da mostrare quando una
|
|
2378
|
+
delle due vale. Vedi `.dpe-empty`. */
|
|
2050
2379
|
.dpe-sql__empty {
|
|
2051
|
-
color: var(--dpe-text-subtle, #
|
|
2380
|
+
color: var(--dpe-text-subtle-strong, #666c80);
|
|
2052
2381
|
font-size: 11px;
|
|
2053
2382
|
font-style: italic;
|
|
2054
2383
|
}
|
|
@@ -2137,6 +2466,9 @@ dpe-catalog {
|
|
|
2137
2466
|
color: var(--dpe-accent-strong);
|
|
2138
2467
|
}
|
|
2139
2468
|
|
|
2469
|
+
/* **Decorativo** per la ragione piu' forte delle altre: un controllo disattivato e' escluso dal
|
|
2470
|
+
requisito di contrasto (WCAG 1.4.3), e attenuarlo e' *come* si dice che e' disattivato. Il motivo
|
|
2471
|
+
per cui lo e' sta nel `title` e in pagina, non nelle lettere del bottone. */
|
|
2140
2472
|
.dpe-cat__btn:disabled {
|
|
2141
2473
|
color: var(--dpe-text-subtle);
|
|
2142
2474
|
cursor: not-allowed;
|
|
@@ -2151,7 +2483,7 @@ dpe-catalog {
|
|
|
2151
2483
|
|
|
2152
2484
|
.dpe-cat__btn--danger:not(:disabled) {
|
|
2153
2485
|
border-color: var(--dpe-error);
|
|
2154
|
-
color: var(--dpe-error);
|
|
2486
|
+
color: var(--dpe-error-text);
|
|
2155
2487
|
}
|
|
2156
2488
|
|
|
2157
2489
|
.dpe-cat__btn:focus-visible,
|
|
@@ -2170,7 +2502,12 @@ dpe-catalog {
|
|
|
2170
2502
|
padding: 7px 14px;
|
|
2171
2503
|
border-bottom: 1px solid var(--dpe-border);
|
|
2172
2504
|
background: color-mix(in srgb, var(--dpe-error) 10%, var(--dpe-surface));
|
|
2173
|
-
|
|
2505
|
+
/*
|
|
2506
|
+
* Fondo tinto del proprio stesso colore: il rosso pieno ci misurava 4.13:1, meno che sul bianco.
|
|
2507
|
+
* Un banner d'errore e' il posto in cui il testo conta di piu' e quello in cui il fondo aiuta di
|
|
2508
|
+
* meno.
|
|
2509
|
+
*/
|
|
2510
|
+
color: var(--dpe-error-text);
|
|
2174
2511
|
font-size: 11px;
|
|
2175
2512
|
}
|
|
2176
2513
|
|
|
@@ -2246,6 +2583,7 @@ dpe-catalog {
|
|
|
2246
2583
|
font-size: 10px;
|
|
2247
2584
|
}
|
|
2248
2585
|
|
|
2586
|
+
/* **Decorativo**: separatore «·» fra i fatti del sommario, come sulla card del nodo. */
|
|
2249
2587
|
.dpe-cat__dot {
|
|
2250
2588
|
color: var(--dpe-text-subtle);
|
|
2251
2589
|
}
|
|
@@ -2262,7 +2600,7 @@ dpe-catalog {
|
|
|
2262
2600
|
.dpe-cat__flag--errors {
|
|
2263
2601
|
border-color: var(--dpe-error);
|
|
2264
2602
|
background: color-mix(in srgb, var(--dpe-error) 8%, transparent);
|
|
2265
|
-
color: var(--dpe-error);
|
|
2603
|
+
color: var(--dpe-error-text);
|
|
2266
2604
|
}
|
|
2267
2605
|
|
|
2268
2606
|
.dpe-cat__actions,
|
|
@@ -2320,6 +2658,7 @@ dpe-catalog {
|
|
|
2320
2658
|
font-size: 12px;
|
|
2321
2659
|
}
|
|
2322
2660
|
|
|
2661
|
+
/* **Decorativo**: come il bottone disattivato qui sopra, e' un controllo inattivo. */
|
|
2323
2662
|
.dpe-cat__input:disabled {
|
|
2324
2663
|
background: var(--dpe-surface-sunken);
|
|
2325
2664
|
color: var(--dpe-text-subtle);
|