mypgs 2.0.0 → 3.0.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 (163) hide show
  1. package/.vscode/tasks.json +39 -0
  2. package/AGENTS.md +22 -21
  3. package/README.md +25 -25
  4. package/assets/javascript/components/_menu.js +2 -1
  5. package/assets/javascript/components/_modals.js +1 -1
  6. package/assets/javascript/components/_notifications.js +2 -1
  7. package/assets/javascript/components/_slides.js +2 -2
  8. package/assets/scss/base/_body.scss +5 -5
  9. package/assets/scss/base/_general.scss +27 -18
  10. package/assets/scss/base/_variables.scss +1 -1
  11. package/assets/scss/components/_accordion.scss +9 -9
  12. package/assets/scss/components/_alerts.scss +71 -0
  13. package/assets/scss/components/_badges.scss +40 -48
  14. package/assets/scss/components/_button.scss +28 -20
  15. package/assets/scss/components/_card.scss +9 -4
  16. package/assets/scss/components/_form.scss +0 -16
  17. package/assets/scss/components/_formAddon.scss +22 -0
  18. package/assets/scss/components/_logo.scss +3 -4
  19. package/assets/scss/components/_menu.scss +26 -3
  20. package/assets/scss/components/_modals.scss +6 -4
  21. package/assets/scss/components/_search.scss +2 -2
  22. package/assets/scss/components/_slides.scss +0 -1
  23. package/assets/scss/components/_stepTabs.scss +2 -1
  24. package/assets/scss/components/_tooltip.scss +0 -1
  25. package/assets/scss/index.scss +3 -3
  26. package/assets/scss/layout/_footer.scss +0 -2
  27. package/assets/scss/layout/_header.scss +10 -2
  28. package/assets/scss/layout/_pageShell.scss +6 -2
  29. package/assets/scss/layout/_responsive.scss +63 -0
  30. package/assets/scss/mixin/_mx-base.scss +4 -8
  31. package/assets/scss/mixin/_mx-button.scss +73 -115
  32. package/assets/scss/mixin/_mx-card.scss +39 -40
  33. package/assets/scss/mixin/_mx-form.scss +13 -10
  34. package/assets/scss/mixin/{_mx-form-addon.scss → _mx-formAddon.scss} +103 -64
  35. package/assets/scss/mixin/_mx-hover.scss +81 -0
  36. package/assets/scss/mixin/_mx-responsive.scss +81 -201
  37. package/assets/scss/mixin/_settings.scss +2 -1
  38. package/assets/scss/mixin/mixin.scss +2 -1
  39. package/demo/demo.css +9 -6
  40. package/demo/demo.html +7 -5
  41. package/demo/demo.js +37 -34
  42. package/dist/css/index.css +2469 -3825
  43. package/dist/css/index.css.map +1 -1
  44. package/dist/css/index.min.css +1 -1
  45. package/dist/javascript/index.js +7 -5
  46. package/dist/javascript/index.js.map +1 -1
  47. package/dist/javascript/index.min.js +1 -1
  48. package/docs/componenti-e-markup.md +9 -8
  49. package/docs/components/accordion.md +23 -23
  50. package/docs/components/alerts.md +67 -0
  51. package/docs/components/badges.md +29 -26
  52. package/docs/components/breadcumbs.md +8 -8
  53. package/docs/components/button.md +18 -18
  54. package/docs/components/card.md +25 -22
  55. package/docs/components/dropdown.md +29 -29
  56. package/docs/components/form.md +65 -41
  57. package/docs/components/formAddon.md +116 -0
  58. package/docs/components/logo.md +11 -11
  59. package/docs/components/menu.md +20 -20
  60. package/docs/components/modal.md +52 -51
  61. package/docs/components/notification.md +34 -34
  62. package/docs/components/search.md +54 -52
  63. package/docs/components/slides.md +41 -42
  64. package/docs/components/stepTabs.md +45 -45
  65. package/docs/components/steps.md +16 -16
  66. package/docs/components/summary.md +20 -20
  67. package/docs/components/table.md +7 -7
  68. package/docs/components/tooltip.md +24 -23
  69. package/docs/convenzioni.md +11 -11
  70. package/docs/export-e-sviluppo.md +4 -4
  71. package/docs/helper-javascript.md +8 -8
  72. package/docs/layout/body.md +11 -11
  73. package/docs/layout/footer.md +28 -24
  74. package/docs/layout/header.md +36 -35
  75. package/docs/layout/pageShell.md +19 -19
  76. package/docs/layout/responsive.md +90 -0
  77. package/docs/layout/section.md +38 -38
  78. package/docs/patterns/cookieConsent.md +42 -39
  79. package/docs/utilizzo-css-scss.md +33 -9
  80. package/package.json +1 -1
  81. package/reference/html/components/accordion.html +52 -0
  82. package/reference/html/components/alerts.html +59 -0
  83. package/reference/html/components/badges.html +62 -0
  84. package/{templates → reference}/html/components/breadcumbs.html +6 -6
  85. package/reference/html/components/button.html +51 -0
  86. package/reference/html/components/card.html +45 -0
  87. package/{templates → reference}/html/components/dropdown.html +25 -25
  88. package/reference/html/components/form.html +128 -0
  89. package/reference/html/components/formAddon.html +109 -0
  90. package/reference/html/components/logo.html +28 -0
  91. package/{templates → reference}/html/components/menu.html +17 -17
  92. package/reference/html/components/modal.html +123 -0
  93. package/reference/html/components/notification.html +71 -0
  94. package/reference/html/components/search.html +109 -0
  95. package/reference/html/components/slides.html +75 -0
  96. package/reference/html/components/stepTabs.html +83 -0
  97. package/reference/html/components/steps.html +49 -0
  98. package/reference/html/components/summary.html +41 -0
  99. package/{templates → reference}/html/components/table.html +5 -5
  100. package/reference/html/components/tooltip.html +44 -0
  101. package/reference/html/layout/body.html +34 -0
  102. package/reference/html/layout/footer.html +67 -0
  103. package/reference/html/layout/header.html +108 -0
  104. package/{templates → reference}/html/layout/pageShell.html +16 -16
  105. package/reference/html/layout/responsive.html +83 -0
  106. package/reference/html/layout/section.html +62 -0
  107. package/reference/html/patterns/cookieConsent.html +84 -0
  108. package/{templates → reference}/react/components/accordion.jsx +5 -5
  109. package/reference/react/components/alerts.jsx +46 -0
  110. package/{templates → reference}/react/components/breadcumbs.jsx +1 -1
  111. package/{templates → reference}/react/components/button.jsx +6 -6
  112. package/{templates → reference}/react/components/card.jsx +6 -6
  113. package/{templates → reference}/react/components/dropdown.jsx +8 -8
  114. package/{templates → reference}/react/components/form.jsx +3 -3
  115. package/{templates → reference}/react/components/modal.jsx +15 -15
  116. package/{templates → reference}/react/components/notification.jsx +3 -3
  117. package/{templates → reference}/react/components/search.jsx +8 -8
  118. package/{templates → reference}/react/components/slides.jsx +4 -4
  119. package/{templates → reference}/react/components/stepTabs.jsx +12 -12
  120. package/reference/react/components/summary.jsx +18 -0
  121. package/{templates → reference}/react/components/table.jsx +2 -2
  122. package/{templates → reference}/react/components/tooltip.jsx +1 -1
  123. package/{templates → reference}/react/layout/pageShell.jsx +2 -2
  124. package/reference/react/layout/responsive.jsx +61 -0
  125. package/reference/react/layout/section.jsx +44 -0
  126. package/{templates → reference}/react/patterns/cookieConsent.jsx +9 -9
  127. package/{templates → reference}/react/patterns/footer.jsx +4 -4
  128. package/{templates → reference}/react/patterns/header.jsx +4 -4
  129. package/scripts/generate-component-docs.js +12 -12
  130. package/assets/scss/layout/_flex.scss +0 -49
  131. package/assets/scss/layout/_gap.scss +0 -21
  132. package/assets/scss/layout/_grid.scss +0 -13
  133. package/docs/layout/flex.md +0 -116
  134. package/docs/layout/grid.md +0 -116
  135. package/templates/html/components/accordion.html +0 -52
  136. package/templates/html/components/badges.html +0 -60
  137. package/templates/html/components/button.html +0 -51
  138. package/templates/html/components/card.html +0 -43
  139. package/templates/html/components/form.html +0 -104
  140. package/templates/html/components/logo.html +0 -28
  141. package/templates/html/components/modal.html +0 -122
  142. package/templates/html/components/notification.html +0 -71
  143. package/templates/html/components/search.html +0 -107
  144. package/templates/html/components/slides.html +0 -76
  145. package/templates/html/components/stepTabs.html +0 -83
  146. package/templates/html/components/steps.html +0 -49
  147. package/templates/html/components/summary.html +0 -41
  148. package/templates/html/components/tooltip.html +0 -43
  149. package/templates/html/layout/body.html +0 -35
  150. package/templates/html/layout/flex.html +0 -109
  151. package/templates/html/layout/footer.html +0 -64
  152. package/templates/html/layout/grid.html +0 -109
  153. package/templates/html/layout/header.html +0 -107
  154. package/templates/html/layout/section.html +0 -62
  155. package/templates/html/patterns/cookieConsent.html +0 -82
  156. package/templates/react/components/summary.jsx +0 -18
  157. package/templates/react/layout/flex.jsx +0 -36
  158. package/templates/react/layout/grid.jsx +0 -36
  159. package/templates/react/layout/section.jsx +0 -44
  160. /package/{templates → reference}/react/components/logo.jsx +0 -0
  161. /package/{templates → reference}/react/components/menu.jsx +0 -0
  162. /package/{templates → reference}/react/components/steps.jsx +0 -0
  163. /package/{templates → reference}/react/layout/body.jsx +0 -0
