vanilla-jui 1.3.9 → 1.3.11

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 (76) 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 +3 -2
  5. package/src/components/accordion.js +373 -0
  6. package/src/components/components.js +0 -0
  7. package/src/components/drop.js +437 -0
  8. package/src/components/flow.js +1133 -0
  9. package/src/components/form.js +585 -0
  10. package/src/components/icons.js +83 -0
  11. package/src/components/menu.js +422 -0
  12. package/src/components/modal.js +1174 -0
  13. package/src/components/offcanvas.js +332 -0
  14. package/src/components/pagination.js +536 -0
  15. package/src/components/parabola.js +295 -0
  16. package/src/components/sticky.js +271 -0
  17. package/src/components/swiper.js +1123 -0
  18. package/src/components/tabs.js +746 -0
  19. package/src/components/theme.js +353 -0
  20. package/src/components/toast.js +329 -0
  21. package/src/components/toc.js +226 -0
  22. package/src/components/tooltip.js +86 -0
  23. package/src/components/validator.js +586 -0
  24. package/src/core/Component.js +248 -0
  25. package/src/css/accordion.css +72 -0
  26. package/src/css/animation.css +177 -0
  27. package/src/css/avatar.css +62 -0
  28. package/src/css/badge.css +66 -0
  29. package/src/css/breadcrumb.css +106 -0
  30. package/src/css/button.css +296 -0
  31. package/src/css/card.css +151 -0
  32. package/src/css/color.css +1163 -0
  33. package/src/css/color_p3.css +1172 -0
  34. package/src/css/components.css +26 -0
  35. package/src/css/content.css +716 -0
  36. package/src/css/divider.css +9 -0
  37. package/src/css/drop.css +28 -0
  38. package/src/css/flow.css +86 -0
  39. package/src/css/font.css +23 -0
  40. package/src/css/form.css +919 -0
  41. package/src/css/gradient.css +224 -0
  42. package/src/css/icon.css +63 -0
  43. package/src/css/index.css +12 -0
  44. package/src/css/layout.css +782 -0
  45. package/src/css/loading.css +38 -0
  46. package/src/css/menu.css +564 -0
  47. package/src/css/modal.css +94 -0
  48. package/src/css/offcanvas.css +104 -0
  49. package/src/css/pagination.css +25 -0
  50. package/src/css/popup.css +69 -0
  51. package/src/css/skeleton.css +76 -0
  52. package/src/css/status.css +56 -0
  53. package/src/css/swiper.css +160 -0
  54. package/src/css/table.css +52 -0
  55. package/src/css/tabs.css +95 -0
  56. package/src/css/tag.css +97 -0
  57. package/src/css/theme-palette.css +59 -0
  58. package/src/css/tip.css +84 -0
  59. package/src/css/toast.css +154 -0
  60. package/src/css/toc.css +38 -0
  61. package/src/css/tokens.css +1295 -0
  62. package/src/css/toolbar.css +115 -0
  63. package/src/css/tooltip.css +19 -0
  64. package/src/icons/index.js +30 -0
  65. package/src/index.js +45 -0
  66. package/src/locales/index.js +45 -0
  67. package/src/locales/index.min.js +1 -0
  68. package/src/utilities/browser.js +111 -0
  69. package/src/utilities/cache.js +159 -0
  70. package/src/utilities/core.js +502 -0
  71. package/src/utilities/debug.js +103 -0
  72. package/src/utilities/dom.js +313 -0
  73. package/src/utilities/events.js +69 -0
  74. package/src/utilities/http.js +30 -0
  75. package/src/utilities/legacy-dom.js +179 -0
  76. package/src/utilities/storage.js +46 -0
