@andreyshpigunov/x 0.5.7 → 0.5.9

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.
package/index.html CHANGED
@@ -19,7 +19,7 @@
19
19
  "functionName": "headerAnimation"
20
20
  }'>
21
21
  <header class="header flex aic sticky t0 px5 m:px6 l:px8 unselectable">
22
- <div class="header-version nowrap">0.5.7</div>
22
+ <div class="header-version nowrap">0.5.9</div>
23
23
  <div class="header-logo mxa">
24
24
  <a role="button" x-scrollto="#top">
25
25
  <img src="assets/img/logo.png" alt="x" />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andreyshpigunov/x",
3
- "version": "0.5.7",
3
+ "version": "0.5.9",
4
4
  "x-js": "dist/x.js",
5
5
  "app-js": "assets/js/app.js",
6
6
  "targets": {
@@ -12,4 +12,4 @@ module.exports = {
12
12
  },
13
13
  },
14
14
  },
15
- };
15
+ };
@@ -0,0 +1,12 @@
1
+ /*----------------------------------------
2
+ app.css
3
+ Фиктивный app, для создания слоя
4
+
5
+ Created by Andrey Shpigunov at 15.04.2026
6
+ All right reserved.
7
+ ----------------------------------------*/
8
+
9
+
10
+ .app {
11
+ position: relative;
12
+ }
@@ -21,206 +21,202 @@ All right reserved.
21
21
  .buttons-group
22
22
  */
23
23
 
24
- @layer buttons {
25
-
26
- .button, [type=submit] {
27
- /* Computed on the element so var(--button-color) respects .button_primary etc. */
28
- --button-color-hover: color-mix(
29
- in oklab,
30
- var(--button-color) calc(100% - var(--button-hover-lighten)),
31
- white var(--button-hover-lighten)
32
- );
33
- --button-color-active: color-mix(
34
- in oklab,
35
- var(--button-color) calc(100% - var(--button-active-darken)),
36
- black var(--button-active-darken)
37
- );
38
- --button-font-color-hover: var(--button-font-color);
39
- --button-font-color-active: var(--button-font-color);
24
+ .button, [type=submit] {
25
+ /* Computed on the element so var(--button-color) respects .button_primary etc. */
26
+ --button-color-hover: color-mix(
27
+ in oklab,
28
+ var(--button-color) calc(100% - var(--button-hover-lighten)),
29
+ white var(--button-hover-lighten)
30
+ );
31
+ --button-color-active: color-mix(
32
+ in oklab,
33
+ var(--button-color) calc(100% - var(--button-active-darken)),
34
+ black var(--button-active-darken)
35
+ );
36
+ --button-font-color-hover: var(--button-font-color);
37
+ --button-font-color-active: var(--button-font-color);
38
+
39
+ position: relative;
40
+ display: inline-flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ width: auto;
44
+ min-height: var(--button-height, calc(var(--button-font-size) * var(--button-height-coeff)));
45
+ padding: 0 var(--button-side-padding, calc(var(--button-font-size) * var(--button-side-padding-coeff)));
46
+ color: var(--button-font-color);
47
+ font-family: var(--button-font-family);
48
+ font-size: var(--button-font-size);
49
+ font-weight: var(--button-font-weight);
50
+ line-height: 1;
51
+ vertical-align: bottom;
52
+ white-space: nowrap;
53
+ text-align: center;
54
+ text-shadow: none;
55
+ text-transform: none;
56
+ text-decoration: none;
57
+ outline: none;
58
+ cursor: pointer;
59
+ overflow: hidden;
60
+ border: none;
61
+ border-radius: var(--button-border-radius);
62
+ background-color: var(--button-color);
63
+ transition: var(--button-transition);
64
+ transform: var(--button-transform);
65
+ transform-origin: var(--button-transform-origin);
66
+ user-select: none;
67
+ appearance: none;
68
+ box-shadow: var(--button-box-shadow);
69
+
70
+ & svg {
71
+ transform: translateZ(0);
72
+ }
40
73
 
41
- position: relative;
42
- display: inline-flex;
43
- align-items: center;
44
- justify-content: center;
45
- width: auto;
46
- min-height: var(--button-height, calc(var(--button-font-size) * var(--button-height-coeff)));
47
- padding: 0 var(--button-side-padding, calc(var(--button-font-size) * var(--button-side-padding-coeff)));
48
- color: var(--button-font-color);
49
- font-family: var(--button-font-family);
50
- font-size: var(--button-font-size);
51
- font-weight: var(--button-font-weight);
52
- line-height: 1;
53
- vertical-align: bottom;
54
- white-space: nowrap;
55
- text-align: center;
56
- text-shadow: none;
57
- text-transform: none;
74
+ &:link,
75
+ &:visited {
58
76
  text-decoration: none;
59
- outline: none;
60
- cursor: pointer;
61
- overflow: hidden;
62
- border: none;
63
- border-radius: var(--button-border-radius);
77
+ color: var(--button-font-color);
64
78
  background-color: var(--button-color);
65
- transition: var(--button-transition);
66
79
  transform: var(--button-transform);
67
- transform-origin: var(--button-transform-origin);
68
- user-select: none;
69
- appearance: none;
70
- box-shadow: var(--button-box-shadow);
71
-
72
- & svg {
73
- transform: translateZ(0);
74
- }
75
-
76
- &:link,
77
- &:visited {
78
- text-decoration: none;
79
- color: var(--button-font-color);
80
- background-color: var(--button-color);
81
- transform: var(--button-transform);
82
- }
83
-
84
- &:focus-visible {
85
- outline: solid .2rem #8888;
86
- transition: none;
87
- }
88
-
89
- @media (any-hover: hover) {
90
- &:focus-visible,
91
- &:hover,
92
- &.hover {
93
- text-decoration: none;
94
- color: var(--button-font-color-hover);
95
- background-color: var(--button-color-hover);
96
- transform: var(--button-transform-hover);
97
- box-shadow: var(--button-box-shadow-hover);
98
- }
99
- }
100
-
101
- &:active,
102
- &.active {
103
- text-decoration: none;
104
- color: var(--button-font-color-active);
105
- background-color: var(--button-color-active);
106
- transform: var(--button-transform-active);
107
- box-shadow: var(--button-box-shadow-active);
108
- }
109
-
110
- &[disabled],
111
- &.disabled {
112
- opacity: var(--button-disabled-opacity);
113
- pointer-events: none;
114
- }
115
80
  }
116
81
 
117
-
118
- /* Predefined styles & colors */
119
-
120
- .button_spacy {
121
- padding-top: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 0.75);
122
- padding-bottom: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 0.75);
123
- padding-left: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 1.25);
124
- padding-right: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 1.25);
82
+ &:focus-visible {
83
+ outline: solid .2rem #8888;
84
+ transition: none;
125
85
  }
