vanilla-jui 1.3.10 → 1.4.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 (90) hide show
  1. package/dist/index.d.ts +2927 -0
  2. package/dist/index.js +1 -1
  3. package/dist/index.umd.js +1 -1
  4. package/dist/style.css +1 -1
  5. package/package.json +4 -3
  6. package/src/components/accordion.ts +522 -0
  7. package/src/components/drop.ts +497 -0
  8. package/src/components/flow.ts +1579 -0
  9. package/src/components/form.ts +953 -0
  10. package/src/components/{icons.js → icons.ts} +24 -11
  11. package/src/components/menu.ts +615 -0
  12. package/src/components/{modal.js → modal.ts} +560 -237
  13. package/src/components/offcanvas.ts +496 -0
  14. package/src/components/{pagination.js → pagination.ts} +251 -76
  15. package/src/components/parabola.ts +335 -0
  16. package/src/components/{sticky.js → sticky.ts} +123 -98
  17. package/src/components/{swiper.js → swiper.ts} +510 -232
  18. package/src/components/tabs.ts +984 -0
  19. package/src/components/theme.ts +437 -0
  20. package/src/components/toast.ts +371 -0
  21. package/src/components/toc.ts +385 -0
  22. package/src/components/tooltip.ts +179 -0
  23. package/src/components/validator.ts +596 -0
  24. package/src/core/{Component.js → Component.ts} +134 -27
  25. package/src/css/accordion.css +2 -2
  26. package/src/css/animation.css +31 -1
  27. package/src/css/breadcrumb.css +1 -1
  28. package/src/css/button.css +5 -5
  29. package/src/css/card.css +7 -7
  30. package/src/css/color.css +865 -1028
  31. package/src/css/color_p3.css +871 -1036
  32. package/src/css/components.css +1 -0
  33. package/src/css/drop.css +1 -1
  34. package/src/css/flow.css +1 -1
  35. package/src/css/form.css +21 -21
  36. package/src/css/gradient.css +17 -4
  37. package/src/css/icon.css +17 -1
  38. package/src/css/index.css +3 -3
  39. package/src/css/layout.css +1 -1
  40. package/src/css/menu.css +27 -27
  41. package/src/css/modal.css +10 -27
  42. package/src/css/offcanvas.css +2 -2
  43. package/src/css/pagination.css +1 -1
  44. package/src/css/popup.css +2 -2
  45. package/src/css/swiper.css +12 -12
  46. package/src/css/tabs.css +3 -2
  47. package/src/css/tag.css +3 -4
  48. package/src/css/theme-palette.css +6 -6
  49. package/src/css/tip.css +1 -1
  50. package/src/css/toast.css +8 -8
  51. package/src/css/tokens.css +197 -226
  52. package/src/css/toolbar.css +3 -3
  53. package/src/css/tooltip.css +1 -1
  54. package/src/index.ts +37 -0
  55. package/src/locales/{index.js → index.ts} +1 -2
  56. package/src/types.d.ts +1 -0
  57. package/src/utilities/browser.ts +131 -0
  58. package/src/utilities/cache.ts +57 -0
  59. package/src/utilities/core.ts +614 -0
  60. package/src/utilities/dom.ts +468 -0
  61. package/src/utilities/events.ts +106 -0
  62. package/src/utilities/http.ts +35 -0
  63. package/src/utilities/storage.ts +46 -0
  64. package/src/components/accordion.js +0 -373
  65. package/src/components/drop.js +0 -437
  66. package/src/components/flow.js +0 -1133
  67. package/src/components/form.js +0 -585
  68. package/src/components/menu.js +0 -422
  69. package/src/components/offcanvas.js +0 -332
  70. package/src/components/parabola.js +0 -295
  71. package/src/components/tabs.js +0 -746
  72. package/src/components/theme.js +0 -353
  73. package/src/components/toast.js +0 -329
  74. package/src/components/toc.js +0 -226
  75. package/src/components/tooltip.js +0 -86
  76. package/src/components/validator.js +0 -586
  77. package/src/css/toast.min.css +0 -1
  78. package/src/index.js +0 -45
  79. package/src/locales/index.min.js +0 -1
  80. package/src/utilities/browser.js +0 -111
  81. package/src/utilities/cache.js +0 -159
  82. package/src/utilities/core.js +0 -502
  83. package/src/utilities/debug.js +0 -103
  84. package/src/utilities/dom.js +0 -313
  85. package/src/utilities/events.js +0 -69
  86. package/src/utilities/http.js +0 -30
  87. package/src/utilities/legacy-dom.js +0 -179
  88. package/src/utilities/storage.js +0 -46
  89. /package/src/{components/components.js → css/themes/index.css} +0 -0
  90. /package/src/icons/{index.js → index.ts} +0 -0