@@ -0,0 +1,97 @@
1
+ @layer components {
2
+ .j-tag {
3
+ display: inline-flex;
4
+ justify-content: center;
5
+ align-items: center;
6
+ gap: var(--tag-gap, var(--space));
7
+ padding: 0 var(--tag-padding, calc(var(--space) * 1.5));
8
+ height: var(--tag-height, var(--el-height-xs));
9
+ line-height: var(--tag-line-height, var(--line-height-self));
10
+ font-size: var(--tag-font-size, var(--font-size-sm));
11
+ font-weight: var(--font-normal);
12
+ border-radius: var(--tag-radius, var(--radius-md));
13
+ border: 1px solid var(--tag-border-color, var(--ui-border));
14
+ color: var(--tag-foreground, var(--ui-fg));
15
+ background: var(--tag-background, var(--ui-bg));
16
+ box-shadow: var(--tag-box-shadow, var(--shadow-sm));
17
+ }
18
+
19
+ .j-font-md .j-tag {
20
+ --tag-padding: var(--s2);
21
+ }
22
+
23
+ .j-tag.is-contrast {
24
+ --tag-background: var(--ui-fg);
25
+ --tag-foreground: var(--ui-bg);
26
+ }
27
+
28
+ .j-tag.is-primary {
29
+ --tag-background: var(--tone-solid);
30
+ --tag-foreground: var(--tone-fg);
31
+ --tag-border-color: var(--tone-solid);
32
+ }
33
+
34
+ .j-tag.is-secondary {
35
+ --tag-background: var(--tone-soft);
36
+ --tag-foreground: var(--tone-text);
37
+ --tag-border-color: transparent;
38
+ }
39
+
40
+ .j-tag.is-outline {
41
+ --tag-background: transparent;
42
+ --tag-foreground: var(--tone-solid);
43
+ --tag-border-color: var(--tone-solid);
44
+ }
45
+
46
+ .j-tag.is-ghost {
47
+ --tag-border-color: transparent;
48
+ --tag-shadow: none;
49
+ }
50
+
51
+ .j-tag span {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ }
56
+
57
+ .j-tag img,
58
+ .j-tag svg {
59
+ width: var(--tag-icon-size, var(--font-size-sm));
60
+ height: var(--tag-icon-size, var(--font-size-sm));
61
+ }
62
+
63
+ .j-tag:hover {
64
+ opacity: var(--opacity-hover, 0.9);
65
+ }
66
+
67
+ .j-tag.is-default:hover {
68
+ background-color: var(--ui-surface-hover);
69
+ }
70
+
71
+ .j-tag.is-outline:hover,
72
+ .j-tag.is-ghost:hover {
73
+ background-color: var(--tone-subtle);
74
+ }
75
+
76
+ .j-tag .el-icon[data-action='close']:hover {
77
+ color: var(--tone-fg);
78
+ background-color: var(--tone-solid);
79
+ border-radius: 50%;
80
+ }
81
+
82
+ .j-tag.is-default .el-icon[data-action='close']:hover,
83
+ .j-tag.is-ghost .el-icon[data-action='close']:hover {
84
+ background-color: var(--ui-fg);
85
+ color: var(--ui-bg-subtle);
86
+ }
87
+
88
+ .j-tag.is-contrast .el-icon[data-action='close']:hover {
89
+ color: var(--ui-fg);
90
+ background-color: var(--ui-bg);
91
+ }
92
+
93
+ .j-tag.is-primary .el-icon[data-action='close']:hover {
94
+ color: var(--tone-solid);
95
+ background-color: var(--tone-fg);
96
+ }
97
+ }
@@ -0,0 +1,59 @@
1
+ @layer components {
2
+ .j-theme-palette {
3
+ padding: var(--palette-padding, var(--s4));
4
+ }
5
+
6
+ .j-theme-palette>h3 {
7
+ margin: var(--palette-title-margin, var(--s2) 0);
8
+ }
9
+
10
+ .j-theme-palette .palette-container {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: var(--palette-container-gap, var(--s4));
14
+ }
15
+
16
+ .j-theme-palette .palette-container .palette-item {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--palette-item-gap, var(--s2));
20
+ }
21
+
22
+ .j-theme-palette .palette-container .palette-item .item-title {
23
+ font-size: var(--palette-item-title-font-size, var(--font-size-md));
24
+ line-height: var(--line-height);
25
+ margin: 0;
26
+ font-weight: var(--font-bold);
27
+ }
28
+
29
+ .j-theme-palette .palette-container .palette-item .items {
30
+ display: grid;
31
+ grid-template-columns: repeat(3, 1fr);
32
+ gap: var(--space);
33
+ }
34
+
35
+ .j-theme-palette .palette-container .palette-item .items>button {
36
+ padding-left: var(--s2);
37
+ padding-right: var(--s2);
38
+ min-width: 0;
39
+ overflow: hidden;
40
+ }
41
+
42
+ .j-theme-palette .palette-container .palette-item[data-palette='theme'] .items>button {
43
+ justify-content: flex-start;
44
+ }
45
+
46
+ .j-theme-palette .palette-container .palette-item .items>button span.item-hex {
47
+ display: inline-block;
48
+ width: var(--font-size-sm);
49
+ height: var(--font-size-sm);
50
+ border-radius: 50%;
51
+ flex-shrink: 0;
52
+ margin-right: var(--space);
53
+ }
54
+
55
+ .j-theme-palette .palette-container .palette-item .items>button span.button-text {
56
+ overflow: hidden;
57
+ text-overflow: ellipsis;
58
+ }
59
+ }
@@ -0,0 +1,84 @@
1
+ @layer components {
2
+ .j-tip {
3
+ position: relative;
4
+ display: grid;
5
+ width: var(--tip-width, 100%);
6
+ grid-template-columns: 0 1fr;
7
+ align-items: flex-start;
8
+ row-gap: var(--tip-gap, calc(var(--space, 0.25rem) * 2));
9
+ border-radius: var(--tip-border-radius, var(--radius-md));
10
+ border-style: var(--tip-border-style, solid);
11
+ border-width: var(--tip-border-width, 1px);
12
+ border-color: var(--tip-border-color, var(--ui-border));
13
+ padding-inline: calc(var(--space, 0.25rem) * 4);
14
+ padding-block: calc(var(--space, 0.25rem) * 3);
15
+ font-size: var(--tip-font-size, var(--font-size-md));
16
+ color: var(--tip-color, var(--ui-fg));
17
+ background-color: var(--tip-background, var(--ui-bg));
18
+ box-shadow: var(--tip-box-shadow, var(--shadow-sm));
19
+ }
20
+
21
+ .j-tip:has(.tip-icon) {
22
+ column-gap: calc(var(--space, 0.25rem) * 3);
23
+ grid-template-columns: var(--s4) 1fr;
24
+ }
25
+
26
+ .j-font-md .j-tip:has(.tip-icon) {
27
+ column-gap: calc(var(--space, 0.25rem) * 5);
28
+ }
29
+
30
+ .j-tip .tip-icon,
31
+ .j-tip .tip-icon svg {
32
+ width: var(--tip-icon-size, var(--font-size-xl));
33
+ height: var(--tip-icon-size, var(--font-size-xl));
34
+ }
35
+
36
+ .j-tip .tip-icon {
37
+ color: var(--tip-icon-color, var(--tip-color));
38
+ transform: translateY(calc(var(--space, 0.25rem) * 0.5));
39
+ margin: 0;
40
+ }
41
+
42
+ .j-tip .tip-title {
43
+ grid-column-start: 2;
44
+ overflow: hidden;
45
+ display: -webkit-box;
46
+ -webkit-box-orient: vertical;
47
+ -webkit-line-clamp: 1;
48
+ line-clamp: 1;
49
+ line-height: var(--tip-title-line-height, var(--line-height-paragraph));
50
+ font-weight: var(--font-medium, 500);
51
+ margin: 0;
52
+ }
53
+
54
+ .j-tip .tip-content {
55
+ grid-column-start: 2;
56
+ display: grid;
57
+ justify-items: start;
58
+ gap: calc(var(--space, 0.25rem) * 2);
59
+ line-height: var(--line-height-paragraph);
60
+ margin: 0;
61
+ }
62
+
63
+ .j-tip .tip-content>* {
64
+ margin: 0;
65
+ }
66
+
67
+ .j-tip.is-success {
68
+ --tip-border-color: var(--state-success);
69
+ --tip-icon-color: var(--state-success);
70
+ --tip-background: var(--state-success-muted);
71
+ }
72
+
73
+ .j-tip.is-warning {
74
+ --tip-border-color: var(--state-warning);
75
+ --tip-icon-color: var(--state-warning);
76
+ --tip-background: var(--state-warning-muted);
77
+ }
78
+
79
+ .j-tip.is-danger {
80
+ --tip-border-color: var(--state-danger);
81
+ --tip-icon-color: var(--state-danger);
82
+ --tip-background: var(--state-danger-muted);
83
+ }
84
+ }
@@ -0,0 +1,154 @@
1
+ @layer components {
2
+ .j-toast-container {
3
+ position: fixed;
4
+ top: var(--toast-container-offset, var(--s2));
5
+ right: var(--toast-container-offset, var(--s2));
6
+ z-index: var(--z-toast);
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--toast-container-gap, var(--s2));
10
+ align-items: center;
11
+ left: 50%;
12
+ transform: translateX(-50%);
13
+ pointer-events: none;
14
+ }
15
+
16
+ .j-toast {
17
+ display: flex;
18
+ align-items: center;
19
+ padding: var(--toast-padding, var(--s3) var(--s4));
20
+ border-radius: var(--toast-border-radius, var(--radius-md));
21
+ box-shadow: var(--toast-box-shadow, var(--shadow-md));
22
+ font-size: var(--toast-font-size, var(--font-size-md));
23
+ font-weight: var(--toast-font-weight, var(--font-medium));
24
+ opacity: 0;
25
+
26
+ transform: translateY(-100%);
27
+
28
+ transition: all 0.3s ease-in-out;
29
+ cursor: pointer;
30
+ min-width: var(--toast-min-width, 200px);
31
+ max-width: var(--toast-max-width, 310px);
32
+ word-break: break-all;
33
+
34
+ pointer-events: auto;
35
+ }
36
+
37
+ .j-toast.is-shown {
38
+ opacity: 1;
39
+ transform: translateY(0);
40
+ }
41
+
42
+ .j-toast.is-hidden {
43
+ opacity: 0;
44
+ transform: translateY(-100%);
45
+ }
46
+
47
+ .j-toast .toast-icon {
48
+ margin-right: var(--s2);
49
+ width: var(--toast-icon-size, var(--font-size-lg));
50
+ }
51
+
52
+ .j-toast .toast-message {
53
+ flex: 1;
54
+ word-break: normal;
55
+ }
56
+
57
+ .j-toast.is-success {
58
+ color: var(--toast-success-color, var(--state-success));
59
+ background-color: var(--toast-success-background, var(--state-success-weak));
60
+ border: 1px solid var(--toast-success-border-color, var(--state-success-border));
61
+ }
62
+
63
+ .j-toast.is-success .toast-icon {
64
+ color: var(--toast-success-icon-color, var(--state-success));
65
+ }
66
+
67
+ .j-toast.is-error {
68
+ color: var(--toast-error-color, var(--state-danger));
69
+ background-color: var(--toast-error-background, var(--state-danger-weak));
70
+ border: 1px solid var(--toast-error-border-color, var(--state-danger-border));
71
+ }
72
+
73
+ .j-toast.is-error .toast-icon {
74
+ color: var(--toast-error-icon-color, var(--state-danger));
75
+ }
76
+
77
+ .j-toast.is-warning {
78
+ color: var(--toast-warning-color, var(--state-warning));
79
+ background-color: var(--toast-warning-background, var(--state-warning-weak));
80
+ border: 1px solid var(--toast-warning-border-color, var(--state-warning-border));
81
+ }
82
+
83
+ .j-toast.is-warning .toast-icon {
84
+ color: var(--toast-warning-icon-color, var(--state-warning));
85
+ }
86
+
87
+ .j-toast.is-info {
88
+ color: var(--toast-info-color, var(--ui-fg));
89
+ background-color: var(--toast-info-background, var(--ui-bg));
90
+ border: 1px solid var(--toast-info-border-color, var(--ui-border));
91
+ }
92
+
93
+ .j-toast.is-info .toast-icon {
94
+ color: var(--toast-info-icon-color, var(--ui-fg));
95
+ }
96
+
97
+ .j-toast.is-primary {
98
+ color: var(--toast-info-color, var(--tone-solid));
99
+ /* background-color: var(--toast-info-background, var(--tone-muted)); */
100
+ background-color: var(--toast-info-background, var(--tone-weak));
101
+ border: 1px solid var(--toast-info-border-color, var(--tone-border));
102
+ }
103
+
104
+ .j-toast.is-primary .toast-icon {
105
+ color: var(--toast-info-icon-color, var(--tone-solid));
106
+ }
107
+
108
+ .j-toast-lite {
109
+ position: fixed;
110
+ top: 45%;
111
+ left: 50%;
112
+ transform: translate(-50%, -50%);
113
+ transition: opacity var(--speed-sm) ease-in-out;
114
+ opacity: 0;
115
+ z-index: var(--z-toast);
116
+ font-size: var(--toast-lite-font-size, var(--font-size-md));
117
+ text-align: center;
118
+ color: var(--toast-lite-color, var(--ui-bg));
119
+ background: var(--toast-lite-background, var(--ui-fg));
120
+ border-radius: var(--toast-lite-border-radius, var(--radius-md));
121
+ padding: var(--toast-lite-padding, var(--s2) var(--s3));
122
+ max-width: var(--toast-lite-max-width, calc(var(--screen-sm) / 2));
123
+ user-select: none;
124
+ pointer-events: none;
125
+ }
126
+
127
+ .j-toast-lite.is-shown {
128
+ opacity: 1;
129
+ transform: scale(1);
130
+ }
131
+
132
+ .j-toast-lite.is-hidden {
133
+ opacity: 0;
134
+ transform: scale(0.9);
135
+ }
136
+
137
+ .j-toast.is-action {
138
+ flex-direction: column;
139
+ align-items: flex-start;
140
+ gap: calc(var(--space)*4);
141
+ color: var(--toast-info-color, var(--ui-fg));
142
+ background-color: var(--toast-info-background, var(--ui-bg));
143
+ border: 1px solid var(--toast-info-border-color, var(--ui-border));
144
+ min-width: 280px;
145
+ cursor: default;
146
+ }
147
+
148
+ .j-toast.is-action .toast-actions {
149
+ width: 100%;
150
+ display: flex;
151
+ justify-content: flex-end;
152
+ gap: var(--space);
153
+ }
154
+ }
@@ -0,0 +1,38 @@
1
+ @layer components {
2
+ .j-toc {
3
+ width: 100%;
4
+ }
5
+
6
+ .j-toc .toc-list {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 0;
10
+ }
11
+
12
+ .j-toc .toc-link {
13
+ padding: 0.375rem 0 0.375rem 0.75rem;
14
+ border-left: 2px solid transparent;
15
+ color: var(--tone-caption);
16
+ font-size: var(--font-size-sm);
17
+ text-decoration: none;
18
+ transition:
19
+ color 0.15s,
20
+ border-color 0.15s;
21
+ }
22
+
23
+ .j-toc .toc-link:hover,
24
+ .j-toc .toc-link.is-active {
25
+ color: var(--tone-heading);
26
+ }
27
+
28
+ .j-toc .toc-link.is-active {
29
+ border-left-color: var(--tone-solid);
30
+ }
31
+
32
+ .j-toc .toc-link.is-level-3,
33
+ .j-toc .toc-link.is-level-4,
34
+ .j-toc .toc-link.is-level-5,
35
+ .j-toc .toc-link.is-level-6 {
36
+ padding-left: 1.5rem;
37
+ }
38
+ }