@massimo-cassandro/minimo 1.32.3 → 1.33.0

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.
@@ -28,7 +28,7 @@
28
28
  "launchChrome": "open -n -a 'Google Chrome' --args --profile-directory='Profile 3'",
29
29
  "python server": "python3 -m http.server 8000 # --directory __dirname__ # 8000 = default port",
30
30
  "php server": "php -S localhost:8000 # -t root_dir/",
31
- "symfony server": "symfony serve --port=810X --listen-ip=0.0.0.0 # http://192.168.1.135:810X # -d (deamon): rimane aperto anche dopo la chiusura del terminale, terminare con `symfony server:stop`",
31
+ "symfony server": "symfony serve --port=[[port8000]] --listen-ip=0.0.0.0 # http://192.168.1.135:[[port8000]] # -d (deamon): rimane aperto anche dopo la chiusura del terminale, terminare con `symfony server:stop`",
32
32
  "node server": "node serve # richiede ‘npm i serve’",
33
33
  "build tokens": "npx buildTokens --config ./app/css/tokens-config.mjs",
34
34
  "check unresolved props": "npx checkUnresolvedProps --config ./app/css/tokens-config.mjs",
@@ -12,3 +12,4 @@
12
12
  - nella chat evitare neologismi come parsare, committare ecc., usare i termini corrispondenti in italiano o il termine originale in inglese dove non sia possibile un equivalente in italiano. Non coniugare mai secondo le regole dell'italiano verbi di altre lingue
13
13
  - nei commenti su più righe preferire `/* ... */` piuttosto che ripetere `//` ad igni inizio riga
14
14
  - a meno che non sia esplicitamente richiesto di eseguire subito una modifica, NON ESEGUIRE MAI nulla autonomamente ma mostra sempre un piano d'azione prima di procedere
15
+ - nei commenti jsDoc aggiungere sempre dove possibile una sezione example che riepiloghi i vari parametri mostrando i valori di default
@@ -0,0 +1,16 @@
1
+ ## pwd dev
2
+ * massimo.cassandro@blu-net.it
3
+ * pwd: `devMax`
4
+ * Password hash `$2y$13$woOLLKqTHGnCqlo8D6Iste50vipaXOn2uKPaxztUK8bfQMYPa2MXu`
5
+
6
+ ```sql
7
+ INSERT INTO `utente` (`id`, `email`, `password`, `nome`, `cognome`, `roles`, `active`, `cr_timestamp`, `last_login`, `cancellato`, `export`, `um_utente_id`, `um_timestamp`)
8
+ VALUES
9
+ (2, 'massimo.cassandro@blu-net.it', '$2y$13$woOLLKqTHGnCqlo8D6Iste50vipaXOn2uKPaxztUK8bfQMYPa2MXu', 'Massimo', 'Cassandro', '[\"ROLE_DEPLOY\"]', 1, '2026-03-30 00:00:00', '2026-07-22 09:52:57', 0, 1, 1, '2026-07-22 11:52:57')
10
+ ON DUPLICATE KEY UPDATE
11
+ password = '$2y$13$woOLLKqTHGnCqlo8D6Iste50vipaXOn2uKPaxztUK8bfQMYPa2MXu';
12
+ ```
13
+
14
+ ## genera pwd symfony
15
+
16
+ `php bin/console security:hash-password`
@@ -0,0 +1,12 @@
1
+ # sf
2
+
3
+ ## pagine di errore DEV
4
+
5
+ * http://localhost:[[port5700]]/_error/500
6
+
7
+
8
+ ## svuota cache
9
+ ```bash
10
+ cd /path/to/project/dir
11
+ sudo php bin/console cache:clear --env=prod
12
+ ```
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  extends: [
3
- '@massimo-cassandro/stylelint-config',
3
+ '@massimo-cassandro/minimo/stylelint-config',
4
4
  ],
5
5
 
6
6
  // File da ignorare durante l'analisi
@@ -27,6 +27,65 @@ if [ -z "$ZSH_VERSION" ]; then
27
27
  exit 1