@@ -24,3 +24,4 @@
24
24
  @import url('./toolbar.css');
25
25
  @import url('./menu.css');
26
26
  @import url('./toc.css');
27
+ @import url('./form.css');
package/src/css/drop.css CHANGED
@@ -7,7 +7,7 @@
7
7
  opacity: 0;
8
8
  pointer-events: none;
9
9
  transition: opacity 0.2s ease;
10
- z-index: var(--z-index-drop);
10
+ z-index: var(--z-drop);
11
11
  }
12
12
 
13
13
  .j-drop.is-active {
package/src/css/flow.css CHANGED
@@ -1,6 +1,6 @@
1
1
  @layer components {
2
2
  .j-flow {
3
- --flow-gap: calc(var(--space) * 2);
3
+ --flow-gap: var(--s2);
4
4
  --flow-step-size: 28px;
5
5
  --flow-border: 1px solid var(--ui-border-subtle);
6
6
 
package/src/css/form.css CHANGED
@@ -1,4 +1,4 @@
1
- @layer form {
1
+ @layer components {
2
2
 
3
3
  .j-form,
4
4
  .j-form .form-item,
@@ -8,16 +8,16 @@
8
8
 
9
9
  .j-form.is-vertical {
10
10
  flex-direction: column;
11
- gap: var(--form-gap-vertical, calc(var(--space) * 2));
11
+ gap: var(--form-gap-vertical, var(--s2));
12
12
  }
13
13
 
14
14
  .j-form.is-horizontal {
15
15
  flex-direction: row;
16
- gap: var(--form-gap-horizontal, calc(var(--space) * 2));
16
+ gap: var(--form-gap-horizontal, var(--s2));
17
17
  }
18
18
 
19
19
  .j-form .form-item {
20
- gap: var(--form-label-gap, calc(var(--space) * 1));
20
+ gap: var(--form-label-gap, var(--space));
21
21
  margin: 0;
22
22
  }
23
23
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  .j-form .form-item .item-label,
38
38
  .j-form .form-item .form-control {
39
- gap: var(--form-label-gap, calc(var(--space) * 1));
39
+ gap: var(--form-label-gap, var(--space));
40
40
  }
41
41
 
42
42
  .j-form.is-horizontal .form-item .item-label {
@@ -67,14 +67,14 @@
67
67
 
68
68
  .j-form .form-buttons {
69
69
  display: flex;
70
- gap: var(--form-buttons-gap, calc(var(--space) * 2));
70
+ gap: var(--form-buttons-gap, var(--s2));
71
71
  margin: 0;
72
72
  }
73
73
 
74
74
  /* input */
75
75
  .j-input:not([type='checkbox']) {
76
76
  display: block;
77
- padding: var(--input-padding, calc(var(--space) * 1.5) calc(var(--space) * 2));
77
+ padding: var(--input-padding, calc(var(--space) * 1.5) var(--s2));
78
78
  border-width: var(--input-border-width, 1px);
79
79
  border-style: var(--input-border-style, solid);
80
80
  border-color: var(--input-border-color, var(--ui-input-border));
@@ -121,8 +121,8 @@
121
121
  border-inline-end-width: 1px;
122
122
  border-radius: 0;
123
123
  margin: calc(var(--space) * -2);
124
- margin-inline-end: calc(var(--space) * 2);
125
- padding: calc(var(--space) * 2);
124
+ margin-inline-end: var(--s2);
125
+ padding: var(--s2);
126
126
  border-color: var(--input-border-color, var(--ui-input-border));
127
127
  background-color: var(--ui-surface-subtle);
128
128
  font-size: var(--font-size-sm, 0.75rem);
@@ -194,19 +194,19 @@
194
194
 
195
195
  .j-radio.is-vertical {
196
196
  flex-direction: column;
197
- /* --radio-gap: calc(var(--space) * 3); */
197
+ /* --radio-gap: var(--s3); */
198
198
  }
199
199
 
200
200
  .j-radio,
201
201
  .j-radio.is-horizontal {
202
202
  flex-direction: row;
203
- /* --radio-gap: calc(var(--space) * 4); */
203
+ /* --radio-gap: var(--s4); */
204
204
  }
205
205
 
206
206
  .j-radio label {
207
207
  display: flex;
208
208
  align-items: center;
209
- gap: var(--radio-label-gap, calc(var(--space) * 2));
209
+ gap: var(--radio-label-gap, var(--s2));
210
210
  font-size: var(--font-size-md);
211
211
  padding: calc(var(--space)*2);
212
212
  border-radius: var(--radius-md);
@@ -287,7 +287,7 @@
287
287
  .j-radio.is-group label span.radio-text {
288
288
  cursor: pointer;
289
289
  background-color: var(--ui-bg);
290
- padding: var(--radio-group-padding, calc(var(--space) * 1.5) calc(var(--space) * 3));
290
+ padding: var(--radio-group-padding, calc(var(--space) * 1.5) var(--s3));
291
291
  height: var(--el-height-md);
292
292
  line-height: var(--line-height);
293
293
  position: relative;
@@ -323,7 +323,7 @@
323
323
  }
324
324
 
325
325
  .j-radio.is-group.is-sm label span.radio-text {
326
- --radio-group-padding: calc(var(--space) * 1) calc(var(--space) * 2);
326
+ --radio-group-padding: var(--space) var(--s2);
327
327
  height: var(--el-height-sm);
328
328
  }
329
329
 
@@ -337,7 +337,7 @@
337
337
  }
338
338
 
339
339
  .j-radio.is-group.is-lg label span.radio-text {
340
- --radio-group-padding: calc(var(--space) * 3) calc(var(--space) * 4);
340
+ --radio-group-padding: var(--s3) var(--s4);
341
341
  height: var(--el-height-lg);
342
342
  }
343
343
 
@@ -351,19 +351,19 @@
351
351
 
352
352
  .j-checkbox.is-vertical {
353
353
  flex-direction: column;
354
- /* --checkbox-gap: calc(var(--space) * 3); */
354
+ /* --checkbox-gap: var(--s3); */
355
355
  }
356
356
 
357
357
  .j-checkbox,
358
358
  .j-checkbox.is-horizontal {
359
359
  flex-direction: row;
360
- /* --checkbox-gap: calc(var(--space) * 4); */
360
+ /* --checkbox-gap: var(--s4); */
361
361
  }
362
362
 
363
363
  .j-checkbox label {
364
364
  display: flex;
365
365
  align-items: center;
366
- gap: var(--checkbox-label-gap, calc(var(--space) * 2));
366
+ gap: var(--checkbox-label-gap, var(--s2));
367
367
  font-size: var(--checkbox-label-font-size, var(--font-size-md));
368
368
  height: var(--el-height-md);
369
369
  padding: calc(var(--space)*2);
@@ -611,13 +611,13 @@
611
611
 
612
612
  select.j-select.is-sm {
613
613
  --input-height: var(--el-height-sm);
614
- --input-padding: calc(var(--space) * 1) calc(var(--space) * 1);
614
+ --input-padding: var(--space) var(--space);
615
615
  --input-font-size: var(--font-size-sm);
616
616
  }
617
617
 
618
618
  select.j-select.is-lg {
619
619
  --input-height: var(--el-height-lg);
620
- --input-padding: calc(var(--space) * 2) calc(var(--space) * 2);
620
+ --input-padding: var(--s2) var(--s2);
621
621
  --input-font-size: var(--font-size-lg);
622
622
  }
623
623
 
@@ -633,7 +633,7 @@
633
633
  background-color: var(--input-background-color, var(--ui-bg));
634
634
  color: var(--input-color, var(--ui-input-color));
635
635
  resize: vertical;
636
- padding: var(--textarea-padding, calc(var(--space) * 2));
636
+ padding: var(--textarea-padding, var(--s2));
637
637
  font-family: inherit;
638
638
  font-size: var(--textarea-font-size, var(--font-size-md));
639
639
  line-height: var(--textarea-line-height, var(--line-height));
@@ -21,6 +21,19 @@
21
21
  background-color: var(--ui-bg);
22
22
  }
23
23
 
24
+ .bg-gradient-auto {
25
+ background:
26
+ radial-gradient(circle at 16% 16%,
27
+ color-mix(in srgb, var(--tone-solid) 30%, transparent),
28
+ transparent 34%),
29
+ radial-gradient(circle at 84% 0%,
30
+ color-mix(in srgb, var(--tone-tint) 24%, transparent),
31
+ transparent 30%),
32
+ linear-gradient(135deg,
33
+ color-mix(in srgb, var(--ui-bg) 78%, var(--ui-surface-raised)),
34
+ color-mix(in srgb, var(--ui-surface-raised) 86%, var(--tone-subtle)));
35
+ }
36
+
24
37
  .bg-gradient-sunrise {
25
38
  background:
26
39
  radial-gradient(circle at 16% 16%,
@@ -56,7 +69,7 @@
56
69
  color-mix(in srgb, var(--ui-blue) 22%, transparent),
57
70
  transparent 28%),
58
71
  linear-gradient(135deg,
59
- color-mix(in srgb, var(--ui-bg) 76%, var(--ui-blue-light)),
72
+ color-mix(in srgb, var(--ui-bg) 76%, var(--ui-blue-tint)),
60
73
  color-mix(in srgb, var(--ui-surface-raised) 84%, var(--ui-teal-subtle, var(--state-info-subtle))));
61
74
  }
62
75
 
@@ -70,7 +83,7 @@
70
83
  transparent 30%),
71
84
  linear-gradient(135deg,
72
85
  color-mix(in srgb, var(--ui-bg) 80%, var(--state-success-subtle)),
73
- color-mix(in srgb, var(--ui-surface-raised) 84%, var(--ui-mint-light)));
86
+ color-mix(in srgb, var(--ui-surface-raised) 84%, var(--ui-mint-tint)));
74
87
  }
75
88
 
76
89
  .bg-gradient-ember {
@@ -109,7 +122,7 @@
109
122
  transparent 28%),
110
123
  linear-gradient(135deg,
111
124
  color-mix(in srgb, var(--ui-bg) 80%, var(--ui-gold-surface, var(--state-warning-subtle))),
112
- color-mix(in srgb, var(--ui-surface-raised) 86%, var(--ui-gold-light)));
125
+ color-mix(in srgb, var(--ui-surface-raised) 86%, var(--ui-gold-tint)));
113
126
  }
114
127
 
115
128
  .bg-gradient-forest {
@@ -121,7 +134,7 @@
121
134
  color-mix(in srgb, var(--state-success) 18%, transparent),
122
135
  transparent 30%),
123
136
  linear-gradient(135deg,
124
- color-mix(in srgb, var(--ui-bg) 80%, var(--ui-olive-light)),
137
+ color-mix(in srgb, var(--ui-bg) 80%, var(--ui-olive-tint)),
125
138
  color-mix(in srgb, var(--ui-surface-raised) 86%, var(--state-success-subtle)));
126
139
  }
127
140
 
package/src/css/icon.css CHANGED
@@ -3,6 +3,16 @@
3
3
  display: block;
4
4
  }
