@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
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- TODO rivedere e semplificare -->
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Un insieme di script Node.js per gestire i design token CSS di un progetto. Costruito su [Style Dictionary v5](https://styledictionary.com/).
|
|
6
6
|
|
|
7
|
-
###
|
|
7
|
+
### Scopo
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Lo scopo di questo builder è unire i design token di minimo con quelli usati in un progetto — tipicamente provenienti da Figma o Penpot — e produrre le custom properties usate durante lo sviluppo.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
L'obiettivo è mantenere la nomenclatura dei token del progetto il più possibile vicina a quella di minimo, in modo che i componenti di minimo possano essere personalizzati senza ulteriori interventi.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
La strategia migliore è dare alle variabili in Figma/Penpot, fin dall'inizio, gli stessi nomi usati da minimo, così che sovrascrivere un valore resti un processo trasparente e automatico.
|
|
14
14
|
|
|
15
|
-
In
|
|
15
|
+
In un progetto preesistente, però, alcuni nomi potrebbero non corrispondere (ad es. il colore base del progetto si chiama `primary`, mentre l'equivalente di minimo è `primary.100`). Invece di correggere a mano le custom properties generate dopo ogni build, una voce di `source` può avere un'opzione `transform` (vedi [Rinomina dei token sorgente](#rinomina-dei-token-sorgente-transform) più sotto) che rimappa i nomi dei token su quelli di minimo prima ancora che vengano passati a Style Dictionary.
|
|
16
16
|
|
|
17
|
-
###
|
|
17
|
+
### Script
|
|
18
18
|
|
|
19
|
-
| Script |
|
|
19
|
+
| Script | Scopo |
|
|
20
20
|
|---|---|
|
|
21
|
-
| `build-tokens.mjs` |
|
|
22
|
-
| `check-unresolved-custom-props.mjs` |
|
|
21
|
+
| `build-tokens.mjs` | Genera un file di custom properties CSS a partire dai file sorgente dei design token |
|
|
22
|
+
| `check-unresolved-custom-props.mjs` | Analizza i file CSS e segnala i riferimenti `var(--...)` non presenti nel file dei token generato |
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Entrambi gli script condividono lo stesso file di configurazione, passato con `--config`.
|
|
25
25
|
|
|
26
|
-
###
|
|
26
|
+
### Configurazione iniziale
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Gli script sono pensati per essere usati come npm script. Aggiungerli al proprio `package.json`:
|
|
29
29
|
|
|
30
30
|
```json
|
|
31
31
|
{
|
|
@@ -36,9 +36,9 @@ The scripts are intended to be used as npm scripts. Add them to your `package.js
|
|
|
36
36
|
}
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
###
|
|
39
|
+
### Dipendenze
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
I seguenti pacchetti devono essere presenti nel progetto:
|
|
42
42
|
|
|
43
43
|
```json
|
|
44
44
|
{
|
|
@@ -47,43 +47,43 @@ The following packages must be present in your project:
|
|
|
47
47
|
}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
###
|
|
50
|
+
### File di configurazione
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Entrambi gli script leggono un file di configurazione condiviso passato con `--config`. Usare `tokens-config-sample.mjs` come punto di partenza.
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
Per maggiori informazioni leggere i commenti all'interno del file di esempio.
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
### `build-tokens.mjs`
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
59
|
+
Legge i file sorgente dei design token e genera:
|
|
60
|
+
- Un **file CSS** che contiene tutti i token come custom properties dentro `:root { ... }`
|
|
61
|
+
- Opzionalmente, uno o più file **W3C DTCG JSON/JSONC**, indipendenti da qualsiasi strumento specifico (utilizzabili in Penpot, Figma tramite plugin, Token Studio, ...).
|
|
62
62
|
|
|
63
|
-
####
|
|
63
|
+
#### Utilizzo
|
|
64
64
|
|
|
65
65
|
```sh
|
|
66
66
|
npx buildTokens --config ./path/to/tokens-config.mjs
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
####
|
|
69
|
+
#### File sorgente
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
- `{ src, prefix, transform }
|
|
71
|
+
L'array `source` accetta qualsiasi combinazione di:
|
|
72
|
+
- Percorsi di file: `'./tokens/colors.jsonc'`
|
|
73
|
+
- Pattern glob: `'./tokens/**/*.{json,jsonc,mjs}'`
|
|
74
|
+
- Oggetti `{ src, prefix, transform }`, per aggiungere un prefisso alle custom properties di quei file (vedi [Prefissi dei sorgenti](#prefissi-dei-sorgenti)) e/o per rinominare i nodi dei token al loro interno (vedi [Rinomina dei token sorgente](#rinomina-dei-token-sorgente-transform))
|
|
75
75
|
|
|
76
|
-
**
|
|
77
|
-
- `.json` / `.jsonc` —
|
|
78
|
-
- `.mjs` / `.js` —
|
|
76
|
+
**Formati supportati:**
|
|
77
|
+
- `.json` / `.jsonc` — letti direttamente come dati dei token
|
|
78
|
+
- `.mjs` / `.js` — importati come moduli ES; devono esportare come `default` un oggetto conforme a W3C DTCG
|
|
79
79
|
|
|
80
|
-
**
|
|
80
|
+
**Sintassi legacy dei token (rilevata automaticamente, solo `.json`):** i file sorgente `.json` scritti con la vecchia sintassi di Style Dictionary, non DTCG (`value`/`type` invece di `$value`/`$type`, riferimenti come `{group.token.value}` invece di `{group.token}` — ad es. un file esportato da [Open Props](https://open-props.style/)) vengono convertiti automaticamente alla sintassi DTCG v5 in fase di parsing, nodo per nodo. I file che usano già `$value`/`$type` non vengono toccati, quindi non servono flag di configurazione né elenchi di file: mescolare sorgenti legacy e DTCG nello stesso array `source` funziona senza altro. `.jsonc` non è coperto (riservato ai sorgenti DTCG scritti a mano, letti dal loader di Style Dictionary) e questi file `.json` vengono letti con un semplice `JSON.parse` (niente commenti, niente trailing comma). Vedi `build-tokens-src/legacy-tokens-parser.mjs`.
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
Un nodo legacy che è al tempo stesso un token (con `value`/`type` propri) *e* un gruppo con figli annidati (ad es. `other.ease.out` di Open Props, che ha un valore proprio più `out.1` ... `out.5`) non può essere rappresentato in DTCG v5, dove un nodo con `$value` è sempre una foglia. Il suo valore viene spostato in un token figlio chiamato `default` (`other.ease.out.default`, cioè `--other-ease-out-default`), oppure `base` se esiste già un figlio `default`; se esistono entrambi la build fallisce con un errore esplicito. I riferimenti a un nodo di questo tipo dallo stesso file vengono riscritti di conseguenza; da altri file devono usare esplicitamente il nome del figlio.
|
|
83
83
|
|
|
84
|
-
####
|
|
84
|
+
#### Prefissi dei sorgenti
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
Una voce di `source` (o di una modalità di `sourceModes`) può essere un oggetto `{ src, prefix }` al posto di una stringa: ogni custom property generata dai file individuati da `src` (un percorso, un glob o un array di questi) viene resa con il prefisso indicato. Utile per evitare collisioni di nomi con set di token di terze parti o per rendere esplicita la loro origine:
|
|
87
87
|
|
|
88
88
|
```js
|
|
89
89
|
source: [
|
|
@@ -92,21 +92,21 @@ source: [
|
|
|
92
92
|
],
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
Con questa configurazione `gray.0` di Open Props diventa `--op-gray-0`. `prefix` accetta `'op'`, `'op-'` o `'--op-'` (equivalenti).
|
|
96
96
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
- `customPropsGroups`
|
|
100
|
-
-
|
|
101
|
-
- `check-unresolved-custom-props.mjs`
|
|
97
|
+
- Cambia solo il **nome** della custom property, non il percorso del token: i `{riferimenti}` continuano a funzionare e un token di un'altra sorgente che referenzia `{gray.0}` viene reso come `var(--op-gray-0)`.
|
|
98
|
+
- L'output JSON (`jsonBuildPath`) **non** viene prefissato: mantiene l'albero dei token originale.
|
|
99
|
+
- `customPropsGroups` confronta il nome prefissato, quindi un gruppo può usare `prefixes: ['op']`.
|
|
100
|
+
- Assegnare due prefissi diversi allo stesso file fa fallire la build con un errore.
|
|
101
|
+
- `check-unresolved-custom-props.mjs` comprende la stessa sintassi. Le voci di `extraCustomPropsFiles` sono semplici file CSS e non vengono mai prefissate.
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
Vedi `build-tokens-src/source-prefixes.mjs`.
|
|
104
104
|
|
|
105
|
-
####
|
|
105
|
+
#### Rinomina dei token sorgente (`transform`)
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
Una voce di `source` (o di una modalità di `sourceModes`) può avere anche un oggetto `transform`: un token trovato a un dato dot-path in quei file viene spostato in un altro dot-path, **prima** che Style Dictionary risolva i `{riferimenti}` o costruisca l'output CSS/JSON — a differenza di `prefix` visto sopra, che è una modifica puramente estetica del nome CSS applicata a posteriori.
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
Caso d'uso tipico: un progetto preesistente (ad es. guidato da Figma/Penpot) chiama `primary` il proprio colore base, mentre i token di minimo referenziano `{primary.100}`. Invece di rinominare a mano la custom property generata dopo ogni build, o di cercare ogni riferimento di minimo per modificarlo, `transform` corregge una volta sola il percorso del token, nella configurazione:
|
|
110
110
|
|
|
111
111
|
```js
|
|
112
112
|
source: [
|
|
@@ -115,22 +115,22 @@ source: [
|
|
|
115
115
|
],
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
Con questa configurazione, qualunque cosa sia definita al dot-path `primary` nei file individuati viene spostata in `primary.100` — quindi diventa `--primary-100` nel CSS generato, e ogni riferimento esistente di minimo a `{primary.100}` viene risolto correttamente.
|
|
119
119
|
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
- **
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
- `check-unresolved-custom-props.mjs`
|
|
120
|
+
- **Notazione:** entrambi i lati della mappa usano la notazione dot-path di Style Dictionary (`'primary.100'`), non la notazione delle custom properties con trattini (`'primary-100'`). In questo progetto i segmenti dei nomi dei token possono a loro volta contenere trattini (ad es. `btn-close`), quindi un trattino non permette di distinguere in modo affidabile un separatore di percorso da una parte letterale del nome di un segmento — un punto invece sì, perché è già riservato da Style Dictionary come separatore di percorso dei `{riferimenti}`.
|
|
121
|
+
- **I riferimenti vengono riscritti automaticamente:** una volta uniti tutti i file sorgente, ogni `{riferimento}` al *vecchio* percorso del token — nello stesso file o in uno completamente diverso — viene riscritto in tutto l'albero col *nuovo* percorso (ad es. ogni `{primary}` della build diventa `{primary.100}`). È sicuro perché Style Dictionary risolve i `{riferimenti}` sull'unico albero di token unito, tramite percorso assoluto: se `primary` esisteva una sola volta, ogni `{primary}` ovunque puntava senza ambiguità a quell'unico nodo.
|
|
122
|
+
- **Eccezione:** se la *stessa* chiave sorgente (ad es. `primary`) ha una destinazione *diversa* nelle mappe `transform` di due file diversi, ogni rinomina funziona comunque da sola, ma il riferimento semplice `{primary}` diventa ambiguo: a quale destinazione dovrebbe puntare? In quel caso la riscrittura automatica viene saltata per quella chiave (viene registrato un warning) e ogni riferimento `{primary}` va corretto a mano per puntare al giusto fra i due nuovi percorsi.
|
|
123
|
+
- Una chiave sorgente non trovata nel file registra solo un warning; non fa fallire la build.
|
|
124
|
+
- Si applica **sia** all'output CSS sia a quello JSON (vedi [Output JSON](#output-json) più sotto), perché entrambi vengono ricostruiti dal percorso del token, ormai già rinominato — non serve una gestione separata.
|
|
125
|
+
- Due voci che danno destinazioni diverse alla stessa chiave sorgente nello stesso file fanno fallire la build con un errore.
|
|
126
|
+
- `check-unresolved-custom-props.mjs` comprende la stessa sintassi.
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Vedi `build-tokens-src/source-transforms.mjs` e `build-tokens-src/token-rename-parser.mjs`.
|
|
129
129
|
|
|
130
130
|
|
|
131
|
-
####
|
|
131
|
+
#### Formato dei file token (esempio JS)
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
Quando si usano file sorgente `.mjs`, esportare come default un oggetto che segue il [formato del W3C Design Token Community Group](https://design-tokens.github.io/community-group/format/):
|
|
134
134
|
|
|
135
135
|
```js
|
|
136
136
|
// colors.tokens.mjs
|
|
@@ -155,85 +155,85 @@ export default {
|
|
|
155
155
|
};
|
|
156
156
|
```
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
Il principale vantaggio di `.mjs` rispetto a `.json` è la possibilità di usare variabili JavaScript, commenti e valori calcolati nella definizione dei token.
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
I valori possono essere espressioni come `"{size.base} * .25"`, vedi `tokens-config-sample.mjs` per maggiori informazioni.
|
|
161
161
|
|
|
162
|
-
####
|
|
162
|
+
#### Transform personalizzate
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
Le seguenti transform vengono registrate in aggiunta a quelle predefinite di Style Dictionary:
|
|
165
165
|
|
|
166
|
-
|
|
|
166
|
+
| Nome | Tipo | Descrizione |
|
|
167
167
|
|---|---|---|
|
|
168
|
-
| `shadow/css` | value |
|
|
169
|
-
| `size/pxToRem-smart` | value |
|
|
170
|
-
| `color/css-modern` | value |
|
|
171
|
-
| `gradient/css` | value |
|
|
172
|
-
| `composite/css` | value |
|
|
173
|
-
| `typography/css` | value |
|
|
168
|
+
| `shadow/css` | value | Converte gli oggetti shadow (singoli o array) in una stringa CSS `box-shadow`. I valori in px vengono convertiti in rem. |
|
|
169
|
+
| `size/pxToRem-smart` | value | Converte i valori dei token `dimension` da px a rem. Salta i valori già in rem. |
|
|
170
|
+
| `color/css-modern` | value | Passthrough dei colori con supporto agli alias transitivi. |
|
|
171
|
+
| `gradient/css` | value | Converte gli oggetti gradient in `linear-gradient`, `radial-gradient` o `conic-gradient` CSS. |
|
|
172
|
+
| `composite/css` | value | Converte gli oggetti `border`, `outline`, `transition` e `animation` nella relativa shorthand CSS. |
|
|
173
|
+
| `typography/css` | value | Passthrough della tipografia — è il format a occuparsi di scomporre il valore nelle singole proprietà. |
|
|
174
174
|
|
|
175
|
-
#### CSS
|
|
175
|
+
#### Output CSS
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
Tutti i token vengono generati come custom properties CSS dentro `:root`, in ordine alfabetico.
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
- `--token-name-font` —
|
|
181
|
-
- `--token-name-letter-spacing`, `--token-name-text-transform`, `--token-name-text-decoration` —
|
|
179
|
+
I token di tipografia vengono espansi in più proprietà:
|
|
180
|
+
- `--token-name-font` — una shorthand `font` (quando sono presenti sia `fontSize` sia `fontFamily`)
|
|
181
|
+
- `--token-name-letter-spacing`, `--token-name-text-transform`, `--token-name-text-decoration` — proprietà singole
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
Il file generato viene controllato e corretto automaticamente con stylelint usando la configurazione indicata in `stylelintConfigPath`.
|
|
184
184
|
|
|
185
|
-
#### JSON
|
|
185
|
+
#### Output JSON
|
|
186
186
|
|
|
187
|
-
|
|
187
|
+
Quando `jsonBuildPath` è impostato, lo script genera anche file di token W3C DTCG, indipendenti da qualsiasi strumento specifico (ad es. importabili in Penpot tramite il [plugin Design Tokens](https://penpot.app/penpot-files/design-tokens), in Figma tramite un plugin compatibile o in Token Studio).
|
|
188
188
|
|
|
189
|
-
**
|
|
189
|
+
**File singolo** (`jsonDestFile` è una stringa):
|
|
190
190
|
```
|
|
191
|
-
jsonBuildPath/tokens.jsonc ←
|
|
191
|
+
jsonBuildPath/tokens.jsonc ← tutti i token in un unico file
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
**
|
|
194
|
+
**Un file per ogni sorgente** (`jsonDestFile` è `null` o omesso):
|
|
195
195
|
```
|
|
196
196
|
jsonBuildPath/colors.tokens.jsonc
|
|
197
197
|
jsonBuildPath/spacing.tokens.jsonc
|
|
198
198
|
jsonBuildPath/typography.tokens.jsonc
|
|
199
199
|
```
|
|
200
|
-
|
|
200
|
+
Tutti i file vengono scritti nella stessa cartella `jsonBuildPath`, indipendentemente dalla struttura di sottocartelle dei file sorgente — non vengono create sottocartelle. Se due file sorgente con percorsi diversi producessero lo stesso nome di file di output, la build fallisce con un errore che elenca i file in conflitto, invece di sovrascriverne uno silenziosamente con l'altro.
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
L'opzione `jsonFormat` controlla l'output:
|
|
203
203
|
|
|
204
|
-
|
|
|
204
|
+
| Valore | Estensione | Intestazione di avviso |
|
|
205
205
|
|---|---|---|
|
|
206
|
-
| `'jsonc'` | `.jsonc` |
|
|
206
|
+
| `'jsonc'` | `.jsonc` | Sì |
|
|
207
207
|
| `'json'` | `.json` | No |
|
|
208
208
|
|
|
209
|
-
|
|
209
|
+
I riferimenti agli alias (`{color.brand.primary}`) vengono conservati nell'output, in modo che gli strumenti che li usano mantengano i collegamenti tra token primitivi e semantici.
|
|
210
210
|
|
|
211
|
-
> JSON token
|
|
211
|
+
> I file JSON dei token usano volutamente un insieme minimo di transform (nessuna conversione px→rem, nessuna espansione delle shorthand) perché gli strumenti che li usano si aspettano in genere i valori originali e oggetti strutturati, non stringhe CSS già risolte.
|
|
212
212
|
|
|
213
|
-
#### sourceModes (light/dark
|
|
213
|
+
#### sourceModes (suddivisione light/dark)
|
|
214
214
|
|
|
215
|
-
`sourceModes`
|
|
215
|
+
`sourceModes` è un'alternativa a `source`, per i progetti che richiedono una suddivisione light/dark (o altra) delle custom properties. Vedi i commenti in `tokens-config-sample.mjs` per il riferimento completo delle opzioni (`sourceModes`, `sourceModesBase`).
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
217
|
+
Quando è impostato, ogni modalità ha il proprio array `source` e il CSS generato compone tutte le modalità in un unico `destFile`:
|
|
218
|
+
- le proprietà della modalità base vanno in un blocco `:root { ... }` di primo livello, con `color-scheme: <tutte le modalità>;` anteposto
|
|
219
|
+
- le proprietà di ogni altra modalità vanno in `@media (prefers-color-scheme: <modalità>) { :root { ... } }`, con `color-scheme: <modalità>;` anteposto
|
|
220
220
|
|
|
221
|
-
|
|
221
|
+
I token di una modalità non base possono referenziare token definiti nella modalità base (ad es. un token dark che usa `{color.1}` definito in light, reso come `var(--color-1)`). I riferimenti ai token di una modalità non base (dalla modalità base o da un'altra modalità non base) falliscono con un errore "reference not defined", perché il target risulterebbe non definito fuori dal proprio blocco `@media`.
|
|
222
222
|
|
|
223
|
-
`customPropsGroups`, `mergeCustomProps`, `addLayer`, `pxToRem`
|
|
223
|
+
`customPropsGroups`, `mergeCustomProps`, `addLayer`, `pxToRem` ecc. si applicano allo stesso modo che con un singolo `source` (`mergeCustomProps` impostato a un array di stringhe/RegExp confronta i file token di ogni modalità). L'output JSON (quando `jsonBuildPath` è impostato) viene prodotto una volta per modalità, con il nome della modalità aggiunto a ogni nome di file (ad es. `tokens-light.jsonc` / `tokens-dark.jsonc`).
|
|
224
224
|
|
|
225
225
|
---
|
|
226
226
|
|
|
227
227
|
### `check-unresolved-custom-props.mjs`
|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
Analizza (ricorsivamente) tutti i file `.css` in `dirToCheck` e segnala:
|
|
230
230
|
|
|
231
|
-
- **
|
|
232
|
-
- **
|
|
231
|
+
- **proprietà non risolte** — riferimenti `var(--...)` non definiti nel file CSS dei token generato né in alcun `extraCustomPropsFiles`
|
|
232
|
+
- **proprietà non usate** — custom properties definite nel file CSS dei token generato (o in una voce di `extraCustomPropsFiles`) ma mai referenziate tramite `var()` in alcun file CSS analizzato. Vengono segnalate solo se nella configurazione è impostato `checkUnused: true`, perché viene rieseguita la pipeline di trasformazione di Style Dictionary sui sorgenti dei token per risalire, quando possibile, al file sorgente `.mjs` di ogni proprietà non usata. Quando `ignoreUnusedInNodeModules` è true (default), le proprietà provenienti da un file token sotto `node_modules` (ad es. un pacchetto di token di terze parti) non vengono mai segnalate come non usate.
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
I risultati vengono scritti in `unresolved-unused-props.md`, nella stessa directory del file di configurazione.
|
|
235
235
|
|
|
236
|
-
####
|
|
236
|
+
#### Utilizzo
|
|
237
237
|
|
|
238
238
|
```sh
|
|
239
239
|
npx checkUnresolvedProps --config ./path/to/tokens-config.mjs
|
|
@@ -241,29 +241,29 @@ npx checkUnresolvedProps --config ./path/to/tokens-config.mjs
|
|
|
241
241
|
|
|
242
242
|
#### Output
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
Lo script crea un file `unresolved-unused-props.md` accanto al file di configurazione (solo se c'è almeno una proprietà non risolta o non usata). Ogni voce non risolta rimanda al file e al numero di riga in cui la proprietà è usata; ogni voce non usata rimanda al relativo file sorgente `.mjs` dei token quando è possibile risalirvi, altrimenti viene riportato solo il nome della proprietà:
|
|
245
245
|
|
|
246
246
|
```markdown
|
|
247
|
-
##
|
|
247
|
+
## Custom properties non risolte
|
|
248
248
|
|
|
249
249
|
* [components.css](../src/components.css#L42) -> `--color-action-hover`
|
|
250
250
|
* [layout.css](../src/layout.css#L17) -> `--spacing-missing`
|
|
251
251
|
|
|
252
|
-
##
|
|
252
|
+
## Custom properties non usate
|
|
253
253
|
|
|
254
254
|
* [colors.minimo.tokens.mjs](../_src/colors.minimo.tokens.mjs) -> `--color-legacy-accent`
|
|
255
255
|
* `--manually-added-prop`
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
-
In VS Code, Option/Alt-
|
|
258
|
+
In VS Code, Option/Alt-clic sull'URL apre il file alla riga richiesta.
|
|
259
259
|
|
|
260
260
|
|
|
261
|
-
####
|
|
261
|
+
#### Esclusione di proprietà
|
|
262
262
|
|
|
263
|
-
|
|
263
|
+
Usare `excludePattern` per eliminare i falsi positivi — ad esempio le custom properties interne/private definite dinamicamente o inline:
|
|
264
264
|
|
|
265
265
|
```js
|
|
266
|
-
//
|
|
266
|
+
// salta tutte le custom props che iniziano con `--_` o `--js-`
|
|
267
267
|
excludePattern: [
|
|
268
268
|
/^--_/,
|
|
269
269
|
/^--js-/,
|