aeico-components 0.1.1

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 (174) hide show
  1. package/README.md +0 -0
  2. package/dist/index.cjs +4226 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.js +4226 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/types/aeico-component.d.ts +8 -0
  7. package/dist/types/aeico-field.d.ts +132 -0
  8. package/dist/types/alert/alert.d.ts +49 -0
  9. package/dist/types/alert/defines.d.ts +3 -0
  10. package/dist/types/alert/index.d.ts +3 -0
  11. package/dist/types/badge/badge.d.ts +34 -0
  12. package/dist/types/badge/defines.d.ts +3 -0
  13. package/dist/types/badge/index.d.ts +3 -0
  14. package/dist/types/breadcrumb/breadcrumb-item.d.ts +31 -0
  15. package/dist/types/breadcrumb/breadcrumb.d.ts +60 -0
  16. package/dist/types/breadcrumb/defines.d.ts +1 -0
  17. package/dist/types/breadcrumb/index.d.ts +5 -0
  18. package/dist/types/button/button.d.ts +60 -0
  19. package/dist/types/button/defines.d.ts +3 -0
  20. package/dist/types/button/index.d.ts +3 -0
  21. package/dist/types/button-group/button-group.d.ts +56 -0
  22. package/dist/types/button-group/index.d.ts +2 -0
  23. package/dist/types/card/card.d.ts +19 -0
  24. package/dist/types/card/defines.d.ts +2 -0
  25. package/dist/types/card/index.d.ts +3 -0
  26. package/dist/types/checkbox/checkbox.d.ts +37 -0
  27. package/dist/types/checkbox/defines.d.ts +1 -0
  28. package/dist/types/checkbox/index.d.ts +3 -0
  29. package/dist/types/detail/defines.d.ts +2 -0
  30. package/dist/types/detail/detail.d.ts +40 -0
  31. package/dist/types/detail/index.d.ts +3 -0
  32. package/dist/types/dialog/dialog.d.ts +29 -0
  33. package/dist/types/dialog/index.d.ts +2 -0
  34. package/dist/types/divider/divider.d.ts +34 -0
  35. package/dist/types/divider/index.d.ts +2 -0
  36. package/dist/types/dropdown/defines.d.ts +1 -0
  37. package/dist/types/dropdown/dropdown-button.d.ts +60 -0
  38. package/dist/types/dropdown/dropdown-item.d.ts +56 -0
  39. package/dist/types/dropdown/dropdown.d.ts +84 -0
  40. package/dist/types/dropdown/index.d.ts +7 -0
  41. package/dist/types/icon/defines.d.ts +10 -0
  42. package/dist/types/icon/icon.d.ts +21 -0
  43. package/dist/types/icon/index.d.ts +4 -0
  44. package/dist/types/icon/registry.d.ts +8 -0
  45. package/dist/types/icon-button/icon-button.d.ts +32 -0
  46. package/dist/types/icon-button/index.d.ts +2 -0
  47. package/dist/types/index.d.ts +74 -0
  48. package/dist/types/navbar/defines.d.ts +2 -0
  49. package/dist/types/navbar/index.d.ts +3 -0
  50. package/dist/types/navbar/navbar.d.ts +73 -0
  51. package/dist/types/radio-group/defines.d.ts +6 -0
  52. package/dist/types/radio-group/index.d.ts +5 -0
  53. package/dist/types/radio-group/radio-group.d.ts +41 -0
  54. package/dist/types/radio-group/radio.d.ts +47 -0
  55. package/dist/types/select/defines.d.ts +8 -0
  56. package/dist/types/select/index.d.ts +5 -0
  57. package/dist/types/select/select-option.d.ts +20 -0
  58. package/dist/types/select/select.d.ts +60 -0
  59. package/dist/types/slider/defines.d.ts +31 -0
  60. package/dist/types/slider/index.d.ts +3 -0
  61. package/dist/types/slider/slider.d.ts +45 -0
  62. package/dist/types/switch/index.d.ts +2 -0
  63. package/dist/types/switch/switch.d.ts +35 -0
  64. package/dist/types/tabs/defines.d.ts +1 -0
  65. package/dist/types/tabs/index.d.ts +3 -0
  66. package/dist/types/tabs/tab-panel.d.ts +11 -0
  67. package/dist/types/tabs/tab.d.ts +18 -0
  68. package/dist/types/tabs/tabs.d.ts +24 -0
  69. package/dist/types/tag/defines.d.ts +3 -0
  70. package/dist/types/tag/index.d.ts +3 -0
  71. package/dist/types/tag/tag.d.ts +36 -0
  72. package/dist/types/text-input/index.d.ts +2 -0
  73. package/dist/types/text-input/text-input.d.ts +26 -0
  74. package/dist/types/utils.d.ts +2 -0
  75. package/package.json +63 -0
  76. package/src/aeico-component.ts +17 -0
  77. package/src/aeico-field.ts +228 -0
  78. package/src/alert/alert.ts +107 -0
  79. package/src/alert/defines.ts +11 -0
  80. package/src/alert/index.ts +3 -0
  81. package/src/badge/badge.ts +62 -0
  82. package/src/badge/defines.ts +12 -0
  83. package/src/badge/index.ts +3 -0
  84. package/src/breadcrumb/breadcrumb-item.ts +61 -0
  85. package/src/breadcrumb/breadcrumb.ts +138 -0
  86. package/src/breadcrumb/defines.ts +10 -0
  87. package/src/breadcrumb/index.ts +5 -0
  88. package/src/button/button.ts +147 -0
  89. package/src/button/defines.ts +12 -0
  90. package/src/button/index.ts +3 -0
  91. package/src/button-group/button-group.ts +140 -0
  92. package/src/button-group/index.ts +2 -0
  93. package/src/card/card.ts +57 -0
  94. package/src/card/defines.ts +11 -0
  95. package/src/card/index.ts +3 -0
  96. package/src/checkbox/checkbox.ts +90 -0
  97. package/src/checkbox/defines.ts +1 -0
  98. package/src/checkbox/index.ts +3 -0
  99. package/src/detail/defines.ts +11 -0
  100. package/src/detail/detail.ts +122 -0
  101. package/src/detail/index.ts +3 -0
  102. package/src/dialog/dialog.ts +149 -0
  103. package/src/dialog/index.ts +2 -0
  104. package/src/divider/divider.ts +56 -0
  105. package/src/divider/index.ts +2 -0
  106. package/src/dropdown/defines.ts +13 -0
  107. package/src/dropdown/dropdown-button.ts +130 -0
  108. package/src/dropdown/dropdown-item.ts +136 -0
  109. package/src/dropdown/dropdown.ts +211 -0
  110. package/src/dropdown/index.ts +7 -0
  111. package/src/icon/defines.ts +21 -0
  112. package/src/icon/icon.ts +84 -0
  113. package/src/icon/index.ts +4 -0
  114. package/src/icon/registry.ts +25 -0
  115. package/src/icon-button/icon-button.ts +64 -0
  116. package/src/icon-button/index.ts +2 -0
  117. package/src/index.ts +85 -0
  118. package/src/navbar/defines.ts +11 -0
  119. package/src/navbar/index.ts +3 -0
  120. package/src/navbar/navbar.ts +162 -0
  121. package/src/radio-group/defines.ts +5 -0
  122. package/src/radio-group/index.ts +5 -0
  123. package/src/radio-group/radio-group.ts +227 -0
  124. package/src/radio-group/radio.ts +58 -0
  125. package/src/select/defines.ts +12 -0
  126. package/src/select/index.ts +5 -0
  127. package/src/select/select-option.ts +59 -0
  128. package/src/select/select.ts +387 -0
  129. package/src/slider/defines.ts +33 -0
  130. package/src/slider/index.ts +3 -0
  131. package/src/slider/slider.ts +364 -0
  132. package/src/styles/color.css +117 -0
  133. package/src/styles/components/alert.css +104 -0
  134. package/src/styles/components/badge.css +67 -0
  135. package/src/styles/components/breadcrumb-item.css +59 -0
  136. package/src/styles/components/breadcrumb.css +19 -0
  137. package/src/styles/components/button-group.css +25 -0
  138. package/src/styles/components/button.css +213 -0
  139. package/src/styles/components/card.css +64 -0
  140. package/src/styles/components/checkbox.css +78 -0
  141. package/src/styles/components/detail.css +127 -0
  142. package/src/styles/components/dialog.css +103 -0
  143. package/src/styles/components/divider.css +18 -0
  144. package/src/styles/components/dropdown-item.css +91 -0
  145. package/src/styles/components/dropdown.css +179 -0
  146. package/src/styles/components/icon-button.css +116 -0
  147. package/src/styles/components/icon.css +29 -0
  148. package/src/styles/components/navbar.css +250 -0
  149. package/src/styles/components/radio-group.css +360 -0
  150. package/src/styles/components/select-option.css +43 -0
  151. package/src/styles/components/select.css +222 -0
  152. package/src/styles/components/slider.css +326 -0
  153. package/src/styles/components/switch.css +117 -0
  154. package/src/styles/components/tab-panel.css +8 -0
  155. package/src/styles/components/tab.css +44 -0
  156. package/src/styles/components/tabs.css +16 -0
  157. package/src/styles/components/tag.css +107 -0
  158. package/src/styles/components/text-input.css +110 -0
  159. package/src/styles/layout.css +43 -0
  160. package/src/styles/size.css +7 -0
  161. package/src/styles/variables.css +368 -0
  162. package/src/switch/index.ts +2 -0
  163. package/src/switch/switch.ts +88 -0
  164. package/src/tabs/defines.ts +1 -0
  165. package/src/tabs/index.ts +3 -0
  166. package/src/tabs/tab-panel.ts +23 -0
  167. package/src/tabs/tab.ts +62 -0
  168. package/src/tabs/tabs.ts +134 -0
  169. package/src/tag/defines.ts +12 -0
  170. package/src/tag/index.ts +3 -0
  171. package/src/tag/tag.ts +85 -0
  172. package/src/text-input/index.ts +2 -0
  173. package/src/text-input/text-input.ts +75 -0
  174. package/src/utils.ts +6 -0
