vanilla-jui 1.3.9 → 1.3.10

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 (77) 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 +1176 -0
  33. package/src/css/color_p3.css +1184 -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 +211 -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 +111 -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 +98 -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/toast.min.css +1 -0
  61. package/src/css/toc.css +38 -0
  62. package/src/css/tokens.css +1324 -0
  63. package/src/css/toolbar.css +115 -0
  64. package/src/css/tooltip.css +19 -0
  65. package/src/icons/index.js +30 -0
  66. package/src/index.js +45 -0
  67. package/src/locales/index.js +45 -0
  68. package/src/locales/index.min.js +1 -0
  69. package/src/utilities/browser.js +111 -0
  70. package/src/utilities/cache.js +159 -0
  71. package/src/utilities/core.js +502 -0
  72. package/src/utilities/debug.js +103 -0
  73. package/src/utilities/dom.js +313 -0
  74. package/src/utilities/events.js +69 -0
  75. package/src/utilities/http.js +30 -0
  76. package/src/utilities/legacy-dom.js +179 -0
  77. package/src/utilities/storage.js +46 -0
@@ -0,0 +1,98 @@
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, calc(var(--space) * 6));
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-color: 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: calc(var(--space) * 2);
21
+ --tag-height: calc(var(--space) * 8);
22
+ }
23
+
24
+ .j-tag.is-contrast {
25
+ --tag-background: var(--ui-fg);
26
+ --tag-foreground: var(--ui-bg);
27
+ }
28
+
29
+ .j-tag.is-primary {
30
+ --tag-background: var(--tone-solid);
31
+ --tag-foreground: var(--tone-fg);
32
+ --tag-border-color: var(--tone-solid);
33
+ }
34
+
35
+ .j-tag.is-secondary {
36
+ --tag-background: var(--tone-soft);
37
+ --tag-foreground: var(--tone-text);
38
+ --tag-border-color: transparent;
39
+ }
40
+
41
+ .j-tag.is-outline {
42
+ --tag-background: transparent;
43
+ --tag-foreground: var(--tone-solid);
44
+ --tag-border-color: var(--tone-solid);
45
+ }
46
+
47
+ .j-tag.is-ghost {
48
+ --tag-border-color: transparent;
49
+ --tag-shadow: none;
50
+ }
51
+
52
+ .j-tag span {
53
+ display: inline-flex;
54
+ align-items: center;
55
+ justify-content: center;
56
+ }
57
+
58
+ .j-tag img,
59
+ .j-tag svg {
60
+ width: var(--tag-icon-size, var(--font-size-sm));
61
+ height: var(--tag-icon-size, var(--font-size-sm));
62
+ }
63
+
64
+ .j-tag:hover {
65
+ opacity: var(--opacity-hover, 0.9);
66
+ }
67
+
68
+ .j-tag.is-default:hover {
69
+ background-color: var(--ui-surface-hover);
70
+ }
71
+
72
+ .j-tag.is-outline:hover,
73
+ .j-tag.is-ghost:hover {
74
+ background-color: var(--tone-subtle);
75
+ }
76
+
77
+ .j-tag .el-icon[data-action='close']:hover {
78
+ color: var(--tone-fg);
79
+ background-color: var(--tone-solid);
80
+ border-radius: 50%;
81
+ }
82
+
83
+ .j-tag.is-default .el-icon[data-action='close']:hover,
84
+ .j-tag.is-ghost .el-icon[data-action='close']:hover {
85
+ background-color: var(--ui-fg);
86
+ color: var(--ui-bg-subtle);
87
+ }
88
+
89
+ .j-tag.is-contrast .el-icon[data-action='close']:hover {
90
+ color: var(--ui-fg);
91
+ background-color: var(--ui-bg);
92
+ }
93
+
94
+ .j-tag.is-primary .el-icon[data-action='close']:hover {
95
+ color: var(--tone-solid);
96
+ background-color: var(--tone-fg);
97
+ }
98
+ }
@@ -0,0 +1,59 @@
1
+ @layer components {
2
+ .j-theme-palette {
3
+ padding: var(--palette-padding, calc(var(--space) * 4));
4
+ }
5
+
6
+ .j-theme-palette>h3 {
7
+ margin: var(--palette-title-margin, calc(var(--space) * 2) 0);
8
+ }
9
+
10
+ .j-theme-palette .palette-container {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: var(--palette-container-gap, calc(var(--space) * 4));
14
+ }
15
+
16
+ .j-theme-palette .palette-container .palette-item {
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--palette-item-gap, calc(var(--space) * 2));
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: calc(var(--space) * 2);
37
+ padding-right: calc(var(--space) * 2);
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: calc(var(--space) * 4) 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, calc(var(--space) * 2));
5
+ right: var(--toast-container-offset, calc(var(--space) * 2));
6
+ z-index: var(--z-index-toast);
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--toast-container-gap, calc(var(--space) * 2));
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, calc(var(--space) * 3) calc(var(--space) * 4));
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: calc(var(--space) * 2);
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-index-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, calc(var(--space) * 2) calc(var(--space) * 3));
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 @@
1
+ @layer components{.j-toast-container{position:fixed;top:var(--toast-container-offset,calc(var(--space) * 2));right:var(--toast-container-offset,calc(var(--space) * 2));z-index:var(--z-index-toast);display:flex;flex-direction:column;gap:var(--toast-container-gap,calc(var(--space) * 2));align-items:center;left:50%;transform:translateX(-50%);pointer-events:none}.j-toast{display:flex;align-items:center;padding:var(--toast-padding,calc(var(--space) * 3) calc(var(--space) * 4));border-radius:var(--toast-border-radius,var(--radius-md));box-shadow:var(--toast-box-shadow,var(--shadow-md));font-size:var(--toast-font-size, var(--font-size-md));font-weight:var(--toast-font-weight,var(--font-medium));opacity:0;transform:translateY(-100%);transition:all .3s ease-in-out;cursor:pointer;min-width:var(--toast-min-width,200px);max-width:var(--toast-max-width,310px);word-break:break-all;pointer-events:auto}.j-toast.is-shown{opacity:1;transform:translateY(0)}.j-toast.is-hidden{opacity:0;transform:translateY(-100%)}.j-toast .toast-icon{margin-right:calc(var(--space) * 2);width:var(--toast-icon-size,var(--font-size-lg))}.j-toast .toast-message{flex:1;word-break:normal}.j-toast.is-success{color:var(--toast-success-color,var(--state-success));background-color:var(--toast-success-background,var(--state-success-weak));border:1px solid var(--toast-success-border-color,var(--state-success-border))}.j-toast.is-success .toast-icon{color:var(--toast-success-icon-color,var(--state-success))}.j-toast.is-error{color:var(--toast-error-color,var(--state-danger));background-color:var(--toast-error-background,var(--state-danger-weak));border:1px solid var(--toast-error-border-color,var(--state-danger-border))}.j-toast.is-error .toast-icon{color:var(--toast-error-icon-color,var(--state-danger))}.j-toast.is-warning{color:var(--toast-warning-color,var(--state-warning));background-color:var(--toast-warning-background,var(--state-warning-weak));border:1px solid var(--toast-warning-border-color,var(--state-warning-border))}.j-toast.is-warning .toast-icon{color:var(--toast-warning-icon-color,var(--state-warning))}.j-toast.is-info{color:var(--toast-info-color,var(--ui-fg));background-color:var(--toast-info-background,var(--ui-bg));border:1px solid var(--toast-info-border-color,var(--ui-border))}.j-toast.is-info .toast-icon{color:var(--toast-info-icon-color,var(--ui-fg))}.j-toast.is-primary{color:var(--toast-info-color,var(--tone-solid));background-color:var(--toast-info-background,var(--tone-weak));border:1px solid var(--toast-info-border-color,var(--tone-border))}.j-toast.is-primary .toast-icon{color:var(--toast-info-icon-color,var(--tone-solid))}.j-toast-lite{position:fixed;top:45%;left:50%;transform:translate(-50%,-50%);transition:opacity var(--speed-sm) ease-in-out;opacity:0;z-index:var(--z-index-toast);font-size:var(--toast-lite-font-size, var(--font-size-md));text-align:center;color:var(--toast-lite-color,var(--ui-bg));background:var(--toast-lite-background,var(--ui-fg));border-radius:var(--toast-lite-border-radius,var(--radius-md));padding:var(--toast-lite-padding,calc(var(--space) * 2) calc(var(--space) * 3));max-width:var(--toast-lite-max-width,calc(var(--screen-sm)/ 2));user-select:none;pointer-events:none}.j-toast-lite.is-shown{opacity:1;transform:scale(1)}.j-toast-lite.is-hidden{opacity:0;transform:scale(.9)}.j-toast.is-action{flex-direction:column;align-items:flex-start;gap:calc(var(--space)*4);color:var(--toast-info-color,var(--ui-fg));background-color:var(--toast-info-background,var(--ui-bg));border:1px solid var(--toast-info-border-color,var(--ui-border));min-width:280px;cursor:default}.j-toast.is-action .toast-actions{width:100%;display:flex;justify-content:flex-end;gap:var(--space)}}
@@ -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
+ }