mypgs 1.6.0 → 2.1.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 (125) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +25 -25
  3. package/assets/javascript/components/_accordion.js +2 -2
  4. package/assets/javascript/components/_modals.js +159 -136
  5. package/assets/javascript/components/_notifications.js +19 -9
  6. package/assets/javascript/components/_search.js +2 -2
  7. package/assets/javascript/components/_slides.js +66 -32
  8. package/assets/javascript/components/_stepTabs.js +4 -4
  9. package/assets/javascript/components/_steps.js +2 -2
  10. package/assets/javascript/components/_summary.js +2 -2
  11. package/assets/javascript/functions/_formValidate.js +97 -53
  12. package/assets/javascript/functions/_scrollY.js +10 -10
  13. package/assets/javascript/layout/_header.js +3 -0
  14. package/assets/scss/base/_html.scss +2 -2
  15. package/assets/scss/base/_variables.scss +2 -2
  16. package/assets/scss/components/_accordion.scss +0 -2
  17. package/assets/scss/components/_button.scss +1 -1
  18. package/assets/scss/components/_form.scss +2 -18
  19. package/assets/scss/components/_formAddon.scss +18 -0
  20. package/assets/scss/components/_modals.scss +5 -3
  21. package/assets/scss/components/_notification.scss +23 -30
  22. package/assets/scss/components/_search.scss +29 -23
  23. package/assets/scss/components/_slides.scss +0 -1
  24. package/assets/scss/components/_tooltip.scss +0 -1
  25. package/assets/scss/index.scss +1 -0
  26. package/assets/scss/layout/_footer.scss +0 -2
  27. package/assets/scss/layout/_header.scss +9 -1
  28. package/assets/scss/layout/_pageShell.scss +24 -17
  29. package/assets/scss/mixin/_mx-button.scss +30 -76
  30. package/assets/scss/mixin/_mx-card.scss +11 -9
  31. package/assets/scss/mixin/_mx-form.scss +10 -12
  32. package/assets/scss/mixin/{_mx-form-addon.scss → _mx-formAddon.scss} +23 -26
  33. package/assets/scss/mixin/_mx-hover.scss +75 -0
  34. package/assets/scss/mixin/_settings.scss +2 -1
  35. package/assets/scss/mixin/mixin.scss +2 -1
  36. package/{templates/html → demo}/demo.html +1 -1
  37. package/demo/demo.js +241 -0
  38. package/dist/css/index.css +1317 -1674
  39. package/dist/css/index.css.map +1 -1
  40. package/dist/css/index.min.css +1 -1
  41. package/dist/javascript/index.js +356 -255
  42. package/dist/javascript/index.js.map +1 -1
  43. package/dist/javascript/index.min.js +1 -1
  44. package/docs/componenti-e-markup.md +32 -32
  45. package/docs/components/accordion.md +61 -0
  46. package/docs/components/badges.md +67 -0
  47. package/docs/components/breadcumbs.md +43 -0
  48. package/docs/components/button.md +59 -0
  49. package/docs/components/card.md +50 -0
  50. package/docs/components/dropdown.md +135 -0
  51. package/docs/components/form.md +136 -0
  52. package/docs/components/formAddon.md +79 -0
  53. package/docs/components/logo.md +36 -0
  54. package/docs/components/menu.md +90 -0
  55. package/docs/components/modal.md +131 -0
  56. package/docs/components/notification.md +81 -0
  57. package/docs/components/search.md +118 -0
  58. package/docs/components/slides.md +85 -0
  59. package/docs/components/stepTabs.md +93 -0
  60. package/docs/components/steps.md +56 -0
  61. package/docs/components/summary.md +49 -0
  62. package/docs/components/table.md +42 -0
  63. package/docs/components/tooltip.md +53 -0
  64. package/docs/convenzioni.md +11 -11
  65. package/docs/export-e-sviluppo.md +3 -3
  66. package/docs/helper-javascript.md +73 -8
  67. package/docs/layout/body.md +41 -0
  68. package/docs/layout/flex.md +116 -0
  69. package/docs/layout/footer.md +71 -0
  70. package/docs/layout/grid.md +116 -0
  71. package/docs/layout/header.md +116 -0
  72. package/docs/layout/pageShell.md +94 -0
  73. package/docs/layout/section.md +69 -0
  74. package/docs/patterns/cookieConsent.md +89 -0
  75. package/docs/utilizzo-css-scss.md +8 -8
  76. package/package.json +2 -1
  77. package/scripts/generate-component-docs.js +557 -0
  78. package/templates/html/components/accordion.html +36 -7
  79. package/templates/html/components/badges.html +28 -5
  80. package/templates/html/components/breadcumbs.html +15 -1
  81. package/templates/html/components/button.html +28 -6
  82. package/templates/html/components/card.html +28 -8
  83. package/templates/html/components/dropdown.html +42 -8
  84. package/templates/html/components/form.html +110 -9
  85. package/templates/html/components/formAddon.html +72 -0
  86. package/templates/html/components/logo.html +22 -1
  87. package/templates/html/components/menu.html +33 -6
  88. package/templates/html/components/modal.html +58 -14
  89. package/templates/html/components/notification.html +68 -32
  90. package/templates/html/components/search.html +85 -8
  91. package/templates/html/components/slides.html +46 -3
  92. package/templates/html/components/stepTabs.html +55 -8
  93. package/templates/html/components/steps.html +24 -0
  94. package/templates/html/components/summary.html +30 -3
  95. package/templates/html/components/table.html +14 -2
  96. package/templates/html/components/tooltip.html +35 -0
  97. package/templates/html/layout/body.html +20 -6
  98. package/templates/html/layout/flex.html +53 -33
  99. package/templates/html/layout/footer.html +32 -4
  100. package/templates/html/layout/grid.html +53 -33
  101. package/templates/html/layout/header.html +47 -6
  102. package/templates/html/layout/pageShell.html +19 -0
  103. package/templates/html/layout/section.html +41 -19
  104. package/templates/html/patterns/cookieConsent.html +44 -13
  105. package/templates/react/components/accordion.jsx +4 -4
  106. package/templates/react/components/breadcumbs.jsx +1 -1
  107. package/templates/react/components/button.jsx +5 -5
  108. package/templates/react/components/card.jsx +4 -4
  109. package/templates/react/components/dropdown.jsx +8 -8
  110. package/templates/react/components/form.jsx +5 -5
  111. package/templates/react/components/modal.jsx +14 -14
  112. package/templates/react/components/notification.jsx +7 -7
  113. package/templates/react/components/search.jsx +5 -5
  114. package/templates/react/components/slides.jsx +3 -3
  115. package/templates/react/components/stepTabs.jsx +8 -8
  116. package/templates/react/components/summary.jsx +3 -3
  117. package/templates/react/components/table.jsx +2 -2
  118. package/templates/react/layout/flex.jsx +8 -8
  119. package/templates/react/layout/grid.jsx +8 -8
  120. package/templates/react/layout/section.jsx +12 -12
  121. package/templates/react/patterns/cookieConsent.jsx +8 -8
  122. package/templates/react/patterns/footer.jsx +4 -4
  123. package/templates/react/patterns/header.jsx +3 -3
  124. package/templates/html/demo.js +0 -130
  125. /package/{templates/html → demo}/demo.css +0 -0
