@massimo-cassandro/minimo 1.41.3 → 1.41.5
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/README.md +12 -12
- package/charts/src/node-helpers/create-svg-canvas-node.mjs +2 -2
- package/charts/src/node-helpers/svg-text-to-path.js +9 -9
- package/charts/src/rating-display/index.js +1 -1
- package/charts/src/rating-display/ratindDisplayAnimation.js +3 -3
- package/design-tokens/README.md +2 -2
- package/design-tokens/_src/_readme.md +26 -26
- package/dev-tools/README.md +16 -16
- package/dev-tools/create-favicons/README.md +31 -31
- package/dev-tools/create-favicons/src/create-ico.mjs +2 -2
- package/dev-tools/create-favicons/src/default-params.mjs +1 -1
- package/dev-tools/create-favicons/src/init.mjs +1 -1
- package/dev-tools/design-tokens-builder/README.md +102 -102
- package/dev-tools/design-tokens-builder/build-tokens-src/build-source-modes.mjs +85 -73
- package/dev-tools/design-tokens-builder/build-tokens-src/config.mjs +109 -85
- package/dev-tools/design-tokens-builder/build-tokens-src/formats/css.mjs +113 -90
- package/dev-tools/design-tokens-builder/build-tokens-src/formats/json.mjs +107 -95
- package/dev-tools/design-tokens-builder/build-tokens-src/legacy-tokens-parser.mjs +71 -64
- package/dev-tools/design-tokens-builder/build-tokens-src/light-dark.mjs +75 -65
- package/dev-tools/design-tokens-builder/build-tokens-src/merge-css.mjs +113 -102
- package/dev-tools/design-tokens-builder/build-tokens-src/platforms.mjs +36 -30
- package/dev-tools/design-tokens-builder/build-tokens-src/resolve-source-paths.mjs +15 -13
- package/dev-tools/design-tokens-builder/build-tokens-src/source-prefixes.mjs +44 -42
- package/dev-tools/design-tokens-builder/build-tokens-src/source-transforms.mjs +89 -83
- package/dev-tools/design-tokens-builder/build-tokens-src/token-rename-parser.mjs +99 -86
- package/dev-tools/design-tokens-builder/build-tokens-src/transforms.mjs +64 -48
- package/dev-tools/design-tokens-builder/build-tokens.mjs +80 -68
- package/dev-tools/design-tokens-builder/check-unresolved-custom-props.mjs +103 -77
- package/dev-tools/design-tokens-builder/tokens-config-sample.mjs +275 -238
- package/dev-tools/find-orphan-css-classes/find-orphan-css-classes.mjs +2 -2
- package/dev-tools/starter-kit/source_files/app/CLAUDE.md +4 -2
- package/dev-tools/starter-kit/source_files/app/index.css +10 -0
- package/dev-tools/starter-kit/source_files/app/index.js +1 -1
- package/dev-tools/starter-kit/source_files/root/_sf/controller/ImgViewerController.php +3 -3
- package/dev-tools/starter-kit/source_files/root/_sf/controller/ViewerController.php +2 -2
- package/dev-tools/starter-kit/source_files/root/stylelint.config.mjs +1 -1
- package/dev-tools/starter-kit/source_files/root/webpack-config-modules/css-rules.mjs +1 -1
- package/dev-tools/starter-kit/starter-install.sh +2 -2
- package/dev-tools/stylelint-config/README.md +7 -7
- package/dev-tools/svg-icons-tools/README.md +32 -32
- package/dev-tools/svg-icons-tools/src/config-manager.mjs +1 -1
- package/dev-tools/svg-icons-tools/src/default-config.mjs +118 -118
- package/dev-tools/svg-icons-tools/src/jsx-icon-file-builder.mjs +24 -24
- package/dev-tools/svg-icons-tools/src/parse-svg-filename.mjs +3 -3
- package/dev-tools/svg-icons-tools/src/parse-svg-files.mjs +1 -1
- package/dev-tools/svg-icons-tools/src/parse-svg-markup.mjs +4 -4
- package/dev-tools/svg-icons-tools/src/svg-to-jsx.mjs +2 -2
- package/dev-tools/svg-icons-tools/src/svg-to-optimized.mjs +2 -2
- package/dev-tools/svg-icons-tools/src/svg-to-symbols.mjs +2 -2
- package/dev-tools/upd@m/README.md +1 -1
- package/dev-tools/upd@m/index.mjs +1 -1
- package/dev-tools/update-version/README.md +9 -9
- package/index.js +1 -0
- package/package.json +3 -1
- package/snippets/unsplash-browser-app/README.md +1 -1
- package/snippets/unsplash-browser-app/unsplash-utilities.js +9 -9
- package/src/components/autocomplete/README.md +3 -3
- package/src/components/autocomplete/autocomplete-engine.js +75 -63
- package/src/components/autocomplete/check-autocomplete.js +3 -3
- package/src/components/dismiss-alerts.js +3 -3
- package/src/components/form-reset-submit.js +6 -6
- package/src/components/inner-nav/inner-nav.js +2 -2
- package/src/components/modal-alert/modal-alert.js +67 -65
- package/src/components/modal-alert/modal-alert.minimo.tokens.mjs +1 -1
- package/src/components/modal-popup/modal-popup.js +56 -56
- package/src/components/overlay/overlay.js +3 -3
- package/src/components/sf-macro/readme.md +1 -1
- package/src/components/sf-macro/sf-macro.js +27 -23
- package/src/components/slide-up-down-toggle/slide-up-down-toggle.js +83 -79
- package/src/components/slide-up-down-toggle/slide-up-down-toggle.module.css +44 -44
- package/src/components/snackbar/snackbar.js +19 -19
- package/src/components/spinner/spinner.js +3 -3
- package/src/components/unsplash-page/README.md +8 -8
- package/src/components/unsplash-page/fetch-unsplash-data.js +3 -3
- package/src/components/unsplash-page/unsplash-page.js +33 -33
- package/src/components/unsplash-page/unsplash-page.module.css +1 -1
- package/src/css/alerts.css +2 -2
- package/src/css/forms/forms.css +4 -4
- package/src/css/forms/validation.css +1 -1
- package/src/css/margin-padding-media.css +4 -4
- package/src/css/margin-padding.css +4 -4
- package/src/css/reset.css +11 -11
- package/src/icons/read-me.md +1 -1
- package/src/minimo.css +3 -9
- package/src/utilities/better-text-with-places.js +105 -105
- package/src/utilities/better-text.js +42 -35
- package/src/utilities/classnames.js +8 -8
- package/src/utilities/cookies.js +6 -6
- package/src/utilities/create-id.js +3 -3
- package/src/utilities/disable-btns-on-submit.js +2 -2
- package/src/utilities/dom-builder/dom-builder.js +89 -86
- package/src/utilities/dom-builder/domBuilderBasicSetup.js +9 -9
- package/src/utilities/dom-builder/parseDomString.js +23 -23
- package/src/utilities/dom-builder-helpers/README.md +2 -2
- package/src/utilities/dom-builder-helpers/form-tags.js +100 -100
- package/src/utilities/dom-builder-helpers/picture-tag.js +39 -39
- package/src/utilities/enable-submit-btns.js +1 -1
- package/src/utilities/escape-html.js +2 -2
- package/src/utilities/generate-pwd.js +4 -4
- package/src/utilities/linked-dates.js +13 -13
- package/src/utilities/parse-file-size.js +6 -6
- package/src/utilities/random-id.js +3 -3
- package/src/utilities/relative-date.js +40 -40
- package/src/utilities/sentence-case.js +1 -1
- package/src/utilities/strip-tags.js +1 -1
- package/src/utilities/title-case.js +1 -1
- package/src/utilities/truncate-string.js +5 -5
- package/src/utilities/validation-error-class.js +12 -12
- package/src/web-components/json-table/json-table-component.js +123 -121
- package/src/web-components/json-table/json-table-component.module.css +6 -6
- package/src/web-components/json-table/json-table.minimo.tokens.mjs +6 -6
- package/src/web-components/json-table/readme.md +76 -110
- package/src/web-components/json-table/src/cell-content.js +25 -25
- package/src/web-components/json-table/src/content-utils.js +21 -21
- package/src/web-components/json-table/src/data-types.js +32 -32
- package/src/web-components/json-table/src/defaults.js +230 -191
- package/src/web-components/json-table/src/get-data.js +55 -38
- package/src/web-components/json-table/src/icons.js +17 -17
- package/src/web-components/json-table/src/info-section.js +18 -18
- package/src/web-components/json-table/src/main-builder.js +45 -45
- package/src/web-components/json-table/src/pagination.js +32 -32
- package/src/web-components/json-table/src/parse-cols.js +18 -18
- package/src/web-components/json-table/src/parse-rows.js +17 -17
- package/src/web-components/json-table/src/resolve-params.js +53 -41
- package/src/web-components/json-table/src/search.js +13 -13
- package/src/web-components/json-table/src/sorting.js +20 -20
- package/src/web-components/json-table/src/table-body.js +13 -13
- package/src/web-components/json-table/src/table-builder.js +34 -34
- package/src/web-components/json-table/src/table-tfoot.js +8 -8
- package/src/web-components/json-table/src/table-thead.js +21 -21
- package/src/web-components/json-table/src/update-info.js +11 -11
- package/types/classes.d.ts +2 -2
- package/types/global.d.ts +18 -12
|
@@ -1,118 +1,123 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/*
|
|
2
|
+
tokens-config-sample.mjs
|
|
3
|
+
Configurazione di esempio per build-tokens.mjs e check-unresolved-custom-props.mjs.
|
|
4
|
+
Copiare e adattare questo file per ogni progetto; passarlo con il flag --config.
|
|
5
|
+
|
|
6
|
+
Tutti i percorsi sono relativi a questo file di configurazione (non alla CWD).
|
|
7
|
+
*/
|
|
6
8
|
|
|
7
9
|
// import { homedir } from 'os';
|
|
8
10
|
// import path from 'path';
|
|
9
11
|
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
+
// Percorso dei file sorgente dei design token.
|
|
13
|
+
// Si può usare un percorso assoluto, un percorso relativo, oppure costruirlo programmaticamente.
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
|
|
15
|
-
//
|
|
17
|
+
// percorso del pacchetto minimo in node_modules
|
|
16
18
|
const node_modules_path = '../../node_modules',
|
|
17
19
|
minimo_path = `${node_modules_path}/@massimo-cassandro/minimo`;
|
|
18
20
|
|
|
19
21
|
const config = {
|
|
20
22
|
|
|
21
23
|
// ---------------------------------------------------------------------------
|
|
22
|
-
// BUILD-TOKENS
|
|
24
|
+
// IMPOSTAZIONI DI BUILD-TOKENS E STYLE-DICTIONARY
|
|
23
25
|
// ---------------------------------------------------------------------------
|
|
24
26
|
|
|
25
|
-
//
|
|
27
|
+
// Percorso della config stylelint usata per il lint del file CSS generato
|
|
26
28
|
stylelintConfigPath: '../../stylelint.config.mjs',
|
|
27
29
|
|
|
28
|
-
//
|
|
30
|
+
// Directory di output del file CSS generato da Style Dictionary
|
|
29
31
|
buildPath: './',
|
|
30
32
|
|
|
31
|
-
//
|
|
33
|
+
// Nome del file CSS generato
|
|
32
34
|
destFile: 'custom-properties.css',
|
|
33
35
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
36
|
+
/*
|
|
37
|
+
File token sorgente — accetta percorsi, glob o una combinazione dei due.
|
|
38
|
+
Formati supportati: .json, .jsonc, .mjs (deve esportare come default un oggetto conforme a DTCG)
|
|
39
|
+
|
|
40
|
+
I file .json legacy (non DTCG) — ad es. esportati da Open Props — vengono
|
|
41
|
+
rilevati automaticamente e convertiti alla sintassi DTCG v5 in fase di parsing, quindi
|
|
42
|
+
possono essere mescolati liberamente con le normali sorgenti DTCG (vedi README.md). Non coperti:
|
|
43
|
+
i .jsonc, riservati alle sorgenti DTCG scritte a mano. Questi file .json vengono
|
|
44
|
+
letti con un semplice JSON.parse (niente commenti, niente trailing comma).
|
|
45
|
+
|
|
46
|
+
Un nodo legacy che è al tempo stesso un token (value/type propri) E un
|
|
47
|
+
gruppo con figli annidati (ad es. other.ease.out di Open Props, che ha
|
|
48
|
+
un valore proprio più out.1 ... out.5) non può essere rappresentato in DTCG v5 —
|
|
49
|
+
un nodo con $value è sempre una foglia. Il suo valore viene spostato in un token
|
|
50
|
+
figlio chiamato `default` (other.ease.out.default, cioè --other-ease-out-default),
|
|
51
|
+
oppure `base` se esiste già un figlio `default`; se esistono entrambi la build
|
|
52
|
+
fallisce. I riferimenti a un nodo di questo tipo dallo stesso file vengono riscritti
|
|
53
|
+
di conseguenza; da altri file devono usare esplicitamente il nome del figlio.
|
|
54
|
+
|
|
55
|
+
ATTENZIONE: non usare path.join() per costruire i pattern glob — può corrompere
|
|
56
|
+
la sintassi del pattern. Usare i template literal:
|
|
57
|
+
OK: `${minimo_path}/**\/*.{json,mjs}`
|
|
58
|
+
NO: path.join(minimo_path, '/**\/*.{json,mjs}')
|
|
59
|
+
|
|
60
|
+
Una voce può essere anche un oggetto `{ src, prefix, transform }` (src: stringa
|
|
61
|
+
o array di stringhe/glob).
|
|
62
|
+
|
|
63
|
+
`prefix`: rende le custom properties di quei file con un prefisso,
|
|
64
|
+
ad es. { src: '...open-props...json', prefix: 'op' } trasforma gray.0 di
|
|
65
|
+
Open Props in --op-gray-0. Cambia solo il nome della proprietà: i {riferimenti} a
|
|
66
|
+
quei token vengono resi come var(--op-gray-0) e l'output JSON resta
|
|
67
|
+
senza prefisso. 'op', 'op-' e '--op-' sono equivalenti. Due prefissi diversi
|
|
68
|
+
per lo stesso file fanno fallire la build.
|
|
69
|
+
|
|
70
|
+
`transform`: sposta/rinomina i nodi dei token all'interno dell'albero di quei file —
|
|
71
|
+
ad es. { primary: 'primary.100' } prende ciò che è definito al dot-path
|
|
72
|
+
`primary` e lo sposta in `primary.100`, PRIMA che Style Dictionary risolva
|
|
73
|
+
i {riferimenti} o costruisca l'output CSS/JSON (a differenza di `prefix`, che è una
|
|
74
|
+
modifica puramente estetica del nome CSS applicata a posteriori — vedi
|
|
75
|
+
build-tokens-src/source-transforms.mjs). Caso d'uso tipico: un progetto
|
|
76
|
+
preesistente (ad es. guidato da Figma/Penpot) chiama `primary` il proprio colore base,
|
|
77
|
+
mentre i token di minimo referenziano `{primary.100}` — invece di
|
|
78
|
+
rinominare la proprietà a mano dopo ogni build, o di cercare ogni
|
|
79
|
+
riferimento di minimo per modificarlo, `transform` corregge una volta sola
|
|
80
|
+
il percorso del token, qui.
|
|
81
|
+
- Entrambi i lati della mappa usano la notazione DOT-PATH di Style Dictionary
|
|
82
|
+
('primary.100'), NON la notazione delle custom properties con trattini
|
|
83
|
+
('primary-100'): i segmenti dei nomi dei token in questo progetto possono
|
|
84
|
+
contenere trattini (ad es. btn-close), quindi un trattino non permette di
|
|
85
|
+
distinguere in modo affidabile un separatore di percorso da una parte letterale
|
|
86
|
+
del nome di un segmento — un punto invece sì, perché è già riservato da
|
|
87
|
+
Style Dictionary come separatore di percorso dei {riferimenti}.
|
|
88
|
+
- I {riferimenti} al VECCHIO percorso — nello stesso file o in uno completamente
|
|
89
|
+
diverso — vengono riscritti automaticamente, in tutto l'albero, col NUOVO
|
|
90
|
+
percorso una volta uniti tutti i sorgenti: ad es. ogni {primary} dell'intera
|
|
91
|
+
build diventa {primary.100}, sia che i token di minimo scrivessero già
|
|
92
|
+
direttamente {primary.100} (nessun effetto) sia che altro nel
|
|
93
|
+
progetto dica ancora {primary}.
|
|
94
|
+
- ATTENZIONE: questa riscrittura è per design indipendente dal file (un semplice
|
|
95
|
+
{riferimento} non sa a quale file "appartiene") — quindi se la
|
|
96
|
+
STESSA chiave sorgente (ad es. "primary") ha una destinazione DIVERSA nelle
|
|
97
|
+
mappe `transform` di due file diversi, ogni rinomina funziona comunque da sola,
|
|
98
|
+
ma {primary} diventa ambiguo: a quale destinazione va riscritto?
|
|
99
|
+
In quel caso la riscrittura automatica viene saltata per quella chiave
|
|
100
|
+
(viene registrato un warning) e ogni riferimento {primary} va corretto
|
|
101
|
+
a mano per puntare al giusto fra i due nuovi percorsi.
|
|
102
|
+
- Una chiave sorgente non trovata nel file registra solo un warning, non fa
|
|
103
|
+
fallire la build.
|
|
104
|
+
- Si applica sia all'output CSS sia a quello JSON (vedi OUTPUT JSON DEI TOKEN
|
|
105
|
+
più sotto), perché entrambi vengono ricostruiti dal percorso del token, ormai
|
|
106
|
+
già rinominato.
|
|
107
|
+
|
|
108
|
+
Entrambe le opzioni funzionano allo stesso modo dentro sourceModes.
|
|
109
|
+
*/
|
|
107
110
|
source: [
|
|
108
|
-
`${minimo_path}/design-tokens/_src/**/*.tokens.{mjs,jsonc}`, //
|
|
109
|
-
`${minimo_path}/src/**/*.tokens.{mjs,jsonc}`, //
|
|
111
|
+
`${minimo_path}/design-tokens/_src/**/*.tokens.{mjs,jsonc}`, // token principali
|
|
112
|
+
`${minimo_path}/src/**/*.tokens.{mjs,jsonc}`, // token dei componenti
|
|
110
113
|
|
|
111
|
-
//
|
|
114
|
+
// sorgente di token extra opzionale (in questo esempio, openProps, https://open-props.style/)
|
|
112
115
|
// { src: `${node_modules_path}/open-props/open-props.style-dictionary-tokens.json`, prefix: 'op' },
|
|
113
116
|
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
/*
|
|
118
|
+
i token del tuo progetto — ad es. rimappa il colore `primary`
|
|
119
|
+
esportato da Figma/Penpot sulla nomenclatura `primary.100` di minimo
|
|
120
|
+
*/
|
|
116
121
|
{
|
|
117
122
|
src: './design-tokens/*.{js,mjs,jsonc,json}',
|
|
118
123
|
prefix: 'my-project',
|
|
@@ -120,129 +125,145 @@ const config = {
|
|
|
120
125
|
}
|
|
121
126
|
],
|
|
122
127
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
128
|
+
/*
|
|
129
|
+
Suddivisione opzionale light/dark (o altra) delle custom properties — alternativa a
|
|
130
|
+
`source`. Se questa chiave è impostata (un oggetto non null), `source` qui sopra viene
|
|
131
|
+
ignorato: ogni chiave è il nome di una modalità, con il proprio array di pattern sorgente
|
|
132
|
+
(stesse regole di `source`: percorsi, glob o una combinazione).
|
|
133
|
+
|
|
134
|
+
Il CSS generato compone tutte le modalità in un unico destFile:
|
|
135
|
+
- le proprietà della modalità base (vedi sourceModesBase più sotto) vanno in un blocco
|
|
136
|
+
`:root { ... }` di primo livello, con `color-scheme: <tutte le modalità>;` anteposto
|
|
137
|
+
(ad es. "light dark")
|
|
138
|
+
- le proprietà di ogni altra modalità vanno in
|
|
139
|
+
`@media (prefers-color-scheme: <modalità>) { :root { ... } }`, con
|
|
140
|
+
`color-scheme: <modalità>;` anteposto
|
|
141
|
+
customPropsGroups, mergeCustomProps, addLayer, pxToRem ecc. si applicano
|
|
142
|
+
allo stesso modo che con un singolo `source`.
|
|
143
|
+
|
|
144
|
+
Riferimenti tra modalità: i token di una modalità non base possono referenziare i token
|
|
145
|
+
definiti nella modalità base (ad es. un token dark che usa {color.1} definito in
|
|
146
|
+
light); viene risolto in var(--color-1). Il contrario (o tra due
|
|
147
|
+
modalità non base) non è supportato e fallisce con un errore "reference not
|
|
148
|
+
defined", perché il target risulterebbe non definito fuori dal proprio
|
|
149
|
+
blocco @media.
|
|
150
|
+
|
|
151
|
+
L'output JSON (vedi OUTPUT JSON DEI TOKEN più sotto) viene prodotto una volta per
|
|
152
|
+
modalità, con il nome della modalità aggiunto a ogni nome di file, ad es. con
|
|
153
|
+
jsonDestFile: 'tokens' -> "tokens-light.jsonc", "tokens-dark.jsonc".
|
|
154
|
+
|
|
155
|
+
esempio:
|
|
156
|
+
sourceModes: {
|
|
157
|
+
light: [
|
|
158
|
+
`${minimo_path}/design-tokens/_src/**\/*.tokens.{mjs,jsonc}`,
|
|
159
|
+
`${minimo_path}/src/**\/*.tokens.{mjs,jsonc}`,
|
|
160
|
+
'./project-tokens/light/*.{js,mjs,jsonc,json}',
|
|
161
|
+
],
|
|
162
|
+
dark: [
|
|
163
|
+
'./project-tokens/dark/*.{js,mjs,jsonc,json}',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
*/
|
|
160
167
|
sourceModes: null,
|
|
161
168
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
169
|
+
/*
|
|
170
|
+
Con sourceModes impostato, e solo se definisce sia una chiave `light` sia una `dark`:
|
|
171
|
+
le custom properties presenti in ENTRAMBE — individuate per nome — vengono scritte
|
|
172
|
+
una sola volta come `--name: light-dark(<valore-light>, <valore-dark>);`, invece di
|
|
173
|
+
essere divise tra il blocco di primo livello della modalità base e una regola
|
|
174
|
+
`@media (prefers-color-scheme: dark) { ... }`.
|
|
175
|
+
|
|
176
|
+
Non vengono toccati:
|
|
177
|
+
- gli altri eventuali valori di sourceModes oltre a light/dark (ad es. una terza
|
|
178
|
+
modalità personalizzata) — restano sempre sulla propria regola
|
|
179
|
+
`@media (prefers-color-scheme: <modalità>) { ... }`
|
|
180
|
+
- una proprietà presente in una sola tra `light`/`dark` — resta nel blocco della
|
|
181
|
+
propria modalità (sempre dietro `@media`, a meno che quella modalità non sia
|
|
182
|
+
sourceModesBase)
|
|
183
|
+
|
|
184
|
+
Ogni volta che questa opzione è attiva (sourceModes ha sia una chiave light sia una
|
|
185
|
+
dark), la dichiarazione `color-scheme` della modalità base viene sempre normalizzata
|
|
186
|
+
in "light dark [...ogni altra modalità]", con light prima di dark — coerentemente con
|
|
187
|
+
l'ordine degli argomenti (valore-light, valore-dark) di light-dark() — indipendentemente
|
|
188
|
+
dall'ordine in cui sono dichiarate le chiavi di sourceModes o da quale delle due
|
|
189
|
+
sia configurata come sourceModesBase qui sotto.
|
|
190
|
+
|
|
191
|
+
Interazione con mergeCustomProps: non serve alcuna gestione speciale — il merge
|
|
192
|
+
per modalità con le custom properties preesistenti viene sempre eseguito per primo;
|
|
193
|
+
questa opzione poi riconcilia il valore che risulta in ogni modalità
|
|
194
|
+
(appena generato o conservato da un file preesistente) in light-dark(),
|
|
195
|
+
individuando le proprietà per nome. Ciò significa anche che rieseguire una build
|
|
196
|
+
con questa opzione appena attivata, su un destFile generato in precedenza
|
|
197
|
+
con l'opzione disattivata (divisione classica `@media (prefers-color-scheme: dark)`) e
|
|
198
|
+
mergeCustomProps: true, converte anche i valori conservati in chiamate light-dark() —
|
|
199
|
+
come in ogni caso di mergeCustomProps, un eventuale disallineamento resta da
|
|
200
|
+
correggere a mano.
|
|
201
|
+
|
|
202
|
+
Default: true. Ignorata quando sourceModes non è impostato (null/undefined).
|
|
203
|
+
*/
|
|
195
204
|
useLightDarkFunc: true,
|
|
196
205
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
206
|
+
/*
|
|
207
|
+
Con sourceModes impostato: la modalità le cui dichiarazioni vanno nel blocco
|
|
208
|
+
`:root { ... }` di primo livello, invece che annidate nella propria regola
|
|
209
|
+
`@media (prefers-color-scheme: <modalità>) { ... }` (default: la prima
|
|
210
|
+
chiave di sourceModes, ad es. 'light'). Ignorata quando sourceModes non è impostato.
|
|
211
|
+
*/
|
|
201
212
|
sourceModesBase: 'light',
|
|
202
213
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
214
|
+
/*
|
|
215
|
+
Selettore CSS che racchiude i blocchi di custom properties generati, al posto
|
|
216
|
+
del default `:root`. Si applica in modo uniforme sia con un singolo
|
|
217
|
+
`source` sia con `sourceModes` (il blocco di primo livello della modalità base e il
|
|
218
|
+
blocco di ogni altra modalità, annidato nella propria regola
|
|
219
|
+
`@media (prefers-color-scheme: <modalità>)`, usano lo stesso
|
|
220
|
+
selettore). Valori falsy o vuoti ripiegano su ':root'.
|
|
221
|
+
*/
|
|
209
222
|
customPropsSelector: ':where(html)',
|
|
210
223
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
224
|
+
/*
|
|
225
|
+
Se true (default), i valori dei token di tipo dimension espressi in px vengono convertiti
|
|
226
|
+
in rem nel CSS generato. I valori in altre unità (em, %, vh, dvw, ...)
|
|
227
|
+
non vengono mai toccati, indipendentemente da questa opzione.
|
|
228
|
+
*/
|
|
214
229
|
pxToRem: false,
|
|
215
230
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
/*
|
|
232
|
+
Conserva, tra una build e l'altra, le custom properties già presenti nel file CSS di
|
|
233
|
+
destinazione (destFile, da una build precedente): i loro valori hanno priorità
|
|
234
|
+
su quelli generati da questa build. Utile per mantenere override/aggiunte
|
|
235
|
+
manuali fatte direttamente nel CSS compilato. Ignorata se destFile non esiste
|
|
236
|
+
ancora. Valori accettati:
|
|
237
|
+
false - nessun merge: il file di destinazione viene rigenerato completamente
|
|
238
|
+
true (default) - merge di tutte le sorgenti
|
|
239
|
+
array - stringhe e/o RegExp confrontate con il percorso dei
|
|
240
|
+
file token sorgente (quelli in `source` o `sourceModes`):
|
|
241
|
+
vengono unite solo le proprietà generate da un file corrispondente,
|
|
242
|
+
le altre vengono sovrascritte dal valore generato.
|
|
243
|
+
Una stringa corrisponde se è contenuta nel percorso del file.
|
|
244
|
+
Un array vuoto è trattato come false.
|
|
245
|
+
ad es. ['/theme.minimo.tokens', /colors\.tokens\.(mjs|jsonc?)$/]
|
|
246
|
+
Con true o con un array, le proprietà presenti solo nel file preesistente (non più
|
|
247
|
+
generate, ad es. aggiunte a mano) vengono sempre conservate.
|
|
248
|
+
I commenti a fine riga di una custom property vengono conservati; i commenti su riga
|
|
249
|
+
intera vanno persi e un commento su più righe viene troncato alla fine della sua prima
|
|
250
|
+
riga (e chiuso, per mantenere valido il CSS).
|
|
251
|
+
*/
|
|
235
252
|
mergeCustomProps: true,
|
|
236
253
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
254
|
+
/*
|
|
255
|
+
Racchiude le custom properties generate in una regola at-rule CSS `@layer`,
|
|
256
|
+
ad es. addLayer: 'project' -> `@layer project { :root { ... } }`.
|
|
257
|
+
Impostare a null, undefined o false (default) per non emettere alcun layer.
|
|
258
|
+
*/
|
|
240
259
|
addLayer: false,
|
|
241
260
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
261
|
+
/*
|
|
262
|
+
Gruppi nominati di custom properties. Le proprietà il cui primo segmento del nome
|
|
263
|
+
(separato da trattini) corrisponde a uno dei `prefixes` di un gruppo vengono estratte,
|
|
264
|
+
etichettate con il `name` del gruppo e collocate all'inizio del file CSS
|
|
265
|
+
di output, nell'ordine in cui i gruppi sono elencati qui.
|
|
266
|
+
*/
|
|
246
267
|
customPropsGroups: [
|
|
247
268
|
{
|
|
248
269
|
name: 'COLORS',
|
|
@@ -260,68 +281,84 @@ const config = {
|
|
|
260
281
|
|
|
261
282
|
|
|
262
283
|
// ---------------------------------------------------------------------------
|
|
263
|
-
// JSON
|
|
284
|
+
// OUTPUT JSON DEI TOKEN
|
|
264
285
|
// ---------------------------------------------------------------------------
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
286
|
+
/*
|
|
287
|
+
Output opzionale dei design token, indipendente da qualsiasi strumento specifico
|
|
288
|
+
Genera uno o più file json(c) in aggiunta al file CSS di output —
|
|
289
|
+
utilizzabili in Penpot, Figma (tramite plugin), Token Studio, oppure in alternativa
|
|
290
|
+
ai file sorgente .mjs
|
|
291
|
+
*/
|
|
269
292
|
// ---------------------------------------------------------------------------
|
|
270
293
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
294
|
+
/*
|
|
295
|
+
Come gestire le espressioni matematiche nei $value dei token dimension (es. "{size.base} * .25"):
|
|
296
|
+
'keep' scrive l'espressione invariata
|
|
297
|
+
'calc' — la racchiude in calc() CSS: "calc({size.base} * .25)"
|
|
298
|
+
'resolve' — (default) la valuta numericamente, ereditando l'unità dal primo token referenziato
|
|
299
|
+
es. {size.base} = 16px, "{size.base} * .25" -> "4px"
|
|
300
|
+
*/
|
|
276
301
|
jsonExpression: 'resolve',
|
|
277
302
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
303
|
+
/*
|
|
304
|
+
Formato di output dei file JSON dei token: 'jsonc' o 'json'
|
|
305
|
+
'jsonc' -> aggiunge un'intestazione che segnala il file generato, usa l'estensione .jsonc
|
|
306
|
+
'json' -> JSON semplice, senza intestazione
|
|
307
|
+
*/
|
|
281
308
|
jsonFormat: 'jsonc',
|
|
282
309
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
310
|
+
/*
|
|
311
|
+
Directory di output dei file JSON dei design token.
|
|
312
|
+
Impostare a null (o omettere) per disattivare del tutto l'output json.
|
|
313
|
+
In modalità multi-file (jsonDestFile: null), tutti i file vengono scritti nella stessa
|
|
314
|
+
directory (senza sottocartelle che replicano l'albero dei sorgenti); la build
|
|
315
|
+
fallisce con un errore se due file sorgente producono lo stesso nome file.
|
|
316
|
+
*/
|
|
317
|
+
jsonBuildPath: null, // oppure './path/to/generated/design-tokens-dir',
|
|
289
318
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
319
|
+
/*
|
|
320
|
+
Nome base (senza estensione) del file JSON aggregato di output.
|
|
321
|
+
L'estensione viene aggiunta automaticamente in base a jsonFormat.
|
|
322
|
+
Impostare a null (o omettere) per generare invece un file per ogni file sorgente .mjs
|
|
323
|
+
(tutti nella stessa cartella jsonBuildPath — vedi jsonBuildPath qui sopra).
|
|
324
|
+
*/
|
|
325
|
+
jsonDestFile: null, // oppure 'tokens' (o altro),
|
|
295
326
|
|
|
296
327
|
|
|
297
328
|
// ---------------------------------------------------------------------------
|
|
298
|
-
//
|
|
329
|
+
// IMPOSTAZIONI DI CONTROLLO CUSTOM PROPS NON RISOLTE E NON USATE
|
|
299
330
|
// ---------------------------------------------------------------------------
|
|
300
331
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
332
|
+
/*
|
|
333
|
+
Se true, segnala anche le custom properties definite (in destFile o
|
|
334
|
+
in una voce di extraCustomPropsFiles) ma mai referenziate tramite var() in nessun
|
|
335
|
+
file CSS analizzato. Opt-in perché riesegue la pipeline di trasformazione
|
|
336
|
+
di Style Dictionary sui sorgenti dei token per risalire, quando possibile, al
|
|
337
|
+
file sorgente .mjs di ogni proprietà non usata. Default: false.
|
|
338
|
+
*/
|
|
306
339
|
checkUnused: true,
|
|
307
340
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
341
|
+
/*
|
|
342
|
+
Quando checkUnused è true: se true (default), le custom properties provenienti
|
|
343
|
+
da un file token sotto node_modules (es. un pacchetto di token di terze parti)
|
|
344
|
+
non vengono mai segnalate come non usate — il progetto che le usa non è tenuto
|
|
345
|
+
a ripulirle.
|
|
346
|
+
*/
|
|
312
347
|
ignoreUnusedInNodeModules: true,
|
|
313
348
|
|
|
314
|
-
//
|
|
315
|
-
//
|
|
349
|
+
// File CSS aggiuntivi che definiscono custom properties usate nel progetto
|
|
350
|
+
// ma non generate da build-tokens (ad es. librerie di terze parti)
|
|
316
351
|
extraCustomPropsFiles: [
|
|
317
352
|
// `${node_modules_path}/open-props/open-props.min.css`
|
|
318
353
|
],
|
|
319
354
|
|
|
320
|
-
// Directory
|
|
355
|
+
// Directory che contiene i file CSS da analizzare per le custom properties non risolte
|
|
321
356
|
dirToCheck: '../../app',
|
|
322
357
|
|
|
323
|
-
|
|
324
|
-
|
|
358
|
+
/*
|
|
359
|
+
Espressioni regolari dei nomi di custom property da escludere dal controllo.
|
|
360
|
+
Utile per le proprietà volutamente private/interne (es. con prefisso --_).
|
|
361
|
+
*/
|
|
325
362
|
excludePattern: [
|
|
326
363
|
/^--_/,
|
|
327
364
|
],
|