5
5
 
6
+ .j-loader {
7
+ display: flex;
8
+ justify-content: center;
9
+ align-items: center;
10
+ background: var(--ui-bg-subtle);
11
+ width: 100%;
12
+ height: 100%;
13
+ position: absolute;
14
+ }
15
+
6
16
  /* loader icon */
7
17
  .icon-loader {
8
18
  display: inline-block;
@@ -27,6 +37,7 @@
27
37
  color: inherit;
28
38
  cursor: pointer;
29
39
  }
40
+
30
41
  .icon-close::after,
31
42
  .icon-close::before {
32
43
  content: "";
@@ -40,15 +51,19 @@
40
51
  border-radius: 1px;
41
52
  transform-origin: center center;
42
53
  }
54
+
43
55
  .icon-close::before {
44
56
  transform: translate(-50%, -50%) rotate(45deg);
45
57
  }
58
+
46
59
  .icon-close::after {
47
60
  transform: translate(-50%, -50%) rotate(-45deg);
48
61
  }
62
+
49
63
  .icon-close:active {
50
64
  transform: translateY(1px);
51
65
  }
66
+
52
67
  .icon-close:focus-within {
53
68
  background-color: var(--tone-subtle);
54
69
  }
@@ -57,7 +72,8 @@
57
72
  .el-icon[data-action-close] {
58
73
  cursor: pointer;
59
74
  }