@@ -20,6 +20,8 @@ dialog[pgs~="modal-dialog"] {
20
20
  --modal-backdrop: var(--backdrop);
21
21
  --modal-background: var(--color-box);
22
22
  --modal-color: var(--color-black);
23
+ --modal-padding: var(--padding);
24
+ --modal-borderRadius: var(--border-radius);
23
25
  border: none;
24
26
  min-width: 100%;
25
27
  min-height: 100svh;
@@ -54,12 +56,12 @@ dialog[pgs~="modal-dialog"] {
54
56
  container-type: inline-size;
55
57
  background: var(--modal-background);
56
58
  color: var(--modal-color);
57
- border-radius: var(--border-radius);
59
+ border-radius: var(--modal-borderRadius);
58
60
  position: relative;
59
61
  gap: 0;
60
62
 
61
63
  >* {
62
- padding: var(--padding);
64
+ padding: var(--modal-padding);
63
65
  }
64
66
 
65
67
  //==== HEADER
@@ -67,7 +69,7 @@ dialog[pgs~="modal-dialog"] {
67
69
  @include flexRow(nowrap);
68
70
  padding-bottom: calc(var(--padding) / 2);
69
71
  border-bottom: var(--border-complete);
70
- border-radius: var(--border-radius) var(--border-radius) 0 0;
72
+ border-radius: var(--modal-borderRadius) var(--modal-borderRadius) 0 0;
71
73
  z-index: 1;
72
74
 
73
75
  [pgs~="modal-close"] {
@@ -3,34 +3,7 @@
3
3
  //= NOTIFICATION GROUP / TRIGGER
4
4
  [pgs~="notificationTrigger"] {}
5
5
 
6
- //= NOTIFICATION STYLE
7
- @mixin notification($position: center) {
8
- @if ($position ==center) {
9
- inset-inline: 0;
10
- top: calc(var(--heightOfHeader) + 10px);
11
-
12
- @at-root body:has(header[data-header-scroll="true"]) #{&} {
13
- top: 10px;
14
- }
15
- }
16
-
17
- @else if($position ==right) {
18
- top: calc(var(--heightOfHeader) + 10px);
19
- right: 10px;
20
-
21
- @at-root body:has(header[data-header-scroll="true"]) #{&} {
22
- top: 0;
23
- }
24
- }
25
-
26
- @else if($position ==bottom) {
27
- bottom: 10px;
28
- right: 10px;
29
- }
30
- }
31
-
32
- [pgs~="notification"],
33
- [pgs~="toast"] {
6
+ [pgs~="notification"] {
34
7
  display: flex;
35
8
  flex-direction: column;
36
9
  gap: var(--gap-texts);
@@ -183,10 +156,30 @@
183
156
  }
184
157
  }
185
158
 
186
- [pgs~="notification"] {
159
+ //= NOTIFICATION STYLE
160
+ @mixin notification($position: center) {
161
+ $size: 1.0rem;
162
+
163
+ @if ($position ==center) {
164
+ inset-inline: 0;
165
+ top: calc(var(--heightOfHeaderScroll) + $size);
166
+ }
167
+
168
+ @else if($position ==right) {
169
+ top: calc(var(--heightOfHeaderScroll) + $size);
170
+ right: $size;
171
+ }
172
+
173
+ @else if($position ==bottom) {
174
+ inset-inline: 0;
175
+ bottom: $size;
176
+ }
177
+ }
178
+
179
+ [pgs~="notification"]:not([pgs-option~="toast"]) {
187
180
  @include notification(right);
188
181
  }
189
182
 
190
- [pgs~="toast"] {
183
+ [pgs~="notification"][pgs-option~="toast"] {
191
184
  @include notification(center);
192
185
  }
@@ -5,9 +5,9 @@
5
5
  --search-suggestions-color: var(--color-text);
6
6
  --search-suggestions-border: var(--border-complete);
7
7
  --search-suggestions-borderRadius: var(--border-radius-input);
8
- --search-suggestions-box-shadow: var(--box-shadow);
8
+ --search-suggestions-boxShadow: var(--box-shadow);
9
9
  --search-suggestions-gap: 0;
10
- --search-suggestions-max-height: 32rem;
10
+ --search-suggestions-maxHeight: 32rem;
11
11
  --search-suggestions-offset: .5rem;
12
12
  --search-suggestions-padding: .5rem;
13
13
  --search-suggestions-item-padding: 1rem;
@@ -15,12 +15,12 @@
15
15
  --search-suggestions-item-selected-color: var(--color-whiteFixed);
16
16
  position: relative;
17
17
  @include flexRow(nowrap);
18
+ @include button_header();
18
19
  flex: 1;
19
20
  width: 100%;
20
21
  overflow: visible;
21
22
  margin-inline: auto;
22
23
  padding: 0;
23
- @include button_header();
24
24
 
25
25
  @media (min-width: $mobile) {
26
26
  min-width: 21.4rem;
@@ -67,30 +67,33 @@
67
67
  outline: var(--focus-visible);
68
68
  }
69
69
 
70
- &:not([pgs-state~="open"])>[pgs~="search-suggestions"] {
71
- display: none;
72
- }
70
+ @mixin _color($varColor) {
71
+ background: var(#{$varColor}-background);
72
+ color: var(#{$varColor}-color);
73
73
 
74
- &[pgs-state~="open"]>[pgs~="search-suggestions"] {
75
- display: flex;
74
+ i {
75
+ color: var(#{$varColor}-color);
76
+ --fa-primary-color: var(#{$varColor}-color);
77
+ --fa-secondary-color: var(#{$varColor}-color);
78
+ }
76
79
  }
77
80
 
78
- >[pgs~="search-suggestions"] {
81
+ [pgs~="search-suggestions"] {
82
+ display: none;
79
83
  position: absolute;
80
84
  inset: calc(100% + var(--search-suggestions-offset)) 0 auto;
81
85
  z-index: 1000;
82
86
  flex-direction: column;
83
87
  gap: var(--search-suggestions-gap);
84
- max-height: var(--search-suggestions-max-height);
88
+ max-height: var(--search-suggestions-maxHeight);
85
89
  overflow-y: auto;
86
90
  padding: var(--search-suggestions-padding);
87
91
  margin: 0;
88
92
  list-style: none;
89
93
  border: var(--search-suggestions-border);
90
94
  border-radius: calc(var(--search-suggestions-borderRadius) + var(--search-suggestions-padding));
91
- background: var(--search-suggestions-background);
92
- color: var(--search-suggestions-color);
93
- box-shadow: var(--search-suggestions-box-shadow);
95
+ box-shadow: var(--search-suggestions-boxShadow);
96
+ @include _color(--search-suggestions);
94
97
 
95
98
  [pgs~="search-suggestions-item"] {
96
99
  padding: var(--search-suggestions-item-padding);
@@ -100,8 +103,7 @@
100
103
 
101
104
  &[aria-selected="true"],
102
105
  &:hover {
103
- background: var(--search-suggestions-item-selected-background);
104
- color: var(--search-suggestions-item-selected-color);
106
+ @include _color(--search-suggestions-item-selected);
105
107
  }
106
108
 
107
109
  &[aria-disabled="true"] {
@@ -110,25 +112,29 @@
110
112
  }
111
113
  }
112
114
 
113
- &:has([pgs~="search-suggestions-item"]:hover) [pgs~="search-suggestions-item"][aria-selected="true"] {
114
- background: var(--search-suggestions-background);
115
- color: var(--search-suggestions-color);
115
+ &:has([pgs~="search-suggestions-item"]:hover) {
116
+ [pgs~="search-suggestions-item"][aria-selected="true"] {
117
+ @include _color(--search-suggestions);
116
118
 
117
- &:hover {
118
- background: var(--search-suggestions-item-selected-background);
119
- color: var(--search-suggestions-item-selected-color);
119
+ &:hover {
120
+ @include _color(--search-suggestions-item-selected);
121
+ }
120
122
  }
121
123
  }
122
124
  }
123
125
 
126
+ &[pgs-state~="open"] [pgs~="search-suggestions"] {
127
+ display: flex;
128
+ }
129
+
124
130
  @at-root dialog #{&} {
125
131
  max-width: calc(100% - var(--padding-page) * 2);
126
132
  height: max-content;
127
133
  margin-inline: auto;
128
134
  background-color: var(--color-white);
129
135
 
130
- input {
131
- padding-block: 20px;
136
+ [pgs~="modal-close"]{
137
+ padding: var(--button-size);
132
138
  }
133
139
  }
134
140
  }
@@ -113,7 +113,6 @@
113
113
  [pgs~="slides-next"] {
114
114
  position: absolute;
115
115
  z-index: 4;
116
- --button-background: var(--color-box);
117
116
  top: 50%;
118
117
  translate: 0 -50%;
119
118
 
@@ -4,7 +4,6 @@
4
4
  --dropdown-padding: 15px;
5
5
 
6
6
  [pgs~="tooltip-button"][pgs~="dropdown-button"] {
7
- // --button-background: var(--color-black);
8
7
  --fa-size: .9rem;
9
8
  }
10
9
 
@@ -39,6 +39,7 @@
39
39
  @include meta.load-css("components/card");
40
40
  @include meta.load-css("components/button");
41
41
  @include meta.load-css("components/form");
42
+ @include meta.load-css("components/formAddon");
42
43
  @include meta.load-css("components/menu");
43
44
  @include meta.load-css("components/accordion");
44
45
  @include meta.load-css("components/breadcumbs");
@@ -20,8 +20,6 @@
20
20
  top: 0;
21
21
  translate: 0 -50%;
22
22
  z-index: 1;
23
- --button-background: var(--color-primary);
24
- --button-color: var(--color-whiteFixed);
25
23
 
26
24
  &:has(i.fa-sun) {
27
25
  &::after {
@@ -74,6 +74,14 @@
74
74
  opacity: 0.6;
75
75
  }
76
76
 
77
+ &:hover {
78
+
79
+ &::before,
80
+ &::after {
81
+ background-color: var(--color-white);
82
+ }
83
+ }
84
+
77
85
  //=== OPEN
78
86
  &[aria-expanded="true"] {
79
87
  gap: 0px;
@@ -154,4 +162,4 @@
154
162
  padding-inline: var(--header-padding-block);
155
163
  }
156
164
  }
157
- }
165
+ }
@@ -10,17 +10,24 @@ $pageShell-test-gap: 4rem;
10
10
  max-height: none;
11
11
  width: 100%;
12
12
  min-width: 100%;
13
+ overflow: visible;
14
+ overscroll-behavior: auto;
15
+ scrollbar-gutter: auto;
13
16
 
14
- [pgs~="pageShell-aside"] {
17
+ [pgs~="pageShell-aside-scroll"] {
15
18
  scrollbar-gutter: auto;
16
19
  overflow: visible;
20
+ overscroll-behavior: auto;
17
21
  }
18
22
  }
19
23
 
20
24
  [pgs~="pageShell"] {
21
- --pageShell-aside-sticky-top: 0;
25
+ --pageShell-width: calc(var(--pageShell-content-width) + (var(--padding-page) * 2));
26
+ --pageShell-content-width: var(--page-width);
22
27
  --pageShell-aside-width: #{$aside-size};
23
- --pageShell-content-width: 500px;
28
+ --pageShell-aside-sticky-top: 0;
29
+ --pageShell-paddingInline: var(--padding-page);
30
+ --pageShell-paddingTop: var(--page-top);
24
31
  --pageShell-gap: var(--gap-elements);
25
32
  display: flex;
26
33
  flex-wrap: wrap;
@@ -29,17 +36,17 @@ $pageShell-test-gap: 4rem;
29
36
  align-items: start;
30
37
  justify-content: center;
31
38
  width: 100%;
32
- max-width: calc(var(--page-width) + (var(--padding-page) * 2));
33
- padding-inline: var(--padding-page);
39
+ max-width: var(--pageShell-width);
40
+ padding-inline: var(--pageShell-paddingInline);
34
41
  container-type: inline-size;
35
42
 
36
43
  [pgs~="pageShell-content"] {
37
44
  grid-area: content;
38
- flex: 999 1 var(--pageShell-content-width);
39
- min-width: min(100%, var(--pageShell-content-width));
40
- width: min(100%, var(--page-width));
41
- max-width: var(--page-width);
42
- padding-top: var(--page-top);
45
+ flex: 999 1 $content-size;
46
+ min-width: min(100%, $content-size);
47
+ width: min(100%, var(--pageShell-content-width));
48
+ max-width: var(--pageShell-content-width);
49
+ padding-top: var(--pageShell-paddingTop);
43
50
  padding-bottom: var(--gap-elements);
44
51
  }
45
52
 
@@ -56,7 +63,7 @@ $pageShell-test-gap: 4rem;
56
63
  overscroll-behavior: contain;
57
64
  scrollbar-gutter: stable;
58
65
  scrollbar-width: none;
59
- padding-top: var(--page-top);
66
+ padding-top: var(--pageShell-paddingTop);
60
67
  padding-bottom: var(--gap-elements);
61
68
  flex: 1 1 var(--pageShell-aside-width);
62
69
  min-width: min(100%, var(--pageShell-aside-width));
@@ -82,7 +89,7 @@ $pageShell-test-gap: 4rem;
82
89
  overscroll-behavior: contain;
83
90
  scrollbar-gutter: stable;
84
91
  scrollbar-width: none;
85
- padding-top: var(--page-top);
92
+ padding-top: var(--pageShell-paddingTop);
86
93
  padding-bottom: calc(var(--gap-elements)*2);
87
94
 
88
95
  &::-webkit-scrollbar {
@@ -116,11 +123,11 @@ $pageShell-test-gap: 4rem;
116
123
  }
117
124
 
118
125
  &:has(> [pgs~="pageShell-aside"]) {
119
- max-width: calc(var(--page-width) + var(--pageShell-aside-width) + var(--pageShell-gap) + (var(--padding-page) * 2));
126
+ --pageShell-width: calc(var(--pageShell-content-width) + var(--pageShell-aside-width) + var(--pageShell-gap) + (var(--padding-page) * 2));
120
127
  }
121
128
 
122
129
  &:has(> [pgs~="pageShell-aside"] ~ [pgs~="pageShell-aside"]) {
123
- max-width: calc(var(--page-width) + (var(--pageShell-aside-width) * 2) + (var(--pageShell-gap) * 2) + (var(--padding-page) * 2));
130
+ --pageShell-width: calc(var(--pageShell-content-width) + (var(--pageShell-aside-width) * 2) + (var(--pageShell-gap) * 2) + (var(--padding-page) * 2));
124
131
  }
125
132
 
126
133
  //== RESPONSIVE ==//
@@ -150,7 +157,7 @@ $pageShell-test-gap: 4rem;
150
157
  &:has(> [pgs~="pageShell-aside"]):has(> [pgs~="pageShell-content"] + [pgs~="pageShell-aside"]) {
151
158
  @container (max-width: calc(#{$aside-size} + #{$content-size} + #{$aside-size} + (#{$pageShell-test-gap} * 2))) {
152
159
  display: grid;
153
- grid-template-columns: var(--pageShell-aside-width) minmax(0, var(--page-width));
160
+ grid-template-columns: var(--pageShell-aside-width) minmax(0, var(--pageShell-content-width));
154
161
  grid-template-areas:
155
162
  "asideLeft content"
156
163
  "asideLeft asideRight";
@@ -179,7 +186,7 @@ $pageShell-test-gap: 4rem;
179
186
  }
180
187
 
181
188
  @container (max-width: #{$content-size}) {
182
- padding-top: var(--page-top);
189
+ padding-top: var(--pageShell-paddingTop);
183
190
 
184
191
  [pgs~="pageShell-content"],
185
192
  [pgs~="pageShell-aside"] {
@@ -191,4 +198,4 @@ $pageShell-test-gap: 4rem;
191
198
  @include pageShell-aside-flow;
192
199
  }
193
200
  }
194
- }
201
+ }
@@ -1,40 +1,31 @@
1
1
  //+ VAR
2
- @mixin _var-button-color($background, $for: null, $colorNotContrast: var(--color-black)) {
3
- @supports (color: contrast-color(red)) {
4
- --button-color#{$for}: contrast-color(color-mix(in srgb, var(--button-background#{$for}) 77%, black));
5
- }
6
-
7
- @supports not (color: contrast-color(red)) {
8
- --button-color#{$for}: #{$colorNotContrast};
9
- }
10
-
11
- --button-background#{$for}: #{$background};
2
+ @use "mx-hover" as *;
3
+
4
+ @mixin button-mx-varColor($for: "") {
5
+ --button-color: var(--color-black);
6
+ --button-color-strong: var(--color-whiteFixed);
7
+ --button-color-current: var(--color-whiteFixed);
8
+ --button-background: var(--color-box);
9
+ --button-background-strong: var(--color-primary);
10
+ --button-background-current: var(--color-primary);
11
+ /// Application
12
12
  color: var(--button-color#{$for});
13
13
  background: var(--button-background#{$for});
14
-
15
- &:is(a) {
16
- color: var(--button-color#{$for});
17
- }
18
-
19
- i {
20
- color: var(--button-color#{$for});
21
- --fa-primary-color: var(--button-color#{$for});
22
- --fa-secondary-color: var(--button-color#{$for});
23
- }
14
+ --fa-primary-color: var(--button-color#{$for});
15
+ --fa-secondary-color: var(--button-color#{$for});
24
16
  }
25
17
 
26
18
  //= BUTTON
27
19
  @mixin button($hover: true, $onlyIcon: false, $strong: false) {
28
20
  --button-border: var(--border-complete);
29
21
  --button-size: 1.5rem;
30
- --button-icon-size: 2.0rem;
22
+ --button-icon-size: 2rem;
31
23
  --button-padding-block: var(--button-size);
32
24
  --button-padding-left: calc(var(--button-size) * 2);
33
25
  --button-padding-right: calc(var(--button-size) * 2);
34
26
  --button-padding: var(--button-padding-block) var(--button-padding-right) var(--button-padding-block) var(--button-padding-left);
35
27
  --fa-secondary-opacity: 0.5;
36
28
  --fa-size: var(--button-icon-size);
37
- @include _var-button-color(var(--color-box));
38
29
  font-family: var(--font);
39
30
  font-size: 1.6rem;
40
31
  font-weight: 600;
@@ -46,26 +37,26 @@
46
37
  outline: var(--button-border);
47
38
  border-radius: var(--border-radius-input);
48
39
  display: flex;
49
- gap: calc(var(--button-size)/1.5);
40
+ gap: calc(var(--button-size) / 1.5);
50
41
  align-items: center;
51
42
  padding: var(--button-padding);
52
43
  height: max-content;
53
44
  width: max-content;
54
45
  margin-block: auto;
55
46
 
56
- //== onlyIcon
57
- @if($onlyIcon ==true) {
47
+ //== ONLY ICON
48
+ @if $onlyIcon {
49
+ --button-padding: var(--button-padding-block);
58
50
  flex: 0 0;
59
51
  aspect-ratio: 1;
60
52
  border-radius: 50%;
61
53
  justify-content: center;
62
54
  align-items: center;
63
- --button-padding: var(--button-padding-block);
64
55
 
65
56
  i {
66
57
  display: inline-grid;
67
58
  place-items: center;
68
- inline-size: calc(var(--button-icon-size) - -2px);
59
+ inline-size: calc(var(--button-icon-size) + 2px);
69
60
  block-size: var(--button-icon-size);
70
61
  line-height: 1;
71
62
  aspect-ratio: 1;
@@ -87,24 +78,24 @@
87
78
  }
88
79
  }
89
80
 
90
- //== hover
91
- @if ($hover ==true) {
92
- @include buttonHover();
93
- }
94
-
95
- @else {
81
+ //== HOVER
82
+ @if $hover {
83
+ @include hover();
84
+ } @else {
96
85
  transition: all 200ms;
97
86
  cursor: inherit;
98
87
  }
99
88
 
100
- //== strong
101
- @if ($strong ==true) {
102
- @include _var-button-color(var(--color-primary), "-strong", var(--color-whiteFixed));
89
+ //== STRONG
90
+ @if $strong {
91
+ @include button-mx-varColor("-strong");
92
+ } @else {
93
+ @include button-mx-varColor();
103
94
  }
104
95
 
105
- //== current
96
+ //== CURRENT
106
97
  &[aria-current="page"]:not(:hover, :focus-visible) {
107
- @include _var-button-color(var(--color-primary), "-current", var(--color-whiteFixed));
98
+ @include button-mx-varColor("-current");
108
99
  }
109
100
 
110
101
  &:disabled {
@@ -113,41 +104,6 @@
113
104
  }
114
105
  }
115
106
 
116
- //= Button HOVER
117
- @mixin buttonHover() {
118
- transition: all 200ms;
119
- cursor: pointer;
120
- text-decoration: none;
121
-
122
- &:not(:disabled) {
123
- @media (hover: hover) and (pointer: fine) {
124
-
125
- &:focus-visible,
126
- &:hover {
127
- $n: .25rem;
128
- $-n: -$n;
129
- box-shadow: $-n $n 0px var(--color-black);
130
- transform: translate($n, $-n);
131
- @include _var-button-color(var(--color-primary-soft), "-hover");
132
- outline-color: transparent;
133
-
134
- i {
135
- --fa-secondary-opacity: 0.5;
136
- }
137
- }
138
- }
139
- }
140
-
141
- &:is(a):hover {
142
- text-decoration: none;
143
- }
144
-
145
- &:active {
146
- box-shadow: 0 0 0 var(--color-black);
147
- transform: translate(0, 0);
148
- }
149
- }
150
-
151
107
  //= Button mini
152
108
  @mixin buttonMini($hover: true) {
153
109
  @include button($hover, true);
@@ -195,8 +151,6 @@
195
151
  --button-background: var(--color-error-background);
196
152
  --button-color: var(--color-error);
197
153
  }
198
-
199
- &:hover {}
200
154
  }
201
155
 
202
156
  //= button header
@@ -206,4 +160,4 @@
206
160
  overflow-wrap: break-word;
207
161
  height: calc(var(--button-size) * 4);
208
162
  // height: var(--header-size);
209
- }
163
+ }
@@ -1,10 +1,11 @@
1
1
  @use "settings" as *;
2
2
  @use "mx-button" as *;
3
+ @use "mx-hover" as *;
3
4
  @use "mx-responsive" as *;
4
5
 
5
6
  @mixin card-insideImg() {
6
7
  $cardImgPadding: calc(var(--card-padding) * -1);
7
- border-radius: var(--border-radius);
8
+ border-radius: var(--card-borderRadius);
8
9
  border-bottom-left-radius: 0;
9
10
  border-bottom-right-radius: 0;
10
11
  margin: $cardImgPadding;
@@ -14,26 +15,27 @@
14
15
  }
15
16
 
16
17
  @mixin card() {
17
- --card-padding: var(--padding);
18
+ --card-padding: var(--padding-2);
19
+ --card-borderRadius: calc(var(--border-radius-input) + var(--card-padding));
20
+ --card-background: var(--color-box-transparent);
21
+ --card-padding-img: 0;
18
22
  height: 100%;
19
23
 
20
24
  &:not(:has(>a)) {
21
- --card-background: var(--color-box-transparent);
22
- --card-padding-img: 0;
23
25
  padding: var(--card-padding);
24
26
  background: var(--card-background);
25
- border-radius: var(--border-radius);
27
+ border-radius: var(--card-borderRadius);
26
28
  // box-shadow: var(--box-shadow);
27
29
  }
28
30
 
29
31
  >a {
30
32
  --card-background: var(--color-white);
31
- --card-padding-img: .3rem;
32
- @include buttonHover();
33
+ @include hover();
33
34
  height: 100%;
34
35
  padding: var(--card-padding);
36
+ padding-bottom: calc(var(--card-padding) * 2);
35
37
  background: var(--card-background);
36
- border-radius: var(--border-radius);
38
+ border-radius: var(--card-borderRadius);
37
39
  outline: var(--border-complete);
38
40
  }
39
41
 
@@ -78,4 +80,4 @@
78
80
  --fa-secondary-color: var(--color-warning);
79
81
  }
80
82
  }
81
- }
83
+ }
@@ -93,7 +93,6 @@
93
93
  &::file-selector-button {
94
94
  --button-background: var(--color-box);
95
95
  --button-color: var(--color-black);
96
-
97
96
  width: 40%;
98
97
  margin-bottom: var(--gap-texts);
99
98
  margin-right: var(--gap-texts);
@@ -232,6 +231,7 @@
232
231
  outline: solid var(--color-boxDark) 0.1rem;
233
232
  background: var(--checkbox-box-background);
234
233
  color: var(--color-primary-soft);
234
+ transform: translateX(0.3rem);
235
235
  }
236
236
 
237
237
  //=== ICON CHECK
@@ -241,6 +241,7 @@
241
241
  text-align: center;
242
242
  opacity: 0;
243
243
  color: var(--checkbox-check-color);
244
+ transform: translateX(0.25rem);
244
245
  }
245
246
 
246
247
  //=== Checked
@@ -486,17 +487,17 @@
486
487
  }
487
488
  }
488
489
 
489
- //== formError
490
- @mixin formError() {
490
+ //== formValidate
491
+ @mixin formValidate() {
491
492
 
492
493
  //=== ERROR
493
- &[data-form-status="error"] {
494
- [data-form-field-status="error"] {
494
+ &[pgs-option~="error"] {
495
+ [pgs-option~="error"] {
495
496
  &:not([type=checkbox], [type=radio]) {
496
497
  outline: solid 3px var(--color-error) !important;
497
498
 
498
499
  &::before {
499
- content: "Questo campo è obbligatorio";
500
+ content: "This field is required";
500
501
  color: var(--color-error);
501
502
  font-weight: 500;
502
503
  font-size: 1.7rem;
@@ -504,10 +505,7 @@
504
505
  }
505
506
  }
506
507
 
507
- // button[type=submit] {
508
- // --button-background: var(--color-error);
509
- // }
510
- label:has(+[data-form-field-status="error"], [data-form-field-status="error"]) {
508
+ label:has(+[pgs-option~="error"], [pgs-option~="error"]) {
511
509
  &:has(input[type=checkbox]) {
512
510
  background-color: var(--color-error) !important;
513
511
  padding: 6px;
@@ -516,10 +514,10 @@
516
514
  }
517
515
  }
518
516
 
519
- fieldset:has(input[type=radio][data-form-field-status="error"]) {
517
+ fieldset:has(input[type=radio][pgs-option~="error"]) {
520
518
  legend {
521
519
  --label-background: var(--color-error) !important;
522
520
  }
523
521
  }
524
522
  }
525
- }
523
+ }