vanilla-jui 1.7.34 → 1.7.36

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 (37) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +5 -10
  5. package/src/components/accordion.ts +2 -2
  6. package/src/components/toc.ts +1 -1
  7. package/src/css/animation.css +2 -8
  8. package/src/css/card.css +4 -4
  9. package/src/css/font.css +6 -3
  10. package/src/css/gradient.css +128 -63
  11. package/src/css/icon.css +1 -5
  12. package/src/css/layout.css +15 -12
  13. package/src/css/status.css +5 -8
  14. package/src/css/themes/default/accordion.css +8 -7
  15. package/src/css/themes/default/avatar.css +3 -4
  16. package/src/css/themes/default/badge.css +2 -2
  17. package/src/css/themes/default/breadcrumb.css +11 -12
  18. package/src/css/themes/default/button.css +7 -15
  19. package/src/css/themes/default/captcha.css +69 -71
  20. package/src/css/themes/default/drop.css +1 -1
  21. package/src/css/themes/default/editor.css +16 -16
  22. package/src/css/themes/default/flow.css +6 -13
  23. package/src/css/themes/default/form.css +49 -52
  24. package/src/css/themes/default/index.css +1 -1
  25. package/src/css/themes/default/loading.css +62 -47
  26. package/src/css/themes/default/menu.css +133 -79
  27. package/src/css/themes/default/modal.css +7 -11
  28. package/src/css/themes/default/offcanvas.css +12 -13
  29. package/src/css/themes/default/swiper.css +25 -23
  30. package/src/css/themes/default/tabs.css +3 -3
  31. package/src/css/themes/default/theme-palette.css +2 -2
  32. package/src/css/themes/default/tip.css +8 -10
  33. package/src/css/themes/default/toast.css +2 -2
  34. package/src/css/themes/default/toolbar.css +4 -6
  35. package/src/css/themes/default/tooltip.css +4 -8
  36. package/src/css/tokens.css +18 -57
  37. package/src/css/tokens_/345/211/257/346/234/254.css +1 -1