75
+
60
76
  .el-icon[data-action-close]:active {
61
77
  transform: scale(0.85);
62
78
  }
63
- }
79
+ }
package/src/css/index.css CHANGED
@@ -1,12 +1,12 @@
1
- @layer config, layout, content, icon, font, components, menu, form, animation, status;
1
+ @layer config, layout, content, icon, font, components, themes, animation, status;
2
2
 
3
3
  @import url('./tokens.css');
4
- @import url('./gradient.css');
4
+ /* @import url('./gradient.css'); */
5
5
  @import url('./layout.css');
6
6
  @import url('./icon.css');
7
7
  @import url('./font.css');
8
8
  @import url('./components.css');
9
- @import url('./form.css');
10
9
  @import url('./content.css');
10
+ @import url('./themes/index.css');
11
11
  @import url('./animation.css');
12
12
  @import url('./status.css');
@@ -449,7 +449,7 @@
449
449
  /* Grid 容器:自动 gap + 响应式列 */
450
450
  .grid-container {
451
451
  display: grid;
452
- gap: var(--grid-container-gap, calc(var(--space) * 2));
452
+ gap: var(--grid-container-gap, var(--s2));
453
453
  width: 100%;
454
454
  /* 默认:单列(移动端友好) */
455
455
  grid-template-columns: 1fr;
package/src/css/menu.css CHANGED
@@ -1,4 +1,4 @@
1
- @layer menu {
1
+ @layer components {
2
2
  .j-menu {
3
3
  width: 100%;
4
4
  white-space: nowrap;
@@ -52,7 +52,7 @@
52
52
  justify-content: center;
53
53
  align-items: center;
54
54
  flex-wrap: nowrap;
55
- gap: calc(var(--space) * 1);
55
+ gap: var(--space);
56
56
  white-space: nowrap;
57
57
  cursor: pointer;
58
58
  appearance: button;
@@ -106,7 +106,7 @@
106
106
  display: none;
107
107
  position: absolute;
108
108
  transform: translateY(1px);
109
- padding: calc(var(--space) * 2) 0;
109
+ padding: var(--s2) 0;
110
110
  background-color: var(--ui-surface-subtle);
111
111
  border: 1px solid var(--ui-border);
112
112
  border-radius: var(--radius-md);
@@ -125,7 +125,7 @@
125
125
 
126
126
  .j-menu .menu .menu-item.menu-item-has-children:hover .sub-menu {
127
127
  display: block;
128
- z-index: var(--z-index-submenu);
128
+ z-index: var(--z-submenu);
129
129
  }
130
130
 
131
131
  .j-menu .menu .menu-item .sub-menu .menu-item:hover a {
@@ -329,13 +329,13 @@
329
329
  justify-content: flex-start;
330
330
  align-items: center;
331
331
  flex-wrap: wrap;
332
- gap: calc(var(--space) * 2);
332
+ gap: var(--s2);
333
333
  white-space: normal;
334
334
  appearance: button;
335
335
  touch-action: manipulation;
336
336
  color: currentColor;
337
- min-height: var(--el-height-xl);
338
- padding: calc(var(--space) * 2) calc(var(--space) * 4);
337
+ min-height: var(--el-height-2xl);
338
+ padding: var(--s2) var(--s4);
339
339
  line-height: var(--line-height-paragraph);
340
340
  position: relative;
341
341
  text-decoration: none;
@@ -394,7 +394,7 @@
394
394
  opacity: 1;
395
395
  transform: translateX(0);
396
396
  height: 100%;
397
- z-index: var(--z-index-submenu);
397
+ z-index: var(--z-submenu);
398
398
  }
399
399
 
400
400
  /* bottom menu */
@@ -424,11 +424,11 @@
424
424
  gap: 1px;
425
425
  border-top: 1px solid var(--ui-border-subtle);
426
426
  background: linear-gradient(to bottom,
427
- var(--ui-surface-subtle) 20%,
428
- var(--ui-bg-muted) 40%,
429
- var(--ui-surface-muted) 50%,
430
- var(--ui-bg-muted) 60%,
431
- var(--ui-surface-subtle) 80%);
427
+ var(--ui-bg-subtle) 20%,
428
+ var(--ui-border) 40%,
429
+ var(--ui-outline) 50%,
430
+ var(--ui-border) 60%,
431
+ var(--ui-bg-subtle) 80%);
432
432
  font-size: var(--font-size-md);
433
433
  }
434
434
 
@@ -444,11 +444,11 @@
444
444
  width: 100%;
445
445
  text-align: center;
446
446
  text-decoration: none;
447
- height: var(--el-height-xl);
447
+ height: var(--el-height-2xl);
448
448
  display: flex;
449
449
  justify-content: center;
450
450
  align-items: center;
451
- gap: calc(var(--space) * 1);
451
+ gap: var(--space);
452
452
  color: var(--ui-fg);
453
453
  padding: calc(var(--space) * 1.5);
454
454
  }
@@ -475,9 +475,9 @@
475
475
  visibility: hidden;
476
476
  background: linear-gradient(to right,
477
477
  var(--ui-surface-subtle) 20%,
478
- var(--ui-bg-muted) 40%,
479
- var(--ui-surface-muted) 50%,
480
- var(--ui-bg-muted) 60%,
478
+ var(--ui-border) 40%,
479
+ var(--ui-outline) 50%,
480
+ var(--ui-border) 60%,
481
481
  var(--ui-surface-subtle) 80%);
482
482
  border: 1px solid var(--ui-border-subtle);
483
483
  display: flex;
@@ -485,8 +485,8 @@
485
485
  align-items: center;
486
486
  justify-content: center;
487
487
  gap: 1px;
488
- min-width: calc(var(--space) * 30);
489
- max-width: calc(var(--space) * 76);
488
+ min-width: var(--columns-6xs);
489
+ max-width: var(--columns-2xs);
490
490
  position: absolute;
491
491
  left: 50%;
492
492
  transform: translateX(-50%);
@@ -507,14 +507,14 @@
507
507
  }
