@awes-io/ui 2.87.0 → 2.88.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 (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/assets/css/components/_index.css +1 -2
  3. package/assets/css/components/alert.css +6 -9
  4. package/assets/css/components/button.css +251 -163
  5. package/assets/css/components/context-menu.css +0 -43
  6. package/assets/css/components/mobile-menu-item.css +1 -1
  7. package/assets/css/components/mobile-menu.css +1 -1
  8. package/assets/css/components/modal-buttons.css +17 -0
  9. package/assets/css/components/modal.css +0 -19
  10. package/assets/css/components/page-menu-buttons.css +16 -17
  11. package/assets/css/components/page-modal.css +1 -1
  12. package/assets/css/components/tab-nav.css +2 -2
  13. package/assets/css/components/table.css +2 -2
  14. package/assets/css/components/user-menu.css +1 -1
  15. package/assets/css/typography.css +28 -7
  16. package/assets/js/icons/mono.js +86 -2
  17. package/assets/js/icons/multicolor.js +0 -6
  18. package/assets/js/styles.js +7 -7
  19. package/components/1_atoms/AwDock.vue +2 -2
  20. package/components/1_atoms/AwIcon/AwIcon.vue +40 -16
  21. package/components/1_atoms/AwIcon/AwIconSystemMono.vue +12 -6
  22. package/components/1_atoms/AwLabel.vue +2 -4
  23. package/components/1_atoms/AwLink.vue +16 -1
  24. package/components/1_atoms/AwSwitcher.vue +2 -2
  25. package/components/2_molecules/AwButton.vue +116 -51
  26. package/components/2_molecules/AwSelect.vue +51 -39
  27. package/components/2_molecules/_AwSelectFakeInput.vue +10 -6
  28. package/components/2_molecules/_AwSelectInput.vue +10 -6
  29. package/components/3_organisms/AwAddressBlock.vue +2 -3
  30. package/components/3_organisms/AwCalendar/_AwCalendarNav.vue +6 -2
  31. package/components/3_organisms/AwCodeSnippet.vue +1 -2
  32. package/components/3_organisms/AwContextMenu.vue +8 -10
  33. package/components/3_organisms/AwCropper.vue +13 -11
  34. package/components/3_organisms/AwDate.vue +3 -1
  35. package/components/3_organisms/AwModal.vue +7 -6
  36. package/components/3_organisms/AwModalButtons.vue +129 -0
  37. package/components/3_organisms/AwPagination.vue +32 -24
  38. package/components/3_organisms/AwPassword.vue +10 -4
  39. package/components/3_organisms/AwSearch.vue +0 -1
  40. package/components/3_organisms/AwTel.vue +1 -1
  41. package/components/3_organisms/AwUploaderFiles.vue +1 -1
  42. package/components/4_pages/AwPageMenuButtons.vue +27 -10
  43. package/components/4_pages/AwPageSingle.vue +8 -4
  44. package/components/4_pages/_AwPageHeader.vue +1 -1
  45. package/components/4_pages/_AwPageHeadline.vue +7 -6
  46. package/components/5_layouts/_AwHeaderNotification.vue +4 -2
  47. package/components/5_layouts/_AwMobileMenu.vue +22 -25
  48. package/components/5_layouts/_AwUserMenu.vue +20 -9
  49. package/nuxt/index.js +10 -1
  50. package/package.json +2 -2
  51. package/assets/css/components/button-fixed.css +0 -84
  52. package/assets/css/components/square-icon-button.css +0 -69
  53. package/components/2_molecules/AwSquareIconButton.vue +0 -52
  54. package/components/4_pages/_AwButtonFixed.vue +0 -58
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.88.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.87.0...@awes-io/ui@2.88.0) (2023-12-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * buttons components refactored ([6a94a81](https://github.com/awes-io/client/commit/6a94a81e5fa78b56222f10cca3e02ffe5e734320))
12
+ * change style in menu items ([1bad6e8](https://github.com/awes-io/client/commit/1bad6e845bf637c18774e29c44093129a212190f))
13
+
14
+
15
+
16
+
17
+
6
18
  # [2.87.0](https://github.com/awes-io/client/compare/@awes-io/ui@2.86.0...@awes-io/ui@2.87.0) (2023-12-13)
7
19
 
8
20
 
@@ -14,9 +14,7 @@
14
14
  @import './badge.css';
15
15
  @import './birthday-picker.css';
16
16
  @import './button.css';
17
- @import './button-fixed.css';
18
17
  @import './button-nav.css';
19
- @import './square-icon-button.css';
20
18
  @import './dock.css';
21
19
  @import './title.css';
22
20
  @import './file.css';
@@ -77,6 +75,7 @@
77
75
  @import './progress.css';
78
76
 
79
77
  @import './modal.css';
78
+ @import './modal-buttons.css';
80
79
  @import './model-edit.css';
81
80
 
82
81
  @import './table.css';
@@ -33,21 +33,18 @@
33
33
 
34
34
  font-size: 0.875rem;
35
35
 
36
- .aw-icon,
37
- a, button {
36
+ :where(:is(a, button):not(.aw-button)) {
37
+ --btn-color: var(--aw-alert-on-color);
38
38
  color: var(--aw-alert-on-color);
39
39
  }
40
40
 
41
- a, button {
42
- white-space: nowrap;
43
- }
44
-
45
- a {
41
+ :where(:is(a, button):not(.aw-button)) {
46
42
  text-decoration: underline;
47
43
  }
48
44
 
49
- a:hover {
50
- color: color-mix(in srgb, var(--aw-alert-on-color) 90%, var(--c-mono-0));
45
+ a,
46
+ button {
47
+ white-space: nowrap;
51
48
  }
52
49
  }
53
50
 
@@ -2,240 +2,328 @@
2
2
  display: inline-flex;
3
3
  align-items: center;
4
4
  justify-content: center;
5
- position: relative;
6
- text-align: center;
7
5
  vertical-align: middle;
6
+ gap: 0.5rem;
7
+
8
+ color: var(--btn-color);
9
+ background-color: var(--btn-bg-color);
10
+ border: var(--btn-border-width, 2px) solid
11
+ var(--btn-border-color, var(--btn-bg-color));
12
+ border-radius: var(--btn-radius, 0.625rem);
13
+
14
+ min-height: var(--btn-size, 3rem);
15
+ min-width: var(--btn-min-width, var(--btn-size, 3rem));
16
+ padding: var(--btn-padding-y, 0.375rem) var(--btn-padding-x, 0.375rem);
17
+
18
+ font-size: 1rem;
19
+ line-height: 1.125rem;
20
+ font-weight: 400;
21
+ text-align: center;
22
+ text-decoration: none;
23
+
24
+ position: relative;
25
+
26
+ transition: 100ms background-color, 100ms border-color;
27
+
28
+ &__icon-wrapper {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: center;
32
+ flex-shrink: 0;
33
+
34
+ font-size: 1rem;
35
+ color: var(--icon-color, currentColor);
36
+
37
+ &--highlighted {
38
+ width: 2.5rem;
39
+ height: 2.5rem;
40
+ border-radius: calc(
41
+ var(--btn-radius, 0.625rem) - var(--btn-padding-y, 0.375rem)
42
+ );
43
+
44
+ background-color: color-mix(
45
+ in srgb,
46
+ var(--icon-color, var(--btn-color)) 15%,
47
+ rgba(255, 255, 255, 0)
48
+ );
49
+ /* background-color: color-mix(in srgb, var(--btn-bg-color) 85%, var(--icon-color, var(--btn-color))); */
50
+ }
51
+
52
+ &--highlighted:where(&--left) {
53
+ transform: translateX(
54
+ calc(
55
+ var(--btn-padding-y, 0.375rem) -
56
+ var(--btn-padding-x, 0.5rem)
57
+ )
58
+ );
59
+ }
60
+
61
+ &--highlighted:where(&--right) {
62
+ transform: translateX(
63
+ calc(
64
+ var(--btn-padding-x, 0.5rem) -
65
+ var(--btn-padding-y, 0.375rem)
66
+ )
67
+ );
68
+ }
69
+
70
+ &--placeholder {
71
+ width: 2.5rem;
72
+ flex-shrink: 999999;
73
+ }
74
+ }
75
+
76
+ &__loader {
77
+ height: 0.5rem;
78
+ width: auto;
79
+ max-width: 80%;
80
+
81
+ fill: var(--icon-color, var(--btn-color));
82
+
83
+ position: absolute;
84
+ top: 50%;
85
+ left: 50%;
86
+
87
+ transform: translate(-50%, -50%);
88
+ }
89
+
90
+ &__lock {
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
8
94
 
9
- border-radius: 0.625rem;
10
- border-width: 0.125rem;
11
- border-style: solid;
12
- transition: 100ms background, 100ms border-color;
95
+ position: absolute;
96
+ inset: 0;
97
+ }
98
+
99
+ &__lock span {
100
+ background-color: var(--c-surface);
101
+ color: var(--c-on-surface);
102
+
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ border-radius: 50%;
107
+
108
+ padding: 0.32em;
109
+ font-size: 1.2em;
110
+ }
13
111
 
14
112
  &:disabled {
15
- opacity: 0.5;
16
113
  cursor: not-allowed;
17
114
  user-select: none !important;
18
115
  }
19
116
 
20
- &:not([disabled]):active {
117
+ &:where(:not(:disabled)):active {
21
118
  transform: translateY(1px);
22
119
  }
23
120
 
24
- &--size-sm {
25
- padding: 0.25rem 0.5rem;
26
- min-width: 5rem;
121
+ &--with-text:where(:not(&--auto-width)) {
122
+ --btn-min-width: 5rem;
123
+ --btn-padding-x: 1rem;
124
+ }
27
125
 
28
- font-size: 1rem;
29
- line-height: 1.125rem;
30
- font-weight: 400;
31
- height: 2rem;
126
+ &--with-text:where(&--size-md:not(&--auto-width)) {
127
+ --btn-min-width: 6.25rem;
32
128
  }
33
129
 
34
- &--size-md {
35
- padding: 0.8125rem 1rem;
36
- min-width: 7rem;
130
+ &--with-text:where(&--size-lg:not(&--auto-width)) {
131
+ --btn-min-width: 7rem;
132
+ }
37
133
 
38
- font-size: 1rem;
39
- line-height: 1.125rem;
40
- font-weight: 400;
41
- height: 3rem;
134
+ &--size-xs {
135
+ --btn-size: 2rem;
136
+ --btn-padding-x: 0.375rem;
137
+
138
+ line-height: 1;
139
+ }
140
+
141
+ &--size-sm {
142
+ --btn-size: 2.5rem;
143
+ }
144
+
145
+ &--size-md {
146
+ --btn-size: 3rem;
42
147
  }
43
148
 
44
149
  &--size-lg {
45
- padding: 1.0625rem 1rem;
46
- min-width: 7rem;
150
+ --btn-size: 3.5rem;
151
+ }
47
152
 
48
- font-size: 1rem;
49
- line-height: 1.125rem;
50
- font-weight: 400;
51
- height: 3.5rem;
153
+ &--with-text {
154
+ --btn-padding-x: 1rem;
52
155
  }
53
156
 
54
- &--square:where(&--size-sm) {
55
- padding: 0.25rem;
56
- min-width: 2rem;
157
+ &--with-text:where(&--size-xs) {
158
+ --btn-padding-x: 0.75rem;
57
159
  }
58
160
 
59
- &--square:where(&--size-md) {
60
- padding: 0.8125rem;
61
- min-width: 3rem;
161
+ &--color-accent:where(&--theme-solid) {
162
+ --btn-bg-color: var(--c-accent);
163
+ --btn-color: var(--c-on-accent);
164
+ --btn-bg-hover: var(--c-accent-hover);
62
165
  }
63
166
 
64
- &--square:where(&--size-lg) {
65
- padding: 1.0625rem;
66
- min-width: 3.5rem;
167
+ &--color-error:where(&--theme-solid) {
168
+ --btn-bg-color: var(--c-error);
169
+ --btn-color: var(--c-on-error);
170
+ --btn-bg-hover: var(--c-error-hover);
67
171
  }
68
172
 
69
- &--theme-solid {
70
- &.aw-button--color-accent {
71
- background: var(--c-accent);
72
- border-color: var(--c-accent);
73
- color: var(--c-surface);
74
-
75
- &:not(:disabled):hover {
76
- background: var(--c-accent-hover);
77
- border-color: var(--c-accent-hover);
78
- }
79
- }
173
+ &--color-dark:where(&--theme-solid) {
174
+ --btn-bg-color: var(--c-mono-100);
175
+ --btn-color: var(--c-on-mono-100);
176
+ --btn-bg-hover: var(--c-mono-0);
177
+ }
80
178
 
81
- &.aw-button--color-error {
82
- background: var(--c-error);
83
- border-color: var(--c-error);
84
- color: var(--c-surface);
179
+ &--color-mono-light:where(&--theme-solid) {
180
+ --btn-bg-color: var(--c-mono-900);
181
+ --btn-color: var(--c-on-mono-900);
182
+ --btn-bg-hover: var(--c-mono-800);
183
+ --icon-color: var(--c-mono-400);
184
+ }
85
185
 
86
- &:not(:disabled):hover {
87
- background: var(--c-error-hover);
88
- border-color: var(--c-error-hover);
89
- }
90
- }
186
+ &--color-mono:where(&--theme-solid) {
187
+ --btn-bg-color: var(--c-mono-800);
188
+ --btn-color: var(--c-on-mono-800);
189
+ --btn-bg-hover: var(--c-mono-700);
190
+ --icon-color: var(--c-mono-400);
191
+ }
91
192
 
92
- &.aw-button--color-mono {
93
- background: var(--c-mono-800);
94
- border-color: var(--c-mono-800);
95
- color: var(--c-on-surface);
193
+ &--color-mono-dark:where(&--theme-solid) {
194
+ --btn-bg-color: var(--c-mono-700);
195
+ --btn-color: var(--c-on-mono-700);
196
+ --btn-bg-hover: var(--c-mono-600);
197
+ --icon-color: var(--c-mono-400);
198
+ }
96
199
 
97
- &:not(:disabled):hover {
98
- background: var(--c-mono-700);
99
- border-color: var(--c-mono-700);
100
- }
200
+ &--color-mono-darker:where(&--theme-solid) {
201
+ --btn-bg-color: var(--c-mono-600);
202
+ --btn-color: var(--c-on-mono-600);
203
+ --btn-bg-hover: var(--c-mono-500);
204
+ --icon-color: var(--c-mono-400);
205
+ }
101
206
 
102
- .aw-button__icon-left, .aw-button__icon-right {
103
- color: var(--c-mono-400);
104
- }
105
- }
207
+ &--theme-outline {
208
+ --btn-bg-color: transparent;
209
+ --btn-color: var(--c-mono-100);
210
+ --btn-border-color: var(--c-mono-800);
211
+ --icon-color: var(--c-mono-400);
212
+ --btn-border-hover-fallback: var(--c-mono-700);
213
+ }
106
214
 
107
- &.aw-button--color-dark {
108
- background: var(--c-mono-100);
109
- border-color: var(--c-mono-100);
110
- color: var(--c-surface);
215
+ &--theme-outline:where(:not(:disabled)):hover {
216
+ border-color: var(--btn-border-hover, var(--btn-border-hover-fallback));
217
+ }
111
218
 
112
- &:not(:disabled):hover {
113
- background: var(--c-mono-0);
114
- border-color: var(--c-mono-0);
115
- }
116
- }
219
+ &--theme-outline:where(:not(&--loading, &--locked)):disabled {
220
+ --btn-color: var(--c-mono-400);
117
221
  }
118
222
 
119
- &--theme-outline {
120
- border-color: var(--c-mono-800);
121
- color: var(--c-on-surface);
223
+ &--theme-solid {
224
+ --btn-border-width: 0;
225
+ --btn-bg-hover-fallback: color-mix(
226
+ in srgb,
227
+ var(--btn-bg-color) 90%,
228
+ rgb(var(--c-overlay-rgb))
229
+ );
230
+ }
122
231
 
123
- &:not(:disabled):hover {
124
- border-color: var(--c-mono-700);
125
- }
232
+ &--theme-solid:where(:not(:disabled)):hover {
233
+ background-color: var(--btn-bg-hover, var(--btn-bg-hover-fallback));
234
+ border-color: var(--btn-bg-hover, var(--btn-bg-hover-fallback));
235
+ }
126
236
 
127
- .aw-button__icon-left, .aw-button__icon-right {
128
- color: var(--c-mono-400);
129
- }
237
+ &--theme-solid:where(:is(&--color-mono, &--color-mono-light, &--color-mono-dark):not(&--with-text):not(:disabled)):hover {
238
+ --icon-color: var(--c-mono-100);
239
+ }
240
+
241
+ &--theme-solid:where(:not(&--loading, &--locked)):disabled {
242
+ --btn-bg-color: var(--c-mono-800);
243
+ --btn-color: var(--c-mono-400);
130
244
  }
131
245
 
132
246
  &--theme-icon {
133
- @apply opacity-40;
134
- border: 0;
247
+ opacity: 0.4;
135
248
 
136
- &:not(:disabled):hover {
137
- @apply opacity-90;
249
+ &:where(:not(:disabled)):hover {
250
+ opacity: 0.9;
138
251
  }
252
+ }
139
253
 
140
- &.aw-button--size-md {
141
- width: 2.5rem;
142
- height: 2.5rem;
143
- min-width: 0;
144
- padding: 0;
145
- }
254
+ &--theme-icon,
255
+ &:where(:not(&--with-text)) {
256
+ --btn-min-width: var(--btn-size);
257
+ flex-shrink: 0;
146
258
 
147
- &.aw-button--size-lg {
148
- width: 3.125rem;
149
- height: 3.125rem;
150
- min-width: 0;
151
- padding: 0;
259
+ &:active {
260
+ transform: none;
152
261
  }
153
262
  }
154
263
 
155
264
  &--loading {
156
- @apply opacity-50;
265
+ color: transparent;
266
+
157
267
  cursor: wait !important;
158
268
  user-select: none !important;
159
269
 
160
- svg,
161
- rect {
162
- fill: currentColor;
270
+ &:disabled {
271
+ opacity: 1;
163
272
  }
164
273
  }
165
274
 
166
- &__icon {
167
- &-left {
168
- fill: currentColor;
169
- }
170
-
171
- &-right {
172
- fill: currentColor;
173
- }
275
+ &--loading &__icon-wrapper {
276
+ color: transparent;
277
+ background-color: transparent;
174
278
  }
175
279
 
176
- &__loader {
177
- @apply absolute h-2;
178
- top: 50%;
179
- left: 50%;
180
- transform: translate(-50%, -50%);
181
- max-width: 80%;
280
+ &--icon-highlighted {
281
+ /* gap: 1rem; */
282
+ justify-content: space-between;
182
283
  }
284
+ }
183
285
 
184
- &__lock {
185
- display: flex;
186
- align-items: center;
187
- justify-content: center;
286
+ @screen lg {
287
+ .aw-button {
288
+ &--size-md {
289
+ --btn-size: 2.5rem;
290
+ }
188
291
 
189
- position: absolute;
190
- inset: 0;
292
+ &--size-xs,
293
+ &--size-sm,
294
+ &--size-md {
295
+ font-size: 0.875rem;
296
+ }
191
297
  }
298
+ }
192
299
 
193
- &__lock span {
194
- background-color: var(--c-surface);
195
- color: var(--c-on-surface);
300
+ .aw-buttons-group {
301
+ display: inline-flex;
302
+ gap: 1px;
196
303
 
197
- display: flex;
198
- align-items: center;
199
- justify-content: center;
200
- border-radius: 50%;
304
+ :not(:first-child) {
305
+ border-top-left-radius: 0;
306
+ border-bottom-left-radius: 0;
307
+ }
201
308
 
202
- padding: 0.32em;
203
- font-size: 1.2em;
309
+ :not(:last-child) {
310
+ border-top-right-radius: 0;
311
+ border-bottom-right-radius: 0;
204
312
  }
205
- }
206
313
 
207
- [data-dark='true'] {
208
- .aw-button {
209
- &--theme-solid {
210
- &.aw-button--color-accent {
211
- color: var(--c-on-surface);
212
- }
213
-
214
- &.aw-button--color-error {
215
- color: var(--c-on-surface);
216
- }
217
- }
314
+ & > :active {
315
+ transform: none;
218
316
  }
219
- }
220
317
 
221
- @screen lg {
222
- .aw-button {
223
- &--size-md {
224
- padding: 0.5625rem 1rem;
225
- min-width: 6.25rem;
226
- height: 2.5rem;
227
- }
318
+ &--collapsed {
319
+ gap: 0;
228
320
 
229
- &--square:where(&--size-md) {
230
- padding: 0.5625rem;
231
- min-width: 2.5rem;
321
+ & > * + * {
322
+ margin-left: -2px;
232
323
  }
233
324
 
234
- &--size-sm,
235
- &--size-md {
236
- font-size: 0.875rem;
237
- line-height: 1.125rem;
238
- font-weight: 400;
325
+ & > :hover {
326
+ z-index: 1;
239
327
  }
240
328
  }
241
329
  }
@@ -4,47 +4,4 @@
4
4
  margin: 0;
5
5
  padding: 0;
6
6
  }
7
-
8
- &--highlight {
9
- .aw-button.theme-icon {
10
- background: var(--c-mono-800);
11
- border-radius: 50%;
12
- width: 32px;
13
- height: 32px;
14
-
15
- .aw-button__content_md {
16
- width: 32px;
17
- height: 32px;
18
- padding: 8px;
19
- }
20
- }
21
- }
22
-
23
- .aw-button {
24
- min-width: 3rem;
25
- padding: 0;
26
-
27
- .aw-button__text {
28
- display: none;
29
- }
30
- }
31
- }
32
-
33
- @screen lg {
34
- .aw-context-menu {
35
- &--text {
36
- .aw-icon {
37
- margin-right: 0.5rem;
38
- }
39
- }
40
-
41
- .aw-button {
42
- min-width: 6.25rem;
43
- padding: 0.5625rem 1rem;
44
-
45
- .aw-button__text {
46
- display: flex;
47
- }
48
- }
49
- }
50
7
  }
@@ -4,7 +4,7 @@
4
4
  display: flex;
5
5
  align-items: center;
6
6
  width: 100%;
7
- padding: 1.5rem;
7
+ padding: 1rem 1.5rem;
8
8
 
9
9
  &:hover,
10
10
  &:focus {
@@ -112,7 +112,7 @@
112
112
  align-items: center;
113
113
  position: relative;
114
114
 
115
- padding: 1.5rem;
115
+ padding: 0.8125rem 1.5rem;
116
116
 
117
117
  &-icon {
118
118
  margin-right: 1rem;
@@ -0,0 +1,17 @@
1
+ .aw-modal-buttons {
2
+ display: flex;
3
+ align-items: center;
4
+ flex-direction: row-reverse;
5
+ gap: 1rem;
6
+
7
+ width: 100%;
8
+
9
+ &__button--equal {
10
+ flex: 1 1 100%;
11
+ }
12
+
13
+ &--mobile {
14
+ flex-direction: column;
15
+ align-items: stretch;
16
+ }
17
+ }
@@ -56,25 +56,6 @@ $modal-aside-width-large: 75vw;
56
56
  padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 7rem);
57
57
  }
58
58
 
59
- &__back,
60
- &__close {
61
- @apply flex-shrink-0 flex justify-center items-center;
62
- height: $button-height;
63
- width: $button-height;
64
- line-height: $button-height - $gap;
65
- opacity: 0.5;
66
- transition: 200ms opacity;
67
-
68
- > svg {
69
- display: inline-block;
70
- vertical-align: middle;
71
- }
72
-
73
- &:hover {
74
- opacity: 1;
75
- }
76
- }
77
-
78
59
  &__close {
79
60
  margin-left: auto;
80
61
  width: 3rem;