28
28
  fi
29
29
 
30
+ # Porta da utilizzare: l'utente inserisce un numero da 0 a 99 (default 0), che
31
+ # viene normalizzato a due cifre e usato come suffisso delle porte 80xx e 57xx.
32
+ # I valori sostituiscono i segnaposto [[port8000]] e [[port5700]] presenti in
33
+ # package-tpl.json, webpack.config.mjs e altri (vedi safe_cat_with_ports).
34
+ read "PORT_INPUT?Porta da utilizzare (0-99) [0]: "
35
+ PORT_INPUT=${PORT_INPUT:-0}
36
+ if [[ ! "$PORT_INPUT" =~ '^[0-9]{1,2}$' ]]; then
37
+ printf "${RED}Errore: inserire un numero intero tra 0 e 99.${NC}\n" >&2
38
+ exit 1
39
+ fi
40
+ PORT_SUFFIX=${(l:2::0:)PORT_INPUT}
41
+ PORT_8000="80${PORT_SUFFIX}"
42
+ PORT_5700="57${PORT_SUFFIX}"
43
+ echo -e "${DIM}Porte: ${PORT_8000} (server), ${PORT_5700} (webpack dev server)${NC}"
44
+
45
+ # Pacchetti opzionali: installati come devDependency solo su conferma
46
+ # esplicita dell'utente (vedi ciclo di domande più sotto). Include sia
47
+ # devDependency "pure" del progetto, sia i peer dependencies opzionali di
48
+ # @massimo-cassandro/minimo (vedi package.json di minimo, campi
49
+ # peerDependencies/peerDependenciesMeta: elenco mantenuto a mano, non letto
50
+ # dinamicamente da minimo — se cambiano va aggiornato manualmente anche qui).
51
+ # In entrambi i casi vengono installati con `npm i -D`: in questo progetto
52
+ # `dependencies` contiene solo @massimo-cassandro/minimo, tutto il resto
53
+ # (tooling di build e librerie usate dai singoli componenti) è devDependency.
54
+ # Ogni voce è "<pacchetto>|<descrizione>" (pacchetto allineato a colonna fissa
55
+ # solo per leggibilità, non richiesto dal parsing).
56
+ optionalPackages=(
57
+ "dotenv-webpack | gestione variabili d'ambiente (.env) nel bundle webpack"
58
+ "@principalstudio/html-webpack-inject-preload | injection dei tag <link rel=preload> nell'html generato"
59
+ "postcss-jit-props | include nel CSS compilato solo le custom properties effettivamente usate"
60
+ "@svgdotjs/svg.js | richiesto da charts/ di minimo"
61
+ "blurhash | richiesto da unsplash-page di minimo (create-blurhash-canvas)"
62
+ "simple-datatables | richiesto da s-datatable-component di minimo"
63
+ "style-dictionary | richiesto da design-tokens/utilities di minimo (build-tokens)"
64
+ )
65
+
66
+ # Chiede conferma per un singolo pacchetto opzionale (default: No).
67
+ ask_optional_pkg() {
68
+ local pkg="$1"
69
+ local desc="$2"
70
+ local reply
71
+ read "reply?Installare il pacchetto opzionale '$pkg' (${desc})? [y/N]: "
72
+ [[ "$reply" =~ ^[Yy]$ ]]
73
+ }
74
+
75
+ selectedOptionalPkgs=()
76
+
77
+ if [ "$DEBUG" != "TRUE" ]; then
78
+ echo -e "\n${GREEN}...PACCHETTI OPZIONALI${NC}"
79
+ for entry in "${optionalPackages[@]}"; do
80
+ pkg="${entry%%|*}"
81
+ pkg="${pkg%% *}"
82
+ desc="${entry#*| }"
83
+ if ask_optional_pkg "$pkg" "$desc"; then
84
+ selectedOptionalPkgs+=("$pkg")
85
+ fi
86
+ done
87
+ fi
88
+
30
89
  BASE_URL=${0:A:h}
31
90
 