@@ -0,0 +1,326 @@
1
+ :host {
2
+ display: block;
3
+ flex: 1;
4
+ min-width: 0;
5
+ font-size: var(--size-base);
6
+
7
+ /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */
8
+ --color-solid: var(--color-primary);
9
+ }
10
+
11
+ .range-container {
12
+ display: flex;
13
+ align-items: center;
14
+ gap: 6px;
15
+ width: 100%;
16
+ height: 26px;
17
+ }
18
+
19
+ input[type="range"] {
20
+ flex: 1;
21
+ margin: 0;
22
+ }
23
+
24
+ .input-range,
25
+ .slider-input,
26
+ input[type="range"] {
27
+ -webkit-appearance: none;
28
+ appearance: none;
29
+ width: 100%;
30
+ height: 0.333em;
31
+ border-radius: 2px;
32
+ background: var(--border-subtle);
33
+ outline: none;
34
+ cursor: pointer;
35
+ margin: 0;
36
+ }
37
+
38
+ .input-range {
39
+ margin: 10px 0;
40
+ }
41
+
42
+ .input-range::-webkit-slider-thumb,
43
+ .slider-input::-webkit-slider-thumb,
44
+ input[type="range"]::-webkit-slider-thumb {
45
+ -webkit-appearance: none;
46
+ appearance: none;
47
+ width: 1.167em;
48
+ height: 1.167em;
49
+ border-radius: 50%;
50
+ background: var(--color-solid);
51
+ cursor: pointer;
52
+ transition: background 0.12s, transform 0.12s;
53
+ }
54
+
55
+ .input-range::-webkit-slider-thumb:hover,
56
+ .slider-input::-webkit-slider-thumb:hover,
57
+ input[type="range"]:hover::-webkit-slider-thumb {
58
+ background: var(--color-solid-hover);
59
+ transform: scale(1.1);
60
+ }
61
+
62
+ .input-range::-webkit-slider-thumb:active,
63
+ .slider-input::-webkit-slider-thumb:active,
64
+ input[type="range"]:active::-webkit-slider-thumb {
65
+ background: var(--color-solid-hover);
66
+ transform: scale(1.2);
67
+ }
68
+
69
+ .input-range:focus::-webkit-slider-thumb,
70
+ .slider-input:focus::-webkit-slider-thumb,
71
+ input[type="range"]:focus::-webkit-slider-thumb {
72
+ background: var(--color-solid);
73
+ outline: none;
74
+ box-shadow: none;
75
+ }
76
+
77
+ .input-range:focus:hover::-webkit-slider-thumb,
78
+ .slider-input:focus:hover::-webkit-slider-thumb,
79
+ input[type="range"]:focus:hover::-webkit-slider-thumb {
80
+ background: var(--color-solid-hover);
81
+ outline: none;
82
+ box-shadow: none;
83
+ }
84
+
85
+ .input-range:focus:active::-webkit-slider-thumb,
86
+ .slider-input:focus:active::-webkit-slider-thumb,
87
+ input[type="range"]:focus:active::-webkit-slider-thumb {
88
+ background: var(--color-solid-hover);
89
+ outline: none;
90
+ box-shadow: none;
91
+ }
92
+
93
+ .input-range::-moz-range-thumb,
94
+ .slider-input::-moz-range-thumb,
95
+ input[type="range"]::-moz-range-thumb {
96
+ width: 1.167em;
97
+ height: 1.167em;
98
+ border: none;
99
+ border-radius: 50%;
100
+ background: var(--color-solid);
101
+ cursor: pointer;
102
+ transition: background 0.12s, transform 0.12s;
103
+ }
104
+
105
+ .input-range::-moz-range-thumb:hover,
106
+ .slider-input::-moz-range-thumb:hover,
107
+ input[type="range"]:hover::-moz-range-thumb {
108
+ background: var(--color-solid-hover);
109
+ transform: scale(1.1);
110
+ }
111
+
112
+ .input-range::-moz-range-thumb:active,
113
+ .slider-input::-moz-range-thumb:active,
114
+ input[type="range"]:active::-moz-range-thumb {
115
+ background: var(--color-solid-hover);
116
+ transform: scale(1.2);
117
+ }
118
+
119
+ .input-range:focus::-moz-range-thumb,
120
+ .slider-input:focus::-moz-range-thumb,
121
+ input[type="range"]:focus::-moz-range-thumb {
122
+ background: var(--color-solid);
123
+ outline: none;
124
+ box-shadow: none;
125
+ }
126
+
127
+ .input-range:focus:hover::-moz-range-thumb,
128
+ .slider-input:focus:hover::-moz-range-thumb,
129
+ input[type="range"]:focus:hover::-moz-range-thumb {
130
+ background: var(--color-solid-hover);
131
+ outline: none;
132
+ box-shadow: none;
133
+ }
134
+
135
+ .input-range:focus:active::-moz-range-thumb,
136
+ .slider-input:focus:active::-moz-range-thumb,
137
+ input[type="range"]:focus:active::-moz-range-thumb {
138
+ background: var(--color-solid-hover);
139
+ outline: none;
140
+ box-shadow: none;
141
+ }
142
+
143
+ .input-range:disabled,
144
+ .slider-input:disabled,
145
+ input[type="range"]:disabled {
146
+ opacity: 0.5;
147
+ cursor: not-allowed;
148
+ }
149
+
150
+ .input-range:disabled::-webkit-slider-thumb,
151
+ .slider-input:disabled::-webkit-slider-thumb,
152
+ input[type="range"]:disabled::-webkit-slider-thumb {
153
+ cursor: not-allowed;
154
+ }
155
+
156
+ .input-range:disabled::-moz-range-thumb,
157
+ .slider-input:disabled::-moz-range-thumb,
158
+ input[type="range"]:disabled::-moz-range-thumb {
159
+ cursor: not-allowed;
160
+ }
161
+
162
+ .value-label {
163
+ min-width: 14px;
164
+ text-align: center;
165
+ font-size: 12px;
166
+ color: var(--color-text-muted);
167
+ font-weight: 500;
168
+ font-variant-numeric: tabular-nums;
169
+ pointer-events: none;
170
+ user-select: none;
171
+ }
172
+
173
+ .reset-btn {
174
+ width: 1.333em;
175
+ height: 1.333em;
176
+ border: none;
177
+ border-radius: var(--reset-btn-border-radius);
178
+ cursor: pointer;
179
+ display: flex;
180
+ align-items: center;
181
+ justify-content: center;
182
+ background: var(--reset-btn-bg);
183
+ color: var(--reset-btn-color);
184
+ transition: var(--reset-btn-transition);
185
+ flex-shrink: 0;
186
+ }
187
+
188
+ .reset-btn:hover {
189
+ background: var(--reset-btn-bg-hover);
190
+ color: var(--reset-btn-color-hover);
191
+ }
192
+
193
+ .clear-btn {
194
+ width: 1.333em;
195
+ height: 1.333em;
196
+ border: none;
197
+ border-radius: var(--clear-btn-border-radius);
198
+ cursor: pointer;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ background: var(--clear-btn-bg);
203
+ color: var(--clear-btn-color);
204
+ transition: var(--clear-btn-transition);
205
+ flex-shrink: 0;
206
+ }
207
+
208
+ .clear-btn:hover {
209
+ background: var(--clear-btn-bg-hover);
210
+ color: var(--clear-btn-color-hover);
211
+ }
212
+
213
+
214
+
215
+ .input-range,
216
+ .slider-input,
217
+ input[type="range"] {
218
+ height: 0.333em;
219
+ }
220
+
221
+ .input-range::-webkit-slider-thumb,
222
+ .slider-input::-webkit-slider-thumb,
223
+ input[type="range"]::-webkit-slider-thumb {
224
+ width: 1.167em;
225
+ height: 1.167em;
226
+ }
227
+
228
+ .input-range::-moz-range-thumb,
229
+ .slider-input::-moz-range-thumb,
230
+ input[type="range"]::-moz-range-thumb {
231
+ width: 1.167em;
232
+ height: 1.167em;
233
+ }
234
+
235
+ .value-label {
236
+ font-size: 1em;
237
+ }
238
+
239
+ .value-input {
240
+ width: 56px;
241
+ padding: 0 4px;
242
+ height: 22px;
243
+ border: 1px solid var(--border-subtle);
244
+ border-radius: 4px;
245
+ background: transparent;
246
+ color: var(--color-text);
247
+ font-size: 12px;
248
+ text-align: center;
249
+ outline: none;
250
+ flex-shrink: 0;
251
+ }
252
+
253
+ .value-input:focus {
254
+ border-color: var(--color-solid);
255
+ }
256
+
257
+ .value-input:disabled {
258
+ opacity: 0.4;
259
+ cursor: not-allowed;
260
+ }
261
+
262
+ :host([tracked]) .input-range,
263
+ :host([tracked]) .slider-input,
264
+ :host([tracked]) input[type="range"] {
265
+ background: linear-gradient(
266
+ to right,
267
+ var(--color-solid) var(--fill-pct, 0%),
268
+ var(--border-subtle) var(--fill-pct, 0%)
269
+ );
270
+ }
271
+
272
+ .range-wrapper {
273
+ flex: 1;
274
+ min-width: 0;
275
+ display: flex;
276
+ flex-direction: column;
277
+ position: relative; /* marks-container positions against this */
278
+ }
279
+
280
+ .range-wrapper input[type="range"] {
281
+ width: 100%;
282
+ flex: none;
283
+ }
284
+
285
+ /* Marks are absolutely positioned so they don't affect range-wrapper's layout height */
286
+ .marks-container {
287
+ position: absolute;
288
+ top: 100%;
289
+ left: 7px; /* inset by half thumb so 0%/100% align with track ends */
290
+ right: 7px;
291
+ height: 18px;
292
+ margin-top: 2px;
293
+ overflow: visible;
294
+ }
295
+
296
+ .mark {
297
+ position: absolute;
298
+ transform: translateX(-50%);
299
+ display: flex;
300
+ flex-direction: column;
301
+ align-items: center;
302
+ gap: 2px;
303
+ pointer-events: none;
304
+ user-select: none;
305
+ }
306
+
307
+ .mark::before {
308
+ content: '';
309
+ display: block;
310
+ width: 1px;
311
+ height: 4px;
312
+ background: var(--border-default, var(--border-subtle));
313
+ border-radius: 1px;
314
+ }
315
+
316
+ .mark-label {
317
+ font-size: 10px;
318
+ color: var(--color-text-muted);
319
+ white-space: nowrap;
320
+ }
321
+
322
+ /* When marks are active, add padding-bottom to make room for the absolute-positioned marks */
323
+ :host([marks]) .range-container {
324
+ padding-bottom: 24px; /* marks-container height (18px) + margin-top (2px) + extra (4px) */
325
+ height: auto;
326
+ }
@@ -0,0 +1,117 @@
1
+ :host {
2
+ display: block;
3
+ font-size: var(--size-base);
4
+
5
+ --switch-field-gap: 4px;
6
+
7
+ --toggle-width: 2.667em;
8
+ --toggle-height: 1.333em;
9
+ --toggle-slider-size: 1em;
10
+ --toggle-gap: calc((var(--toggle-height) - var(--toggle-slider-size)) / 2);
11
+ --toggle-border-radius: calc(var(--toggle-height) / 2);
12
+ --toggle-bg: var(--color-gray);
13
+ --toggle-bg-checked: var(--color-solid);
14
+ --toggle-slider-bg: white;
15
+ --toggle-transition: 0.2s;
16
+
17
+ /* Default color when no [color] attribute — overridden by color.css :host([color=...]) */
18
+ --color-solid: var(--color-primary);
19
+ }
20
+
21
+ .switch-container {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: var(--switch-field-gap);
25
+ }
26
+
27
+ .switch-wrapper {
28
+ position: relative;
29
+ display: inline-flex;
30
+ align-items: center;
31
+ width: var(--toggle-width);
32
+ height: var(--toggle-height);
33
+ flex-shrink: 0;
34
+ }
35
+
36
+ .field-input {
37
+ position: absolute;
38
+ opacity: 0;
39
+ width: 100%;
40
+ height: 100%;
41
+ cursor: pointer;
42
+ margin: 0;
43
+ z-index: 1;
44
+ border: none;
45
+ border-radius: 0;
46
+ background: none;
47
+ accent-color: unset;
48
+ }
49
+
50
+ .field-input:disabled {
51
+ cursor: not-allowed;
52
+ }
53
+
54
+ .toggle-slider {
55
+ position: absolute;
56
+ top: 0;
57
+ left: 0;
58
+ right: 0;
59
+ bottom: 0;
60
+ background: var(--toggle-bg);
61
+ border-radius: var(--toggle-border-radius);
62
+ transition: var(--toggle-transition);
63
+ pointer-events: none;
64
+ }
65
+
66
+ .toggle-slider::before {
67
+ content: '';
68
+ position: absolute;
69
+ height: var(--toggle-slider-size);
70
+ width: var(--toggle-slider-size);
71
+ left: var(--toggle-gap);
72
+ top: var(--toggle-gap);
73
+ background: var(--toggle-slider-bg);
74
+ border-radius: 50%;
75
+ transition: var(--toggle-transition);
76
+ }
77
+
78
+ .field-input:checked + .toggle-slider {
79
+ background: var(--toggle-bg-checked);
80
+ }
81
+
82
+ .field-input:checked + .toggle-slider::before {
83
+ transform: translateX(calc(var(--toggle-width) - var(--toggle-height)));
84
+ }
85
+
86
+ .field-input:disabled + .toggle-slider {
87
+ opacity: 0.5;
88
+ pointer-events: auto;
89
+ }
90
+
91
+ /* action buttons */
92
+ .reset-btn,
93
+ .clear-btn {
94
+ width: 1.333em;
95
+ height: 1.333em;
96
+ border: none;
97
+ border-radius: var(--reset-btn-border-radius);
98
+ cursor: pointer;
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: center;
102
+ background: var(--reset-btn-bg);
103
+ color: var(--reset-btn-color);
104
+ transition: var(--reset-btn-transition);
105
+ flex-shrink: 0;
106
+ line-height: 1;
107
+ }
108
+
109
+ .reset-btn:hover {
110
+ background: var(--reset-btn-bg-hover);
111
+ color: var(--reset-btn-color-hover);
112
+ }
113
+
114
+ .clear-btn:hover {
115
+ background: var(--clear-btn-bg-hover);
116
+ color: var(--clear-btn-color-hover);
117
+ }
@@ -0,0 +1,8 @@
1
+ :host {
2
+ display: none;
3
+ padding: 16px 0;
4
+ }
5
+
6
+ :host([active]) {
7
+ display: block;
8
+ }
@@ -0,0 +1,44 @@
1
+ :host {
2
+ display: inline-flex;
3
+ cursor: pointer;
4
+ margin-bottom: -1px;
5
+ }
6
+
7
+ button {
8
+ display: inline-flex;
9
+ align-items: center;
10
+ gap: 6px;
11
+ padding: 8px 16px;
12
+ background: none;
13
+ border: none;
14
+ border-bottom: 2px solid transparent;
15
+ cursor: pointer;
16
+ font-size: inherit;
17
+ font-family: inherit;
18
+ color: var(--ae-tab-color, #909090);
19
+ font-size: var(--ae-tab-font-size, inherit);
20
+ transition: color 0.15s, border-color 0.15s;
21
+ outline: none;
22
+ white-space: nowrap;
23
+ user-select: none;
24
+ }
25
+
26
+ button:hover {
27
+ color: var(--ae-tab-hover-color, var(--color-primary));
28
+ }
29
+
30
+ button:focus-visible {
31
+ outline: 2px solid var(--color-primary);
32
+ outline-offset: -2px;
33
+ }
34
+
35
+ :host([active]) button {
36
+ color: var(--ae-tab-active-color, var(--color-primary));
37
+ border-bottom-color: var(--ae-tab-active-color, var(--color-primary));
38
+ }
39
+
40
+ :host([disabled]) button {
41
+ opacity: 0.4;
42
+ cursor: not-allowed;
43
+ pointer-events: none;
44
+ }
@@ -0,0 +1,16 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ overflow: hidden;
5
+ }
6
+
7
+ [part="tab-nav"] {
8
+ display: flex;
9
+ flex-shrink: 0;
10
+ border-bottom: 1px solid var(--ae-tabs-border-color, var(--border-default));
11
+ }
12
+
13
+ [part="panels"] {
14
+ flex: 1;
15
+ overflow: auto;
16
+ }
@@ -0,0 +1,107 @@
1
+ :host {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ --tag-solid-bg: var(--color-solid);
5
+ --tag-solid-color: var(--color-on-solid);
6
+ --tag-border: var(--color-border);
7
+ --tag-accent: var(--color-accent);
8
+ --tag-subtle-bg: var(--color-bg-subtle);
9
+ --tag-subtle-color: var(--color-text-subtle);
10
+ --tag-subtle-border: var(--color-border-subtle);
11
+ }
12
+
13
+ .tag {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ gap: 4px;
17
+ font-family: inherit;
18
+ font-weight: 500;
19
+ white-space: nowrap;
20
+ vertical-align: middle;
21
+ line-height: 1.2;
22
+ font-size: 1em;
23
+ padding: 0.15em 0.5em 0.15em 0.6em;
24
+ border-radius: 4px;
25
+ border: 1px solid var(--tag-solid-bg);
26
+ background: var(--tag-solid-bg);
27
+ color: var(--tag-solid-color);
28
+ max-width: 160px;
29
+ min-width: 0;
30
+ }
31
+
32
+ :host([variant="outlined"]) .tag {
33
+ background: transparent;
34
+ border-color: var(--tag-border);
35
+ color: var(--tag-accent);
36
+ }
37
+
38
+ :host([variant="faint"]) .tag {
39
+ background: var(--tag-subtle-bg);
40
+ border-color: var(--tag-subtle-border);
41
+ color: var(--tag-subtle-color);
42
+ }
43
+
44
+ :host([variant="subtle"]) .tag {
45
+ background: var(--tag-subtle-bg);
46
+ border-color: transparent;
47
+ color: var(--tag-subtle-color);
48
+ }
49
+
50
+ :host([variant="text"]) .tag {
51
+ background: transparent;
52
+ border-color: transparent;
53
+ color: var(--tag-accent);
54
+ padding-left: 0;
55
+ padding-right: 0;
56
+ }
57
+
58
+
59
+ :host([pill]) .tag { border-radius: 999px; }
60
+
61
+ .tag-content {
62
+ flex: 1;
63
+ min-width: 0;
64
+ overflow: hidden;
65
+ text-overflow: ellipsis;
66
+ white-space: nowrap;
67
+ }
68
+
69
+ ::slotted(ae-icon) { font-size: 1.1em; }
70
+
71
+ .tag-dismiss {
72
+ display: none;
73
+ flex-shrink: 0;
74
+ align-items: center;
75
+ justify-content: center;
76
+ cursor: pointer;
77
+ opacity: 0.55;
78
+ line-height: 1;
79
+ font-size: 1em;
80
+ padding: 0 1px;
81
+ border-radius: 2px;
82
+ background: transparent;
83
+ border: none;
84
+ color: inherit;
85
+ font-family: inherit;
86
+ transition: opacity 0.1s, background 0.1s;
87
+ }
88
+
89
+ :host([dismissible]) .tag-dismiss {
90
+ display: inline-flex;
91
+ }
92
+
93
+ .tag-dismiss:hover {
94
+ opacity: 1;
95
+ background: color-mix(in srgb, currentColor 15%, transparent);
96
+ }
97
+
98
+ /* disabled: button remains visible but is inert */
99
+ :host([disabled]) .tag-dismiss {
100
+ opacity: 0.4;
101
+ pointer-events: none;
102
+ cursor: default;
103
+ }
104
+
105
+ :host([disabled]) .tag {
106
+ opacity: 0.6;
107
+ }