@massimo-cassandro/minimo 1.36.1 → 1.37.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.
Files changed (48) hide show
  1. package/dev-tools/design-tokens-builder/README.md +22 -0
  2. package/dev-tools/design-tokens-builder/build-tokens-src/config.mjs +22 -3
  3. package/dev-tools/design-tokens-builder/build-tokens-src/platforms.mjs +4 -2
  4. package/dev-tools/design-tokens-builder/build-tokens-src/source-prefixes.mjs +129 -0
  5. package/dev-tools/design-tokens-builder/build-tokens-src/transforms.mjs +20 -0
  6. package/dev-tools/design-tokens-builder/build-tokens.mjs +9 -0
  7. package/dev-tools/design-tokens-builder/check-unresolved-custom-props.mjs +13 -8
  8. package/dev-tools/design-tokens-builder/tokens-config-sample.mjs +10 -1
  9. package/dev-tools/starter-kit/source_files/app/email/_mail-properties.scss +18 -0
  10. package/dev-tools/starter-kit/source_files/app/email/mail-embed.scss +68 -0
  11. package/dev-tools/starter-kit/source_files/app/email/mail-inline.scss +203 -0
  12. package/dev-tools/starter-kit/source_files/app/email/readme.md +26 -0
  13. package/dev-tools/starter-kit/source_files/app/email/{_mail-properties.css → versione postcss/_mail-properties.css } +2 -5
  14. package/dev-tools/starter-kit/source_files/app/email/{mail-embed.css → versione postcss/mail-embed.css } +14 -15
  15. package/dev-tools/starter-kit/source_files/app/email/{mail-inline.css → versione postcss/mail-inline.css } +50 -61
  16. package/dev-tools/starter-kit/source_files/app/email/{postcss.config.mjs → versione postcss/postcss.config.mjs } +1 -1
  17. package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root/_sf/templates}/_main-tpl.html.twig +3 -0
  18. package/dev-tools/starter-kit/source_files/root/{sf_templates → _sf/templates}/email/_email-tpl.html.twig +8 -9
  19. package/dev-tools/starter-kit/source_files/root/_sf/templates/email/css/.gitkeep +0 -0
  20. package/dev-tools/starter-kit/source_files/root/_sf/templates/email/imgs/.gitkeep +0 -0
  21. package/dev-tools/starter-kit/source_files/root/jsconfig.json +1 -1
  22. package/dev-tools/starter-kit/source_files/root/package-tpl.json +5 -2
  23. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/css-rules.mjs +1 -0
  24. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/custom-props-purgecss-plugin.mjs +328 -0
  25. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/get-jsConfig-aliases.mjs +1 -0
  26. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/inline-critical-css.mjs +1 -0
  27. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/mini-svg-data-uri-loader.cjs +1 -0
  28. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/postcss.config.mjs +9 -5
  29. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/purgecss-setup.mjs +23 -27
  30. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/svg-rules.mjs +1 -0
  31. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/svgo.config.mjs +1 -0
  32. package/dev-tools/starter-kit/source_files/root/webpack.config.mjs +137 -65
  33. package/dev-tools/starter-kit/starter-install.sh +2 -1
  34. package/dev-tools/starter-kit/webpack-config-upg.md +147 -0
  35. package/package.json +1 -1
  36. package/src/css/forms/form-group.css +0 -1
  37. package/src/minimo.css +42 -42
  38. package/dev-tools/starter-kit/source_files/root/sf_templates/email/css/mail-embed.css +0 -1
  39. package/dev-tools/starter-kit/source_files/root/sf_templates/email/css/mail-inline.css +0 -1
  40. package/dev-tools/starter-kit/source_files/root/webpack-config-modules/purgecss-variables-safelist.mjs +0 -92
  41. /package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root}/_env.local +0 -0
  42. /package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root/_sf}/symfony-webpack-setup.md +0 -0
  43. /package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root/_sf/templates}/bundles/TwigBundle/Exception/error.html.twig +0 -0
  44. /package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root/_sf/templates/incl}/flash-messages.html.twig +0 -0
  45. /package/{snippets/twig-symfony → dev-tools/starter-kit/source_files/root/_sf/templates/incl}/minimo-form-layout.html.twig +0 -0
  46. /package/snippets/{twig-symfony → symfony}/ImgViewerController.php +0 -0
  47. /package/snippets/{twig-symfony → symfony}/UnsplashController.php +0 -0
  48. /package/snippets/{twig-symfony → symfony}/ViewerController.php +0 -0
