@schukai/monster 4.143.10 → 4.145.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.
- package/package.json +1 -1
- package/source/components/form/control-bar.mjs +115 -1
- package/source/components/layout/style/tabs.pcss +11 -1
- package/source/components/layout/stylesheet/tabs.mjs +1 -1
- package/source/components/layout/tabs.mjs +78 -3
- package/source/components/layout/vertical-tabs.mjs +78 -3
- package/test/cases/components/form/button-bar.mjs +108 -0
- package/test/cases/components/form/control-bar.mjs +115 -0
- package/test/cases/components/layout/tabs.mjs +122 -0
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.
|
|
1
|
+
{"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.145.0"}
|
|
@@ -193,6 +193,19 @@ const ATTRIBUTE_OPTION_LAYOUT_STACKED_BREAKPOINT =
|
|
|
193
193
|
const ATTRIBUTE_OPTION_LAYOUT_STACKED_BREAKPOINT_CONTAINER =
|
|
194
194
|
"data-monster-option-layout-stacked-breakpoint-container";
|
|
195
195
|
|
|
196
|
+
/**
|
|
197
|
+
* @private
|
|
198
|
+
* @type {string}
|
|
199
|
+
*/
|
|
200
|
+
const ATTRIBUTE_OPTION_LAYOUT_HIDE_WHEN_EMPTY =
|
|
201
|
+
"data-monster-option-layout-hide-when-empty";
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @private
|
|
205
|
+
* @type {string}
|
|
206
|
+
*/
|
|
207
|
+
const ATTRIBUTE_AUTO_HIDDEN_EMPTY = "data-monster-empty-hidden";
|
|
208
|
+
|
|
196
209
|
/**
|
|
197
210
|
* @private
|
|
198
211
|
* @type {string}
|
|
@@ -250,6 +263,7 @@ class ControlBar extends CustomElement {
|
|
|
250
263
|
stackedAlignment: undefined,
|
|
251
264
|
stackedBreakpoint: undefined,
|
|
252
265
|
stackedBreakpointContainer: undefined,
|
|
266
|
+
hideWhenEmpty: false,
|
|
253
267
|
},
|
|
254
268
|
popper: {
|
|
255
269
|
placement: "left",
|
|
@@ -309,7 +323,8 @@ class ControlBar extends CustomElement {
|
|
|
309
323
|
path === "layout.alignment" ||
|
|
310
324
|
path === "layout.stackedAlignment" ||
|
|
311
325
|
path === "layout.stackedBreakpoint" ||
|
|
312
|
-
path === "layout.stackedBreakpointContainer"
|
|
326
|
+
path === "layout.stackedBreakpointContainer" ||
|
|
327
|
+
path === "layout.hideWhenEmpty"
|
|
313
328
|
) {
|
|
314
329
|
syncLayoutState.call(this, {
|
|
315
330
|
observe: path === "layout.stackedBreakpointContainer",
|
|
@@ -366,6 +381,7 @@ class ControlBar extends CustomElement {
|
|
|
366
381
|
attributes.push(ATTRIBUTE_OPTION_LAYOUT_STACKED_ALIGNMENT);
|
|
367
382
|
attributes.push(ATTRIBUTE_OPTION_LAYOUT_STACKED_BREAKPOINT);
|
|
368
383
|
attributes.push(ATTRIBUTE_OPTION_LAYOUT_STACKED_BREAKPOINT_CONTAINER);
|
|
384
|
+
attributes.push(ATTRIBUTE_OPTION_LAYOUT_HIDE_WHEN_EMPTY);
|
|
369
385
|
return attributes;
|
|
370
386
|
}
|
|
371
387
|
|
|
@@ -572,6 +588,11 @@ function initEventHandler() {
|
|
|
572
588
|
syncLayoutState.call(self, { observe: true });
|
|
573
589
|
};
|
|
574
590
|
|
|
591
|
+
self[attributeObserverSymbol][ATTRIBUTE_OPTION_LAYOUT_HIDE_WHEN_EMPTY] =
|
|
592
|
+
() => {
|
|
593
|
+
syncLayoutState.call(self);
|
|
594
|
+
};
|
|
595
|
+
|
|
575
596
|
self[resizeObserverSymbol] = new ResizeObserver((entries) => {
|
|
576
597
|
if (self[layoutStateSymbol]?.suppressResize) {
|
|
577
598
|
return;
|
|
@@ -655,6 +676,8 @@ function runLayout() {
|
|
|
655
676
|
state.running = true;
|
|
656
677
|
|
|
657
678
|
new Processing(() => {
|
|
679
|
+
syncEmptyVisibility.call(this);
|
|
680
|
+
|
|
658
681
|
if (needsObserve) {
|
|
659
682
|
updateResizeObserverObservation.call(this);
|
|
660
683
|
}
|
|
@@ -845,6 +868,97 @@ function rearrangeItems() {
|
|
|
845
868
|
if (!shouldShowSwitch) {
|
|
846
869
|
hide.call(this);
|
|
847
870
|
}
|
|
871
|
+
syncEmptyVisibility.call(this);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* @private
|
|
876
|
+
* @return {void}
|
|
877
|
+
*/
|
|
878
|
+
function syncEmptyVisibility() {
|
|
879
|
+
if (this.getOption("layout.hideWhenEmpty", false) !== true) {
|
|
880
|
+
clearEmptyVisibilityState.call(this);
|
|
881
|
+
return;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
if (hasVisibleControlItem.call(this)) {
|
|
885
|
+
clearEmptyVisibilityState.call(this);
|
|
886
|
+
return;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
if (this.hasAttribute(ATTRIBUTE_AUTO_HIDDEN_EMPTY)) {
|
|
890
|
+
return;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
if (this.hasAttribute("hidden")) {
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
this.setAttribute("hidden", "");
|
|
898
|
+
this.setAttribute(ATTRIBUTE_AUTO_HIDDEN_EMPTY, "");
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
/**
|
|
902
|
+
* @private
|
|
903
|
+
* @return {void}
|
|
904
|
+
*/
|
|
905
|
+
function clearEmptyVisibilityState() {
|
|
906
|
+
if (this.hasAttribute(ATTRIBUTE_AUTO_HIDDEN_EMPTY)) {
|
|
907
|
+
this.removeAttribute(ATTRIBUTE_AUTO_HIDDEN_EMPTY);
|
|
908
|
+
if (this.hasAttribute("hidden")) {
|
|
909
|
+
this.removeAttribute("hidden");
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* @private
|
|
916
|
+
* @return {boolean}
|
|
917
|
+
*/
|
|
918
|
+
function hasVisibleControlItem() {
|
|
919
|
+
return getControlItems.call(this).some((item) => {
|
|
920
|
+
return isControlItemVisible.call(this, item);
|
|
921
|
+
});
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
/**
|
|
925
|
+
* @private
|
|
926
|
+
* @return {HTMLElement[]}
|
|
927
|
+
*/
|
|
928
|
+
function getControlItems() {
|
|
929
|
+
return Array.from(this.children).filter((item) => {
|
|
930
|
+
if (!(item instanceof HTMLElement)) {
|
|
931
|
+
return false;
|
|
932
|
+
}
|
|
933
|
+
return item.slot === "" || item.slot === "popper";
|
|
934
|
+
});
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
/**
|
|
938
|
+
* @private
|
|
939
|
+
* @param {HTMLElement} item
|
|
940
|
+
* @return {boolean}
|
|
941
|
+
*/
|
|
942
|
+
function isControlItemVisible(item) {
|
|
943
|
+
if (isControlBarSpacerElement(item) || isElementSelfHidden(item)) {
|
|
944
|
+
return false;
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
const computedStyle = getComputedStyle(item);
|
|
948
|
+
if (computedStyle.opacity === "0") {
|
|
949
|
+
return false;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
const containedControls = getContainedControlElements(item);
|
|
953
|
+
if (containedControls.length === 0) {
|
|
954
|
+
return true;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
return containedControls.some((control) => {
|
|
958
|
+
return (
|
|
959
|
+
!isElementSelfHidden(control) && getComputedStyle(control).opacity !== "0"
|
|
960
|
+
);
|
|
961
|
+
});
|
|
848
962
|
}
|
|
849
963
|
|
|
850
964
|
/**
|
|
@@ -147,10 +147,20 @@ nav[data-monster-role=nav] {
|
|
|
147
147
|
border-bottom-width: 0;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
[data-monster-role=nav] button
|
|
150
|
+
[data-monster-role=nav] button [part=icon] {
|
|
151
151
|
width: 1.3rem;
|
|
152
152
|
height: 1.3rem;
|
|
153
153
|
margin-left: 0.40rem;
|
|
154
|
+
flex: 0 0 auto;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
[data-monster-role=nav] button [part=icon][data-monster-icon-mode=mask] {
|
|
158
|
+
display: inline-block;
|
|
159
|
+
background-color: currentColor;
|
|
160
|
+
mask-image: var(--monster-tab-icon-mask-image);
|
|
161
|
+
mask-position: center;
|
|
162
|
+
mask-repeat: no-repeat;
|
|
163
|
+
mask-size: contain;
|
|
154
164
|
}
|
|
155
165
|
|
|
156
166
|
::slotted(:not([slot]):not(.active)) {
|
|
@@ -25,7 +25,7 @@ try {
|
|
|
25
25
|
TabsStyleSheet.insertRule(
|
|
26
26
|
`
|
|
27
27
|
@layer tabs {
|
|
28
|
-
:after,:before,:root{--monster-font-family:-apple-system,BlinkMacSystemFont,\"Quicksand\",\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--monster-font-family-monospace:\"Consolas\",\"Courier New\",\"Roboto Mono\",\"Source Code Pro\",\"Fira Mono\",monospace;--monster-font-size-min:15px;--monster-font-size-base:16px;--monster-font-size-max:16px;--monster-font-scale:1;--monster-font-scale-hi-dpi:1.25;--monster-font-scale-xhi-dpi:1.25;--monster-font-size-fluid:clamp(var(--monster-font-size-min),calc(var(--monster-font-size-min) + 0.1vw),var(--monster-font-size-max))}@media (min-resolution:1.5dppx){:after,:before,:root{--monster-font-scale:var(--monster-font-scale-hi-dpi,1.1)}}@media (min-resolution:3dppx){:after,:before,:root{--monster-font-scale:var(--monster-font-scale-xhi-dpi,1.18)}}:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-6);--monster-color-primary-2:var(--monster-color-gray-6);--monster-color-primary-3:var(--monster-color-cinnamon-1);--monster-color-primary-4:var(--monster-color-cinnamon-1);--monster-bg-color-primary-1:var(--monster-color-gray-1);--monster-bg-color-primary-2:var(--monster-color-gray-2);--monster-bg-color-primary-3:var(--monster-color-gray-6);--monster-bg-color-primary-4:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-1);--monster-color-primary-2:var(--monster-color-gray-1);--monster-color-primary-3:var(--monster-color-gray-6);--monster-color-primary-4:var(--monster-color-gray-6);--monster-bg-color-primary-1:var(--monster-color-gray-6);--monster-bg-color-primary-2:var(--monster-color-gray-3);--monster-bg-color-primary-3:var(--monster-color-gray-2);--monster-bg-color-primary-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-4);--monster-color-secondary-2:var(--monster-color-red-4);--monster-color-secondary-3:var(--monster-color-red-1);--monster-color-secondary-4:var(--monster-color-red-1);--monster-bg-color-secondary-1:var(--monster-color-gray-1);--monster-bg-color-secondary-2:var(--monster-color-red-2);--monster-bg-color-secondary-3:var(--monster-color-red-3);--monster-bg-color-secondary-4:var(--monster-color-red-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-1);--monster-color-secondary-2:var(--monster-color-red-1);--monster-color-secondary-3:var(--monster-color-red-6);--monster-color-secondary-4:var(--monster-color-red-4);--monster-bg-color-secondary-1:var(--monster-color-gray-6);--monster-bg-color-secondary-2:var(--monster-color-red-3);--monster-bg-color-secondary-3:var(--monster-color-red-2);--monster-bg-color-secondary-4:var(--monster-color-red-1)}}:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-4);--monster-color-tertiary-2:var(--monster-color-magenta-4);--monster-color-tertiary-3:var(--monster-color-magenta-6);--monster-color-tertiary-4:var(--monster-color-magenta-1);--monster-bg-color-tertiary-1:var(--monster-color-gray-1);--monster-bg-color-tertiary-2:var(--monster-color-magenta-1);--monster-bg-color-tertiary-3:var(--monster-color-magenta-2);--monster-bg-color-tertiary-4:var(--monster-color-magenta-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-1);--monster-color-tertiary-2:var(--monster-color-magenta-6);--monster-color-tertiary-3:var(--monster-color-magenta-4);--monster-color-tertiary-4:var(--monster-color-magenta-4);--monster-bg-color-tertiary-1:var(--monster-color-gray-6);--monster-bg-color-tertiary-2:var(--monster-color-magenta-2);--monster-bg-color-tertiary-3:var(--monster-color-magenta-1);--monster-bg-color-tertiary-4:var(--monster-color-magenta-1)}}:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-4);--monster-color-destructive-3:var(--monster-color-red-6);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-4);--monster-bg-color-destructive-2:var(--monster-color-gray-1);--monster-bg-color-destructive-3:var(--monster-color-red-2);--monster-bg-color-destructive-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-3);--monster-color-destructive-3:var(--monster-color-red-4);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-5);--monster-bg-color-destructive-2:var(--monster-color-gray-6);--monster-bg-color-destructive-3:var(--monster-color-red-1);--monster-bg-color-destructive-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-danger-1:var(--monster-color-raspberry-1);--monster-color-danger-2:var(--monster-color-raspberry-4);--monster-color-danger-3:var(--monster-color-raspberry-6);--monster-color-danger-4:var(--monster-color-raspberry-1);--monster-bg-color-danger-1:var(--monster-color-raspberry-4);--monster-bg-color-danger-2:var(--monster-color-gray-1);--monster-bg-color-danger-3:var(--monster-color-raspberry-2);--monster-bg-color-danger-4:var(--monster-color-raspberry-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-danger-1:var(--monster-color-raspberry-1);--monster-color-danger-2:var(--monster-color-raspberry-3);--monster-color-danger-3:var(--monster-color-raspberry-4);--monster-color-danger-4:var(--monster-color-raspberry-1);--monster-bg-color-danger-1:var(--monster-color-raspberry-5);--monster-bg-color-danger-2:var(--monster-color-gray-6);--monster-bg-color-danger-3:var(--monster-color-raspberry-1);--monster-bg-color-danger-4:var(--monster-color-raspberry-4)}}:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-4);--monster-color-success-3:var(--monster-color-green-6);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-3);--monster-bg-color-success-2:var(--monster-color-gray-1);--monster-bg-color-success-3:var(--monster-color-green-2);--monster-bg-color-success-4:var(--monster-color-green-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-2);--monster-color-success-3:var(--monster-color-green-4);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-5);--monster-bg-color-success-2:var(--monster-color-gray-6);--monster-bg-color-success-3:var(--monster-color-green-1);--monster-bg-color-success-4:var(--monster-color-green-3)}}:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-4);--monster-color-warning-3:var(--monster-color-orange-6);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-3);--monster-bg-color-warning-2:var(--monster-color-gray-1);--monster-bg-color-warning-3:var(--monster-color-orange-2);--monster-bg-color-warning-4:var(--monster-color-orange-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-3);--monster-color-warning-3:var(--monster-color-orange-4);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-5);--monster-bg-color-warning-2:var(--monster-color-gray-6);--monster-bg-color-warning-3:var(--monster-color-orange-1);--monster-bg-color-warning-4:var(--monster-color-orange-3)}}:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-4);--monster-color-error-3:var(--monster-color-red-6);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-4);--monster-bg-color-error-2:var(--monster-color-gray-1);--monster-bg-color-error-3:var(--monster-color-red-2);--monster-bg-color-error-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-3);--monster-color-error-3:var(--monster-color-red-4);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-5);--monster-bg-color-error-2:var(--monster-color-gray-6);--monster-bg-color-error-3:var(--monster-color-red-1);--monster-bg-color-error-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}}:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-4);--monster-color-primary-disabled-4:var(--monster-color-gray-4);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-1);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-6);--monster-color-gradient-1:#833ab4;--monster-color-gradient-2:#fd1d1d;--monster-color-gradient-3:#fcb045}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-3);--monster-color-primary-disabled-4:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-6);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-1);--monster-color-gradient-1:#ffe0b2;--monster-color-gradient-2:#ad8275;--monster-color-gradient-3:#771ba3}}:after,:before,:root{--monster-box-shadow-1:none;--monster-box-shadow-2:-1px 1px 10px 1px hsla(0,0%,76%,.61);--monster-text-shadow:none;--monster-theme-control-bg-color:var(--monster-color-seashell-1);--monster-theme-control-color:var(--monster-color-seashell-6);--monster-theme-control-hover-color:var(--monster-color-seashell-6);--monster-theme-control-hover-bg-color:var(--monster-color-seashell-2);--monster-theme-control-border-width:2px;--monster-theme-control-border-style:solid;--monster-theme-control-border-radius:0;--monster-theme-control-border-color:var(--monster-color-primary-1)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-control-bg-color:var(--monster-color-gray-5);--monster-theme-control-color:var(--monster-color-gray-1);--monster-theme-control-border-color:var(--monster-color-gray-3);--monster-theme-control-hover-color:var(--monster-color-gray-1);--monster-theme-control-hover-bg-color:var(--monster-color-gray-6)}}:after,:before,:root{--monster-theme-on-color:var(--monster-color-green-1);--monster-theme-on-bg-color:var(--monster-color-green-5);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-on-color:var(--monster-color-gray-6);--monster-theme-on-bg-color:var(--monster-color-gray-1);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-5)}}:after,:before,:root{--monster-border-style:solid;--monster-border-width:3px;--monster-border-radius:0;--monster-outline-width:1px;--monster-popper-witharrrow-distance:-4px;--monster-z-index-default:0;--monster-z-index-outline:10;--monster-z-index-dropdown:200;--monster-z-index-dropdown-overlay:210;--monster-z-index-sticky:300;--monster-z-index-sticky-overlay:310;--monster-z-index-fixed:400;--monster-z-index-fixed-overlay:410;--monster-z-index-modal-backdrop:500;--monster-z-index-modal-backdrop-overlay:510;--monster-z-index-offcanvas:600;--monster-z-index-offcanvas-overlay:610;--monster-z-index-modal:700;--monster-z-index-modal-overlay:710;--monster-z-index-popover:800;--monster-z-index-popover-overlay:810;--monster-z-index-tooltip:800;--monster-z-index-tooltip-overlay:910;--monster-space-0:0;--monster-space-1:2px;--monster-space-2:4px;--monster-space-3:6px;--monster-space-4:10px;--monster-space-5:16px;--monster-space-6:26px;--monster-space-7:42px;--monster-breakpoint-0:480px;--monster-breakpoint-4:480px;--monster-breakpoint-7:768px;--monster-breakpoint-9:992px;--monster-breakpoint-12:1200px;--monster-dragger-width:2px;--monster-dragger-handle-width:4px;--monster-dragger-handle-height:50px}.block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-0{border-width:0;border-radius:0;border-style:none}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{color:var(--monster-theme-on-color);background-color:var(--monster-theme-on-bg-color)}.monster-theme-off{color:var(--monster-theme-off-color);background-color:var(--monster-theme-off-bg-color)}div[data-monster-role=popper]{box-sizing:border-box;display:none;padding:1.1em;z-index:var(--monster-z-index-modal);background:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1);border-radius:var(--monster-border-radius);border-width:var(--monster-border-width);border-style:var(--monster-border-style);border-color:var(--monster-bg-color-primary-4);box-shadow:var(--monster-box-shadow-1)}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1*var(--monster-popper-witharrrow-distance))*2);height:calc(max(var(--monster-popper-witharrrow-distance), -1*var(--monster-popper-witharrrow-distance))*2);background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:before{visibility:visible;content:\"\";transform:rotate(45deg);box-sizing:border-box}div[data-popper-placement^=top]>[data-popper-arrow]{bottom:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width)/2)}div[data-popper-placement^=top]>[data-popper-arrow]:before{border-left:transparent;border-right:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:transparent}div[data-popper-placement^=bottom]>[data-popper-arrow]{top:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width))}div[data-popper-placement^=bottom]>[data-popper-arrow]:before{border-right:transparent;border-left:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:transparent}div[data-popper-placement^=left]>[data-popper-arrow]{right:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width))}div[data-popper-placement^=left]>[data-popper-arrow]:before{border-left:transparent;border-right:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:transparent}div[data-popper-placement^=right]>[data-popper-arrow]{left:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width)/2)}div[data-popper-placement^=right]>[data-popper-arrow]:before{border-right:transparent;border-left:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:transparent}[data-monster-role=control]{outline:none;width:100%;box-sizing:border-box}[data-monster-role=control].flex{display:flex;flex-direction:row;align-items:center}:host{display:block;box-sizing:border-box}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;color:var(--monster-color-primary-4);background-color:var(--monster-bg-color-primary-4)}.monster-badge-primary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-badge-secondary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-badge-tertiary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-badge-destructive-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-badge-success-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-badge-warning-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-badge-error-pill{padding:.25em .6em;border-radius:10rem}[data-monster-role=nav] button.hidden{display:none}nav[data-monster-role=nav]{overflow:hidden;display:flex;align-items:flex-end;flex-direction:row;flex-wrap:nowrap;box-sizing:border-box;margin-bottom:.75rem;border-bottom-width:thin;border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-2)}[data-monster-role=nav] button .remove-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-size:16px;background-position:100% 100%;background-repeat:no-repeat;width:16px;min-height:16px;order:2;height:16px;background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");flex-wrap:nowrap}[data-monster-role=nav] button span{display:flex;align-items:center;white-space:pre;font-family:var(--monster-font-family);font-size:1rem;line-height:1.4;font-weight:400}[data-monster-role=nav] button [part=error]{margin-left:.35rem}[data-monster-role=nav] button [part=error],[data-monster-role=nav] button [part=error] .monster-tab-error-icon{display:inline-flex;align-items:center;line-height:1}[data-monster-role=nav] button [part=error] .monster-tab-error-icon svg{width:1.1em;height:1.1em}[data-monster-role=nav] button [part=error]:empty{display:none}[data-monster-role=nav] button{outline:none;cursor:pointer;font-weight:400;line-height:1.5;text-align:center;text-decoration:none;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.375rem 0;margin-right:.75rem;font-size:1rem;display:flex;justify-content:center;border-radius:var(--monster-border-radius);border:none;border-bottom:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-4);transition:color .8s;align-self:stretch;align-content:center;align-items:center}[data-monster-role=nav] button:not([disabled]):hover{border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-secondary-3);color:var(--monster-bg-color-secondary-3)}[data-monster-role=nav] button[data-monster-state=active],[data-monster-role=nav] button[data-monster-state=active]:not([disabled]):hover{border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-1)!important;background-color:inherit}@media (prefers-color-scheme:dark){[data-monster-role=nav] button[data-monster-state=active],[data-monster-role=nav] button[data-monster-state=active]:not([disabled]):hover{border-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)!important}}[data-monster-role=nav] button[disabled]{color:var(--monster-color-primary-disabled-1);background-color:var(--monster-bg-color-primary-disabled-1);cursor:not-allowed}[data-monster-role=nav] button[data-monster-role=switch]{align-self:center;touch-action:none;order:2;border:0}[data-monster-role=nav] button[data-monster-role=switch]:not([disabled]):hover{border-bottom-width:0}[data-monster-role=nav] button img{width:1.3rem;height:1.3rem;margin-left:.4rem}::slotted(:not([slot]):not(.active)){display:none}::slotted(*){align-self:center}::slotted([slot]){border-bottom-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-4)}::slotted([slot=start]){margin-right:.75rem;order:0}::slotted([slot=end]){margin-left:.75rem;order:3}[data-monster-role=nav] [data-monster-role=popper-nav] button:not([disabled]){width:100%;justify-content:left;padding-left:15px;padding-right:15px;border:0}[data-monster-role=nav] [data-monster-role=popper-nav] button:hover,[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active],[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active]:not([disabled]):hover{border:0}@media (prefers-color-scheme:dark){[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active],[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active]:not([disabled]):hover{color:var(--monster-color-secondary-4)!important}}
|
|
28
|
+
:after,:before,:root{--monster-font-family:-apple-system,BlinkMacSystemFont,\"Quicksand\",\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";--monster-font-family-monospace:\"Consolas\",\"Courier New\",\"Roboto Mono\",\"Source Code Pro\",\"Fira Mono\",monospace;--monster-font-size-min:15px;--monster-font-size-base:16px;--monster-font-size-max:16px;--monster-font-scale:1;--monster-font-scale-hi-dpi:1.25;--monster-font-scale-xhi-dpi:1.25;--monster-font-size-fluid:clamp(var(--monster-font-size-min),calc(var(--monster-font-size-min) + 0.1vw),var(--monster-font-size-max))}@media (min-resolution:1.5dppx){:after,:before,:root{--monster-font-scale:var(--monster-font-scale-hi-dpi,1.1)}}@media (min-resolution:3dppx){:after,:before,:root{--monster-font-scale:var(--monster-font-scale-xhi-dpi,1.18)}}:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-6);--monster-color-primary-2:var(--monster-color-gray-6);--monster-color-primary-3:var(--monster-color-cinnamon-1);--monster-color-primary-4:var(--monster-color-cinnamon-1);--monster-bg-color-primary-1:var(--monster-color-gray-1);--monster-bg-color-primary-2:var(--monster-color-gray-2);--monster-bg-color-primary-3:var(--monster-color-gray-6);--monster-bg-color-primary-4:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-1:var(--monster-color-gray-1);--monster-color-primary-2:var(--monster-color-gray-1);--monster-color-primary-3:var(--monster-color-gray-6);--monster-color-primary-4:var(--monster-color-gray-6);--monster-bg-color-primary-1:var(--monster-color-gray-6);--monster-bg-color-primary-2:var(--monster-color-gray-3);--monster-bg-color-primary-3:var(--monster-color-gray-2);--monster-bg-color-primary-4:var(--monster-color-gray-1)}}:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-4);--monster-color-secondary-2:var(--monster-color-red-4);--monster-color-secondary-3:var(--monster-color-red-1);--monster-color-secondary-4:var(--monster-color-red-1);--monster-bg-color-secondary-1:var(--monster-color-gray-1);--monster-bg-color-secondary-2:var(--monster-color-red-2);--monster-bg-color-secondary-3:var(--monster-color-red-3);--monster-bg-color-secondary-4:var(--monster-color-red-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-secondary-1:var(--monster-color-red-1);--monster-color-secondary-2:var(--monster-color-red-1);--monster-color-secondary-3:var(--monster-color-red-6);--monster-color-secondary-4:var(--monster-color-red-4);--monster-bg-color-secondary-1:var(--monster-color-gray-6);--monster-bg-color-secondary-2:var(--monster-color-red-3);--monster-bg-color-secondary-3:var(--monster-color-red-2);--monster-bg-color-secondary-4:var(--monster-color-red-1)}}:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-4);--monster-color-tertiary-2:var(--monster-color-magenta-4);--monster-color-tertiary-3:var(--monster-color-magenta-6);--monster-color-tertiary-4:var(--monster-color-magenta-1);--monster-bg-color-tertiary-1:var(--monster-color-gray-1);--monster-bg-color-tertiary-2:var(--monster-color-magenta-1);--monster-bg-color-tertiary-3:var(--monster-color-magenta-2);--monster-bg-color-tertiary-4:var(--monster-color-magenta-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-tertiary-1:var(--monster-color-magenta-1);--monster-color-tertiary-2:var(--monster-color-magenta-6);--monster-color-tertiary-3:var(--monster-color-magenta-4);--monster-color-tertiary-4:var(--monster-color-magenta-4);--monster-bg-color-tertiary-1:var(--monster-color-gray-6);--monster-bg-color-tertiary-2:var(--monster-color-magenta-2);--monster-bg-color-tertiary-3:var(--monster-color-magenta-1);--monster-bg-color-tertiary-4:var(--monster-color-magenta-1)}}:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-4);--monster-color-destructive-3:var(--monster-color-red-6);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-4);--monster-bg-color-destructive-2:var(--monster-color-gray-1);--monster-bg-color-destructive-3:var(--monster-color-red-2);--monster-bg-color-destructive-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-destructive-1:var(--monster-color-red-1);--monster-color-destructive-2:var(--monster-color-red-3);--monster-color-destructive-3:var(--monster-color-red-4);--monster-color-destructive-4:var(--monster-color-red-1);--monster-bg-color-destructive-1:var(--monster-color-red-5);--monster-bg-color-destructive-2:var(--monster-color-gray-6);--monster-bg-color-destructive-3:var(--monster-color-red-1);--monster-bg-color-destructive-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-danger-1:var(--monster-color-raspberry-1);--monster-color-danger-2:var(--monster-color-raspberry-4);--monster-color-danger-3:var(--monster-color-raspberry-6);--monster-color-danger-4:var(--monster-color-raspberry-1);--monster-bg-color-danger-1:var(--monster-color-raspberry-4);--monster-bg-color-danger-2:var(--monster-color-gray-1);--monster-bg-color-danger-3:var(--monster-color-raspberry-2);--monster-bg-color-danger-4:var(--monster-color-raspberry-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-danger-1:var(--monster-color-raspberry-1);--monster-color-danger-2:var(--monster-color-raspberry-3);--monster-color-danger-3:var(--monster-color-raspberry-4);--monster-color-danger-4:var(--monster-color-raspberry-1);--monster-bg-color-danger-1:var(--monster-color-raspberry-5);--monster-bg-color-danger-2:var(--monster-color-gray-6);--monster-bg-color-danger-3:var(--monster-color-raspberry-1);--monster-bg-color-danger-4:var(--monster-color-raspberry-4)}}:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-4);--monster-color-success-3:var(--monster-color-green-6);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-3);--monster-bg-color-success-2:var(--monster-color-gray-1);--monster-bg-color-success-3:var(--monster-color-green-2);--monster-bg-color-success-4:var(--monster-color-green-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-success-1:var(--monster-color-green-1);--monster-color-success-2:var(--monster-color-green-2);--monster-color-success-3:var(--monster-color-green-4);--monster-color-success-4:var(--monster-color-green-1);--monster-bg-color-success-1:var(--monster-color-green-5);--monster-bg-color-success-2:var(--monster-color-gray-6);--monster-bg-color-success-3:var(--monster-color-green-1);--monster-bg-color-success-4:var(--monster-color-green-3)}}:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-4);--monster-color-warning-3:var(--monster-color-orange-6);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-3);--monster-bg-color-warning-2:var(--monster-color-gray-1);--monster-bg-color-warning-3:var(--monster-color-orange-2);--monster-bg-color-warning-4:var(--monster-color-orange-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-warning-1:var(--monster-color-orange-1);--monster-color-warning-2:var(--monster-color-orange-3);--monster-color-warning-3:var(--monster-color-orange-4);--monster-color-warning-4:var(--monster-color-orange-1);--monster-bg-color-warning-1:var(--monster-color-orange-5);--monster-bg-color-warning-2:var(--monster-color-gray-6);--monster-bg-color-warning-3:var(--monster-color-orange-1);--monster-bg-color-warning-4:var(--monster-color-orange-3)}}:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-4);--monster-color-error-3:var(--monster-color-red-6);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-4);--monster-bg-color-error-2:var(--monster-color-gray-1);--monster-bg-color-error-3:var(--monster-color-red-2);--monster-bg-color-error-4:var(--monster-color-red-5)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-error-1:var(--monster-color-red-1);--monster-color-error-2:var(--monster-color-red-3);--monster-color-error-3:var(--monster-color-red-4);--monster-color-error-4:var(--monster-color-red-1);--monster-bg-color-error-1:var(--monster-color-red-5);--monster-bg-color-error-2:var(--monster-color-gray-6);--monster-bg-color-error-3:var(--monster-color-red-1);--monster-bg-color-error-4:var(--monster-color-red-4)}}:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-selection-1:var(--monster-color-gray-6);--monster-color-selection-2:var(--monster-color-gray-6);--monster-color-selection-3:var(--monster-color-gray-6);--monster-color-selection-4:var(--monster-color-gray-1);--monster-bg-color-selection-1:var(--monster-color-yellow-2);--monster-bg-color-selection-2:var(--monster-color-yellow-1);--monster-bg-color-selection-3:var(--monster-color-yellow-2);--monster-bg-color-selection-4:var(--monster-color-yellow-6)}}:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-4);--monster-color-primary-disabled-4:var(--monster-color-gray-4);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-1);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-6);--monster-color-gradient-1:#833ab4;--monster-color-gradient-2:#fd1d1d;--monster-color-gradient-3:#fcb045}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-color-primary-disabled-1:var(--monster-color-gray-4);--monster-color-primary-disabled-2:var(--monster-color-gray-4);--monster-color-primary-disabled-3:var(--monster-color-gray-3);--monster-color-primary-disabled-4:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-1:var(--monster-color-gray-6);--monster-bg-color-primary-disabled-2:var(--monster-color-gray-3);--monster-bg-color-primary-disabled-3:var(--monster-color-gray-2);--monster-bg-color-primary-disabled-4:var(--monster-color-gray-1);--monster-color-gradient-1:#ffe0b2;--monster-color-gradient-2:#ad8275;--monster-color-gradient-3:#771ba3}}:after,:before,:root{--monster-box-shadow-1:none;--monster-box-shadow-2:-1px 1px 10px 1px hsla(0,0%,76%,.61);--monster-text-shadow:none;--monster-theme-control-bg-color:var(--monster-color-seashell-1);--monster-theme-control-color:var(--monster-color-seashell-6);--monster-theme-control-hover-color:var(--monster-color-seashell-6);--monster-theme-control-hover-bg-color:var(--monster-color-seashell-2);--monster-theme-control-border-width:2px;--monster-theme-control-border-style:solid;--monster-theme-control-border-radius:0;--monster-theme-control-border-color:var(--monster-color-primary-1)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-control-bg-color:var(--monster-color-gray-5);--monster-theme-control-color:var(--monster-color-gray-1);--monster-theme-control-border-color:var(--monster-color-gray-3);--monster-theme-control-hover-color:var(--monster-color-gray-1);--monster-theme-control-hover-bg-color:var(--monster-color-gray-6)}}:after,:before,:root{--monster-theme-on-color:var(--monster-color-green-1);--monster-theme-on-bg-color:var(--monster-color-green-5);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-4)}@media (prefers-color-scheme:dark){:after,:before,:root{--monster-theme-on-color:var(--monster-color-gray-6);--monster-theme-on-bg-color:var(--monster-color-gray-1);--monster-theme-off-color:var(--monster-color-gray-1);--monster-theme-off-bg-color:var(--monster-color-gray-5)}}:after,:before,:root{--monster-border-style:solid;--monster-border-width:3px;--monster-border-radius:0;--monster-outline-width:1px;--monster-popper-witharrrow-distance:-4px;--monster-z-index-default:0;--monster-z-index-outline:10;--monster-z-index-dropdown:200;--monster-z-index-dropdown-overlay:210;--monster-z-index-sticky:300;--monster-z-index-sticky-overlay:310;--monster-z-index-fixed:400;--monster-z-index-fixed-overlay:410;--monster-z-index-modal-backdrop:500;--monster-z-index-modal-backdrop-overlay:510;--monster-z-index-offcanvas:600;--monster-z-index-offcanvas-overlay:610;--monster-z-index-modal:700;--monster-z-index-modal-overlay:710;--monster-z-index-popover:800;--monster-z-index-popover-overlay:810;--monster-z-index-tooltip:800;--monster-z-index-tooltip-overlay:910;--monster-space-0:0;--monster-space-1:2px;--monster-space-2:4px;--monster-space-3:6px;--monster-space-4:10px;--monster-space-5:16px;--monster-space-6:26px;--monster-space-7:42px;--monster-breakpoint-0:480px;--monster-breakpoint-4:480px;--monster-breakpoint-7:768px;--monster-breakpoint-9:992px;--monster-breakpoint-12:1200px;--monster-dragger-width:2px;--monster-dragger-handle-width:4px;--monster-dragger-handle-height:50px}.block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-0{border-width:0;border-radius:0;border-style:none}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}.monster-theme-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-theme-primary-disabled-1{background-color:var(--monster-bg-color-primary-disabled-1);color:var(--monster-color-primary-disabled-1)}.monster-theme-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-theme-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-theme-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-theme-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-theme-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-theme-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-theme-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-theme-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-border-color-1{border-color:var(--monster-color-border-1)}.monster-color-neutral-1{color:var(--monster-color-primary-1)}.monster-bg-color-primary-1{background-color:var(--monster-bg-color-primary-1)}.monster-bg-color-secondary-1{background-color:var(--monster-bg-color-secondary-1)}.monster-bg-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1)}.monster-color-primary-1{background-color:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1)}.monster-color-secondary-1{background-color:var(--monster-bg-color-secondary-1);color:var(--monster-color-secondary-1)}.monster-color-tertiary-1{background-color:var(--monster-bg-color-tertiary-1);color:var(--monster-color-tertiary-1)}.monster-color-destructive-1{background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-color-danger-1{background-color:var(--monster-bg-color-danger-1);color:var(--monster-color-danger-1)}.monster-color-success-1{background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-color-warning-1{background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-color-error-1{background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-color-selection-1{background-color:var(--monster-bg-color-selection-1);color:var(--monster-color-selection-1)}.monster-theme-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-theme-primary-disabled-2{background-color:var(--monster-bg-color-primary-disabled-2);color:var(--monster-color-primary-disabled-2)}.monster-theme-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-theme-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-theme-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-theme-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-theme-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-theme-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-theme-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-theme-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-border-color-2{border-color:var(--monster-color-border-2)}.monster-color-neutral-2{color:var(--monster-color-primary-2)}.monster-bg-color-primary-2{background-color:var(--monster-bg-color-primary-2)}.monster-bg-color-secondary-2{background-color:var(--monster-bg-color-secondary-2)}.monster-bg-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2)}.monster-color-primary-2{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}.monster-color-secondary-2{background-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)}.monster-color-tertiary-2{background-color:var(--monster-bg-color-tertiary-2);color:var(--monster-color-tertiary-2)}.monster-color-destructive-2{background-color:var(--monster-bg-color-destructive-2);color:var(--monster-color-destructive-2)}.monster-color-danger-2{background-color:var(--monster-bg-color-danger-2);color:var(--monster-color-danger-2)}.monster-color-success-2{background-color:var(--monster-bg-color-success-2);color:var(--monster-color-success-2)}.monster-color-warning-2{background-color:var(--monster-bg-color-warning-2);color:var(--monster-color-warning-2)}.monster-color-error-2{background-color:var(--monster-bg-color-error-2);color:var(--monster-color-error-2)}.monster-color-selection-2{background-color:var(--monster-bg-color-selection-2);color:var(--monster-color-selection-2)}.monster-theme-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-theme-primary-disabled-3{background-color:var(--monster-bg-color-primary-disabled-3);color:var(--monster-color-primary-disabled-3)}.monster-theme-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-theme-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-theme-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-theme-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-theme-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-theme-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-theme-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-theme-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-border-color-3{border-color:var(--monster-color-border-3)}.monster-color-neutral-3{color:var(--monster-color-primary-3)}.monster-bg-color-primary-3{background-color:var(--monster-bg-color-primary-3)}.monster-bg-color-secondary-3{background-color:var(--monster-bg-color-secondary-3)}.monster-bg-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3)}.monster-color-primary-3{background-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-3)}.monster-color-secondary-3{background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-color-tertiary-3{background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-color-destructive-3{background-color:var(--monster-bg-color-destructive-3);color:var(--monster-color-destructive-3)}.monster-color-danger-3{background-color:var(--monster-bg-color-danger-3);color:var(--monster-color-danger-3)}.monster-color-success-3{background-color:var(--monster-bg-color-success-3);color:var(--monster-color-success-3)}.monster-color-warning-3{background-color:var(--monster-bg-color-warning-3);color:var(--monster-color-warning-3)}.monster-color-error-3{background-color:var(--monster-bg-color-error-3);color:var(--monster-color-error-3)}.monster-color-selection-3{background-color:var(--monster-bg-color-selection-3);color:var(--monster-color-selection-3)}.monster-theme-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-theme-primary-disabled-4{background-color:var(--monster-bg-color-primary-disabled-4);color:var(--monster-color-primary-disabled-4)}.monster-theme-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-theme-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-theme-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-theme-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-theme-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-theme-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-theme-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-theme-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-border-color-4{border-color:var(--monster-color-border-4)}.monster-color-neutral-4{color:var(--monster-color-primary-4)}.monster-bg-color-primary-4{background-color:var(--monster-bg-color-primary-4)}.monster-bg-color-secondary-4{background-color:var(--monster-bg-color-secondary-4)}.monster-bg-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4)}.monster-color-primary-4{background-color:var(--monster-bg-color-primary-4);color:var(--monster-color-primary-4)}.monster-color-secondary-4{background-color:var(--monster-bg-color-secondary-4);color:var(--monster-color-secondary-4)}.monster-color-tertiary-4{background-color:var(--monster-bg-color-tertiary-4);color:var(--monster-color-tertiary-4)}.monster-color-destructive-4{background-color:var(--monster-bg-color-destructive-4);color:var(--monster-color-destructive-4)}.monster-color-danger-4{background-color:var(--monster-bg-color-danger-4);color:var(--monster-color-danger-4)}.monster-color-success-4{background-color:var(--monster-bg-color-success-4);color:var(--monster-color-success-4)}.monster-color-warning-4{background-color:var(--monster-bg-color-warning-4);color:var(--monster-color-warning-4)}.monster-color-error-4{background-color:var(--monster-bg-color-error-4);color:var(--monster-color-error-4)}.monster-color-selection-4{background-color:var(--monster-bg-color-selection-4);color:var(--monster-color-selection-4)}.monster-theme-control-container-1,.monster-theme-control-row-1{border:1px solid var(--monster-theme-control-border-color)}.monster-theme-control-container-1,.monster-theme-control-element,.monster-theme-control-row-1{background-color:var(--monster-theme-control-bg-color);color:var(--monster-theme-control-color)}.monster-theme-control-background{background-color:var(--monster-theme-control-bg-color)}.monster-theme-background-inherit{background-color:inherit!important}.monster-theme-on{color:var(--monster-theme-on-color);background-color:var(--monster-theme-on-bg-color)}.monster-theme-off{color:var(--monster-theme-off-color);background-color:var(--monster-theme-off-bg-color)}div[data-monster-role=popper]{box-sizing:border-box;display:none;padding:1.1em;z-index:var(--monster-z-index-modal);background:var(--monster-bg-color-primary-1);color:var(--monster-color-primary-1);border-radius:var(--monster-border-radius);border-width:var(--monster-border-width);border-style:var(--monster-border-style);border-color:var(--monster-bg-color-primary-4);box-shadow:var(--monster-box-shadow-1)}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1*var(--monster-popper-witharrrow-distance))*2);height:calc(max(var(--monster-popper-witharrrow-distance), -1*var(--monster-popper-witharrrow-distance))*2);background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:before{visibility:visible;content:\"\";transform:rotate(45deg);box-sizing:border-box}div[data-popper-placement^=top]>[data-popper-arrow]{bottom:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width)/2)}div[data-popper-placement^=top]>[data-popper-arrow]:before{border-left:transparent;border-right:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:transparent}div[data-popper-placement^=bottom]>[data-popper-arrow]{top:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width))}div[data-popper-placement^=bottom]>[data-popper-arrow]:before{border-right:transparent;border-left:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:transparent}div[data-popper-placement^=left]>[data-popper-arrow]{right:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width))}div[data-popper-placement^=left]>[data-popper-arrow]:before{border-left:transparent;border-right:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:transparent}div[data-popper-placement^=right]>[data-popper-arrow]{left:calc(var(--monster-popper-witharrrow-distance) - var(--monster-border-width)/2)}div[data-popper-placement^=right]>[data-popper-arrow]:before{border-right:transparent;border-left:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-bottom:var(--monster-border-width) var(--monster-border-style) var(--monster-bg-color-primary-4);border-top:transparent}[data-monster-role=control]{outline:none;width:100%;box-sizing:border-box}[data-monster-role=control].flex{display:flex;flex-direction:row;align-items:center}:host{display:block;box-sizing:border-box}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;color:var(--monster-color-primary-4);background-color:var(--monster-bg-color-primary-4)}.monster-badge-primary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-3)}.monster-badge-secondary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-tertiary-3);color:var(--monster-color-tertiary-3)}.monster-badge-tertiary-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-destructive-1);color:var(--monster-color-destructive-1)}.monster-badge-destructive-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-success-1);color:var(--monster-color-success-1)}.monster-badge-success-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-warning-1);color:var(--monster-color-warning-1)}.monster-badge-warning-pill{padding:.25em .6em;border-radius:10rem}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;text-decoration:none;background-color:var(--monster-bg-color-error-1);color:var(--monster-color-error-1)}.monster-badge-error-pill{padding:.25em .6em;border-radius:10rem}[data-monster-role=nav] button.hidden{display:none}nav[data-monster-role=nav]{overflow:hidden;display:flex;align-items:flex-end;flex-direction:row;flex-wrap:nowrap;box-sizing:border-box;margin-bottom:.75rem;border-bottom-width:thin;border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-2)}[data-monster-role=nav] button .remove-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-size:16px;background-position:100% 100%;background-repeat:no-repeat;width:16px;min-height:16px;order:2;height:16px;background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");flex-wrap:nowrap}[data-monster-role=nav] button span{display:flex;align-items:center;white-space:pre;font-family:var(--monster-font-family);font-size:1rem;line-height:1.4;font-weight:400}[data-monster-role=nav] button [part=error]{margin-left:.35rem}[data-monster-role=nav] button [part=error],[data-monster-role=nav] button [part=error] .monster-tab-error-icon{display:inline-flex;align-items:center;line-height:1}[data-monster-role=nav] button [part=error] .monster-tab-error-icon svg{width:1.1em;height:1.1em}[data-monster-role=nav] button [part=error]:empty{display:none}[data-monster-role=nav] button{outline:none;cursor:pointer;font-weight:400;line-height:1.5;text-align:center;text-decoration:none;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.375rem 0;margin-right:.75rem;font-size:1rem;display:flex;justify-content:center;border-radius:var(--monster-border-radius);border:none;border-bottom:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-4);transition:color .8s;align-self:stretch;align-content:center;align-items:center}[data-monster-role=nav] button:not([disabled]):hover{border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-secondary-3);color:var(--monster-bg-color-secondary-3)}[data-monster-role=nav] button[data-monster-state=active],[data-monster-role=nav] button[data-monster-state=active]:not([disabled]):hover{border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-secondary-3);color:var(--monster-color-secondary-1)!important;background-color:inherit}@media (prefers-color-scheme:dark){[data-monster-role=nav] button[data-monster-state=active],[data-monster-role=nav] button[data-monster-state=active]:not([disabled]):hover{border-color:var(--monster-bg-color-secondary-2);color:var(--monster-color-secondary-2)!important}}[data-monster-role=nav] button[disabled]{color:var(--monster-color-primary-disabled-1);background-color:var(--monster-bg-color-primary-disabled-1);cursor:not-allowed}[data-monster-role=nav] button[data-monster-role=switch]{align-self:center;touch-action:none;order:2;border:0}[data-monster-role=nav] button[data-monster-role=switch]:not([disabled]):hover{border-bottom-width:0}[data-monster-role=nav] button [part=icon]{width:1.3rem;height:1.3rem;margin-left:.4rem;flex:0 0 auto}[data-monster-role=nav] button [part=icon][data-monster-icon-mode=mask]{display:inline-block;background-color:currentColor;-webkit-mask-image:var(--monster-tab-icon-mask-image);mask-image:var(--monster-tab-icon-mask-image);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}::slotted(:not([slot]):not(.active)){display:none}::slotted(*){align-self:center}::slotted([slot]){border-bottom-width:var(--monster-border-width);border-radius:var(--monster-border-radius);border-bottom-style:var(--monster-border-style);box-shadow:var(--monster-box-shadow-1);border-color:var(--monster-bg-color-primary-4)}::slotted([slot=start]){margin-right:.75rem;order:0}::slotted([slot=end]){margin-left:.75rem;order:3}[data-monster-role=nav] [data-monster-role=popper-nav] button:not([disabled]){width:100%;justify-content:left;padding-left:15px;padding-right:15px;border:0}[data-monster-role=nav] [data-monster-role=popper-nav] button:hover,[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active],[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active]:not([disabled]):hover{border:0}@media (prefers-color-scheme:dark){[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active],[data-monster-role=nav] [data-monster-role=popper-nav] button[data-monster-state=active]:not([disabled]):hover{color:var(--monster-color-secondary-4)!important}}
|
|
29
29
|
}`,
|
|
30
30
|
0,
|
|
31
31
|
);
|
|
@@ -1277,6 +1277,7 @@ function attachTabMutationObserver(observedNode) {
|
|
|
1277
1277
|
"disabled",
|
|
1278
1278
|
ATTRIBUTE_BUTTON_LABEL,
|
|
1279
1279
|
`${ATTRIBUTE_PREFIX}button-icon`,
|
|
1280
|
+
`${ATTRIBUTE_PREFIX}button-icon-mode`,
|
|
1280
1281
|
"data-monster-tab-error",
|
|
1281
1282
|
"data-monster-tab-error-message",
|
|
1282
1283
|
"data-monster-tab-available",
|
|
@@ -1367,9 +1368,7 @@ function initTabButtons() {
|
|
|
1367
1368
|
}
|
|
1368
1369
|
|
|
1369
1370
|
if (node.hasAttribute(`${ATTRIBUTE_PREFIX}button-icon`)) {
|
|
1370
|
-
label = `<span part="label">${label}</span
|
|
1371
|
-
`${ATTRIBUTE_PREFIX}button-icon`,
|
|
1372
|
-
)}">`;
|
|
1371
|
+
label = `<span part="label">${label}</span>${getButtonIconMarkup(node)}`;
|
|
1373
1372
|
}
|
|
1374
1373
|
|
|
1375
1374
|
const errorMarkup = getTabErrorMarkup(node);
|
|
@@ -1761,6 +1760,69 @@ function getButtonLabel(node) {
|
|
|
1761
1760
|
return label;
|
|
1762
1761
|
}
|
|
1763
1762
|
|
|
1763
|
+
/**
|
|
1764
|
+
* @private
|
|
1765
|
+
* @param {HTMLElement} node
|
|
1766
|
+
* @return {string}
|
|
1767
|
+
*/
|
|
1768
|
+
function getButtonIconMarkup(node) {
|
|
1769
|
+
const icon = node.getAttribute(`${ATTRIBUTE_PREFIX}button-icon`);
|
|
1770
|
+
if (!isString(icon) || icon.trim() === "") {
|
|
1771
|
+
return "";
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
const mode = getButtonIconMode(node, icon);
|
|
1775
|
+
if (mode === "mask") {
|
|
1776
|
+
const style = `--monster-tab-icon-mask-image: url("${escapeCssString(
|
|
1777
|
+
icon,
|
|
1778
|
+
)}")`;
|
|
1779
|
+
return `<span part="icon" data-monster-icon-mode="mask" aria-hidden="true" style="${escapeHtml(
|
|
1780
|
+
style,
|
|
1781
|
+
)}"></span>`;
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
return `<img part="icon" data-monster-icon-mode="image" alt="this is an icon" src="${escapeHtml(
|
|
1785
|
+
icon,
|
|
1786
|
+
)}">`;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
/**
|
|
1790
|
+
* @private
|
|
1791
|
+
* @param {HTMLElement} node
|
|
1792
|
+
* @param {string} icon
|
|
1793
|
+
* @return {string}
|
|
1794
|
+
*/
|
|
1795
|
+
function getButtonIconMode(node, icon) {
|
|
1796
|
+
const mode = node
|
|
1797
|
+
.getAttribute(`${ATTRIBUTE_PREFIX}button-icon-mode`)
|
|
1798
|
+
?.trim()
|
|
1799
|
+
.toLowerCase();
|
|
1800
|
+
|
|
1801
|
+
switch (mode) {
|
|
1802
|
+
case "image":
|
|
1803
|
+
case "img":
|
|
1804
|
+
return "image";
|
|
1805
|
+
case "mask":
|
|
1806
|
+
return "mask";
|
|
1807
|
+
default:
|
|
1808
|
+
return isSvgIcon(icon) ? "mask" : "image";
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
|
|
1812
|
+
/**
|
|
1813
|
+
* @private
|
|
1814
|
+
* @param {string} value
|
|
1815
|
+
* @return {boolean}
|
|
1816
|
+
*/
|
|
1817
|
+
function isSvgIcon(value) {
|
|
1818
|
+
const icon = value.trim().toLowerCase();
|
|
1819
|
+
if (icon.startsWith("data:image/svg+xml")) {
|
|
1820
|
+
return true;
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
return icon.split(/[?#]/, 1)[0].endsWith(".svg");
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1764
1826
|
/**
|
|
1765
1827
|
* @private
|
|
1766
1828
|
* @param {HTMLElement} node
|
|
@@ -1810,6 +1872,19 @@ function escapeHtml(value) {
|
|
|
1810
1872
|
.replaceAll("'", "'");
|
|
1811
1873
|
}
|
|
1812
1874
|
|
|
1875
|
+
/**
|
|
1876
|
+
* @private
|
|
1877
|
+
* @param {string} value
|
|
1878
|
+
* @return {string}
|
|
1879
|
+
*/
|
|
1880
|
+
function escapeCssString(value) {
|
|
1881
|
+
return value
|
|
1882
|
+
.replaceAll("\\", "\\\\")
|
|
1883
|
+
.replaceAll("\n", "\\a ")
|
|
1884
|
+
.replaceAll("\r", "")
|
|
1885
|
+
.replaceAll('"', '\\"');
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1813
1888
|
/**
|
|
1814
1889
|
* @private
|
|
1815
1890
|
* @return {string}
|
|
@@ -1003,6 +1003,7 @@ function attachTabMutationObserver(observedNode) {
|
|
|
1003
1003
|
"disabled",
|
|
1004
1004
|
ATTRIBUTE_BUTTON_LABEL,
|
|
1005
1005
|
`${ATTRIBUTE_PREFIX}button-icon`,
|
|
1006
|
+
`${ATTRIBUTE_PREFIX}button-icon-mode`,
|
|
1006
1007
|
"data-monster-tab-error",
|
|
1007
1008
|
"data-monster-tab-error-message",
|
|
1008
1009
|
],
|
|
@@ -1076,9 +1077,7 @@ function initTabButtons() {
|
|
|
1076
1077
|
}
|
|
1077
1078
|
|
|
1078
1079
|
if (node.hasAttribute(`${ATTRIBUTE_PREFIX}button-icon`)) {
|
|
1079
|
-
label = `<span part="label">${label}</span
|
|
1080
|
-
`${ATTRIBUTE_PREFIX}button-icon`,
|
|
1081
|
-
)}">`;
|
|
1080
|
+
label = `<span part="label">${label}</span>${getButtonIconMarkup(node)}`;
|
|
1082
1081
|
}
|
|
1083
1082
|
|
|
1084
1083
|
const errorMarkup = getTabErrorMarkup(node);
|
|
@@ -1360,6 +1359,69 @@ function getButtonLabel(node) {
|
|
|
1360
1359
|
return label;
|
|
1361
1360
|
}
|
|
1362
1361
|
|
|
1362
|
+
/**
|
|
1363
|
+
* @private
|
|
1364
|
+
* @param {HTMLElement} node
|
|
1365
|
+
* @return {string}
|
|
1366
|
+
*/
|
|
1367
|
+
function getButtonIconMarkup(node) {
|
|
1368
|
+
const icon = node.getAttribute(`${ATTRIBUTE_PREFIX}button-icon`);
|
|
1369
|
+
if (!isString(icon) || icon.trim() === "") {
|
|
1370
|
+
return "";
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
const mode = getButtonIconMode(node, icon);
|
|
1374
|
+
if (mode === "mask") {
|
|
1375
|
+
const style = `--monster-tab-icon-mask-image: url("${escapeCssString(
|
|
1376
|
+
icon,
|
|
1377
|
+
)}")`;
|
|
1378
|
+
return `<span part="icon" data-monster-icon-mode="mask" aria-hidden="true" style="${escapeHtml(
|
|
1379
|
+
style,
|
|
1380
|
+
)}"></span>`;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
return `<img part="icon" data-monster-icon-mode="image" alt="this is an icon" src="${escapeHtml(
|
|
1384
|
+
icon,
|
|
1385
|
+
)}">`;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
/**
|
|
1389
|
+
* @private
|
|
1390
|
+
* @param {HTMLElement} node
|
|
1391
|
+
* @param {string} icon
|
|
1392
|
+
* @return {string}
|
|
1393
|
+
*/
|
|
1394
|
+
function getButtonIconMode(node, icon) {
|
|
1395
|
+
const mode = node
|
|
1396
|
+
.getAttribute(`${ATTRIBUTE_PREFIX}button-icon-mode`)
|
|
1397
|
+
?.trim()
|
|
1398
|
+
.toLowerCase();
|
|
1399
|
+
|
|
1400
|
+
switch (mode) {
|
|
1401
|
+
case "image":
|
|
1402
|
+
case "img":
|
|
1403
|
+
return "image";
|
|
1404
|
+
case "mask":
|
|
1405
|
+
return "mask";
|
|
1406
|
+
default:
|
|
1407
|
+
return isSvgIcon(icon) ? "mask" : "image";
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
/**
|
|
1412
|
+
* @private
|
|
1413
|
+
* @param {string} value
|
|
1414
|
+
* @return {boolean}
|
|
1415
|
+
*/
|
|
1416
|
+
function isSvgIcon(value) {
|
|
1417
|
+
const icon = value.trim().toLowerCase();
|
|
1418
|
+
if (icon.startsWith("data:image/svg+xml")) {
|
|
1419
|
+
return true;
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
return icon.split(/[?#]/, 1)[0].endsWith(".svg");
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1363
1425
|
/**
|
|
1364
1426
|
* @private
|
|
1365
1427
|
* @param {HTMLElement} node
|
|
@@ -1409,6 +1471,19 @@ function escapeHtml(value) {
|
|
|
1409
1471
|
.replaceAll("'", "'");
|
|
1410
1472
|
}
|
|
1411
1473
|
|
|
1474
|
+
/**
|
|
1475
|
+
* @private
|
|
1476
|
+
* @param {string} value
|
|
1477
|
+
* @return {string}
|
|
1478
|
+
*/
|
|
1479
|
+
function escapeCssString(value) {
|
|
1480
|
+
return value
|
|
1481
|
+
.replaceAll("\\", "\\\\")
|
|
1482
|
+
.replaceAll("\n", "\\a ")
|
|
1483
|
+
.replaceAll("\r", "")
|
|
1484
|
+
.replaceAll('"', '\\"');
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1412
1487
|
/**
|
|
1413
1488
|
* @private
|
|
1414
1489
|
* @return {string}
|
|
@@ -6,6 +6,8 @@ import { ResizeObserverMock } from "../../../util/resize-observer.mjs";
|
|
|
6
6
|
let expect = chai.expect;
|
|
7
7
|
chai.use(chaiDom);
|
|
8
8
|
|
|
9
|
+
const waitForLayout = () => new Promise((resolve) => setTimeout(resolve, 120));
|
|
10
|
+
|
|
9
11
|
const html = `
|
|
10
12
|
<div id="test1">
|
|
11
13
|
<monster-button-bar id="bar"></monster-button-bar>
|
|
@@ -80,6 +82,112 @@ describe("ButtonBar", function () {
|
|
|
80
82
|
}, 50);
|
|
81
83
|
});
|
|
82
84
|
|
|
85
|
+
it("should hide an empty button bar when configured to hide empty bars", async function () {
|
|
86
|
+
const mocks = document.getElementById("mocks");
|
|
87
|
+
mocks.innerHTML = `
|
|
88
|
+
<monster-button-bar
|
|
89
|
+
id="empty-auto-hidden-button-bar"
|
|
90
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
91
|
+
></monster-button-bar>
|
|
92
|
+
`;
|
|
93
|
+
const bar = document.getElementById("empty-auto-hidden-button-bar");
|
|
94
|
+
|
|
95
|
+
await waitForLayout();
|
|
96
|
+
|
|
97
|
+
expect(bar.getOption("layout.hideWhenEmpty")).to.equal(true);
|
|
98
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
99
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.true;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("should reveal an auto-hidden button bar when a button becomes visible", async function () {
|
|
103
|
+
const mocks = document.getElementById("mocks");
|
|
104
|
+
mocks.innerHTML = `
|
|
105
|
+
<monster-button-bar
|
|
106
|
+
id="dynamic-auto-hidden-button-bar"
|
|
107
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
108
|
+
>
|
|
109
|
+
<button id="dynamic-auto-hidden-button" hidden>Run</button>
|
|
110
|
+
</monster-button-bar>
|
|
111
|
+
`;
|
|
112
|
+
const bar = document.getElementById("dynamic-auto-hidden-button-bar");
|
|
113
|
+
const button = document.getElementById("dynamic-auto-hidden-button");
|
|
114
|
+
|
|
115
|
+
await waitForLayout();
|
|
116
|
+
|
|
117
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
118
|
+
|
|
119
|
+
button.removeAttribute("hidden");
|
|
120
|
+
await waitForLayout();
|
|
121
|
+
|
|
122
|
+
expect(bar.hasAttribute("hidden")).to.be.false;
|
|
123
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it("should keep an auto-hidden button bar visible when buttons overflow into the popper", async function () {
|
|
127
|
+
const mocks = document.getElementById("mocks");
|
|
128
|
+
mocks.innerHTML = `
|
|
129
|
+
<div id="overflow-auto-hidden-wrapper">
|
|
130
|
+
<monster-button-bar
|
|
131
|
+
id="overflow-auto-hidden-button-bar"
|
|
132
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
133
|
+
>
|
|
134
|
+
<button id="overflow-auto-hidden-a" type="button">One</button>
|
|
135
|
+
<button id="overflow-auto-hidden-b" type="button">Two</button>
|
|
136
|
+
</monster-button-bar>
|
|
137
|
+
</div>
|
|
138
|
+
`;
|
|
139
|
+
const wrapper = document.getElementById("overflow-auto-hidden-wrapper");
|
|
140
|
+
const bar = document.getElementById("overflow-auto-hidden-button-bar");
|
|
141
|
+
const buttons = [
|
|
142
|
+
document.getElementById("overflow-auto-hidden-a"),
|
|
143
|
+
document.getElementById("overflow-auto-hidden-b"),
|
|
144
|
+
];
|
|
145
|
+
const switchButton = bar.shadowRoot.querySelector(
|
|
146
|
+
'[data-monster-role="switch"]',
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
wrapper.style.boxSizing = "border-box";
|
|
150
|
+
wrapper.style.width = "30px";
|
|
151
|
+
Object.defineProperty(wrapper, "clientWidth", {
|
|
152
|
+
configurable: true,
|
|
153
|
+
value: 30,
|
|
154
|
+
});
|
|
155
|
+
Object.defineProperty(switchButton, "offsetWidth", {
|
|
156
|
+
configurable: true,
|
|
157
|
+
value: 20,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
for (const button of buttons) {
|
|
161
|
+
Object.defineProperty(button, "offsetWidth", {
|
|
162
|
+
configurable: true,
|
|
163
|
+
value: 48,
|
|
164
|
+
});
|
|
165
|
+
Object.defineProperty(button, "offsetHeight", {
|
|
166
|
+
configurable: true,
|
|
167
|
+
value: 30,
|
|
168
|
+
});
|
|
169
|
+
button.getBoundingClientRect = () => ({
|
|
170
|
+
width: 48,
|
|
171
|
+
height: 30,
|
|
172
|
+
top: 0,
|
|
173
|
+
right: 48,
|
|
174
|
+
bottom: 30,
|
|
175
|
+
left: 0,
|
|
176
|
+
x: 0,
|
|
177
|
+
y: 0,
|
|
178
|
+
toJSON: () => {},
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
await waitForLayout();
|
|
183
|
+
|
|
184
|
+
expect(buttons.every((button) => button.getAttribute("slot") === "popper"))
|
|
185
|
+
.to.be.true;
|
|
186
|
+
expect(switchButton.hasAttribute("hidden")).to.be.false;
|
|
187
|
+
expect(bar.hasAttribute("hidden")).to.be.false;
|
|
188
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
189
|
+
});
|
|
190
|
+
|
|
83
191
|
it("should default the button bar layout alignment to left", function () {
|
|
84
192
|
const bar = document.getElementById("bar");
|
|
85
193
|
const buttonBar = bar.shadowRoot.querySelector(
|
|
@@ -6,6 +6,8 @@ import { ResizeObserverMock } from "../../../util/resize-observer.mjs";
|
|
|
6
6
|
const expect = chai.expect;
|
|
7
7
|
chai.use(chaiDom);
|
|
8
8
|
|
|
9
|
+
const waitForLayout = () => new Promise((resolve) => setTimeout(resolve, 120));
|
|
10
|
+
|
|
9
11
|
const html = `
|
|
10
12
|
<div id="test1">
|
|
11
13
|
<monster-control-bar id="bar">
|
|
@@ -97,6 +99,119 @@ describe("ControlBar", function () {
|
|
|
97
99
|
expect(controlBar.style.opacity).to.not.equal("0");
|
|
98
100
|
});
|
|
99
101
|
|
|
102
|
+
it("should keep an empty control bar visible by default", async function () {
|
|
103
|
+
const bar = document.getElementById("bar-right");
|
|
104
|
+
|
|
105
|
+
await waitForLayout();
|
|
106
|
+
|
|
107
|
+
expect(bar.hasAttribute("hidden")).to.be.false;
|
|
108
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("should hide an empty control bar when the empty option is enabled at runtime", async function () {
|
|
112
|
+
const bar = document.getElementById("bar-right");
|
|
113
|
+
|
|
114
|
+
await waitForLayout();
|
|
115
|
+
|
|
116
|
+
bar.setOption("layout.hideWhenEmpty", true);
|
|
117
|
+
await waitForLayout();
|
|
118
|
+
|
|
119
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
120
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.true;
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it("should hide an empty control bar when configured to hide empty bars", async function () {
|
|
124
|
+
const mocks = document.getElementById("mocks");
|
|
125
|
+
mocks.innerHTML = `
|
|
126
|
+
<monster-control-bar
|
|
127
|
+
id="empty-auto-hidden-bar"
|
|
128
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
129
|
+
></monster-control-bar>
|
|
130
|
+
`;
|
|
131
|
+
const bar = document.getElementById("empty-auto-hidden-bar");
|
|
132
|
+
|
|
133
|
+
await waitForLayout();
|
|
134
|
+
|
|
135
|
+
expect(bar.getOption("layout.hideWhenEmpty")).to.equal(true);
|
|
136
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
137
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.true;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("should update empty control bar visibility when child controls become visible", async function () {
|
|
141
|
+
const mocks = document.getElementById("mocks");
|
|
142
|
+
mocks.innerHTML = `
|
|
143
|
+
<monster-control-bar
|
|
144
|
+
id="dynamic-auto-hidden-bar"
|
|
145
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
146
|
+
>
|
|
147
|
+
<button id="dynamic-auto-hidden-button" hidden>Run</button>
|
|
148
|
+
</monster-control-bar>
|
|
149
|
+
`;
|
|
150
|
+
const bar = document.getElementById("dynamic-auto-hidden-bar");
|
|
151
|
+
const button = document.getElementById("dynamic-auto-hidden-button");
|
|
152
|
+
|
|
153
|
+
await waitForLayout();
|
|
154
|
+
|
|
155
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
156
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.true;
|
|
157
|
+
|
|
158
|
+
button.removeAttribute("hidden");
|
|
159
|
+
await waitForLayout();
|
|
160
|
+
|
|
161
|
+
expect(bar.hasAttribute("hidden")).to.be.false;
|
|
162
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
163
|
+
|
|
164
|
+
button.style.display = "none";
|
|
165
|
+
await waitForLayout();
|
|
166
|
+
|
|
167
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
168
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.true;
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it("should release empty auto-hidden state when the option is disabled", async function () {
|
|
172
|
+
const mocks = document.getElementById("mocks");
|
|
173
|
+
mocks.innerHTML = `
|
|
174
|
+
<monster-control-bar
|
|
175
|
+
id="option-auto-hidden-bar"
|
|
176
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
177
|
+
></monster-control-bar>
|
|
178
|
+
`;
|
|
179
|
+
const bar = document.getElementById("option-auto-hidden-bar");
|
|
180
|
+
|
|
181
|
+
await waitForLayout();
|
|
182
|
+
|
|
183
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
184
|
+
|
|
185
|
+
bar.setOption("layout.hideWhenEmpty", false);
|
|
186
|
+
await waitForLayout();
|
|
187
|
+
|
|
188
|
+
expect(bar.hasAttribute("hidden")).to.be.false;
|
|
189
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it("should preserve a manual hidden attribute when empty hiding is disabled", async function () {
|
|
193
|
+
const mocks = document.getElementById("mocks");
|
|
194
|
+
mocks.innerHTML = `
|
|
195
|
+
<monster-control-bar
|
|
196
|
+
id="manual-hidden-bar"
|
|
197
|
+
hidden
|
|
198
|
+
data-monster-option-layout-hide-when-empty="true"
|
|
199
|
+
></monster-control-bar>
|
|
200
|
+
`;
|
|
201
|
+
const bar = document.getElementById("manual-hidden-bar");
|
|
202
|
+
|
|
203
|
+
await waitForLayout();
|
|
204
|
+
|
|
205
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
206
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
207
|
+
|
|
208
|
+
bar.setOption("layout.hideWhenEmpty", false);
|
|
209
|
+
await waitForLayout();
|
|
210
|
+
|
|
211
|
+
expect(bar.hasAttribute("hidden")).to.be.true;
|
|
212
|
+
expect(bar.hasAttribute("data-monster-empty-hidden")).to.be.false;
|
|
213
|
+
});
|
|
214
|
+
|
|
100
215
|
it("should allow configuring the control bar layout alignment to right", function (done) {
|
|
101
216
|
const bar = document.getElementById("bar-right");
|
|
102
217
|
|
|
@@ -145,7 +145,38 @@ let htmlNoDerivedLabel = `
|
|
|
145
145
|
</monster-tabs>
|
|
146
146
|
`;
|
|
147
147
|
|
|
148
|
+
const svgTabIcon = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M8 1 15 15H1z'/%3E%3C/svg%3E";
|
|
149
|
+
const pngTabIcon = "data:image/png;base64,iVBORw0KGgo=";
|
|
150
|
+
|
|
151
|
+
// language=html
|
|
152
|
+
let htmlIconModes = `
|
|
153
|
+
<monster-tabs id="icon-mode-tabs">
|
|
154
|
+
<div id="auto-svg-panel" data-monster-button-label="Auto SVG" data-monster-button-icon="${svgTabIcon}">
|
|
155
|
+
Auto SVG content
|
|
156
|
+
</div>
|
|
157
|
+
<div id="image-svg-panel" data-monster-button-label="Image SVG" data-monster-button-icon="${svgTabIcon}" data-monster-button-icon-mode="image">
|
|
158
|
+
Image SVG content
|
|
159
|
+
</div>
|
|
160
|
+
<div id="auto-raster-panel" data-monster-button-label="Auto Raster" data-monster-button-icon="${pngTabIcon}">
|
|
161
|
+
Auto raster content
|
|
162
|
+
</div>
|
|
163
|
+
<div id="mask-raster-panel" data-monster-button-label="Mask Raster" data-monster-button-icon="${pngTabIcon}" data-monster-button-icon-mode="mask">
|
|
164
|
+
Mask raster content
|
|
165
|
+
</div>
|
|
166
|
+
</monster-tabs>
|
|
167
|
+
`;
|
|
168
|
+
|
|
169
|
+
// language=html
|
|
170
|
+
let htmlVerticalIconModes = `
|
|
171
|
+
<monster-vertical-tabs id="vertical-icon-mode-tabs">
|
|
172
|
+
<div id="vertical-auto-svg-panel" data-monster-button-label="Auto SVG" data-monster-button-icon="${svgTabIcon}">
|
|
173
|
+
Auto SVG content
|
|
174
|
+
</div>
|
|
175
|
+
</monster-vertical-tabs>
|
|
176
|
+
`;
|
|
177
|
+
|
|
148
178
|
let Tabs;
|
|
179
|
+
let VerticalTabs;
|
|
149
180
|
let restoreBoundingClientRect = null;
|
|
150
181
|
let restoreResizeObserver = null;
|
|
151
182
|
|
|
@@ -195,6 +226,9 @@ describe('Tabs', function () {
|
|
|
195
226
|
promises.push(import("../../../../source/components/layout/tabs.mjs").then((m) => {
|
|
196
227
|
Tabs = m['Tabs'];
|
|
197
228
|
}))
|
|
229
|
+
promises.push(import("../../../../source/components/layout/vertical-tabs.mjs").then((m) => {
|
|
230
|
+
VerticalTabs = m['VerticalTabs'];
|
|
231
|
+
}))
|
|
198
232
|
|
|
199
233
|
Promise.all(promises).then(()=>{
|
|
200
234
|
done();
|
|
@@ -697,6 +731,94 @@ describe('Tabs', function () {
|
|
|
697
731
|
}).catch(done);
|
|
698
732
|
});
|
|
699
733
|
|
|
734
|
+
it('should render SVG tab icons as theme-aware masks by default', function (done) {
|
|
735
|
+
let mocks = document.getElementById('mocks');
|
|
736
|
+
mocks.innerHTML = htmlIconModes;
|
|
737
|
+
|
|
738
|
+
waitForCondition(() => {
|
|
739
|
+
const tabs = document.getElementById('icon-mode-tabs');
|
|
740
|
+
return tabs instanceof Tabs && tabs.shadowRoot.querySelectorAll('button[part=button]').length === 4;
|
|
741
|
+
}).then(() => {
|
|
742
|
+
try {
|
|
743
|
+
const tabs = document.getElementById('icon-mode-tabs');
|
|
744
|
+
const getIcon = (reference) => tabs.shadowRoot.querySelector(
|
|
745
|
+
`button[part=button][data-monster-tab-reference="${reference}"] [part=icon]`,
|
|
746
|
+
);
|
|
747
|
+
|
|
748
|
+
const autoSvgIcon = getIcon('auto-svg-panel');
|
|
749
|
+
expect(autoSvgIcon.tagName).to.equal('SPAN');
|
|
750
|
+
expect(autoSvgIcon.getAttribute('data-monster-icon-mode')).to.equal('mask');
|
|
751
|
+
expect(autoSvgIcon.getAttribute('aria-hidden')).to.equal('true');
|
|
752
|
+
expect(autoSvgIcon.getAttribute('style')).to.contain('--monster-tab-icon-mask-image');
|
|
753
|
+
|
|
754
|
+
const imageSvgIcon = getIcon('image-svg-panel');
|
|
755
|
+
expect(imageSvgIcon.tagName).to.equal('IMG');
|
|
756
|
+
expect(imageSvgIcon.getAttribute('data-monster-icon-mode')).to.equal('image');
|
|
757
|
+
expect(imageSvgIcon.getAttribute('src')).to.equal(svgTabIcon);
|
|
758
|
+
|
|
759
|
+
const autoRasterIcon = getIcon('auto-raster-panel');
|
|
760
|
+
expect(autoRasterIcon.tagName).to.equal('IMG');
|
|
761
|
+
expect(autoRasterIcon.getAttribute('data-monster-icon-mode')).to.equal('image');
|
|
762
|
+
expect(autoRasterIcon.getAttribute('src')).to.equal(pngTabIcon);
|
|
763
|
+
|
|
764
|
+
const maskRasterIcon = getIcon('mask-raster-panel');
|
|
765
|
+
expect(maskRasterIcon.tagName).to.equal('SPAN');
|
|
766
|
+
expect(maskRasterIcon.getAttribute('data-monster-icon-mode')).to.equal('mask');
|
|
767
|
+
expect(maskRasterIcon.getAttribute('style')).to.contain('--monster-tab-icon-mask-image');
|
|
768
|
+
|
|
769
|
+
done();
|
|
770
|
+
} catch (e) {
|
|
771
|
+
done(e);
|
|
772
|
+
}
|
|
773
|
+
}).catch(done);
|
|
774
|
+
});
|
|
775
|
+
|
|
776
|
+
it('should update tab icon mode when the icon mode attribute changes', function (done) {
|
|
777
|
+
let mocks = document.getElementById('mocks');
|
|
778
|
+
mocks.innerHTML = htmlIconModes;
|
|
779
|
+
|
|
780
|
+
waitForCondition(() => {
|
|
781
|
+
const tabs = document.getElementById('icon-mode-tabs');
|
|
782
|
+
return tabs instanceof Tabs && tabs.shadowRoot.querySelectorAll('button[part=button]').length === 4;
|
|
783
|
+
}).then(() => {
|
|
784
|
+
const tabs = document.getElementById('icon-mode-tabs');
|
|
785
|
+
const panel = document.getElementById('image-svg-panel');
|
|
786
|
+
panel.setAttribute('data-monster-button-icon-mode', 'mask');
|
|
787
|
+
|
|
788
|
+
return waitForCondition(() => {
|
|
789
|
+
const icon = tabs.shadowRoot.querySelector(
|
|
790
|
+
'button[part=button][data-monster-tab-reference="image-svg-panel"] [part=icon]',
|
|
791
|
+
);
|
|
792
|
+
return icon?.tagName === 'SPAN' && icon.getAttribute('data-monster-icon-mode') === 'mask';
|
|
793
|
+
});
|
|
794
|
+
}).then(() => {
|
|
795
|
+
done();
|
|
796
|
+
}).catch(done);
|
|
797
|
+
});
|
|
798
|
+
|
|
799
|
+
it('should render vertical tab SVG icons as theme-aware masks by default', function (done) {
|
|
800
|
+
let mocks = document.getElementById('mocks');
|
|
801
|
+
mocks.innerHTML = htmlVerticalIconModes;
|
|
802
|
+
|
|
803
|
+
waitForCondition(() => {
|
|
804
|
+
const tabs = document.getElementById('vertical-icon-mode-tabs');
|
|
805
|
+
return tabs instanceof VerticalTabs && tabs.shadowRoot.querySelector('button[part=button] [part=icon]') !== null;
|
|
806
|
+
}).then(() => {
|
|
807
|
+
try {
|
|
808
|
+
const tabs = document.getElementById('vertical-icon-mode-tabs');
|
|
809
|
+
const icon = tabs.shadowRoot.querySelector(
|
|
810
|
+
'button[part=button][data-monster-tab-reference="vertical-auto-svg-panel"] [part=icon]',
|
|
811
|
+
);
|
|
812
|
+
expect(icon.tagName).to.equal('SPAN');
|
|
813
|
+
expect(icon.getAttribute('data-monster-icon-mode')).to.equal('mask');
|
|
814
|
+
expect(icon.getAttribute('style')).to.contain('--monster-tab-icon-mask-image');
|
|
815
|
+
done();
|
|
816
|
+
} catch (e) {
|
|
817
|
+
done(e);
|
|
818
|
+
}
|
|
819
|
+
}).catch(done);
|
|
820
|
+
});
|
|
821
|
+
|
|
700
822
|
it('should include stable names and metadata in tab events and buttons', function (done) {
|
|
701
823
|
let mocks = document.getElementById('mocks');
|
|
702
824
|
mocks.innerHTML = htmlMetadata;
|