126
86
 
127
- .button_label {
128
- --button-height: calc(var(--line-height) * 1em);
129
- --button-side-padding: .5em;
130
- --button-font-size: inherit;
131
- --button-border-radius: .5em;
132
- vertical-align: baseline;
87
+ @media (any-hover: hover) {
88
+ &:focus-visible,
89
+ &:hover,
90
+ &.hover {
91
+ text-decoration: none;
92
+ color: var(--button-font-color-hover);
93
+ background-color: var(--button-color-hover);
94
+ transform: var(--button-transform-hover);
95
+ box-shadow: var(--button-box-shadow-hover);
96
+ }
133
97
  }
134
98
 
135
- .button_primary {
136
- --button-color: var(--color-primary);
137
- --button-font-color: #fff;
138
- }
139
- .button_success {
140
- --button-color: var(--color-success);
141
- --button-font-color: #fff;
142
- }
143
- .button_warning {
144
- --button-color: var(--color-warning);
145
- --button-font-color: #fff;
146
- }
147
- .button_danger {
148
- --button-color: var(--color-danger);
149
- --button-font-color: #fff;
150
- }
151
- .button_white {
152
- --button-color: #fff;
153
- --button-font-color: #000;
154
- }
155
- .button_black {
156
- --button-color: #111;
157
- --button-font-color: #fff;
99
+ &:active,
100
+ &.active {
101
+ text-decoration: none;
102
+ color: var(--button-font-color-active);
103
+ background-color: var(--button-color-active);
104
+ transform: var(--button-transform-active);
105
+ box-shadow: var(--button-box-shadow-active);
158
106
  }
159
- .button_clear {
160
- --button-color: transparent;
161
- --button-box-shadow: none;
162
- --button-box-shadow-hover: none;
163
- --button-box-shadow-active: none;
107
+
108
+ &[disabled],
109
+ &.disabled {
110
+ opacity: var(--button-disabled-opacity);
111
+ pointer-events: none;
164
112
  }
113
+ }
114
+
115
+
116
+ /* Predefined styles & colors */
117
+
118
+ .button_spacy {
119
+ padding-top: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 0.75);
120
+ padding-bottom: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 0.75);
121
+ padding-left: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 1.25);
122
+ padding-right: calc(var(--button-font-size) * var(--button-side-padding-coeff) * 1.25);
123
+ }
124
+
125
+ .button_label {
126
+ --button-height: calc(var(--line-height) * 1em);
127
+ --button-side-padding: .5em;
128
+ --button-font-size: inherit;
129
+ --button-border-radius: .5em;
130
+ vertical-align: baseline;
131
+ }
132
+
133
+ .button_primary {
134
+ --button-color: var(--color-primary);
135
+ --button-font-color: #fff;
136
+ }
137
+ .button_success {
138
+ --button-color: var(--color-success);
139
+ --button-font-color: #fff;
140
+ }
141
+ .button_warning {
142
+ --button-color: var(--color-warning);
143
+ --button-font-color: #fff;
144
+ }
145
+ .button_danger {
146
+ --button-color: var(--color-danger);
147
+ --button-font-color: #fff;
148
+ }
149
+ .button_white {
150
+ --button-color: #fff;
151
+ --button-font-color: #000;
152
+ }
153
+ .button_black {
154
+ --button-color: #111;
155
+ --button-font-color: #fff;
156
+ }
157
+ .button_clear {
158
+ --button-color: transparent;
159
+ --button-box-shadow: none;
160
+ --button-box-shadow-hover: none;
161
+ --button-box-shadow-active: none;
162
+ }
163
+
164
+
165
+ /* Group */
166
+
167
+ .buttons-group {
168
+ display: flex;
169
+ gap: calc(var(--space-1) / 2);
165
170
 
166
-
167
- /* Group */
168
-
169
- .buttons-group {
170
- display: flex;
171
- gap: calc(var(--space-1) / 2);
172
-
173
- & .button {
174
- border-radius: 0;
175
- }
176
-
177
- & .button:nth-child(1 of .button:not(.hidden)) {
178
- border-top-left-radius: var(--button-border-radius);
179
- border-bottom-left-radius: var(--button-border-radius);
180
- }
181
-
182
- & .button:nth-last-child(1 of .button:not(.hidden)) {
183
- border-top-right-radius: var(--button-border-radius);
184
- border-bottom-right-radius: var(--button-border-radius);
185
- }
171
+ & .button {
172
+ border-radius: 0;
186
173
  }
187
174
 
188
-
189
- /* Dropdown button */
190
-
191
- .button_dropdown {
192
- --temp: calc(var(--button-font-size) * var(--button-side-padding-coeff));
193
- padding-right: calc(var(--button-side-padding, var(--temp)) * 1.8);
194
-
195
- &::after {
196
- content: '';
197
- display: block;
198
- position: absolute;
199
- right: var(
200
- --button-side-padding,
201
- calc(var(--button-font-size) * var(--button-side-padding-coeff)
202
- ));
203
- width: .5em;
204
- height: .5em;
205
- margin-top: -.05em;
206
- border-bottom: solid .15rem var(--button-font-color);
207
- border-right: solid .15rem var(--button-font-color);
208
- transform: rotate(45deg);
209
- transform-origin: center;
210
- will-change: opacity;
211
- opacity: .4;
212
- transition: opacity .1s ease-out;
213
- }
214
- }
215
- .dropdown_bottom .button_dropdown::after {
216
- transform: rotate(225deg);
217
- margin-top: .35em;
175
+ & .button:nth-child(1 of .button:not(.hidden)) {
176
+ border-top-left-radius: var(--button-border-radius);
177
+ border-bottom-left-radius: var(--button-border-radius);
218
178
  }
219
179
 
220
- .button_dropdown.active {
221
- &::after {
222
- opacity: 1;
223
- }
180
+ & .button:nth-last-child(1 of .button:not(.hidden)) {
181
+ border-top-right-radius: var(--button-border-radius);
182
+ border-bottom-right-radius: var(--button-border-radius);
224
183
  }
184
+ }
185
+
225
186
 
187
+ /* Dropdown button */
188
+
189
+ .button_dropdown {
190
+ --temp: calc(var(--button-font-size) * var(--button-side-padding-coeff));
191
+ padding-right: calc(var(--button-side-padding, var(--temp)) * 1.8);
192
+
193
+ &::after {
194
+ content: '';
195
+ display: block;
196
+ position: absolute;
197
+ right: var(
198
+ --button-side-padding,
199
+ calc(var(--button-font-size) * var(--button-side-padding-coeff)
200
+ ));
201
+ width: .5em;
202
+ height: .5em;
203
+ margin-top: -.05em;
204
+ border-bottom: solid .15rem var(--button-font-color);
205
+ border-right: solid .15rem var(--button-font-color);
206
+ transform: rotate(45deg);
207
+ transform-origin: center;
208
+ will-change: opacity;
209
+ opacity: .4;
210
+ transition: opacity .1s ease-out;
211
+ }
212
+ }
213
+ .dropdown_bottom .button_dropdown::after {
214
+ transform: rotate(225deg);
215
+ margin-top: .35em;
216
+ }
217
+
218
+ .button_dropdown.active {
219
+ &::after {
220
+ opacity: 1;
221
+ }
226
222
  }
@@ -25,57 +25,53 @@ All right reserved.
25
25
  .bg-white
26
26
  .bg-grey
27
27
  */
28
-
29
- @layer colors {
30
28
 
31
- .color-primary {
32
- color: var(--color-primary);
33
- }
34
- .color-success {
35
- color: var(--color-success);
36
- }
37
- .color-warning {
38
- color: var(--color-warning);
39
- }
40
- .color-danger {
41
- color: var(--color-danger);
42
- }
43
- .color-error {
44
- color: var(--color-error);
45
- }
46
- .color-black {
47
- color: var(--color-black);
48
- }
49
- .color-white {
50
- color: var(--color-white);
51
- }
52
- .color-grey {
53
- color: var(--color-grey);
54
- }
55
-
56
- .bg-primary {
57
- background-color: var(--color-primary);
58
- }
59
- .bg-success {
60
- background-color: var(--color-success);
61
- }
62
- .bg-warning {
63
- background-color: var(--color-warning);
64
- }
65
- .bg-danger {
66
- background-color: var(--color-danger);
67
- }
68
- .bg-error {
69
- background-color: var(--color-error);
70
- }
71
- .bg-black {
72
- background-color: var(--color-black);
73
- }
74
- .bg-white {
75
- background-color: var(--color-white);
76
- }
77
- .bg-grey {
78
- background-color: var(--color-grey);
79
- }
29
+ .color-primary {
30
+ color: var(--color-primary);
31
+ }
32
+ .color-success {
33
+ color: var(--color-success);
34
+ }
35
+ .color-warning {
36
+ color: var(--color-warning);
37
+ }
38
+ .color-danger {
39
+ color: var(--color-danger);
40
+ }
41
+ .color-error {
42
+ color: var(--color-error);
43
+ }
44
+ .color-black {
45
+ color: var(--color-black);
46
+ }
47
+ .color-white {
48
+ color: var(--color-white);
49
+ }
50
+ .color-grey {
51
+ color: var(--color-grey);
52
+ }
80
53
 
54
+ .bg-primary {
55
+ background-color: var(--color-primary);
56
+ }
57
+ .bg-success {
58
+ background-color: var(--color-success);
59
+ }
60
+ .bg-warning {
61
+ background-color: var(--color-warning);
62
+ }
63
+ .bg-danger {
64
+ background-color: var(--color-danger);
65
+ }
66
+ .bg-error {
67
+ background-color: var(--color-error);
68
+ }
69
+ .bg-black {
70
+ background-color: var(--color-black);
71
+ }
72
+ .bg-white {
73
+ background-color: var(--color-white);
74
+ }
75
+ .bg-grey {
76
+ background-color: var(--color-grey);
81
77
  }