@@ -0,0 +1,26 @@
1
+ # CSS email
2
+
3
+ ## Versione SCSS
4
+
5
+ Richiede `sass`, compilazione in `templates/email/css/`:
6
+
7
+ ```bash
8
+ npm i -D sass
9
+ ```
10
+
11
+ ```bash
12
+ npm run 'email sass'
13
+ ```
14
+
15
+ ## Versione PostCSS
16
+
17
+
18
+ ```bash
19
+ npm i -D postcss postcss-cli postcss-import postcss-nested postcss-custom-properties autoprefixer cssnano
20
+ ```
21
+
22
+ ```bash
23
+ npm run 'postcss email'
24
+ ```
25
+
26
+
@@ -1,15 +1,13 @@
1
- /* @import url(../src/css/custom-properties.css); */
2
-
3
1
  :root {
4
2
 
5
3
  --mail-font-size-xs: 13px;
6
- --mail-font-size: 16px;
7
4
  --mail-font-size-lg: 18px;
8
5
  --mail-font-size-2lg: 21px;
9
6
  --mail-font-size-3lg: 24px;
10
7
  --mail-font-size-xl: 28px;
11
8
 
12
- --mail-body-font: helvetica, arial, sans-serif;
9
+ --mail-body-font: 'Aptos', 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif;
10
+ --mail-font-monospace: 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
13
11
  --mail-body-bg: #efefef;
14
12
  --mail-text-color: #333;
15
13
  --mail-text-color-light: #373737;
@@ -21,6 +19,5 @@
21
19
 
22
20
  --mail-alt-color: #036;
23
21
  --mail-darken-alt-color: #010112;
24
- --mail-link-color: #036;
25
22
 
26
23
  }
@@ -1,22 +1,21 @@
1
1
  /* stylelint-disable declaration-no-important */
2
2
  @import './_mail-properties.css';
3
3
 