@@ -1,40 +1,37 @@
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
- }
2
+ @use "mx-hover" as *;
10
3
 
11
- --button-background#{$for}: #{$background};
4
+ //+ BUTTON COLOR
5
+ @mixin _buttonColor($for: "") {
12
6
  color: var(--button-color#{$for});
13
7
  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
- }
8
+ --fa-primary-color: var(--button-color#{$for});
9
+ --fa-secondary-color: var(--button-color#{$for});
24
10
  }
25
11
 
26
- //= BUTTON
27
- @mixin button($hover: true, $onlyIcon: false, $strong: false) {
12
+ //= BUTTON BASE
13
+ @mixin buttonBase() {
14
+ /// color
15
+ --button-color: var(--color-black);
16
+ --button-color-strong: var(--color-whiteFixed);
17
+ --button-color-current: var(--color-whiteFixed);
18
+ --button-color-active: var(--color-whiteFixed);
19
+ /// background
20
+ --button-background: var(--color-box);
21
+ --button-background-strong: var(--color-primary);
22
+ --button-background-current: var(--color-primary);
23
+ --button-background-active: var(--color-primary);
24
+ /// olther
28
25
  --button-border: var(--border-complete);
29
26
  --button-size: 1.5rem;
30
- --button-icon-size: 2.0rem;
27
+ --button-icon-size: 2rem;
31
28
  --button-padding-block: var(--button-size);
32
29
  --button-padding-left: calc(var(--button-size) * 2);
33
30
  --button-padding-right: calc(var(--button-size) * 2);
34
31
  --button-padding: var(--button-padding-block) var(--button-padding-right) var(--button-padding-block) var(--button-padding-left);
35
32
  --fa-secondary-opacity: 0.5;
36
33
  --fa-size: var(--button-icon-size);
37
- @include _var-button-color(var(--color-box));
34
+ @include _buttonColor();
38
35
  font-family: var(--font);
39
36
  font-size: 1.6rem;
40
37
  font-weight: 600;
@@ -46,121 +43,86 @@
46
43
  outline: var(--button-border);
47
44
  border-radius: var(--border-radius-input);
48
45
  display: flex;
49
- gap: calc(var(--button-size)/1.5);
46
+ gap: calc(var(--button-size) / 1.5);
50
47
  align-items: center;
51
48
  padding: var(--button-padding);
52
49
  height: max-content;
53
50
  width: max-content;
54
51
  margin-block: auto;
55
52
 
56
- //== onlyIcon
57
- @if($onlyIcon ==true) {
58
- flex: 0 0;
59
- aspect-ratio: 1;
60
- border-radius: 50%;
61
- justify-content: center;
62
- align-items: center;
63
- --button-padding: var(--button-padding-block);
64
-
65
- i {
66
- display: inline-grid;
67
- place-items: center;
68
- inline-size: calc(var(--button-icon-size) - -2px);
69
- block-size: var(--button-icon-size);
70
- line-height: 1;
71
- aspect-ratio: 1;
72
- }
53
+ &[aria-current="page"]:not(:hover, :focus-visible) {
54
+ @include _buttonColor("-current");
73
55
  }
74
56
 
75
- @else {
76
- $button-right: calc(var(--button-size) * 2);
77
- $button-left: calc(var(--button-size) * 1.5);
78
-
79
- &:has(i) {
80
- --button-padding-right: #{$button-right};
81
- --button-padding-left: #{$button-left};
82
- }
83
-
84
- &[pgs-option~="buttonReverse"]:has(i) {
85
- --button-padding-right: #{$button-left};
86
- --button-padding-left: #{$button-right};
87
- }
57
+ &:disabled {
58
+ opacity: 0.2;
59
+ cursor: not-allowed;
88
60
  }
61
+ }
89
62
 
90
- //== hover
91
- @if ($hover ==true) {
92
- @include buttonHover();
93
- }
63
+ //= BUTTON CONTENT - ICON
64
+ //== BUTTON CONTENT
65
+ @mixin buttonContent() {
66
+ $button-right: calc(var(--button-size) * 2);
67
+ $button-left: calc(var(--button-size) * 1.5);
94
68
 
95
- @else {
96
- transition: all 200ms;
97
- cursor: inherit;
69
+ &:has(i) {
70
+ --button-padding-right: #{$button-right};
71
+ --button-padding-left: #{$button-left};
98
72
  }
99
73
 
100
- //== strong
101
- @if ($strong ==true) {
102
- @include _var-button-color(var(--color-primary), "-strong", var(--color-whiteFixed));
74
+ &[pgs-option~="buttonReverse"]:has(i) {
75
+ --button-padding-right: #{$button-left};
76
+ --button-padding-left: #{$button-right};
103
77
  }
78
+ }
104
79
 
105
- //== current
106
- &[aria-current="page"]:not(:hover, :focus-visible) {
107
- @include _var-button-color(var(--color-primary), "-current", var(--color-whiteFixed));
108
- }
80
+ //== BUTTON ICON
81
+ @mixin buttonIcon() {
82
+ --button-padding: var(--button-padding-block);
83
+ flex: 0 0;
84
+ aspect-ratio: 1;
85
+ border-radius: 50%;
86
+ justify-content: center;
87
+ align-items: center;
109
88
 
110
- &:disabled {
111
- opacity: 0.2;
112
- cursor: not-allowed;
89
+ i {
90
+ display: inline-grid;
91
+ place-items: center;
92
+ inline-size: calc(var(--button-icon-size) + 2px);
93
+ block-size: var(--button-icon-size);
94
+ line-height: 1;
95
+ aspect-ratio: 1;
113
96
  }
114
97
  }
115
98
 
116
- //= Button HOVER
99
+ //= BUTTON HOVER - NOHOVER
100
+ //== BUTTON HOVER
117
101
  @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
- }
102
+ @include hover();
103
+ }
140
104
 
141
- &:is(a):hover {
142
- text-decoration: none;
143
- }
105
+ //== BUTTON NOT HOVER
106
+ @mixin buttonNohover() {
107
+ transition: all 200ms;
108
+ cursor: inherit;
109
+ }
144
110
 
145
- &:active {
146
- box-shadow: 0 0 0 var(--color-black);
147
- transform: translate(0, 0);
148
- }
111
+ //= BUTTON STRONG
112
+ @mixin buttonStrong() {
113
+ @include _buttonColor("-strong");
149
114
  }
150
115
 
151
- //= Button mini
152
- @mixin buttonMini($hover: true) {
153
- @include button($hover, true);
116
+ //= BUTTON MINI
117
+ @mixin buttonMini() {
154
118
  --button-size: 0.5rem;
155
119
  display: inline-flex;
156
- aspect-ratio: unset;
157
- margin-block: auto;
158
120
  aspect-ratio: 1;
121
+ margin-block: auto;
159
122
  }
160
123
 
161
- //= Button BIG
162
- @mixin buttonBig($hover: true) {
163
- @include button($hover);
124
+ //= BUTTON BIG
125
+ @mixin buttonBig() {
164
126
  position: relative;
165
127
  flex-direction: column;
166
128
  justify-content: center;
@@ -182,9 +144,8 @@
182
144
  }
183
145
  }
184
146
 
185
- //= Button CLOSE
147
+ //= BUTTON CLOSE
186
148
  @mixin buttonClose($important: false) {
187
- @include button(true, true);
188
149
  --button-background: var(--color-primary-soft);
189
150
  --button-size: 1rem;
190
151
  --button-icon-size: 1.3rem;
@@ -195,15 +156,12 @@
195
156
  --button-background: var(--color-error-background);
196
157
  --button-color: var(--color-error);
197
158
  }
198
-
199
- &:hover {}
200
159
  }
201
160
 
202
- //= button header
161
+ //= BUTTON HEADER
203
162
  @mixin button_header() {
204
163
  --button-size: 1.2rem;
205
164
  --button-border: unset;
206
165
  overflow-wrap: break-word;
207
166
  height: calc(var(--button-size) * 4);
208
- // height: var(--header-size);
209
167
  }
@@ -1,39 +1,39 @@
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
- @mixin card-insideImg() {
6
- $cardImgPadding: calc(var(--card-padding) * -1);
7
- border-radius: var(--border-radius);
6
+ @mixin cardAndWell-insideImg($for) {
7
+ border-radius: var(--#{$for}-borderRadius);
8
8
  border-bottom-left-radius: 0;
9
9
  border-bottom-right-radius: 0;
10
- margin: $cardImgPadding;
11
- padding: var(--card-padding-img);
12
- width: calc((var(--card-padding) * 2) + 100%);
10
+ margin: calc(var(--#{$for}-padding) * -1);
11
+ padding: var(--#{$for}-padding-img);
12
+ width: calc((var(--#{$for}-padding) * 2) + 100%);
13
13
  margin-bottom: 0;
14
14
  }
15
15
 
16
16
  @mixin card() {
17
17
  --card-padding: var(--padding);
18
+ --card-borderRadius: calc(var(--border-radius-input) + var(--card-padding));
19
+ --card-background: var(--color-box-transparent);
20
+ --card-padding-img: 0;
18
21
  height: 100%;
19
22
 
20
23
  &:not(:has(>a)) {
21
- --card-background: var(--color-box-transparent);
22
- --card-padding-img: 0;
23
24
  padding: var(--card-padding);
24
25
  background: var(--card-background);
25
- border-radius: var(--border-radius);
26
- // box-shadow: var(--box-shadow);
26
+ border-radius: var(--card-borderRadius);
27
27
  }
28
28
 
29
29
  >a {
30
30
  --card-background: var(--color-white);
31
- --card-padding-img: .3rem;
32
- @include buttonHover();
31
+ @include hover();
33
32
  height: 100%;
34
33
  padding: var(--card-padding);
34
+ padding-bottom: calc(var(--card-padding) * 2);
35
35
  background: var(--card-background);
36
- border-radius: var(--border-radius);
36
+ border-radius: var(--card-borderRadius);
37
37
  outline: var(--border-complete);
38
38
  }
39
39
 
@@ -41,41 +41,40 @@
41
41
  >img,
42
42
  >a>object,
43
43
  >a>img {
44
- @include card-insideImg();
44
+ @include cardAndWell-insideImg("card");
45
45
  }
46
46
  }
47
47
 
48
- @mixin boxtext() {
48
+ @mixin well() {
49
49
  @include flexColumn();
50
- --boxtext-background: light-dark(color-mix(in srgb, var(--color-background) 100%, transparent 10%), color-mix(in srgb, var(--color-background) 50%, transparent 50%));
51
- background: var(--boxtext-background);
52
- padding: 1.5rem;
53
- margin-inline: calc(-1.5rem / 2);
54
- width: unset;
55
- border-radius: var(--border-radius-input);
50
+ --well-padding: var(--padding-2);
51
+ --well-borderRadius: calc(var(--border-radius-input) + var(--well-padding));
52
+ --well-background: var(--color-box-transparent);
53
+ --well-padding-img: 0;
56
54
 
57
- //- mobile
58
- @media (max-width: $mobile) {
59
- margin-inline: 0;
60
- }
61
-
62
- &:has(.fa-solid),
63
- &:has(.fa-duotone) {
64
- --boxtext-background: var(--color-primary-soft);
55
+ //-new
65
56
 
66
- i {
67
- --fa-primary-color: var(--color-primary-soft);
68
- --fa-secondary-color: var(--color-primary);
69
- --fa-secondary-opacity: 1;
70
- }
57
+ &:not(:has(>a)) {
58
+ padding: var(--well-padding);
59
+ background: var(--well-background);
60
+ border-radius: var(--well-borderRadius);
71
61
  }
72
62
 
73
- &:has(.fa-triangle-exclamation) {
74
- --boxtext-background: var(--color-warning-background);
63
+ >a {
64
+ --well-background: var(--color-white);
65
+ @include hover();
66
+ height: 100%;
67
+ padding: var(--well-padding);
68
+ padding-bottom: calc(var(--well-padding) * 2);
69
+ background: var(--well-background);
70
+ border-radius: var(--well-borderRadius);
71
+ outline: var(--border-complete);
72
+ }
75
73
 
76
- i {
77
- --fa-primary-color: var(--color-black);
78
- --fa-secondary-color: var(--color-warning);
79
- }
74
+ >object,
75
+ >img,
76
+ >a>object,
77
+ >a>img {
78
+ @include cardAndWell-insideImg("well");
80
79
  }
81
80
  }
@@ -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
@@ -362,7 +363,7 @@
362
363
 
363
364
  //=== LABEL
364
365
  label {
365
- &:not(:has([pgs~="label-unset"], +input[type=checkbox], +input[type=radio])) {
366
+ &:not(:has([pgs~="labelUnset"], +input[type=checkbox], +input[type=radio])) {
366
367
  &:has(+input, +select, +textarea) {
367
368
  @include label();
368
369
  }
@@ -375,7 +376,7 @@
375
376
 
376
377
  //=== INPUT
377
378
  input {
378
- &:not([pgs~="input-unset"], [type=checkbox], [type=file], [type=radio], [type=range]) {
379
+ &:not([pgs~=inputUnset], [type=checkbox], [type=file], [type=radio], [type=range]) {
379
380
  @include input();
380
381
  }
381
382
 
@@ -419,8 +420,10 @@
419
420
  }
420
421
 
421
422
  //==== CHECKBOX
422
- label:has(input[type=checkbox]):not([pgs~="toggle"]),
423
- label:has(input[type=radio]):not([pgs~="toggle"]) {
423
+ $not-checkbox: '[pgs~=toggle], [pgs~=twoState], [pgs~=chip], [pgs~=chips] label';
424
+
425
+ label:has(input[type=checkbox]):not(#{$not-checkbox}),
426
+ label:has(input[type=radio]):not(#{$not-checkbox}) {
424
427
  @include checkbox();
425
428
  }
426
429
 
@@ -446,7 +449,10 @@
446
449
 
447
450
  //===BUTTON
448
451
  button[type="submit"] {
449
- @include button(true, false, true)
452
+ @include buttonBase();
453
+ @include buttonContent();
454
+ @include buttonStrong();
455
+ @include buttonHover();
450
456
  }
451
457
 
452
458
  //===FIELDSET
@@ -504,9 +510,6 @@
504
510
  }
505
511
  }
506
512
 
507
- // button[type=submit] {
508
- // --button-background: var(--color-error);
509
- // }
510
513
  label:has(+[pgs-option~="error"], [pgs-option~="error"]) {
511
514
  &:has(input[type=checkbox]) {
512
515
  background-color: var(--color-error) !important;
@@ -522,4 +525,4 @@
522
525
  }
523
526
  }
524
527
  }
525
- }
528
+ }
@@ -1,5 +1,6 @@
1
1
  @use "mx-button" as *;
2
2
  @use "mx-form" as *;
3
+ @use "mx-responsive" as *;
3
4
 
4
5
  //= checkboxBackground
5
6
  @mixin checkboxBackground() {
@@ -20,67 +21,17 @@
20
21
  //== checked
21
22
  &:has(input:checked) {
22
23
  background-color: var(--color-primary-soft);
23
- color: var(--color-black);
24
24
 
25
+ // color: var(--color-black);
25
26
  i {
26
- --fa-primary-color: var(--color-black);
27
- --fa-secondary-color: var(--color-black);
28
- color: var(--color-black);
27
+ // --fa-primary-color: var(--color-black);
28
+ // --fa-secondary-color: var(--color-black);
29
+ // color: var(--color-black);
29
30
  opacity: 1;
30
31
  }
31
32
  }
32
33
  }
33
34
 
34
- //= TWOSTATE
35
- @mixin twoState() {
36
- position: relative;
37
- isolation: isolate;
38
- --button-background-active: var(--color-primary-strong);
39
- --button-color-active: var(--color-white);
40
-
41
- //== label
42
- label {
43
- @include button();
44
- flex-wrap: wrap;
45
- display: flex !important;
46
- cursor: pointer;
47
-
48
- i {
49
- color: var(--color-black);
50
- opacity: 0.4;
51
- min-width: 1.4rem;
52
- transition: 300ms;
53
- }
54
-
55
- &:hover {
56
- i {
57
- opacity: 1;
58
- }
59
- }
60
- }
61
-
62
- //== checked
63
- &:has(input:checked) label {
64
- --button-background: var(--button-background-active);
65
-
66
- @supports not (color: contrast-color(red)) {
67
- --button-color: var(--button-color-active);
68
- }
69
-
70
- i {
71
- --fa-secondary-opacity: 0.6;
72
- opacity: 1;
73
- }
74
- }
75
-
76
- input {
77
- opacity: 0;
78
- z-index: -1;
79
- position: absolute;
80
- appearance: none;
81
- }
82
- }
83
-
84
35
  //= TOGGLE
85
36
  @mixin toggle() {
86
37
  --toggle-size: var(--border-radius-input);
@@ -166,18 +117,106 @@
166
117
  }
167
118
  }
168
119
 
169
- //= Buttons
120
+ //= TWOSTATE
121
+ @mixin twoState($ifHover: true) {
122
+ //== label
123
+ position: relative;
124
+ isolation: isolate;
125
+ @include buttonBase();
126
+ @include buttonContent();
127
+
128
+ @if($ifHover) {
129
+ @include buttonHover();
130
+ }
131
+
132
+ flex-wrap: wrap;
133
+ display: flex !important;
134
+ cursor: pointer;
135
+
136
+ i {
137
+ opacity: 0.4;
138
+ min-width: 1.4rem;
139
+ }
140
+
141
+ &:hover {
142
+ i {
143
+ opacity: 1;
144
+ }
145
+ }
146
+
147
+ //== checked
148
+ &:has(input:checked) {
149
+ --button-background: var(--button-background-active);
150
+ --button-color: var(--button-color-active);
151
+
152
+ i {
153
+ --fa-secondary-opacity: 0.6;
154
+ opacity: 1;
155
+ }
156
+ }
157
+
158
+ input {
159
+ opacity: 0;
160
+ z-index: -1;
161
+ position: absolute;
162
+ appearance: none;
163
+ }
164
+ }
165
+
166
+ @mixin chip() {
167
+ @include twoState(false);
168
+ --button-size: 1rem;
169
+
170
+ &:has(input:checked) {
171
+ &:not(:has(i)) {
172
+
173
+ &::after,
174
+ &::before {
175
+ display: grid;
176
+ place-items: center;
177
+ width: 1.5rem;
178
+ height: 1.5rem;
179
+ border-radius: 50%;
180
+ font-size: 1.5rem;
181
+ line-height: 1;
182
+ font-weight: bold;
183
+ color: var(--color-blackFixed);
184
+ background-color: var(--color-whiteFixed);
185
+ padding: 0.2rem;
186
+ cursor: pointer;
187
+ }
188
+ }
189
+ }
190
+
191
+ //== checkbox
192
+ &:has(input[type=checkbox]:checked) {
193
+ &:not(:has(i)) {
194
+ padding-right: var(--button-size);
195
+
196
+ &::after {
197
+ content: "×";
198
+ }
199
+ }
200
+ }
201
+
202
+ //== radio
203
+ &:has(input[type=radio]:checked) {
204
+ &:not(:has(i)) {
205
+ padding-left: var(--button-size);
206
+
207
+ &::before {
208
+ content: "";
209
+ }
210
+ }
211
+ }
212
+ }
213
+
214
+ //= CHIPS
170
215
  @mixin chips() {
171
- display: flex;
172
- gap: .1rem;
173
- padding: .4rem;
174
- outline: var(--border-complete);
175
- width: fit-content;
176
- border-radius: var(--border-radius-input);
177
- background-color: var(--color-box-transparent);
216
+ border: unset;
217
+ @include flexRow();
178
218
 
179
219
  label {
180
- outline: unset;
181
- --button-background: trasparent;
220
+ @include chip();
182
221
  }
183
222
  }