508
508
 
509
509
  .j-bottom-menu .menu .menu-item.menu-item-has-children>.sub-menu>.menu-item>a {
510
- padding: calc(var(--space) * 1.5) calc(var(--space) * 3);
510
+ padding: calc(var(--space) * 1.5) var(--s3);
511
511
  }
512
512
 
513
513
  /* drop menu */
514
514
  .drop-menu {
515
515
  min-width: 100px;
516
516
  max-width: 200px;
517
- padding: calc(var(--space) * 2);
517
+ padding: var(--s2);
518
518
  font-size: var(--font-size-md);
519
519
  background-color: var(--ui-surface-subtle);
520
520
  border-radius: var(--radius-sm);
@@ -532,9 +532,9 @@
532
532
  .drop-menu .menu-item a {
533
533
  display: flex;
534
534
  align-items: center;
535
- gap: var(--drop-menu-item-gap, calc(var(--space) * 2));
535
+ gap: var(--drop-menu-item-gap, var(--s2));
536
536
  width: 100%;
537
- padding: calc(var(--space) * 1) calc(var(--space) * 2);
537
+ padding: var(--space) var(--s2);
538
538
  text-decoration: none;
539
539
  color: var(--ui-fg-muted);
540
540
  border-radius: var(--radius-md);
@@ -552,12 +552,12 @@
552
552
 
553
553
  .drop-menu .el-icon,
554
554
  .drop-menu svg {
555
- width: var(--drop-menu-icon-size, calc(var(--space) * 4));
556
- height: var(--drop-menu-icon-size, calc(var(--space) * 4));
555
+ width: var(--drop-menu-icon-size, var(--s4));
556
+ height: var(--drop-menu-icon-size, var(--s4));
557
557
  }
558
558
 
559
559
  .drop-menu .menu-item.menu-heading {
560
- padding: var(--menu-item-heading, calc(var(--space) * 1) calc(var(--space) * 2));
560
+ padding: var(--menu-item-heading, var(--space) var(--s2));
561
561
  color: var(--ui-fg-soft);
562
562
  font-size: var(--font-size-sm);
563
563
  }
package/src/css/modal.css CHANGED
@@ -2,18 +2,18 @@
2
2
  .j-modal {
3
3
  --modal-border: var(--modal-border-width, 1px) var(--modal-border-style, solid) var(--modal-border-color, transparent);
4
4
 
5
- --modal-header-padding: calc(var(--space) * 4) calc(var(--space) * 4) 0;
5
+ --modal-header-padding: var(--s4) var(--s4) 0;
6
6
  --modal-header-gap: var(--space);
7
7
  --modal-title-font-size: var(--font-size-md);
8
8
  --modal-close-icon-size: var(--el-height-3xs);
9
9
  --modal-close-font-size: var(--font-size-lg);
10
10
  --modal-close-color: var(--ui-fg-muted);
11
11
 
12
- --modal-body-padding: calc(var(--space) * 4);
12
+ --modal-body-padding: var(--s4);
13
13
  --modal-body-line-height: var(--line-height-paragraph);
14
14
 
15
- --modal-footer-padding: 0 calc(var(--space) * 4) calc(var(--space) * 4);
16
- --modal-footer-gap: calc(var(--space) * 2);
15
+ --modal-footer-padding: 0 var(--s4) var(--s4);
16
+ --modal-footer-gap: var(--s2);
17
17
 
18
18
  background: var(--modal-background, var(--ui-bg));
19
19
  border: var(--modal-border, 1px solid var(--ui-border));
@@ -56,27 +56,6 @@
56
56
  font-weight: 500;
57
57
  }
58
58
 
59
- .j-modal .modal-header .modal-close {
60
- display: inline-flex;
61
- align-items: center;
62
- justify-content: center;
63
- width: var(--modal-close-icon-size);
64
- height: var(--modal-close-icon-size);
65
- font-size: var(--modal-close-font-size);
66
- color: var(--modal-close-color);
67
- text-align: center;
68
- }
69
-
70
- .j-modal .modal-header .modal-close:focus-within {
71
- outline: 2px solid var(--tone-solid);
72
- color: var(--tone-solid);
73
- }
74
-
75
- .j-modal .modal-header .modal-close:hover {
76
- color: var(--tone-solid);
77
- background-color: var(--tone-subtle);
78
- }
79
-
80
59
  .j-modal .modal-body {
81
60
  padding: var(--modal-body-padding);
82
61
  overflow-y: auto;
@@ -90,7 +69,11 @@
90
69
  }
91
70
 
92
71
  .j-modal.is-fullscreen .modal-header {
93
- --modal-header-padding: calc(var(--space) * 4);
72
+ --modal-header-padding: var(--s4);
73
+ }
74
+
75
+ .j-modal:not(.is-fullscreen) .modal-header:has(.modal-close) {
76
+ --modal-header-padding: var(--s3) var(--s4) 0;
94
77
  }
95
78
 
96
79
  .j-modal.is-fullscreen .modal-body {
@@ -98,7 +81,7 @@
98
81
  }
99
82
 
100
83
  .j-modal.is-fullscreen .modal-footer {
101
- --modal-footer-padding: calc(var(--space) * 4);
84
+ --modal-footer-padding: var(--s4);
102
85
  }
103
86
 
104
87
  .j-modal .modal-footer {
@@ -7,7 +7,7 @@
7
7
  height: 100%;
8
8
  background-color: var(--offcanvas-overlay-background,
9
9
  var(--ui-overlay-muted));
10
- z-index: var(--z-index-overlay);
10
+ z-index: var(--z-overlay);
11
11
  opacity: 0;
12
12
  transition: opacity 0.3s ease;
13
13
  }
@@ -18,7 +18,7 @@
18
18
 
19
19
  .j-offcanvas {
20
20
  position: fixed;
21
- z-index: var(--z-index-offcanvas);
21
+ z-index: var(--z-offcanvas);
22
22
  background: var(--offcanvas-background, var(--ui-bg));
23
23
  box-shadow: var(--offcanvas-box-shadow, var(--shadow-md));
24
24
  --offcanvas-border: 1px solid var(--ui-border-subtle);
@@ -13,7 +13,7 @@
13
13
  display: flex;
14
14
  justify-content: center;
15
15
  align-items: center;
16
- gap: var(--pagination-gap, calc(var(--space) * 1));
16
+ gap: var(--pagination-gap, var(--space));
17
17
  margin: 0;
18
18
  padding: 0;
19
19
  }
package/src/css/popup.css CHANGED
@@ -8,8 +8,8 @@
8
8
  background-color: var(--popup-background, var(--ui-popup-background));
9
9
  backdrop-filter: var(--popup-backdrop-filter, blur(4px));
10
10
  display: flex;
11
- padding: var(--popup-layout-padding, calc(var(--space) * 4));
12
- z-index: var(--z-index-popup);
11
+ padding: var(--popup-layout-padding, var(--s4));
12
+ z-index: var(--z-popup);
13
13
  }
14
14
 
15
15
  .j-popup-layout,
@@ -37,12 +37,12 @@
37
37
 
38
38
  .j-swiper .swiper-slide-title {
39
39
  position: absolute;
40
- right: var(--swiper-title-inset, calc(var(--space) * 3));
41
- bottom: var(--swiper-title-inset, calc(var(--space) * 3));
42
- left: var(--swiper-title-inset, calc(var(--space) * 3));
40
+ right: var(--swiper-title-inset, var(--s3));
41
+ bottom: var(--swiper-title-inset, var(--s3));
42
+ left: var(--swiper-title-inset, var(--s3));
43
43
  z-index: 1;
44
44
  display: block;
45
- padding: calc(var(--space) * 1.5) calc(var(--space) * 2);
45
+ padding: calc(var(--space) * 1.5) var(--s2);
46
46
  overflow: hidden;
47
47
  color: var(--swiper-title-color, #fff);
48
48
  font-size: var(--swiper-title-font-size, var(--font-size-lg));
@@ -64,9 +64,9 @@
64
64
  }
65
65
 
66
66
  .j-swiper .swiper-pagination.is-horizontal {
67
- right: calc(var(--space) * 3);
68
- bottom: calc(var(--space) * 2);
69
- left: calc(var(--space) * 3);
67
+ right: var(--s3);
68
+ bottom: var(--s2);
69
+ left: var(--s3);
70
70
  }
71
71
 
72
72
  .j-swiper .swiper-pagination-indicator {
@@ -125,11 +125,11 @@
125
125
  }
126
126
 
127
127
  .j-swiper .swiper-navigation.is-prev {
128
- left: calc(var(--space) * 2);
128
+ left: var(--s2);
129
129
  }
130
130
 
131
131
  .j-swiper .swiper-navigation.is-next {
132
- right: calc(var(--space) * 2);
132
+ right: var(--s2);
133
133
  }
134
134
 
135
135
  .j-swiper .swiper-navigation svg {
@@ -146,9 +146,9 @@
146
146
 
147
147
  @media (max-width: 640px) {
148
148
  .j-swiper .swiper-slide-title {
149
- right: calc(var(--space) * 2);
150
- bottom: calc(var(--space) * 2);
151
- left: calc(var(--space) * 2);
149
+ right: var(--s2);
150
+ bottom: var(--s2);
151
+ left: var(--s2);
152
152
  font-size: var(--font-size-md);
153
153
  }
154
154
 
package/src/css/tabs.css CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  .j-tabs .tab-list .tab-item {
42
42
  flex-shrink: 0;
43
- padding: var(--tab-list-item-padding, calc(var(--space) * 2) calc(var(--space) * 3));
43
+ padding: var(--tab-list-item-padding, var(--s2) var(--s3));
44
44
  margin: var(--tab-list-item-margin, 0);
45
45
  cursor: pointer;
46
46
  }
@@ -75,7 +75,7 @@
75
75
  }
76
76
 
77
77
  .j-tabs .tab-panel {
78
- padding: var(--tab-panel-padding, calc(var(--space) * 2) calc(var(--space) * 3));
78
+ padding: var(--tab-panel-padding, var(--s2) var(--s3));
79
79
  margin: var(--tab-panel-margin, 0);
80
80
  }
81
81
 
@@ -83,6 +83,7 @@
83
83
  display: none;
84
84
  margin: var(--tab-panel-item-margin, 0);
85
85
  position: relative;
86
+ min-height: 1.25em;
86
87
  }
87
88
 
88
89
  .j-tabs .tab-panel .panel-item.is-active {