32
91
  echo "BASE_URL: ${BASE_URL}"
@@ -67,6 +126,27 @@ safe_cat() {
67
126
  cat "$src" >| "$dest"
68
127
  }
69
128
 
129
+ # Come safe_cat, ma sostituisce i segnaposto [[port8000]] e [[port5700]] con
130
+ # le porte scelte all'avvio. La sostituzione viene fatta su un file temporaneo
131
+ # che è poi passato a safe_cat: il confronto per l'idempotenza avviene quindi
132
+ # sul contenuto già sostituito (stessa porta => copia saltata).
133
+ safe_cat_with_ports() {
134
+ local src="$1"
135
+ local dest="$2"
136
+ if [ ! -f "$src" ]; then
137
+ echo -e "${RED}Sorgente mancante: $src${NC}"
138
+ return 1
139
+ fi
140
+ local tmp="$(mktemp)"
141
+ sed -e "s/\[\[port8000\]\]/${PORT_8000}/g" \
142
+ -e "s/\[\[port5700\]\]/${PORT_5700}/g" \
143
+ "$src" >| "$tmp"
144
+ safe_cat "$tmp" "$dest"
145
+ local rc=$?
146
+ rm -f "$tmp"
147
+ return $rc
148
+ }
149
+
70
150
  FRONTEND_INSTALL_PATH="./app"
71
151
  # se la cartella esiste già: la prima volta viene rinominata per intero in
72
152
  # OLD-app (preservata, mai più toccata); se OLD-app esiste già, la cartella
@@ -85,8 +165,8 @@ mkdir -p "${FRONTEND_INSTALL_PATH}"
85
165
 
86
166
 
87
167
  echo -e "${GREEN}...ROOT FILES${NC}"
88
- safe_cat "${BASE_URL}/package-tpl.json" package.json
89
- safe_cat "${WEBPACK_CONFIG_SOURCE_PATH}/webpack.config.mjs" webpack.config.mjs
168
+ safe_cat_with_ports "${BASE_URL}/package-tpl.json" package.json
169
+ safe_cat_with_ports "${WEBPACK_CONFIG_SOURCE_PATH}/webpack.config.mjs" webpack.config.mjs
90
170
 
91
171
  safe_cat "${SOURCE_FILES_DIR}/_gitignore" .gitignore
92
172
  safe_cat "${SOURCE_FILES_DIR}/_browserslistrc" .browserslistrc