4
- /* NB: niente selettore universale `*`: inline_css inlinerebbe la regola su ogni elemento */
5
- body, table, td, p, a { text-size-adjust: 100%; }
6
-
7
- .content {
8
- &.body {
9
- a {
10
- font-weight: 700;
11
- color: var(--mail-alt-color);
12
- text-decoration: underline;
13
- cursor: pointer;
4
+ /* NB: niente selettore universale `*`: inline_css lo inlinerebbe su ogni elemento */
5
+ body,
6
+ table,
7
+ td,
8
+ p,
9
+ a {
10
+ text-size-adjust: 100%;
11
+ }
14
12
 
15
- &:hover {
16
- color: var(--mail-darken-alt-color);
17
- }
18
- }
19
- }
13
+ /*
14
+ gli stili base dei link sono già in mail-inline;
15
+ qui serve !important perché lo style inline batte l'hover
16
+ */
17
+ .content.body a:hover {
18
+ color: var(--mail-darken-alt-color) !important;
20
19
  }
21
20
 
22
21
  @media only screen and (max-width: 640px) {
@@ -59,9 +59,7 @@ p {
59
59
  > tbody > tr > td {
60
60
  width: 100%;
61
61
  padding-top: 10px;
62
- padding-right: 10px;
63
62
  padding-bottom: 20px;
64
- padding-left: 10px;
65
63
  background-color: var(--mail-body-bg);
66
64
  border: none;
67
65
  }
@@ -74,7 +72,7 @@ p {
74
72
  > tbody > tr > td {
75
73
  padding: 10px;
76
74
  text-align: center;
77
- background: var(--mail-body-bg);
75
+ background-color: var(--mail-body-bg);
78
76
 
79
77
  > img {
80
78
  display: inline-block;
@@ -89,73 +87,61 @@ p {
89
87
  }
90
88
 
91
89
  &.body {
90
+ > tbody > tr > td {
91
+
92
+ padding-top: 20px;
93
+ padding-right: 30px;
94
+ padding-bottom: 20px;
95
+ padding-left: 30px;
96
+ font-size: var(--mail-font-size-lg);
97
+ vertical-align: top;
98
+ color: var(--mail-text-color);
99
+ background-color: var(--mail-content-bg);
100
+
101
+
102
+ a {
103
+ font-weight: 700;
104
+ color: var(--mail-alt-color);
105
+ text-decoration: underline;
106
+ cursor: pointer;
107
+ }
108
+
109
+ h1 {
110
+ margin-top: 0;
111
+ margin-bottom: var(--mail-spacing);
112
+ font-size: var(--mail-font-size-xl);
113
+ font-weight: 700;
114
+ }
115
+
116
+ h2 {
117
+ margin-top: var(--mail-spacing);
118
+ margin-bottom: 12px;
119
+ font-size: var(--mail-font-size-2lg);
120
+ font-weight: 700;
92
121
 
93
- > tbody > tr {
94
- > td {
95
-
96
- padding-top: 20px;
97
- padding-right: 30px;
98
- padding-bottom: 20px;
99
- padding-left: 30px;
100
- vertical-align: top;
101
- color: var(--mail-text-color);
102
- background-color: var(--mail-content-bg);
103
-
104
- a {
105
- font-weight: 700;
106
- color: var(--mail-alt-color);
107
- text-decoration: underline;
108
- cursor: pointer;
109
-
110
- &:hover {
111
- color: var(--mail-darken-alt-color);
112
- }
113
- }
114
-
115
- h1 {
116
- margin-top: 0;
117
- margin-bottom: var(--mail-spacing);
118
- font-size: var(--mail-font-size-xl);
119
- font-weight: 700;
120
- }
121
-
122
- p {
123
- font-size: var(--mail-font-size-2lg);
124
- }
125
-
126
- img {
127
- max-width: 100%;
128
- height: auto;
129
- }
122
+ }
130
123
 
124
+ img {
125
+ max-width: 100%;
126
+ height: auto;
131
127
  }
128
+
132
129
  }
133
130
  }
134
131
 
132
+
135
133
  &.footer {
136
- td {
134
+ > tbody > tr > td {
137
135
  padding-top: 10px;
138
136
  padding-bottom: 10px;
139
137
  font-size: 80%;
140
138
  color: var(--mail-text-color-light);
141
139
  text-align: center;
142
- background: var(--mail-body-bg);
140
+ background-color: var(--mail-body-bg);
143
141
  }
144
142
  }
145
143
  }
146
144
 
147
- .logo-network {
148
- display: inline-block;
149
- padding: 5px;
150
- margin: 10px auto;
151
- background-color: var(--mail-body-bg);
152
- }
153
- .network-info {
154
- font-size: var(--mail-font-size-xs);
155
- font-style: italic;
156
- color: #888;
157
- }
158
-
159
145
 
160
146
  .text-center {
161
147
  text-align: center;
@@ -169,14 +155,8 @@ p {
169
155
  .small, small {
170
156
  font-size: var(--mail-font-size-xs);
171
157
  }
172
- .margin-top {
173
- margin-top: var(--mail-spacing);
174
- }
175
- .margin-bottom {
176
- margin-bottom: var(--mail-spacing);
177
- }
178
158
  .text-monospace {
179
- font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
159
+ font-family: var(--mail-font-monospace);
180
160
  }
181
161
  .text-muted {
182
162
  color: #666;
@@ -198,6 +178,7 @@ strong, b {
198
178
 
199
179
  th, td {
200
180
  padding: 6px 10px;
181
+ font-size: var(--mail-font-size-lg);
201
182
  vertical-align: top;
202
183
  text-align: left;
203
184
  border-bottom: 1px solid var(--mail-gray);
@@ -212,3 +193,11 @@ strong, b {
212
193
  }
213
194
  }
214
195
  }
196
+
197
+ /* dopo .table, altrimenti il suo margin sovrascrive queste utility */
198
+ .margin-top {
199
+ margin-top: var(--mail-spacing);
200
+ }
201
+ .margin-bottom {
202
+ margin-bottom: var(--mail-spacing);
203
+ }
@@ -1,4 +1,4 @@
1
- // config postcss per le CSS delle email (npm run "css email")
1
+ // config postcss per le CSS delle email (npm run "postcss email")
2
2
  // NB: in ESM perché postcss-nested >= 8 è ESM-only
3
3
  //
4
4
  // https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-custom-properties#readme
@@ -12,7 +12,10 @@
12
12
  <link rel="preload" href="{{ asset('shared.js') }}" as="script">
13
13
  <link rel="preload" href="{{ asset('runtime.js') }}" as="script">
14
14
  {{- '' -}}
15
+ <link rel="preload" href="{{ asset('shared.css') }}" as="style">
15
16
  <link rel="preload" href="{{ asset('index.css') }}" as="style">
17
+ {# shared.css va linkato PRIMA del css della entry (ordine della cascata) #}
18
+ <link rel="stylesheet" href="{{ asset('shared.css') }}" type="text/css" media="all">
16
19
  <link rel="stylesheet" href="{{ asset('index.css') }}" type="text/css" media="all">
17
20
  <style>
18
21
  {%- include '@public_path' ~ asset('layout.critical.css') -%}
@@ -1,6 +1,6 @@
1
1
  {# template base per tutte le email #}
2
2
  {% apply inline_css(source('email/css/mail-inline.css')) %}
3
- <!DOCTYPE html>
3
+ <!DOCTYPE html>
4
4
  <html lang="it">
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
@@ -8,24 +8,23 @@
8
8
  <meta name="format-detection" content="telephone=no">
9
9
  <title>{% block title %}{% endblock %}</title>
10
10
  <style type="text/css">
11
- {%- include 'email/css/mail-inline.css' -%}
12
- {%- include 'email/css/mail-embed.css' -%}
11
+ {{- source('email/css/mail-embed.css') -}}
13
12
  </style>
14
13
  </head>
15
14
  <body class="yahoo-fix" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
16
15
  {# Wrapper table #}
17
- <table width="100%" border="0" cellpadding="0" cellspacing="0" align="center" id="wrapper">
16
+ <table width="100%" role="presentation" border="0" cellpadding="0" cellspacing="0" align="center" id="wrapper">
18
17
  <tbody>
19
18
  <tr>
20
19
  <td width="100%">
21
20
  {# logo #}
22
- <table class="content header device-width" width="600" border="0" cellpadding="0" cellspacing="0" align="center">
21
+ <table class="content header device-width" width="600" role="presentation" border="0" cellpadding="0" cellspacing="0" align="center">
23
22
  <tbody>
24
23
  <tr>
25
24
  <td class="logo" width="100%">
26
25
  {% block logo %}
27
26
  {# immagine allegata inline (cid:), vedi templates/email/imgs #}
28
- <img src="{{ email.image('email/imgs/logo-ict-governance-email.png', 'image/png', 'logo-ict-governance.png') }}" alt="ICT Governance" width="200" height="54" border="0">
27
+ <img src="{{ email.image('email/imgs/logo-xxxx.png', 'image/png', 'logo-xxx.png') }}" alt="xxx" width="200" height="54" border="0">
29
28
  {%- endblock %}
30
29
  </td>
31
30
  </tr>
@@ -33,7 +32,7 @@
33
32
  </table>
34
33
 
35
34
  {# content #}
36
- <table class="content body device-width" width="600" border="0" cellpadding="0" cellspacing="0" align="center">
35
+ <table class="content body device-width" width="600" role="presentation" border="0" cellpadding="0" cellspacing="0" align="center">
37
36
  <tbody>
38
37
  <tr>
39
38
  <td>
@@ -47,10 +46,10 @@
47
46
  </table>
48
47
 
49
48
  {# footer #}
50
- <table class="content footer device-width" width="600" border="0" cellpadding="0" cellspacing="0" align="center">
49
+ <table class="content footer device-width" width="600" role="presentation" border="0" cellpadding="0" cellspacing="0" align="center">
51
50
  <tbody>
52
51
  <tr>
53
- <td>{% block footer %}Bluvacanze{%- endblock %}</td>
52
+ <td>{% block footer %}xxx{%- endblock %}</td>
54
53
  </tr>
55
54
  </tbody>
56
55
  </table>
@@ -16,7 +16,7 @@
16
16
 
17
17
  "@app/*": ["app/*"],
18
18
 
19
- "@minimo/*": ["./node_modules/@massimo-cassandro/minimo/src/*"],
19
+ "@minimoSrc/*": ["./node_modules/@massimo-cassandro/minimo/src/*"],
20
20
  "@minimoCharts/*": ["./node_modules/@massimo-cassandro/minimo/charts/*"]
21
21
  }
22
22
  },
@@ -17,12 +17,15 @@
17
17
  "*.avif"
18
18
  ],
19
19
  "scripts": {
20
- "progetto JS webpack DEV": "NODE_ENV=development webpack serve --config ./webpack.config.mjs #--open-app-name 'Google Chrome'",
20
+ "webpack DEV (js)": "NODE_ENV=development webpack serve --config ./webpack.config.mjs #--open-app-name 'Google Chrome'",
21
21
  "php server": "php -S localhost:[[port8000]] # -t root_dir/",
22
- "progetto sf webpack DEV": "rm -rf ./public/_dev && NODE_ENV=development webpack serve --config ./webpack.config.mjs # http://192.168.1.135:[[port5700]",
22
+ "webpack DEV (sf)": "rm -rf ./public/_dev && NODE_ENV=development webpack serve --config ./webpack.config.mjs # http://192.168.1.135:[[port5700]",
23
23
  "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`",
24
24
  "webpack PROD": "npm run 'UPD-version' && NODE_ENV=production webpack --config ./webpack.config.mjs --stats minimal",
25
+ "email sass": "npx sass ./app/email:./templates/email/css --no-source-map --style=compressed --watch",
26
+ "postcss email": "postcss ./app/email/[!_]*.css --dir ./templates/email/css --no-map --verbose --config ./app/email --watch",
25
27
  "eslint-check": "npx eslint app/",
28
+ "stylelint-check": "npx stylelint 'app/**/*.css'",
26
29
  "create-favicons INIT": "npx create-favicons init",
27
30
  "create-favicons": "npx create-favicons --dir=./app/favicons",
28
31
  "UPD-version": "npx update-version --no-log-v0 --log-file=./changelog.md # --log-patch --pkg=alt/path/to/package.json",
@@ -1,3 +1,4 @@
1
+ // v.3
1
2
  // import path from 'path';
2
3
  // import { fileURLToPath } from 'url';
3
4
  import MiniCssExtractPlugin from 'mini-css-extract-plugin';