@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.
Files changed (133) hide show
  1. package/README.md +12 -12
  2. package/charts/src/node-helpers/create-svg-canvas-node.mjs +2 -2
  3. package/charts/src/node-helpers/svg-text-to-path.js +9 -9
  4. package/charts/src/rating-display/index.js +1 -1
  5. package/charts/src/rating-display/ratindDisplayAnimation.js +3 -3
  6. package/design-tokens/README.md +2 -2
  7. package/design-tokens/_src/_readme.md +26 -26
  8. package/dev-tools/README.md +16 -16
  9. package/dev-tools/create-favicons/README.md +31 -31
  10. package/dev-tools/create-favicons/src/create-ico.mjs +2 -2
  11. package/dev-tools/create-favicons/src/default-params.mjs +1 -1
  12. package/dev-tools/create-favicons/src/init.mjs +1 -1
  13. package/dev-tools/design-tokens-builder/README.md +102 -102
  14. package/dev-tools/design-tokens-builder/build-tokens-src/build-source-modes.mjs +85 -73
  15. package/dev-tools/design-tokens-builder/build-tokens-src/config.mjs +109 -85
  16. package/dev-tools/design-tokens-builder/build-tokens-src/formats/css.mjs +113 -90
  17. package/dev-tools/design-tokens-builder/build-tokens-src/formats/json.mjs +107 -95
  18. package/dev-tools/design-tokens-builder/build-tokens-src/legacy-tokens-parser.mjs +71 -64
  19. package/dev-tools/design-tokens-builder/build-tokens-src/light-dark.mjs +75 -65
  20. package/dev-tools/design-tokens-builder/build-tokens-src/merge-css.mjs +113 -102
  21. package/dev-tools/design-tokens-builder/build-tokens-src/platforms.mjs +36 -30
  22. package/dev-tools/design-tokens-builder/build-tokens-src/resolve-source-paths.mjs +15 -13
  23. package/dev-tools/design-tokens-builder/build-tokens-src/source-prefixes.mjs +44 -42
  24. package/dev-tools/design-tokens-builder/build-tokens-src/source-transforms.mjs +89 -83
  25. package/dev-tools/design-tokens-builder/build-tokens-src/token-rename-parser.mjs +99 -86
  26. package/dev-tools/design-tokens-builder/build-tokens-src/transforms.mjs +64 -48
  27. package/dev-tools/design-tokens-builder/build-tokens.mjs +80 -68
  28. package/dev-tools/design-tokens-builder/check-unresolved-custom-props.mjs +103 -77
  29. package/dev-tools/design-tokens-builder/tokens-config-sample.mjs +275 -238
  30. package/dev-tools/find-orphan-css-classes/find-orphan-css-classes.mjs +2 -2
  31. package/dev-tools/starter-kit/source_files/app/CLAUDE.md +4 -2
  32. package/dev-tools/starter-kit/source_files/app/index.css +10 -0
  33. package/dev-tools/starter-kit/source_files/app/index.js +1 -1
  34. package/dev-tools/starter-kit/source_files/root/_sf/controller/ImgViewerController.php +3 -3
  35. package/dev-tools/starter-kit/source_files/root/_sf/controller/ViewerController.php +2 -2
  36. package/dev-tools/starter-kit/source_files/root/stylelint.config.mjs +1 -1
  37. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/css-rules.mjs +1 -1
  38. package/dev-tools/starter-kit/starter-install.sh +2 -2
  39. package/dev-tools/stylelint-config/README.md +7 -7
  40. package/dev-tools/svg-icons-tools/README.md +32 -32
  41. package/dev-tools/svg-icons-tools/src/config-manager.mjs +1 -1
  42. package/dev-tools/svg-icons-tools/src/default-config.mjs +118 -118
  43. package/dev-tools/svg-icons-tools/src/jsx-icon-file-builder.mjs +24 -24
  44. package/dev-tools/svg-icons-tools/src/parse-svg-filename.mjs +3 -3
  45. package/dev-tools/svg-icons-tools/src/parse-svg-files.mjs +1 -1
  46. package/dev-tools/svg-icons-tools/src/parse-svg-markup.mjs +4 -4
  47. package/dev-tools/svg-icons-tools/src/svg-to-jsx.mjs +2 -2
  48. package/dev-tools/svg-icons-tools/src/svg-to-optimized.mjs +2 -2
  49. package/dev-tools/svg-icons-tools/src/svg-to-symbols.mjs +2 -2
  50. package/dev-tools/upd@m/README.md +1 -1
  51. package/dev-tools/upd@m/index.mjs +1 -1
  52. package/dev-tools/update-version/README.md +9 -9
  53. package/index.js +1 -0
  54. package/package.json +3 -1
  55. package/snippets/unsplash-browser-app/README.md +1 -1
  56. package/snippets/unsplash-browser-app/unsplash-utilities.js +9 -9
  57. package/src/components/autocomplete/README.md +3 -3
  58. package/src/components/autocomplete/autocomplete-engine.js +75 -63
  59. package/src/components/autocomplete/check-autocomplete.js +3 -3
  60. package/src/components/dismiss-alerts.js +3 -3
  61. package/src/components/form-reset-submit.js +6 -6
  62. package/src/components/inner-nav/inner-nav.js +2 -2
  63. package/src/components/modal-alert/modal-alert.js +67 -65
  64. package/src/components/modal-alert/modal-alert.minimo.tokens.mjs +1 -1
  65. package/src/components/modal-popup/modal-popup.js +56 -56
  66. package/src/components/overlay/overlay.js +3 -3
  67. package/src/components/sf-macro/readme.md +1 -1
  68. package/src/components/sf-macro/sf-macro.js +27 -23
  69. package/src/components/slide-up-down-toggle/slide-up-down-toggle.js +83 -79
  70. package/src/components/slide-up-down-toggle/slide-up-down-toggle.module.css +44 -44
  71. package/src/components/snackbar/snackbar.js +19 -19
  72. package/src/components/spinner/spinner.js +3 -3
  73. package/src/components/unsplash-page/README.md +8 -8
  74. package/src/components/unsplash-page/fetch-unsplash-data.js +3 -3
  75. package/src/components/unsplash-page/unsplash-page.js +33 -33
  76. package/src/components/unsplash-page/unsplash-page.module.css +1 -1
  77. package/src/css/alerts.css +2 -2
  78. package/src/css/forms/forms.css +4 -4
  79. package/src/css/forms/validation.css +1 -1
  80. package/src/css/margin-padding-media.css +4 -4
  81. package/src/css/margin-padding.css +4 -4
  82. package/src/css/reset.css +11 -11
  83. package/src/icons/read-me.md +1 -1
  84. package/src/minimo.css +3 -9
  85. package/src/utilities/better-text-with-places.js +105 -105
  86. package/src/utilities/better-text.js +42 -35
  87. package/src/utilities/classnames.js +8 -8
  88. package/src/utilities/cookies.js +6 -6
  89. package/src/utilities/create-id.js +3 -3
  90. package/src/utilities/disable-btns-on-submit.js +2 -2
  91. package/src/utilities/dom-builder/dom-builder.js +89 -86
  92. package/src/utilities/dom-builder/domBuilderBasicSetup.js +9 -9
  93. package/src/utilities/dom-builder/parseDomString.js +23 -23
  94. package/src/utilities/dom-builder-helpers/README.md +2 -2
  95. package/src/utilities/dom-builder-helpers/form-tags.js +100 -100
  96. package/src/utilities/dom-builder-helpers/picture-tag.js +39 -39
  97. package/src/utilities/enable-submit-btns.js +1 -1
  98. package/src/utilities/escape-html.js +2 -2
  99. package/src/utilities/generate-pwd.js +4 -4
  100. package/src/utilities/linked-dates.js +13 -13
  101. package/src/utilities/parse-file-size.js +6 -6
  102. package/src/utilities/random-id.js +3 -3
  103. package/src/utilities/relative-date.js +40 -40
  104. package/src/utilities/sentence-case.js +1 -1
  105. package/src/utilities/strip-tags.js +1 -1
  106. package/src/utilities/title-case.js +1 -1
  107. package/src/utilities/truncate-string.js +5 -5
  108. package/src/utilities/validation-error-class.js +12 -12
  109. package/src/web-components/json-table/json-table-component.js +123 -121
  110. package/src/web-components/json-table/json-table-component.module.css +6 -6
  111. package/src/web-components/json-table/json-table.minimo.tokens.mjs +6 -6
  112. package/src/web-components/json-table/readme.md +76 -110
  113. package/src/web-components/json-table/src/cell-content.js +25 -25
  114. package/src/web-components/json-table/src/content-utils.js +21 -21
  115. package/src/web-components/json-table/src/data-types.js +32 -32
  116. package/src/web-components/json-table/src/defaults.js +230 -191
  117. package/src/web-components/json-table/src/get-data.js +55 -38
  118. package/src/web-components/json-table/src/icons.js +17 -17
  119. package/src/web-components/json-table/src/info-section.js +18 -18
  120. package/src/web-components/json-table/src/main-builder.js +45 -45
  121. package/src/web-components/json-table/src/pagination.js +32 -32
  122. package/src/web-components/json-table/src/parse-cols.js +18 -18
  123. package/src/web-components/json-table/src/parse-rows.js +17 -17
  124. package/src/web-components/json-table/src/resolve-params.js +53 -41
  125. package/src/web-components/json-table/src/search.js +13 -13
  126. package/src/web-components/json-table/src/sorting.js +20 -20
  127. package/src/web-components/json-table/src/table-body.js +13 -13
  128. package/src/web-components/json-table/src/table-builder.js +34 -34
  129. package/src/web-components/json-table/src/table-tfoot.js +8 -8
  130. package/src/web-components/json-table/src/table-thead.js +21 -21
  131. package/src/web-components/json-table/src/update-info.js +11 -11
  132. package/types/classes.d.ts +2 -2
  133. package/types/global.d.ts +18 -12