@@ -1,18 +1,17 @@
1
1
  @layer components {
2
2
  .j-breadcrumb {
3
- --breadcrumb-font-size: var(--font-size-md);
4
3
  --breadcrumb-icon-size: var(--font-size-md);
5
4
  --breadcrumb-link-fg: var(--tone-text);
6
5
 
7
- font-size: var(--breadcrumb-font-size);
6
+ font-size: var(--breadcrumb-font-size, var(--font-size-md));
8
7
  color: var(--ui-fg-muted);
9
8
 
10
9
  white-space: nowrap;
11
10
  user-select: none;
12
11
  }
13
12
 
14
- .j-breadcrumb>ol,
15
- .j-breadcrumb>ul {
13
+ .j-breadcrumb > ol,
14
+ .j-breadcrumb > ul {
16
15
  display: flex;
17
16
  flex-wrap: wrap;
18
17
  justify-content: flex-start;
@@ -21,26 +20,26 @@
21
20
  padding: 0;
22
21
  }
23
22
 
24
- .j-breadcrumb>ol li,
25
- .j-breadcrumb>ul li {
23
+ .j-breadcrumb > ol li,
24
+ .j-breadcrumb > ul li {
26
25
  display: flex;
27
26
  align-items: center;
28
27
  justify-content: center;
29
28
  }
30
29
 
31
- .j-breadcrumb li+li::before {
30
+ .j-breadcrumb li + li::before {
32
31
  content: '/';
33
32
  }
34
33
 
35
- .j-breadcrumb.is-dot li+li::before {
34
+ .j-breadcrumb.is-dot li + li::before {
36
35
  content: '•';
37
36
  }
38
37
 
39
- .j-breadcrumb.is-arrow li+li::before {
38
+ .j-breadcrumb.is-arrow li + li::before {
40
39
  content: '>';
41
40
  }
42
41
 
43
- .j-breadcrumb.is-dash li+li::before {
42
+ .j-breadcrumb.is-dash li + li::before {
44
43
  content: '–';
45
44
  }
46
45
 
@@ -80,7 +79,7 @@
80
79
  justify-content: center;
81
80
  }
82
81
 
83
- .j-breadcrumb li+li::before {
82
+ .j-breadcrumb li + li::before {
84
83
  color: var(--ui-fg-soft);
85
84
  }
86
85
 
@@ -104,4 +103,4 @@
104
103
  .j-breadcrumb.is-right ol {
105
104
  justify-content: flex-end;
106
105
  }
107
- }
106
+ }
@@ -1,24 +1,16 @@
1
1
  @layer components {
2
2
  .j-btn {
3
3
  --btn-font-size: var(--font-size-md);
4
- --btn-fg: inherit;
5
- --btn-padding: 0 12px;
6
- --btn-border-color: transparent;
7
- --btn-radius: var(--radius-md);
8
- --btn-box-shadow: var(--shadow-xs);
9
-
10
4
  gap: 4px;
11
5
  font-size: var(--btn-font-size);
12
6
  height: var(--btn-height, var(--el-height));
13
7
  line-height: 1;
14
- color: var(--btn-fg);
8
+ color: var(--btn-fg, inherit);
15
9
  background-color: var(--btn-bg);
16
- padding: var(--btn-padding);
17
- border-width: 1px;
18
- border-style: solid;
19
- border-color: var(--btn-border-color);
20
- border-radius: var(--btn-radius);
21
- box-shadow: var(--btn-box-shadow);
10
+ padding: var(--btn-padding, 0 12px);
11
+ border: 1px solid var(--btn-border-color, transparent);
12
+ border-radius: var(--btn-radius, var(--radius-md));
13
+ box-shadow: var(--btn-box-shadow, var(--shadow-xs));
22
14
  outline: none;
23
15
  backdrop-filter: blur(4px);
24
16
 
@@ -33,7 +25,7 @@
33
25
  touch-action: manipulation;
34
26
  transition-property: box-shadow, opacity, transform;
35
27
  transition-duration: 0.15s;
36
- transition-timing-function: var(--bezier);
28
+ transition-timing-function: ease;
37
29
  }
38
30
 
39
31
  .j-btn svg {
@@ -274,4 +266,4 @@
274
266
  .j-btns.is-vertical .j-btn:last-child {
275
267
  border-bottom-left-radius: var(--btn-radius);
276
268
  }
277
- }
269
+ }
@@ -1,125 +1,123 @@
1
1
  /* cap captcha */
2
2
  .j-cap-field {
3
- position: relative;
4
- width: 100%;
5
- min-width: 0;
6
- height: 56px;
3
+ position: relative;
4
+ width: 100%;
5
+ min-width: 0;
6
+ height: 56px;
7
7
  }
8
8
 
9
9
  .j-cap-field .cap-control {
10
- display: flex;
11
- box-sizing: border-box;
12
- align-items: center;
13
- gap: 8px;
14
- width: 100%;
15
- height: 100%;
16
- padding: 8px 12px;
17
- border: 1px solid var(--ui-border);
18
- border-radius: 6px;
19
- background: var(--ui-bg);
20
- color: var(--ui-fg);
21
- font: inherit;
22
- font-size: var(--font-size-md);
23
- line-height: 18px;
24
- text-align: start;
25
- cursor: pointer;
26
- transition:
27
- background-color 150ms,
28
- border-color 150ms;
10
+ display: flex;
11
+ box-sizing: border-box;
12
+ align-items: center;
13
+ gap: 8px;
14
+ width: 100%;
15
+ height: 100%;
16
+ padding: 8px 12px;
17
+ border: var(--border);
18
+ border-radius: 6px;
19
+ background: var(--ui-bg);
20
+ color: var(--ui-fg);
21
+ font: inherit;
22
+ font-size: var(--font-size-md);
23
+ line-height: 18px;
24
+ text-align: start;
25
+ cursor: pointer;
26
+ transition: all 0.2s ease;
29
27
  }
30
28
 
31
29
  .j-cap-field .cap-control[data-state='idle']:hover {
32
- border-color: var(--tone-border-strong);
33
- background: var(--tone-soft);
30
+ border-color: var(--tone-border-strong);
31
+ background: var(--tone-soft);
34
32
  }
35
33
 
36
34
  .j-cap-field .cap-control:focus-visible {
37
- outline: 2px solid var(--tone-solid);
38
- outline-offset: 2px;
35
+ outline: 2px solid var(--tone-solid);
36
+ outline-offset: 2px;
39
37
  }
40
38
 
41
39
  .j-cap-field .cap-control[data-state='loading'],
42
40
  .j-cap-field .cap-control[data-state='verifying'] {
43
- cursor: wait;
41
+ cursor: wait;
44
42
  }
45
43
 
46
44
  .j-cap-field .cap-control[data-state='verified'] {
47
- border-color: var(--state-success-border);
48
- background: var(--state-success-subtle);
49
- color: var(--state-success-text);
50
- cursor: default;
45
+ border-color: var(--state-success-border);
46
+ background: var(--state-success-subtle);
47
+ color: var(--state-success-text);
48
+ cursor: default;
51
49
  }
52
50
 
53
51
  .j-cap-field .cap-control[data-state='error'],
54
52
  .j-cap-field .cap-control[data-state='rate-limited'] {
55
- border-color: var(--state-error-border);
56
- color: var(--state-error-text);
53
+ border-color: var(--state-error-border);
54
+ color: var(--state-error-text);
57
55
  }
58
56
 
59
57
  .j-cap-field .cap-control-icon,
60
- .j-cap-field .cap-control-icon>svg,
58
+ .j-cap-field .cap-control-icon > svg,
61
59
  .j-cap-field .cap-control-box {
62
- display: block;
63
- width: 20px;
64
- height: 20px;
60
+ display: block;
61
+ width: 20px;
62
+ height: 20px;
65
63
  }
66
64
 
67
65
  .j-cap-field .cap-control-icon {
68
- flex: 0 0 20px;
69
- color: var(--tone-text);
66
+ flex: 0 0 20px;
67
+ color: var(--tone-text);
70
68
  }
71
69
 
72
70
  .j-cap-field .cap-control[data-state='verified'] .cap-control-icon,
73
71
  .j-cap-field .cap-control[data-state='error'] .cap-control-icon,
74
72
  .j-cap-field .cap-control[data-state='rate-limited'] .cap-control-icon {
75
- color: inherit;
73
+ color: inherit;
76
74
  }
77
75
 
78
76
  .j-cap-field .cap-control-box {
79
- border: 1.5px solid var(--ui-border);
80
- border-radius: 4px;
77
+ border: 1.5px solid var(--ui-border);
78
+ border-radius: 4px;
81
79
  }
82
80
 
83
81
  .j-cap-field .cap-control-label {
84
- flex: 1 1 0;
85
- min-width: 0;
86
- overflow-wrap: anywhere;
82
+ flex: 1 1 0;
83
+ min-width: 0;
84
+ overflow-wrap: anywhere;
87
85
  }
88
86
 
89
87
  .j-cap-field .cap-control-percent {
90
- flex: 0 0 4ch;
91
- white-space: nowrap;
92
- color: var(--tone-caption);
93
- font-size: 12px;
94
- font-variant-numeric: tabular-nums;
95
- text-align: end;
88
+ flex: 0 0 4ch;
89
+ white-space: nowrap;
90
+ color: var(--tone-caption);
91
+ font-size: 12px;
92
+ font-variant-numeric: tabular-nums;
93
+ text-align: end;
96
94
  }
97
95
 
98
96
  .j-cap-field .cap-progress {
99
- position: absolute;
100
- inset: auto 1px 1px;
101
- height: 2px;
102
- overflow: hidden;
103
- border-radius: 0 0 5px 5px;
104
- pointer-events: none;
97
+ position: absolute;
98
+ inset: auto 1px 1px;
99
+ height: 2px;
100
+ overflow: hidden;
101
+ border-radius: 0 0 5px 5px;
102
+ pointer-events: none;
105
103
  }
106
104
 
107
- .j-cap-field .cap-progress>span {
108
- display: block;
109
- height: 100%;
110
- background: var(--tone-solid);
105
+ .j-cap-field .cap-progress > span {
106
+ display: block;
107
+ height: 100%;
108
+ background: var(--tone-solid);
111
109
  }
112
110
 
113
111
  .j-cap-field .cap-spinner {
114
- animation: animate-spin 800ms linear infinite;
112
+ animation: animate-spin 800ms linear infinite;
115
113
  }
116
114
 
117
115
  @media (prefers-reduced-motion: reduce) {
118
- .j-cap-field .cap-control {
119
- transition: none;
120
- }
121
-
122
- .j-cap-field .cap-spinner {
123
- animation: none;
124
- }
125
- }
116
+ .j-cap-field .cap-control {
117
+ transition: none;
118
+ }
119
+
120
+ .j-cap-field .cap-spinner {
121
+ animation: none;
122
+ }
123
+ }
@@ -1,6 +1,6 @@
1
1
  @layer components {
2
2
  .drop-container {
3
- border: 1px solid var(--ui-border);
3
+ border: var(--border);
4
4
  border-radius: var(--radius-sm);
5
5
  background: var(--ui-bg);
6
6
  color: var(--ui-fg);
@@ -142,7 +142,7 @@
142
142
  margin: var(--editor-p-space) 0;
143
143
  }
144
144
 
145
- .j-editor>div {
145
+ .j-editor > div {
146
146
  margin: var(--editor-block-space) 0;
147
147
  }
148
148
 
@@ -342,7 +342,7 @@
342
342
  display: flex;
343
343
  }
344
344
 
345
- .j-editor ul[data-type='taskList'] li>label {
345
+ .j-editor ul[data-type='taskList'] li > label {
346
346
  flex: none;
347
347
  user-select: none;
348
348
  }
@@ -356,7 +356,7 @@
356
356
  }
357
357
 
358
358
  .j-editor input[type='checkbox'] {
359
- border: 1px solid var(--ui-border);
359
+ border: var(--border);
360
360
  border-radius: var(--checkbox-radius, var(--radius-sm));
361
361
  background: var(--ui-bg);
362
362
  clear: none;
@@ -366,7 +366,7 @@
366
366
  height: 1rem;
367
367
  margin: 0;
368
368
  appearance: none;
369
- transition: all 0.05s ease-in-out;
369
+ transition: all 0.2s ease;
370
370
  }
371
371
 
372
372
  .j-editor:not(:has(.j-checkbox)) input[type='checkbox']:checked {
@@ -394,11 +394,11 @@
394
394
  color: var(--tone-subtitle);
395
395
  }
396
396
 
397
- .j-editor blockquote>* {
397
+ .j-editor blockquote > * {
398
398
  margin: 0;
399
399
  }
400
400
 
401
- .j-editor blockquote>*+* {
401
+ .j-editor blockquote > * + * {
402
402
  margin-top: 4px;
403
403
  }
404
404
 
@@ -427,8 +427,8 @@
427
427
  border: 1px solid var(--editor-border-subtle);
428
428
  border-radius: var(--radius-sm);
429
429
  word-break: break-word;
430
- background: var(--tone-code-bg);
431
- color: var(--tone-code-fg);
430
+ background: var(--ui-code-bg);
431
+ color: var(--ui-code-fg);
432
432
  }
433
433
 
434
434
  .j-editor code:not([class*='language-']) {
@@ -506,7 +506,7 @@
506
506
  scrollbar-color: var(--ui-border) transparent;
507
507
  }
508
508
 
509
- pre .code-header+code[class*='language-'] {
509
+ pre .code-header + code[class*='language-'] {
510
510
  padding: 0.5rem 1rem 0.75rem;
511
511
  }
512
512
 
@@ -722,22 +722,22 @@
722
722
  transition: transform 0.2s ease;
723
723
  }
724
724
 
725
- .j-editor details[open]>summary::before {
725
+ .j-editor details[open] > summary::before {
726
726
  transform: rotate(90deg);
727
727
  }
728
728
 
729
729
  .j-editor details[open] p,
730
730
  .j-editor details[open] ul,
731
731
  .j-editor details[open] ol,
732
- .j-editor details[open]>* {
732
+ .j-editor details[open] > * {
733
733
  margin-bottom: 1em;
734
734
  }
735
735
 
736
- .j-editor details[open]>summary+* {
736
+ .j-editor details[open] > summary + * {
737
737
  margin-top: 0;
738
738
  }
739
739
 
740
- .j-editor details[open]>*:last-child {
740
+ .j-editor details[open] > *:last-child {
741
741
  margin-bottom: 0;
742
742
  }
743
743
 
@@ -791,11 +791,11 @@
791
791
  /* ============================================
792
792
  Block Item - 通用块级元素
793
793
  ============================================ */
794
- .j-editor>*:first-child {
794
+ .j-editor > *:first-child {
795
795
  margin-top: 0;
796
796
  }
797
797
 
798
- .j-editor>*:last-child {
798
+ .j-editor > *:last-child {
799
799
  margin-bottom: 0;
800
800
  }
801
801
 
@@ -854,4 +854,4 @@
854
854
  .mobile .j-editor p {
855
855
  --editor-block-space: 1.5rem;
856
856
  }
857
- }
857
+ }
@@ -1,18 +1,13 @@
1
1
  @layer components {
2
- .j-flow {
3
- --flow-gap: 8px;
4
- --flow-step-size: 28px;
5
- }
6
-
7
2
  .j-flow,
8
3
  .j-flow .flow-header {
9
4
  display: grid;
10
- gap: var(--flow-gap);
5
+ gap: 8px;
11
6
  }
12
7
 
13
8
  .j-flow .flow-steps {
14
9
  display: flex;
15
- gap: var(--flow-gap);
10
+ gap: 16px;
16
11
  list-style: none;
17
12
  margin: 0;
18
13
  padding: 0;
@@ -44,8 +39,8 @@
44
39
  border-radius: 999px;
45
40
  display: inline-flex;
46
41
  justify-content: center;
47
- height: var(--flow-step-size);
48
- min-width: var(--flow-step-size);
42
+ height: 28px;
43
+ min-width: 28px;
49
44
  }
50
45
 
51
46
  .j-flow .flow-step.is-active .flow-step-button {
@@ -63,11 +58,9 @@
63
58
  }
64
59
 
65
60
  .j-flow .flow-footer {
66
- border-top: 1px solid var(--ui-border-subtle);
67
61
  display: flex;
68
- gap: 4px;
62
+ gap: 8px;
69
63
  justify-content: flex-end;
70
- padding-top: var(--flow-gap);
71
64
  position: relative;
72
65
  }
73
- }
66
+ }