@@ -134,7 +214,6 @@ dependencies=(
134
214
 
135
215
  devDependencies=(
136
216
  @massimo-cassandro/eslint-config
137
- @massimo-cassandro/stylelint-config
138
217
 
139
218
  @babel/core
140
219
  @babel/preset-env
@@ -157,7 +236,6 @@ devDependencies=(
157
236
  process
158
237
  purgecss-webpack-plugin
159
238
  responsive-loader
160
- style-dictionary
161
239
  style-loader
162
240
  svg-url-loader
163
241
  svgo
@@ -169,12 +247,12 @@ devDependencies=(
169
247
  webpack-dev-server
170
248
  webpack-manifest-plugin
171
249
  webpack-remove-empty-scripts
172
-
173
- # da installare solo se necessari
174
- # dotenv-webpack
175
- # @principalstudio/html-webpack-inject-preload file-loader
176
250
  )
177
251
 
252
+ # pacchetti opzionali selezionati dall'utente (vedi ciclo di domande a inizio
253
+ # script), aggiunti all'array di installazione già definito sopra
254
+ devDependencies+=("${selectedOptionalPkgs[@]}")
255
+
178
256
  if [ "$DEBUG" = "TRUE" ]; then
179
257
  dependencies=( @massimo-cassandro/minimo )
180
258
  devDependencies=()
@@ -232,6 +310,22 @@ safe_cat "${SOURCE_FILES_DIR}/app_index.js" "${FRONTEND_INSTALL_PATH}/index.js"
232
310
  safe_cat "${SOURCE_FILES_DIR}/layout-critical.css" "${FRONTEND_INSTALL_PATH}/css/layout-critical.css"
233
311
 
234
312
 
313
+ # copia tutti i file presenti in ${SOURCE_FILES_DIR}/_private,
314
+ echo -e "${GREEN}..._PRIVATE FILES${NC}"
315
+ mkdir -p "_private"
316
+ for FILE in "${SOURCE_FILES_DIR}/_private"/*; do
317
+ [ -f "$FILE" ] || continue
318
+ safe_cat_with_ports "$FILE" "_private/$(basename "$FILE")"
319
+ done
320
+
321
+
322
+ if [ ${#selectedOptionalPkgs[@]} -gt 0 ]; then
323
+ echo -e "\n${YELLOW}Pacchetti opzionali installati:${NC}"
324
+ for pkg in "${selectedOptionalPkgs[@]}"; do
325
+ echo -e "${YELLOW} - $pkg${NC}"
326
+ done
327
+ echo -e "${YELLOW}Potrebbe essere necessaria una modifica alla configurazione webpack e/o postcss per utilizzare questi pacchetti.${NC}"
328
+ fi
235
329
 
236
330
  set +C
237
331
  echo -e "\n\n${GREEN}*** END ***${NC}"
@@ -36,8 +36,8 @@ const fromProjectRoot = (relPath) => {
36
36
  };
37
37
 
38
38
  const isDevelopment = process.env.NODE_ENV === 'development'
39
- ,devServerPort = 570x
40
- // ,apiPort = 800x
39
+ ,devServerPort = [[port5700]]
40
+ // ,apiPort = [[port8000]]
41
41
  ,useSass = false
42
42
  ,inlineCssInDevMode = true
43
43
  ,useSvgo = true
@@ -643,18 +643,10 @@ const config = {
643
643
  // =>> Video
644
644
  // {
645
645
  // test: /\.(?:mp4|webm)$/i,
646
- // // type: 'asset/resource',
647
- // type: 'javascript/auto',
648
- // use: [
649
- // {
650
- // loader: 'file-loader',
651
- // options: {
652
- // name: '[name].[contenthash][ext]',
653
- // outputPath: 'video/',
654
- // esModule: false,
655
- // }
656
- // }
657
- // ]
646
+ // type: 'asset/resource',
647
+ // generator: {
648
+ // filename: 'video/[name].[contenthash][ext]'
649
+ // }
658
650
  // },
659
651
 
660
652
  // =>> rules: Fonts
@@ -0,0 +1,45 @@
1
+ # Stylelint config
2
+
3
+ My [stylelint](https://stylelint.io/) config,
4
+
5
+
6
+ ## Use
7
+
8
+ Install package:
9
+
10
+ ```bash
11
+ npm install @massimo-cassandro/minimo
12
+ ```
13
+
14
+ Create a `stylelint.config.mjs` file and add:
15
+
16
+ ```javascript
17
+ export default {
18
+ extends: [
19
+ '@massimo-cassandro/minimo/stylelint-config',
20
+ ],
21
+
22
+ // Files to be ignored
23
+ ignoreFiles: [
24
+ 'node_modules/**/*.{css,scss}',
25
+ 'vendor/**/*.{css,scss}',
26
+ 'templates/**/*.{css,scss}',
27
+ 'dist/**/*.css',
28
+ 'build/**/*.css',
29
+ 'public/**/*.css',
30
+ 'test/**/*.css'
31
+ ],
32
+
33
+ // Overrides
34
+ rules: {
35
+ //********************** optionally for tailwind:
36
+ // 'at-rule-no-unknown': [
37
+ // true,
38
+ // 'value-keyword-case': null,
39
+ // '@stylistic/number-no-trailing-zeros': null
40
+ // ],
41
+ //********************** /tailwind
42
+ }
43
+ };
44
+ ```
45
+
@@ -0,0 +1,184 @@
1
+ /** @type {import('stylelint').Config} */
2
+
3
+ const tailwindAtRules = ['tailwind', 'apply', 'layer', 'variants', 'responsive', 'screen', 'config'],
4
+ postCSSRules = ['define-mixin', 'mixin'];
5
+
6
+ export default {
7
+ extends: [
8
+ 'stylelint-config-standard',
9
+ 'stylelint-config-recess-order',
10
+ '@stylistic/stylelint-config'
11
+ ],
12
+ plugins: [
13
+ '@stylistic/stylelint-plugin'
14
+ ],
15
+ ignoreFiles: [
16
+ 'node_modules/**/*.*',
17
+ 'vendor/**/*.*',
18
+ 'build/**/*.*',
19
+ 'public/**/*.*',
20
+ 'templates/**/*.*',
21
+ 'dist/**/*.*'
22
+ ],
23
+ rules: {
24
+
25
+ 'alpha-value-notation': null,
26
+ 'at-rule-empty-line-before': null,
27
+ 'at-rule-no-vendor-prefix': true,
28
+ 'at-rule-no-unknown': [ true, { ignoreAtRules: [ ...tailwindAtRules, ...postCSSRules ] } ],
29
+ 'color-function-notation': 'modern',
30
+ 'color-named': 'never',
31
+ 'comment-empty-line-before': null,
32
+ 'custom-property-empty-line-before': null,
33
+ 'custom-property-pattern': null,
34
+ 'declaration-block-no-redundant-longhand-properties': null,
35
+ 'declaration-empty-line-before': null,
36
+ 'declaration-no-important': true,
37
+ 'font-family-name-quotes': 'always-where-recommended',
38
+ 'font-weight-notation': ['numeric', { ignore: ['relative'] }],
39
+ 'function-no-unknown': [true, { ignoreFunctions: ['theme'] }],
40
+ 'function-url-no-scheme-relative': true,
41
+ 'function-url-quotes': 'always',
42
+ 'hue-degree-notation': null,
43
+ 'import-notation': null,
44
+ 'max-nesting-depth': [3, {
45
+ ignore: ['pseudo-classes', 'blockless-at-rules'],
46
+ ignoreAtRules: [/media/, /include/],
47
+ ignorePseudoClasses: ['before', 'after']
48
+ }],
49
+ 'media-feature-range-notation': null,
50
+ 'media-query-no-invalid': null,
51
+ 'no-descending-specificity': null,
52
+ 'number-max-precision': null,
53
+ 'property-no-vendor-prefix': true,
54
+ 'rule-empty-line-before': null,
55
+ 'selector-attribute-quotes': 'always',
56
+ 'selector-class-pattern': ['^[a-z][a-z0-9\\-]*[a-z0-9]$', { resolveNestedSelectors: true }],
57
+ 'selector-max-attribute': 2,
58
+ 'selector-max-class': 4,
59
+ 'selector-max-combinators': 4,
60
+ 'selector-max-compound-selectors': 4,
61
+ 'selector-max-id': 0,
62
+ 'selector-max-specificity': null,
63
+ 'selector-max-type': [3, { ignore: ['child', 'compounded', 'descendant', 'next-sibling'] }],
64
+ 'selector-max-universal': 1,
65
+ 'selector-no-qualifying-type': null, // https://stylelint.io/user-guide/rules/selector-no-qualifying-type/
66
+ 'selector-no-vendor-prefix': true,
67
+ 'selector-not-notation': null,
68
+ 'selector-pseudo-class-no-unknown': [true, { ignorePseudoClasses: ['global'] }],
69
+ 'shorthand-property-no-redundant-values': true,
70
+ 'value-keyword-case': ['lower', { ignoreKeywords: ['currentColor'] }],
71
+ 'value-no-vendor-prefix': true,
72
+
73
+ // --- Stylistic ---
74
+ '@stylistic/at-rule-name-space-after': 'always',
75
+ '@stylistic/at-rule-semicolon-space-before': 'never',
76
+ '@stylistic/block-closing-brace-empty-line-before': null,
77
+ '@stylistic/block-closing-brace-newline-after': null,
78
+ '@stylistic/block-opening-brace-space-before': null,
79
+ '@stylistic/declaration-block-semicolon-newline-before': 'never-multi-line',
80
+ '@stylistic/function-max-empty-lines': 2,
81
+ '@stylistic/function-parentheses-space-inside': 'never-single-line',
82
+ '@stylistic/max-empty-lines': 2,
83
+ '@stylistic/max-line-length': null,
84
+ '@stylistic/no-empty-first-line': null,
85
+ '@stylistic/no-missing-end-of-source-newline': null,
86
+ '@stylistic/number-leading-zero': 'never',
87
+ '@stylistic/selector-list-comma-newline-after': 'always-multi-line',
88
+ '@stylistic/selector-list-comma-newline-before': 'never-multi-line',
89
+ '@stylistic/selector-list-comma-space-after': 'always-single-line',
90
+ '@stylistic/selector-list-comma-space-before': 'never-single-line',
91
+ '@stylistic/string-quotes': 'single',
92
+ '@stylistic/unicode-bom': 'never',
93
+ '@stylistic/value-list-comma-newline-after': 'always-multi-line',
94
+ '@stylistic/value-list-comma-newline-before': 'never-multi-line',
95
+ '@stylistic/value-list-comma-space-after': null,
96
+ '@stylistic/value-list-max-empty-lines': 3
97
+ },
98
+ overrides: [
99
+ {
100
+ files: ['**/*.scss'],
101
+ plugins: ['stylelint-scss'],
102
+ extends: [
103
+ 'stylelint-config-standard-scss',
104
+ 'stylelint-config-recess-order'
105
+ ],
106
+ rules: {
107
+ 'no-invalid-position-at-import-rule': null,
108
+ 'scss/at-extend-no-missing-placeholder': null,
109
+ 'scss/at-function-named-arguments': 'never',
110
+ 'scss/at-function-parentheses-space-before': 'never',
111
+ 'scss/at-function-pattern': '^[a-z][a-z-]*$',
112
+ 'scss/at-if-closing-brace-newline-after': null,
113
+ 'scss/at-if-closing-brace-space-after': null,
114
+ 'scss/at-if-no-null': null,
115
+ 'scss/at-mixin-argumentless-call-parentheses': 'always',
116
+ 'scss/at-mixin-named-arguments': null,
117
+ 'scss/at-mixin-parentheses-space-before': 'never',
118
+ 'scss/at-mixin-pattern': null,
119
+ 'scss/at-rule-conditional-no-parentheses': null,
120
+ 'scss/load-no-partial-leading-underscore': true,
121
+ 'scss/load-partial-extension': 'never',
122
+
123
+ 'at-rule-no-unknown': null, // disabilita regola base per evitare conflitti
124
+ 'scss/at-rule-no-unknown': [
125
+ true,
126
+ {
127
+ ignoreAtRules: [
128
+ ...tailwindAtRules,
129
+ ...postCSSRules,
130
+ // SCSS
131
+ 'extend', 'include', 'if', 'else', 'function', 'at-root',
132
+ 'use', 'forward', 'each', 'while', 'for', 'error', 'warn', 'debug', 'return'
133
+ ]
134
+ }
135
+ ],
136
+ 'scss/comment-no-empty': null,
137
+ 'scss/dimension-no-non-numeric-values': true,
138
+ 'scss/dollar-variable-colon-space-after': 'at-least-one-space',
139
+ 'scss/dollar-variable-colon-space-before': 'never',
140
+ 'scss/dollar-variable-empty-line-before': null,
141
+ 'scss/dollar-variable-no-missing-interpolation': true,
142
+ 'scss/dollar-variable-pattern': '^[a-z][a-z-\\d]*$',
143
+ 'scss/double-slash-comment-empty-line-before': null,
144
+ 'scss/double-slash-comment-whitespace-inside': null,
145
+ 'scss/no-duplicate-dollar-variables': [
146
+ null,
147
+ { ignoreInsideAtRules: ['extend', 'if', 'mixin'] }
148
+ ],
149
+ 'scss/no-duplicate-mixins': true,
150
+ 'scss/operator-no-newline-after': true,
151
+ 'scss/operator-no-newline-before': true,
152
+ 'scss/operator-no-unspaced': true
153
+ }
154
+ },
155
+ {
156
+ files: ['**/*.module.scss', '**/*.module.css'],
157
+ extends: ['stylelint-config-css-modules'],
158
+ rules: {
159
+ 'selector-class-pattern': [
160
+ '^[a-z]+(_?[A-Z]?[a-z0-9]*)*$',
161
+ {
162
+ ignoreSelectors: [/:global/], // non funziona
163
+ resolveNestedSelectors: true
164
+ }
165
+ ]
166
+ }
167
+ }
168
+ // da testare
169
+ // {
170
+ // files: ['**/*.module.scss', '**/*.module.css'],
171
+ // extends: ['stylelint-config-css-modules'],
172
+ // rules: {
173
+ // 'selector-class-pattern': [
174
+ // '^([a-z][a-z0-9]*([A-Z][a-z0-9]*)*|[a-z][a-z0-9-]*)$',
175
+ // { resolveNestedSelectors: true }
176
+ // ],
177
+ // 'selector-pseudo-class-no-unknown': [
178
+ // true,
179
+ // { ignorePseudoClasses: ['global', 'local'] }
180
+ // ]
181
+ // }
182
+ // }
183
+ ]
184
+ };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@massimo-cassandro/minimo",
3
- "version": "1.32.3",
3
+ "version": "1.33.0",
4
4
  "description": "Light css framework & utilities",
5
5
  "type": "module",
6
6
  "main": "./index.js",
7
7
  "exports": {
8
8
  ".": "./index.js",
9
9
  "./charts": "./charts/index.js",
10
+ "./stylelint-config": "./dev-tools/stylelint-config/index.js",
10
11
  "./css/*": "./src/css/*.css",
11
12
  "./tokens/*": "./design-tokens/tokens/*",
12
13
  "./*": "./*"
@@ -94,7 +95,6 @@
94
95
  },
95
96
  "devDependencies": {
96
97
  "@massimo-cassandro/eslint-config": "^3.0.16",
97
- "@massimo-cassandro/stylelint-config": "^2.3.15",
98
98
  "@types/node": "^26.2.0",
99
99
  "jsdom": "^30.0.1",
100
100
  "style-dictionary": "^5.5.1"
@@ -102,9 +102,18 @@
102
102
  "dependencies": {
103
103
  "@inquirer/input": "^5.1.2",
104
104
  "@inquirer/select": "^5.2.1",
105
+ "@stylistic/stylelint-config": "^5.0.0",
106
+ "@stylistic/stylelint-plugin": "^5.3.0",
105
107
  "clipboardy": "^5.3.2",
106
108
  "sharp": "^0.35.3",
107
109
  "sharp-ico": "^0.1.5",
110
+ "stylelint": "^17.15.0",
111
+ "stylelint-config-css-modules": "^4.6.0",
112
+ "stylelint-config-recess-order": "^7.8.0",
113
+ "stylelint-config-standard": "^40.0.0",
114
+ "stylelint-config-standard-scss": "^17.0.0",
115
+ "stylelint-order": "^8.1.1",
116
+ "stylelint-scss": "^7.2.0",
108
117
  "svgo": "^4.0.2"
109
118
  },
110
119
  "directories": {
@@ -222,6 +222,13 @@
222
222
  --inner-nav-gap: var(--size-lg);
223
223
  --inner-nav-margin-block: var(--size-base);
224
224
 
225
+ --jt-info-color: var(--text-muted);
226
+ --jt-info-font-size: var(--font-size-sm);
227
+ --jt-info-gap: var(--size-sm);
228
+ --jt-info-outer-padding-block-end: var(--size-xs);
229
+ --jt-search-max-width: 20rem;
230
+ --jt-wrapper-margin-block: var(--size-md);
231
+
225
232
  --line-height-base: 1.5;
226
233
  --line-height-sm: 1.4;
227
234
  --line-height-xs: 1.25;