@@ -93,45 +93,45 @@ const places = [
93
93
  // località
94
94
  'Zermatt', 'St. Moritz', 'Grindelwald', 'Cascate del Reno', 'Interlaken', 'Davos', 'Alpi Svizzere',
95
95
 
96
- 'Portogallo', 'Lisbona', 'Oporto', 'Madeira', 'Azzorre', 'Sintra', 'Algarve',
97
- 'Paesi Bassi', 'Amsterdam', 'Rotterdam', 'L’Aia', 'Utrecht',
98
- 'Belgio', 'Bruxelles', 'Anversa', 'Bruges',
96
+ 'Albania', 'Tirana',
97
+ 'Armenia', 'Erevan',
99
98
  'Austria', 'Vienna', 'Salisburgo', 'Innsbruck', 'Graz', 'Hallstatt',
100
- 'Polonia', 'Varsavia', 'Cracovia', 'Danzica', 'Breslavia',
101
- 'Svezia', 'Stoccolma', 'Göteborg', 'Malmö',
102
- 'Norvegia', 'Oslo', 'Bergen', 'Tromsø', 'Fiordi Norvegesi',
99
+ 'Azerbaigian', 'Baku',
100
+ 'Belgio', 'Bruxelles', 'Anversa', 'Bruges',
101
+ 'Bielorussia', 'Minsk',
102
+ 'Bosnia ed Erzegovina', 'Sarajevo',
103
+ 'Bulgaria', 'Sofia',
104
+ 'Cipro', 'Nicosia',
105
+ 'Croazia', 'Zagabria', 'Spalato', 'Dubrovnik', 'Zara', 'Plitvice Lakes',
103
106
  'Danimarca', 'Copenaghen',
107
+ 'Estonia', 'Tallinn',
104
108
  'Finlandia', 'Helsinki',
109
+ 'Georgia', 'Tbilisi',
105
110
  'Irlanda', 'Dublino', 'Galway',
106
- 'Repubblica Ceca', 'Praga', 'Brno',
107
- 'Ungheria', 'Budapest',
108
- 'Romania', 'Bucarest', 'Transilvania',
109
- 'Croazia', 'Zagabria', 'Spalato', 'Dubrovnik', 'Zara', 'Plitvice Lakes',
110
- 'Turchia', 'Ankara', 'Istanbul', 'Smirne', 'Antalya', 'Cappadocia',
111
- 'Ucraina', 'Kiev', 'Kyiv', 'Odessa', 'Leopoli',
112
- 'Islanda', 'Reykjavik',
113
- 'Lussemburgo', 'Liechtenstein', 'Principato di Monaco',
114
- 'Malta', 'La Valletta',
115
- 'Cipro', 'Nicosia',
116
- 'Estonia', 'Tallinn',
111
+ 'Islanda', 'Reykjavik', 'Jökulsárlón',
112
+ 'Kosovo', 'Pristina',
117
113
  'Lettonia', 'Riga',
118
114
  'Lituania', 'Vilnius',
119
- 'Bielorussia', 'Minsk',
115
+ 'Lussemburgo', 'Liechtenstein', 'Principato di Monaco',
116
+ 'Macedonia del Nord', 'Skopje',
117
+ 'Malta', 'La Valletta',
120
118
  'Moldavia', 'Chisinau',
121
- 'Serbia', 'Belgrado',
122
- 'Bosnia ed Erzegovina', 'Sarajevo',
123
119
  'Montenegro', 'Podgorica',
124
- 'Albania', 'Tirana',
125
- 'Macedonia del Nord', 'Skopje',
126
- 'Kosovo', 'Pristina',
127
- 'Slovenia', 'Lubiana', 'Bled',
128
- 'Slovacchia', 'Bratislava',
129
- 'Bulgaria', 'Sofia',
130
- 'San Marino', 'Città del Vaticano', 'Andorra',
120
+ 'Norvegia', 'Oslo', 'Bergen', 'Tromsø', 'Fiordi Norvegesi',
121
+ 'Paesi Bassi', 'Amsterdam', 'Rotterdam', 'L’Aia', 'Utrecht',
122
+ 'Polonia', 'Varsavia', 'Cracovia', 'Danzica', 'Breslavia',
123
+ 'Portogallo', 'Lisbona', 'Oporto', 'Madeira', 'Azzorre', 'Sintra', 'Algarve',
124
+ 'Repubblica Ceca', 'Praga', 'Brno',
125
+ 'Romania', 'Bucarest', 'Transilvania',
131
126
  'Russia', 'Mosca', 'San Pietroburgo',
132
- 'Georgia', 'Tbilisi',
133
- 'Armenia', 'Erevan',
134
- 'Azerbaigian', 'Baku',
127
+ 'San Marino', 'Città del Vaticano', 'Andorra',
128
+ 'Serbia', 'Belgrado',
129
+ 'Slovacchia', 'Bratislava',
130
+ 'Slovenia', 'Lubiana', 'Bled',
131
+ 'Svezia', 'Stoccolma', 'Göteborg', 'Malmö',
132
+ 'Turchia', 'Ankara', 'Istanbul', 'Smirne', 'Antalya', 'Cappadocia',
133
+ 'Ucraina', 'Kiev', 'Kyiv', 'Odessa', 'Leopoli',
134
+ 'Ungheria', 'Budapest',
135
135
 
136
136
 
137
137
  // AMERICA DEL NORD
@@ -218,14 +218,14 @@ const places = [
218
218
  'Machu Picchu', 'Valle Sacra degli Inca', 'Lago Titicaca', 'Linee di Nazca', 'Vinicunca',
219
219
 
220
220
  // altri paesi dell'America del Sud
221
+ 'Bolivia', 'La Paz', 'Cochabamba', 'Sucre', 'Salar de Uyuni',
221
222
  'Cile', 'Santiago del Cile', 'Valparaíso', 'Isola di Pasqua', 'Torres del Paine', 'Atacama Desert',
222
223
  'Colombia', 'Bogotà', 'Medellín', 'Cartagena Old Town',
223
224
  'Ecuador', 'Quito', 'Guayaquil', 'Galapagos Islands',
225
+ 'Guyana', 'Suriname',
226
+ 'Paraguay', 'Asunción',
224
227
  'Uruguay', 'Montevideo',
225
- 'Bolivia', 'La Paz', 'Cochabamba', 'Sucre', 'Salar de Uyuni',
226
228
  'Venezuela', 'Caracas',
227
- 'Paraguay', 'Asunción',
228
- 'Guyana', 'Suriname',
229
229
 
230
230
 
231
231
  // ASIA
@@ -272,39 +272,39 @@ const places = [
272
272
  'Piazza Durbar', 'Campo Base dell\'Everest', 'Lago Phewa', 'Parco di Chitwan',
273
273
 
274
274
  // altri paesi asiatici
275
- 'Corea del Sud', 'Seoul', 'Busan', 'Jeju Island',
276
- 'Thailandia', 'Bangkok', 'Phuket', 'Chiang Mai',
277
- 'Vietnam', 'Hanoi', 'Ho Chi Minh', 'Halong Bay',
278
- 'Indonesia', 'Giacarta', 'Bali', 'Borobudur',
279
- 'Filippine', 'Manila',
280
- 'Malaysia', 'Kuala Lumpur',
281
- 'Singapour', 'Singapore',
282
- 'Emirati Arabi Uniti', 'Abu Dhabi', 'Dubai',
275
+ 'Afghanistan', 'Kabul',
283
276
  'Arabia Saudita', 'Riad',
284
- 'Israele', 'Gerusalemme',
285
- 'Giordania', 'Amman', 'Petra',
286
- 'Kazakistan', 'Astana',
287
- 'Uzbekistan', 'Tashkent', 'Samarcanda',
288
- 'Mongolia', 'Ulan Bator',
289
- 'Corea del Nord', 'Pyongyang',
290
- 'Taiwan', 'Taipei',
291
- 'Cambogia', 'Phnom Penh', 'Angkor Wat',
292
- 'Laos', 'Vientiane',
293
- 'Myanmar', 'Bagan',
294
- 'Sri Lanka', 'Colombo',
277
+ 'Bahrein', 'Yemen',
295
278
  'Bangladesh', 'Dacca',
296
- 'Pakistan', 'Islamabad', 'Karachi',
297
- 'Afghanistan', 'Kabul',
298
279
  'Bhutan', 'Thimphu',
299
- 'Maldive', 'Maldivian Atolls',
300
280
  'Brunei',
281
+ 'Cambogia', 'Phnom Penh', 'Angkor Wat',
282
+ 'Corea del Nord', 'Pyongyang',
283
+ 'Corea del Sud', 'Seoul', 'Busan', 'Jeju Island',
284
+ 'Emirati Arabi Uniti', 'Abu Dhabi', 'Dubai',
285
+ 'Filippine', 'Manila',
286
+ 'Giordania', 'Amman', 'Petra',
287
+ 'Indonesia', 'Giacarta', 'Bali', 'Borobudur',
301
288
  'Iran', 'Teheran',
302
289
  'Iraq', 'Baghdad',
303
- 'Siria', 'Damasco',
304
- 'Libano', 'Beirut',
290
+ 'Israele', 'Gerusalemme',
291
+ 'Kazakistan', 'Astana',
305
292
  'Kuwait', 'Qatar', 'Doha',
293
+ 'Laos', 'Vientiane',
294
+ 'Libano', 'Beirut',
295
+ 'Malaysia', 'Kuala Lumpur',
296
+ 'Maldive', 'Maldivian Atolls',
297
+ 'Mongolia', 'Ulan Bator',
298
+ 'Myanmar', 'Bagan',
306
299
  'Oman', 'Mascate',
307
- 'Bahrein', 'Yemen',
300
+ 'Pakistan', 'Islamabad', 'Karachi',
301
+ 'Singapour', 'Singapore',
302
+ 'Siria', 'Damasco',
303
+ 'Sri Lanka', 'Colombo',
304
+ 'Taiwan', 'Taipei',
305
+ 'Thailandia', 'Bangkok', 'Phuket', 'Chiang Mai',
306
+ 'Uzbekistan', 'Tashkent', 'Samarcanda',
307
+ 'Vietnam', 'Hanoi', 'Ho Chi Minh', 'Halong Bay',
308
308
 
309
309
 
310
310
  // AFRICA
@@ -341,34 +341,34 @@ const places = [
341
341
  'Parco Nazionale Kruger', 'Capo di Buona Speranza', 'Garden Route', 'Robben Island',
342
342
 
343
343
  // altri paesi africani
344
- 'Marocco', 'Rabat', 'Marrakech', 'Casablanca', 'Fes', 'Tangeri', 'Chefchaouen',
345
- 'Tunisia', 'Tunisi',
344
+ 'Algeria', 'Algeri',
345
+ 'Angola', 'Luanda',
346
+ 'Botswana', 'Gaborone', 'Okavango Delta',
347
+ 'Burkina Faso', 'Sierra Leone', 'Liberia', 'Guinea', 'Gibuti',
348
+ 'Capo Verde',
349
+ 'Congo', 'Kinshasa',
350
+ 'Costa d’Avorio', 'Camerun',
351
+ 'Eritrea', 'Asmara',
352
+ 'Etiopia', 'Addis Abeba',
353
+ 'Gambia', 'Niger', 'Ciad', 'Mauritania', 'Malawi', 'Lesotho', 'Eswatini', 'Gabon', 'Togo', 'Benin',
354
+ 'Ghana', 'Accra',
346
355
  'Kenya', 'Nairobi',
347
- 'Senegal', 'Dakar',
356
+ 'Libia', 'Tripoli',
348
357
  'Madagascar', 'Antananarivo',
358
+ 'Marocco', 'Rabat', 'Marrakech', 'Casablanca', 'Fes', 'Tangeri', 'Chefchaouen',
349
359
  'Mauritius', 'Port Louis', 'Le Morne Brabant',
350
- 'Etiopia', 'Addis Abeba',
351
- 'Algeria', 'Algeri',
352
- 'Libia', 'Tripoli',
353
- 'Nigeria', 'Abuja', 'Lagos',
354
- 'Ghana', 'Accra',
355
- 'Costa d’Avorio', 'Camerun',
356
- 'Uganda', 'Kampala',
357
- 'Ruanda', 'Kigali',
358
360
  'Mozambico', 'Maputo',
359
- 'Zimbabwe', 'Harare', 'Victoria Falls',
360
- 'Zambia', 'Lusaka',
361
361
  'Namibia', 'Windhoek',
362
- 'Botswana', 'Gaborone', 'Okavango Delta',
363
- 'Angola', 'Luanda',
364
- 'Sudan', 'Khartum',
362
+ 'Nigeria', 'Abuja', 'Lagos',
363
+ 'Ruanda', 'Kigali',
364
+ 'Senegal', 'Dakar',
365
365
  'Seychelles', 'Praslin Island',
366
- 'Capo Verde',
367
- 'Congo', 'Kinshasa',
368
366
  'Somalia', 'Mogadiscio',
369
- 'Eritrea', 'Asmara',
370
- 'Gambia', 'Niger', 'Ciad', 'Mauritania', 'Malawi', 'Lesotho', 'Eswatini', 'Gabon', 'Togo', 'Benin',
371
- 'Burkina Faso', 'Sierra Leone', 'Liberia', 'Guinea', 'Gibuti',
367
+ 'Sudan', 'Khartum',
368
+ 'Tunisia', 'Tunisi',
369
+ 'Uganda', 'Kampala',
370
+ 'Zambia', 'Lusaka',
371
+ 'Zimbabwe', 'Harare', 'Victoria Falls',
372
372
 
373
373
 
374
374
  // OCEANIA
@@ -398,38 +398,38 @@ const places = [
398
398
 
399
399
  // altri paesi dell'Oceania
400
400
  'Fiji', 'Suva',
401
- 'Polinesia Francese', 'Papeete', 'Tahiti', 'Bora Bora',
402
401
  'Papua Nuova Guinea', 'Port Moresby',
402
+ 'Polinesia Francese', 'Papeete', 'Tahiti', 'Bora Bora',
403
403
  'Samoa', 'Tonga', 'Vanuatu', 'Nuova Caledonia', 'Isole Cook', 'Isole Salomone',
404
404
 
405
405
 
406
406
  // --------------------
407
- // places not tied to a single country (seas, oceans, regions, polar areas)
407
+ // luoghi non legati a un singolo paese (mari, oceani, regioni, aree polari)
408
+ 'Ande', 'Amazzonia', 'Terra del Fuoco',
409
+ 'Artide', 'Polo Nord', 'Antartide', 'Polo Sud',
410
+ 'Groenlandia', 'Lapponia', 'Siberia',
408
411
  'Mar Mediterraneo', 'Mediterraneo', 'Mar Adriatico', 'Mar Tirreno', 'Mar Ionio', 'Mar Ligure',
409
412
  'Mar Nero', 'Mar Baltico', 'Mare del Nord', 'Mar Rosso', 'Mar Morto', 'Mar dei Caraibi', 'Caraibi',
410
413
  'Oceano Atlantico', 'Oceano Pacifico', 'Oceano Indiano',
411
- 'Artide', 'Polo Nord', 'Antartide', 'Polo Sud',
412
- 'Groenlandia', 'Lapponia', 'Siberia',
413
414
  'Sahara', 'Kalahari', 'Namib',
414
- 'Ande', 'Amazzonia', 'Terra del Fuoco'
415
415
  ];
416
416
 
417
417
 
418
418
  /**
419
- * Key used to match a place regardless of case, spacing and apostrophe style
419
+ * Chiave usata per far corrispondere un luogo indipendentemente da maiuscole/minuscole, spaziatura e stile dell'apostrofo
420
420
  * @param {string} str
421
421
  * @returns {string}
422
422
  */
423
423
  const placeKey = str => str.toLowerCase().replace(/[ \u00A0]+/g, ' ').replace(/['‘’]/g, '’');
424
424
 
425
425
  /**
426
- * Builds the matcher for a list of places: a single regex (longest places first, so that
427
- * e.g. "Lago di Como" wins over a shorter overlapping name) and a key → canonical form map.
428
- * The canonical form uses the typographic apostrophe and non-breaking spaces after particles,
429
- * consistently with betterText().
426
+ * Costruisce il matcher per un elenco di luoghi: una singola regex (prima i luoghi più lunghi, così che
427
+ * ad es. "Lago di Como" prevalga su un nome più corto sovrapposto) e una mappa chiave → forma canonica.
428
+ * La forma canonica usa l'apostrofo tipografico e gli spazi non separabili dopo le particelle,
429
+ * in modo coerente con betterText().
430
430
  *
431
- * @param {string[]} list - places list
432
- * @returns {{regex: RegExp, canonical: Map<string, string>} | null} null if the list is empty
431
+ * @param {string[]} list - elenco dei luoghi
432
+ * @returns {{regex: RegExp, canonical: Map<string, string>} | null} null se l'elenco è vuoto
433
433
  */
434
434
  function buildPlacesMatcher(list) {
435
435
  const canonical = new Map();
@@ -459,7 +459,7 @@ function buildPlacesMatcher(list) {
459
459
  );
460
460
 
461
461
  return {
462
- // custom boundaries instead of \b, which doesn't work with accented edge letters (e.g. "Perù")
462
+ // delimitatori personalizzati al posto di \b, che non funziona con lettere accentate ai bordi (es. "Perù")
463
463
  regex: new RegExp(`(?<![\\p{L}\\p{N}])(?:${patterns.join('|')})(?![\\p{L}\\p{N}])`, 'giu'),
464
464
  canonical
465
465
  };
@@ -468,21 +468,21 @@ function buildPlacesMatcher(list) {
468
468
  const defaultMatcher = buildPlacesMatcher(places);
469
469
 
470
470
  /**
471
- * Version of betterText() that also normalizes the occurrences of known places
472
- * (countries, cities, rivers, mountains, tourist locations) found in the text:
473
- * matching is case-insensitive and tolerant to spacing and apostrophe style, and every
474
- * match is replaced by the canonical form listed in `places` (casing, typographic
475
- * apostrophe, non-breaking spaces after particles).
476
- * Places replacement runs after betterText(), so it takes precedence over the casing
477
- * enforced on particles and custom words.
471
+ * Versione di betterText() che normalizza anche le occorrenze di luoghi noti
472
+ * (paesi, città, fiumi, monti, località turistiche) presenti nel testo:
473
+ * il confronto non distingue maiuscole/minuscole ed è tollerante su spaziatura e stile
474
+ * dell'apostrofo, e ogni corrispondenza viene sostituita dalla forma canonica elencata in `places`
475
+ * (capitalizzazione, apostrofo tipografico, spazi non separabili dopo le particelle).
476
+ * La sostituzione dei luoghi viene eseguita dopo betterText(), quindi ha la precedenza sulla
477
+ * capitalizzazione imposta a particelle e parole personalizzate.
478
478
  *
479
- * NOTE: places that are also common words (e.g. "Meno", "Po", "Reno") are capitalized
480
- * wherever they appear.
479
+ * NOTA: i luoghi che sono anche parole comuni (es. "Meno", "Po", "Reno") vengono messi in maiuscolo
480
+ * ovunque compaiano.
481
481
  *
482
- * @param {string} str - input string to process
483
- * @param {string[]} [custom_words] - list of words whose exact casing must be preserved (e.g. `['iPhone', 'macOS']`) (default: [])
484
- * @param {string[]} [extra_places] - additional places, merged with the built-in list (default: [])
485
- * @returns {string} processed string, or empty string if input is falsy
482
+ * @param {string} str - stringa da elaborare
483
+ * @param {string[]} [custom_words] - elenco di parole di cui va mantenuta la capitalizzazione esatta (es. `['iPhone', 'macOS']`) (default: [])
484
+ * @param {string[]} [extra_places] - luoghi aggiuntivi, uniti all'elenco predefinito (default: [])
485
+ * @returns {string} stringa elaborata, oppure stringa vuota se l'input è falsy
486
486
  *
487
487
  * @example
488
488
  * betterTextWithPlaces("vacanza a new york e nel lago di como ,l'avana");
@@ -2,10 +2,13 @@
2
2
  /*! minimo - Better Text */
3
3
 
4
4
 
5
- // Italian particles/articles (plus a few English and topographic terms) whose casing is
6
- // enforced and after which spaces are turned into non-breaking spaces. Hoisted to module
7
- // scope with the regexes/lookup built from it below, since none of this depends on the
8
- // function's arguments and was previously rebuilt on every single betterText() call.
5
+ /*
6
+ Particelle/articoli italiani (più alcuni termini inglesi e toponomastici) di cui viene
7
+ imposta la capitalizzazione e dopo i quali gli spazi vengono trasformati in spazi non
8
+ separabili. Portati a livello di modulo insieme alle regex/lookup costruite qui sotto, dato
9
+ che nulla di tutto ciò dipende dagli argomenti della funzione e in precedenza veniva
10
+ ricostruito a ogni singola chiamata di betterText().
11
+ */
9
12
  const PARTICELLE = [
10
13
  'e', 'ed',
11
14
  'di', 'a', 'da', 'in', 'per', 'con', 'su', 'per', 'tra', 'fra',
@@ -18,72 +21,76 @@ const PARTICELLE = [
18
21
  'col', 'collo', 'colla', 'con', 'coi', 'cogli', 'colle',
19
22
  'sul', 'sullo', 'sulla', 'sui', 'sugli', 'sulle',
20
23
 
21
- // topographic terms
24
+ // termini toponomastici
22
25
  'C.so', 'Corso', 'Via', 'P.za', 'Piazza', 'L.go', 'Largo', 'V.le', 'Viale',
23
26
  'De', 'San', 'c/o', 'Loc.',
24
27
 
25
- // English
28
+ // inglese
26
29
  'the', 'a', 'an', 'at', 'out', 'of',
27
30
 
28
- // words used in geonames
31
+ // parole usate nei geonames
29
32
  'isola', 'isole'
30
33
  ];
31
34
 
32
- // matches a particle followed by one-or-more spaces, to be turned into non-breaking spaces
35
+ // corrisponde a una particella seguita da uno o più spazi, da trasformare in spazi non separabili
33
36
  export const NBSP_AFTER_PARTICLE_REGEX =new RegExp('\\b(' + PARTICELLE.join('|') + ')\\b +', 'gmi');
34
37
 
35
- // matches any particle regardless of case, to enforce its exact casing in a single pass
38
+ // corrisponde a qualsiasi particella indipendentemente dal maiuscolo/minuscolo, per imporne la capitalizzazione esatta in un solo passaggio
36
39
  const PARTICLE_CASING_REGEX = new RegExp('\\b(' + PARTICELLE.join('|') + ')\\b', 'gmi');
37
40
 
38
- // lowercased particle → its exact casing, for the replacer used with PARTICLE_CASING_REGEX
41
+ // particella in minuscolo → sua capitalizzazione esatta, per il replacer usato con PARTICLE_CASING_REGEX
39
42
  const PARTICLE_CASING_MAP = new Map(PARTICELLE.map(term => [term.toLowerCase(), term]));
40
43
 
41
44
  /**
42
- * Improves a text string by fixing punctuation spacing, multiple spaces,
43
- * typographic quotes, non-breaking spaces after Italian particles/articles,
44
- * and optionally enforcing the exact casing of custom words.
45
- * Particles are forced to their listed casing, except at the start of the text
46
- * where their first letter is capitalized.
45
+ * Migliora una stringa di testo correggendo la spaziatura della punteggiatura, gli spazi
46
+ * multipli, le virgolette tipografiche, gli spazi non separabili dopo le particelle/articoli
47
+ * italiani e, opzionalmente, imponendo la capitalizzazione esatta di parole personalizzate.
48
+ * Le particelle vengono forzate alla capitalizzazione elencata, tranne all'inizio del testo
49
+ * dove la prima lettera è maiuscola.
47
50
  *
48
- * @param {string} str - input string to process
49
- * @param {string[]} [custom_words] - list of words whose exact casing must be preserved (e.g. `['iPhone', 'macOS']`) (default: [])
50
- * @returns {string} processed string, or empty string if input is falsy
51
+ * @param {string} str - stringa da elaborare
52
+ * @param {string[]} [custom_words] - elenco di parole di cui va mantenuta la capitalizzazione esatta (es. `['iPhone', 'macOS']`) (default: [])
53
+ * @returns {string} stringa elaborata, oppure stringa vuota se l'input è falsy
51
54
  */
52
55
  export function betterText(str, custom_words = []) {
53
56
 
54
57
  if(str) {
55
58
  str = str.trim();
56
59
 
57
- // punctuation: remove space before, ensure single space after
58
- // NOTE: must run before any HTML entity replacements to avoid conflicts with `;`
59
- // (?!$): negative lookahead to skip punctuation at end of string
60
+ /*
61
+ punteggiatura: rimuove lo spazio prima, garantisce un solo spazio dopo
62
+ NOTA: deve essere eseguito prima di qualsiasi sostituzione di entità HTML per evitare conflitti con `;`
63
+ (?!$): negative lookahead per saltare la punteggiatura a fine stringa
64
+ */
60
65
  str = str.replace(/ +(,|;|\.|:|!|\?)/g, '$1');
61
66
  str = str.replace(/(,|;|\.|:|!|\?)(?!$) +/g, '$1 ');
62
67
 
63
- // add the missing space after , ; ! ? when directly followed by a letter or a quote;
64
- // digits are skipped on purpose (decimals like 1,5), as are . and : (abbreviations, times, URLs)
68
+ /*
69
+ aggiunge lo spazio mancante dopo , ; ! ? quando seguiti direttamente da una lettera o da una virgoletta;
70
+ le cifre vengono saltate di proposito (decimali come 1,5), così come . e : (abbreviazioni, orari, URL)
71
+ */
65
72
  str = str.replace(/([,;!?])(?=[\p{L}"'“‘])/gu, '$1 ');
66
73
 
67
- // collapse multiple spaces and tabs (including non-breaking spaces)
74
+ // comprime spazi e tabulazioni multipli (inclusi gli spazi non separabili)
68
75
  str = str.replace(/[ \t\u00A0]+/g, ' ');
69
76
 
70
- // typographic quotes
71
- str = str.replace(/(^| )"/g, '$1“') // opening double quotes
72
- .replace(/"/g, '”') // remaining double quotes → closing
73
- .replace(/(^| )'/g, '$1‘') // opening single quotes
74
- .replace(/'/g, '’') // remaining single quotes and apostrophes
77
+ // virgolette tipografiche
78
+ str = str.replace(/(^| )"/g, '$1“') // virgolette doppie di apertura
79
+ .replace(/"/g, '”') // virgolette doppie rimanenti → chiusura
80
+ .replace(/(^| )'/g, '$1‘') // virgolette singole di apertura
81
+ .replace(/'/g, '’') // virgolette singole rimanenti e apostrofi
75
82
  ;
76
83
 
77
- // remove space after apostrophe preceded by elided articles (l', un', d', all', ...)
84
+ // rimuove lo spazio dopo l'apostrofo preceduto da articoli elisi (l', un', d', all', ...)
78
85
  str = str.replace(/((^| )(l|un|d|all|dell|nell|sull)('|')) /gi, '$1' );
79
86
 
80
- // replace regular spaces with non-breaking spaces after Italian particles/articles
87
+ // sostituisce gli spazi normali con spazi non separabili dopo le particelle/articoli italiani
81
88
  str = str.replace(NBSP_AFTER_PARTICLE_REGEX, function (match) {
82
89
  return match.replace(/ +/g, '\u00A0');
83
90
  });
84
91
 
85
- // enforce exact casing of every particle in a single pass;
86
- // a particle at the very start of the text (optionally after an opening quote) is capitalized
92
+ // impone la capitalizzazione esatta di ogni particella in un solo passaggio;
93
+ // una particella all'inizio del testo (eventualmente dopo una virgoletta di apertura) viene messa in maiuscolo
87
94
  str = str.replace(PARTICLE_CASING_REGEX, (match, _p1, offset, whole) => {
88
95
  const exact = PARTICLE_CASING_MAP.get(match.toLowerCase()) ?? match;
89
96
  return /^[“‘]?$/.test(whole.slice(0, offset))
@@ -91,8 +98,8 @@ export function betterText(str, custom_words = []) {
91
98
  : exact;
92
99
  });
93
100
 
94
- // capitalize the first letter after ! ? and ellipsis (... or …), optionally after an opening quote;
95
- // runs after the particle casing so that a capital is not undone for particles like "e" or "di"
101
+ // mette in maiuscolo la prima lettera dopo ! ? e i puntini di sospensione (... o …), eventualmente dopo una virgoletta di apertura;
102
+ // viene eseguito dopo la capitalizzazione delle particelle così che una maiuscola non venga annullata per particelle come "e" o "di"
96
103
  str = str.replace(/([!?]|\.{3}|…) +([“‘]?)(\p{Ll})/gu, (_match, punct, quote, letter) =>
97
104
  `${punct} ${quote}${letter.toUpperCase()}`
98
105
  );
@@ -1,19 +1,19 @@
1
1
  /*! minimo - Classnames */
2
2
 
3
3
  /**
4
- * `MinimoClass | any other string`: keeps editor autocomplete for minimo's
5
- * own class names (see ../../types/classes.d.ts, auto-generated) while still
6
- * accepting arbitrary consumer-defined class names. The `string & {}` branding
7
- * is a TS trick that prevents the union from collapsing to plain `string`,
8
- * which would silently disable the autocomplete.
4
+ * `MinimoClass | qualsiasi altra stringa`: mantiene l'autocomplete dell'editor per i nomi
5
+ * di classe di minimo (vedi ../../types/classes.d.ts, generato automaticamente) pur
6
+ * accettando nomi di classe arbitrari definiti dal consumer. Il branding `string & {}`
7
+ * è un trucco TS che impedisce all'union di ridursi a semplice `string`,
8
+ * cosa che disattiverebbe in silenzio l'autocomplete.
9
9
  * @typedef {import('../../types/classes.js').MinimoClass | (string & {})} ClassName
10
10
  */
11
11
 
12
12
  /** @typedef {ClassName | null | undefined | false | 0} ClassValue */
13
13
 
14
14
  /**
15
- * Joins CSS class names, filtering out falsy and non-string values.
16
- * Accepts strings, falsy values, and (nested) arrays of the same.
15
+ * Unisce i nomi di classe CSS, scartando i valori falsy e non stringa.
16
+ * Accetta stringhe, valori falsy e array (anche annidati) degli stessi.
17
17
  * @param {...(ClassValue | ClassValue[])} args
18
18
  * @returns {string}
19
19
  */
@@ -29,7 +29,7 @@ export function classnames(...args) {
29
29
  }
30
30
 
31
31
  /**
32
- * Like {@link classnames}, but returns `null` when the result is an empty string.
32
+ * Come {@link classnames}, ma restituisce `null` quando il risultato è una stringa vuota.
33
33
  * @param {...(ClassValue | ClassValue[])} args
34
34
  * @returns {string | null}
35
35
  */
@@ -2,10 +2,10 @@
2
2
  /*! minimo - Cookies */
3
3
 
4
4
  /**
5
- * Returns the value of a cookie by name.
5
+ * Restituisce il valore di un cookie dal nome.
6
6
  * @param {string} name
7
7
  * @param {object} [options]
8
- * @param {boolean} [options.parseJson=false] - If true, JSON-parses the value and returns an object instead of a string. (default: false)
8
+ * @param {boolean} [options.parseJson=false] - Se true, esegue il parsing JSON del valore e restituisce un oggetto invece di una stringa (default: false)
9
9
  * @returns {string | object | null}
10
10
  */
11
11
  export function getCookie(name, {parseJson = false} = {}) {
@@ -21,19 +21,19 @@ export function getCookie(name, {parseJson = false} = {}) {
21
21
 
22
22
 
23
23
  /**
24
- * Sets a cookie.
24
+ * Imposta un cookie.
25
25
  * @param {object} params
26
26
  * @param {string} params.name
27
27
  * @param {string} params.value
28
28
  * @param {string|null} [params.path=null] (default: null)
29
- * @param {number|null} [params.expire=null] - Max-Age in seconds (default: null)
29
+ * @param {number|null} [params.expire=null] - Max-Age in secondi (default: null)
30
30
  * @example
31
- * // Cookie scoped to the current page only, lasting 15 days
31
+ * // Cookie limitato alla sola pagina corrente, con durata di 15 giorni
32
32
  * setCookie({
33
33
  * name: 'cookieName',
34
34
  * value: 'cookieValue',
35
35
  * path: window.location.pathname,
36
- * expire: 15 * 24 * 60 * 60 // 15 days
36
+ * expire: 15 * 24 * 60 * 60 // 15 giorni
37
37
  * });
38
38
  */
39
39
  export function setCookie({name, value, path = null, expire = null}) {
@@ -2,8 +2,8 @@
2
2
  import { stripTags } from './strip-tags.js';
3
3
 
4
4
  /**
5
- * Creates an id from a string (useful for generating automatic anchors from tag content).
6
- * Strips HTML tags, normalizes accented characters, punctuation, and whitespace.
5
+ * Crea un id a partire da una stringa (utile per generare ancore automatiche dal contenuto di un tag).
6
+ * Rimuove i tag HTML e normalizza caratteri accentati, punteggiatura e spazi.
7
7
  * @param {string | null | undefined} str
8
8
  * @returns {string}
9
9
  */
@@ -12,7 +12,7 @@ export function createId(str) {
12
12
  .toLowerCase()
13
13
  .normalize('NFD')
14
14
  .replace(/[\u0300-\u036f]/g, '')
15
- .replace(/[\p{P}\p{S}]+/gu, '') // strips all Unicode punctuation and symbols
15
+ .replace(/[\p{P}\p{S}]+/gu, '') // rimuove tutta la punteggiatura e i simboli Unicode
16
16
  .replace(/\s+/g, '-')
17
17
  .replace(/^-+|-+$/g, '')
18
18
  .replace(/-+/g, '-')
@@ -1,8 +1,8 @@
1
1
  /*! minimo - Disable Buttons On Submit */
2
2
  /**
3
- * Disables all `[type=submit]` and `[type=button]` buttons on form submit.
3
+ * Disabilita tutti i pulsanti `[type=submit]` e `[type=button]` al submit del form.
4
4
  *
5
- * Applies to all `<form>` elements in the document except those with
5
+ * Si applica a tutti gli elementi `<form>` del documento, tranne quelli con
6
6
  * `data-disable-submit="false"`.
7
7
  *
8
8
  * @returns {void}