contain-css-svelte 1.1.3 → 1.1.6
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/dist/Card.svelte +156 -156
- package/dist/controls/ButtonLink.svelte +5 -1
- package/dist/controls/Input.svelte.d.ts +1 -1
- package/dist/controls/Option.svelte +3 -3
- package/dist/controls/RadioButton.svelte +7 -7
- package/dist/controls/Select.svelte +4 -3
- package/dist/controls/Slider.svelte +5 -1
- package/dist/controls/TabItem.svelte +9 -10
- package/dist/cssprops.js +3 -0
- package/dist/dropdowns/DropdownMenu.svelte +51 -50
- package/dist/layout/Bar.svelte +9 -10
- package/dist/layout/Column.svelte +3 -2
- package/dist/layout/Container.svelte +156 -156
- package/dist/layout/Container.svelte.d.ts +6 -4
- package/dist/layout/DataListItem.svelte +158 -158
- package/dist/layout/FormProvider.svelte +3 -1
- package/dist/layout/GridLayout.svelte +1 -1
- package/dist/layout/Hero.svelte +156 -156
- package/dist/layout/Inline.svelte +5 -1
- package/dist/layout/MenuList.svelte +34 -27
- package/dist/layout/Page.svelte +29 -1
- package/dist/layout/ResponsiveText.svelte +1 -1
- package/dist/layout/ResponsiveText.svelte.d.ts +2 -0
- package/dist/layout/Row.svelte +3 -2
- package/dist/layout/Sidebar.svelte +25 -11
- package/dist/layout/Sidebar.svelte.d.ts +4 -26
- package/dist/layout/SplitPane.svelte +11 -11
- package/dist/layout/SplitPane.svelte.d.ts +8 -20
- package/dist/layout/Stack.svelte +5 -1
- package/dist/layout/TabBar.svelte +2 -3
- package/dist/layout/Table.svelte +177 -167
- package/dist/layout/Tile.svelte +157 -156
- package/dist/misc/Code.svelte +1 -3
- package/dist/misc/Code.svelte.d.ts +2 -1
- package/dist/misc/CodeInner.svelte +18 -5
- package/dist/misc/CodeInner.svelte.d.ts +5 -1
- package/dist/misc/Progress.svelte +159 -159
- package/dist/misc/Progress.svelte.d.ts +4 -27
- package/dist/overlays/Dialog.svelte +2 -2
- package/dist/overlays/Dialog.svelte.d.ts +2 -2
- package/dist/overlays/Tooltip.svelte +221 -183
- package/dist/overlays/Tooltip.svelte.d.ts +1 -0
- package/dist/review/loadReviewAppPage.d.ts +1 -1
- package/dist/review/scenarios/IncredibleAppShell.svelte +44 -37
- package/dist/review/scenarios/LaunchStudio.svelte +108 -83
- package/dist/review/scenarios/LayoutWorkbench.svelte +49 -34
- package/dist/review/scenarios/TableWorkbench.svelte +82 -74
- package/dist/review/scenarios/VisualSystemBoard.svelte +387 -0
- package/dist/review/scenarios/VisualSystemBoard.svelte.d.ts +3 -0
- package/dist/review/scenarios.d.ts +8 -4
- package/dist/review/scenarios.js +9 -4
- package/dist/sass/_affordances.scss +26 -25
- package/dist/sass/_box.scss +21 -20
- package/dist/sass/_functions.scss +41 -30
- package/dist/sass/_mixins.scss +7 -7
- package/dist/sass/_typography.scss +37 -36
- package/dist/types/prismjs.d.ts +13 -0
- package/dist/types.d.ts +3 -0
- package/dist/typography/TextLayout.svelte +156 -156
- package/dist/vars/colors.css +1 -1
- package/dist/vars/defaults.css +8 -1
- package/dist/vars/layout.css +7 -0
- package/dist/vars/themes/bootstrap.css +1 -0
- package/package.json +4 -3
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import { injectVars } from "../util";
|
|
2
2
|
let { primary = false, secondary = false, warning = false, danger = false, success = false, info = false, href = "#", id = null, icon, children, ...restProps } = $props();
|
|
3
|
-
const
|
|
3
|
+
const inlineStyle = $derived(restProps.style);
|
|
4
|
+
const elementProps = $derived.by(() => {
|
|
5
|
+
const { style: _, ...rest } = restProps;
|
|
6
|
+
return rest;
|
|
7
|
+
});
|
|
4
8
|
const style = $derived(`${injectVars(elementProps, "button", [
|
|
5
9
|
"bg",
|
|
6
10
|
"fg",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">let { children, value, ...restProps } = $props();
|
|
2
|
-
let template = $state(
|
|
2
|
+
let template = $state();
|
|
3
3
|
// Extract text content from rendered children
|
|
4
|
-
let textContent = $derived(template ? template.textContent : "");
|
|
4
|
+
let textContent = $derived(template ? template.textContent ?? "" : "");
|
|
5
5
|
let htmlContent = $derived(template ? template.innerHTML : "");
|
|
6
6
|
export {};
|
|
7
7
|
</script>
|
|
@@ -10,6 +10,6 @@ export {};
|
|
|
10
10
|
{@html textContent}
|
|
11
11
|
</option>
|
|
12
12
|
|
|
13
|
-
<div bind:this={template} style="display: none;" class="option-template hidden">
|
|
13
|
+
<div bind:this={template} style="display: none;" class="option-template hidden" aria-hidden="true">
|
|
14
14
|
{@render children?.()}
|
|
15
15
|
</div>
|
|
@@ -35,6 +35,13 @@ function handleChange() {
|
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
37
|
<style>@charset "UTF-8";
|
|
38
|
+
/* Warning: because we define a fallback
|
|
39
|
+
media query, the media query can override the container
|
|
40
|
+
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
41
|
+
Put min-width queries *after* max-width queries so that smaller
|
|
42
|
+
container queries don't get their styles overridden by large media queries.
|
|
43
|
+
*/
|
|
44
|
+
/* Convenience groupings */
|
|
38
45
|
.label-sizing-box {
|
|
39
46
|
position: relative;
|
|
40
47
|
display: inline-block;
|
|
@@ -51,13 +58,6 @@ function handleChange() {
|
|
|
51
58
|
visibility: hidden;
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
/* Warning: because we define a fallback
|
|
55
|
-
media query, the media query can override the container
|
|
56
|
-
if we stack a bunch of these in a row and aren't thoughtful about the order.
|
|
57
|
-
Put min-width queries *after* max-width queries so that smaller
|
|
58
|
-
container queries don't get their styles overridden by large media queries.
|
|
59
|
-
*/
|
|
60
|
-
/* Convenience groupings */
|
|
61
61
|
:root {
|
|
62
62
|
/* Customize these variables for radio button styling */
|
|
63
63
|
--radio-button-dot: "•";
|
|
@@ -6,9 +6,8 @@ let observer;
|
|
|
6
6
|
let resizeObserver;
|
|
7
7
|
let targetWidth = $state("");
|
|
8
8
|
let optionButtons = $state([]);
|
|
9
|
-
onMount(
|
|
10
|
-
|
|
11
|
-
updateOptions();
|
|
9
|
+
onMount(() => {
|
|
10
|
+
tick().then(() => updateOptions());
|
|
12
11
|
// Observe changes in the select element
|
|
13
12
|
observer = new MutationObserver((mutations) => {
|
|
14
13
|
mutations.forEach((mutation) => {
|
|
@@ -56,6 +55,8 @@ function updateTargetWidth() {
|
|
|
56
55
|
targetWidth = maxWidth ? maxWidth + "px" : "100%"; // || 150; // Fallback width if measurement fails
|
|
57
56
|
}
|
|
58
57
|
function setValue(idx) {
|
|
58
|
+
if (!selectElement)
|
|
59
|
+
return;
|
|
59
60
|
selectElement.selectedIndex = idx;
|
|
60
61
|
selectElement.dispatchEvent(new Event("change", { bubbles: true }));
|
|
61
62
|
activeOption = options[idx];
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<script lang="ts">import { injectVars } from "../util";
|
|
2
2
|
let { value = $bindable(0), min = 0, max = 100, step = 1, ...restProps } = $props();
|
|
3
|
-
const
|
|
3
|
+
const inlineStyle = $derived(restProps.style);
|
|
4
|
+
const elementProps = $derived.by(() => {
|
|
5
|
+
const { style: _, ...rest } = restProps;
|
|
6
|
+
return rest;
|
|
7
|
+
});
|
|
4
8
|
const normalizedMin = $derived(Number.isFinite(min) ? min : 0);
|
|
5
9
|
const normalizedMax = $derived(Number.isFinite(max) && max > normalizedMin ? max : normalizedMin + 1);
|
|
6
10
|
const clampedValue = $derived(Math.min(Math.max(Number(value) || 0, normalizedMin), normalizedMax));
|
|
@@ -17,13 +17,12 @@ const style = $derived(injectVars(restProps, "tab", ["bg", "fg", "padding", "wid
|
|
|
17
17
|
container queries don't get their styles overridden by large media queries.
|
|
18
18
|
*/
|
|
19
19
|
/* Convenience groupings */
|
|
20
|
-
|
|
21
|
-
span {
|
|
20
|
+
.tab {
|
|
22
21
|
display: contents;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
.tab > :global(button),
|
|
25
|
+
.tab > :global(div > button) {
|
|
27
26
|
--_background-color: var(--tab-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
|
|
28
27
|
--_color: var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
|
|
29
28
|
--link-bg: var(--tab-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, inherit))));
|
|
@@ -61,21 +60,21 @@ div > :global(div > button) {
|
|
|
61
60
|
text-align: var(--tab-text-align, var(--button-text-align, var(--ui-text-align, var(--control-text-align, var(--secondary-text-align, var(--text-align, unset))))));
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
.tab > :global(button):focus-visible,
|
|
64
|
+
.tab > :global(div > button):focus-visible {
|
|
66
65
|
outline: var(--focus-color, -webkit-focus-ring-color) auto 1px;
|
|
67
66
|
outline-offset: var(--focus-outline-offset, 2px);
|
|
68
67
|
box-shadow: var(--focus-ring-box-shadow, 0 0 0 3px var(--focus-shadow-color, rgba(100, 150, 250, 0.5)));
|
|
69
68
|
}
|
|
70
69
|
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
.tab > :global(button),
|
|
71
|
+
.tab > :global(div > button) {
|
|
73
72
|
border-radius: var(--tab-border-radius, var(--border-radius) var(--border-radius) 0 0);
|
|
74
73
|
margin: 0;
|
|
75
74
|
}
|
|
76
75
|
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
.tab.active > :global(button),
|
|
77
|
+
.tab.active > :global(div > button) {
|
|
79
78
|
--_background-color: var(--tab-active-bg, var(--primary-bg, var(--tab-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))))));
|
|
80
79
|
--_color: var(--tab-active-fg, var(--primary-fg, var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))))));
|
|
81
80
|
--link-bg: var(--tab-active-link-bg, var(--primary-link-bg, var(--tab-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, inherit))))));
|
package/dist/cssprops.js
CHANGED
|
@@ -41,8 +41,10 @@ const miscComponentProps = [
|
|
|
41
41
|
"--split-pane-right-width",
|
|
42
42
|
"--split-pane-left-width",
|
|
43
43
|
"--sidebar-collapse",
|
|
44
|
+
"--sidebar-compact-side-padding",
|
|
44
45
|
"--sidebar-expand",
|
|
45
46
|
"--sidebar-transition",
|
|
47
|
+
"--sidebar-mobile-icon-filter",
|
|
46
48
|
"--resizer-grab-width",
|
|
47
49
|
"--resizer-grab-height",
|
|
48
50
|
"--resizer-color",
|
|
@@ -124,6 +126,7 @@ const components = [
|
|
|
124
126
|
...[
|
|
125
127
|
"button",
|
|
126
128
|
"mini-button",
|
|
129
|
+
"menu-trigger",
|
|
127
130
|
"menu-item",
|
|
128
131
|
"dropdown-menu",
|
|
129
132
|
"select",
|
|
@@ -19,11 +19,16 @@ const style = $derived(injectVars(props, "menu", [
|
|
|
19
19
|
"padding",
|
|
20
20
|
"width",
|
|
21
21
|
"height",
|
|
22
|
+
"triggerBg",
|
|
23
|
+
"triggerFg",
|
|
24
|
+
"triggerPadding",
|
|
22
25
|
]));
|
|
23
|
-
let dropdownTop = $state();
|
|
24
|
-
let dropdownLeft = $state();
|
|
25
|
-
let dropdownMaxHeight = $state();
|
|
26
|
+
let dropdownTop = $state(0);
|
|
27
|
+
let dropdownLeft = $state(0);
|
|
28
|
+
let dropdownMaxHeight = $state(0);
|
|
26
29
|
function computePosition() {
|
|
30
|
+
if (!buttonElement || !dropdownContentElement)
|
|
31
|
+
return;
|
|
27
32
|
let dropdownRect = dropdownContentElement.getBoundingClientRect();
|
|
28
33
|
let buttonRect = buttonElement.getBoundingClientRect();
|
|
29
34
|
// Fix me -- we need to figure out where the dropdown goes in fixed
|
|
@@ -38,13 +43,15 @@ function computePosition() {
|
|
|
38
43
|
}
|
|
39
44
|
dropdownMaxHeight = window.innerHeight - dropdownTop;
|
|
40
45
|
}
|
|
41
|
-
function triggerMenu(
|
|
46
|
+
function triggerMenu(_e) {
|
|
42
47
|
if (!isOpen) {
|
|
43
48
|
injectVariablesIntoDropdown();
|
|
44
49
|
computePosition();
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
|
-
function dismissPopover(
|
|
52
|
+
function dismissPopover(_e) {
|
|
53
|
+
if (!popoverDiv)
|
|
54
|
+
return;
|
|
48
55
|
popoverDiv.hidePopover();
|
|
49
56
|
}
|
|
50
57
|
function handleToggle(event) {
|
|
@@ -65,7 +72,7 @@ function handleKeystroke(event) {
|
|
|
65
72
|
else {
|
|
66
73
|
searchString = "";
|
|
67
74
|
if (event.key === "Escape") {
|
|
68
|
-
popoverDiv
|
|
75
|
+
popoverDiv?.hidePopover();
|
|
69
76
|
}
|
|
70
77
|
else if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
71
78
|
event.preventDefault(); // Prevent default to stop scrolling the page
|
|
@@ -75,6 +82,8 @@ function handleKeystroke(event) {
|
|
|
75
82
|
}
|
|
76
83
|
}
|
|
77
84
|
function maybeFocusMatch(searchString) {
|
|
85
|
+
if (!dropdownContentElement)
|
|
86
|
+
return;
|
|
78
87
|
let focusableItems = dropdownContentElement.querySelectorAll("a,button,[tabindex]");
|
|
79
88
|
for (let element of focusableItems) {
|
|
80
89
|
if (element.textContent &&
|
|
@@ -87,10 +96,12 @@ function maybeFocusMatch(searchString) {
|
|
|
87
96
|
}
|
|
88
97
|
}
|
|
89
98
|
function navigateMenu(direction) {
|
|
90
|
-
if (!popoverDiv
|
|
99
|
+
if (!popoverDiv?.matches(":popover-open") && buttonElement) {
|
|
91
100
|
buttonElement.click();
|
|
92
101
|
return;
|
|
93
102
|
}
|
|
103
|
+
if (!dropdownContentElement)
|
|
104
|
+
return;
|
|
94
105
|
const focusableItems = Array.from(dropdownContentElement.querySelectorAll("button, a, [tabindex]:not([tabindex='-1'])"));
|
|
95
106
|
let currentIndex = focusableItems.findIndex((item) => item === document.activeElement);
|
|
96
107
|
if (direction === "ArrowDown") {
|
|
@@ -104,6 +115,8 @@ function navigateMenu(direction) {
|
|
|
104
115
|
}
|
|
105
116
|
let cssVariableContext = $state("");
|
|
106
117
|
function injectVariablesIntoDropdown() {
|
|
118
|
+
if (!buttonElement)
|
|
119
|
+
return;
|
|
107
120
|
cssVariableContext = "";
|
|
108
121
|
let buttonStyle = getComputedStyle(buttonElement);
|
|
109
122
|
for (let prop of cssProperties) {
|
|
@@ -167,48 +180,48 @@ let popoverDiv = $state();
|
|
|
167
180
|
*/
|
|
168
181
|
/* Convenience groupings */
|
|
169
182
|
button {
|
|
170
|
-
--_background-color: var(--menu-bg, var(--button-bg, var(--surface-bg, var(--bg, unset))));
|
|
171
|
-
--_color: var(--menu-fg, var(--button-fg, var(--surface-fg, var(--fg, unset))));
|
|
172
|
-
--link-bg: var(--menu-link-bg, var(--button-link-bg, var(--surface-link-bg, inherit)));
|
|
173
|
-
--link-fg: var(--menu-link-fg, var(--button-link-fg, var(--surface-link-fg, inherit)));
|
|
183
|
+
--_background-color: var(--menu-trigger-bg, var(--menu-bg, var(--button-bg, var(--surface-bg, var(--bg, unset)))));
|
|
184
|
+
--_color: var(--menu-trigger-fg, var(--menu-fg, var(--button-fg, var(--surface-fg, var(--fg, unset)))));
|
|
185
|
+
--link-bg: var(--menu-trigger-link-bg, var(--menu-link-bg, var(--button-link-bg, var(--surface-link-bg, inherit))));
|
|
186
|
+
--link-fg: var(--menu-trigger-link-fg, var(--menu-link-fg, var(--button-link-fg, var(--surface-link-fg, inherit))));
|
|
174
187
|
background-color: var(--_background-color);
|
|
175
188
|
color: var(--_color);
|
|
176
189
|
box-sizing: border-box;
|
|
177
|
-
border: var(--menu-border, var(--button-border, var(--surface-border, var(--border, inherit))));
|
|
178
|
-
border-width: var(--menu-border-width, var(--button-border-width, var(--surface-border-width, var(--__missing-border-width))));
|
|
179
|
-
border-style: var(--menu-border-style, var(--button-border-style, var(--surface-border-style, var(--__missing-border-style))));
|
|
180
|
-
border-color: var(--menu-border-color, var(--button-border-color, var(--surface-border-color, var(--__missing-border-color))));
|
|
181
|
-
border-top: var(--menu-border-top, var(--button-border-top, var(--surface-border-top, var(--border-top, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))));
|
|
182
|
-
border-right: var(--menu-border-right, var(--button-border-right, var(--surface-border-right, var(--border-right, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))));
|
|
183
|
-
border-bottom: var(--menu-border-bottom, var(--button-border-bottom, var(--surface-border-bottom, var(--border-bottom, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))));
|
|
184
|
-
border-left: var(--menu-border-left, var(--button-border-left, var(--surface-border-left, var(--border-left, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))));
|
|
185
|
-
--_padding: var(--menu-padding, var(--button-padding, var(--surface-padding, var(--padding, 4px))));
|
|
190
|
+
border: var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, inherit)))));
|
|
191
|
+
border-width: var(--menu-trigger-border-width, var(--menu-border-width, var(--button-border-width, var(--surface-border-width, var(--__missing-border-width)))));
|
|
192
|
+
border-style: var(--menu-trigger-border-style, var(--menu-border-style, var(--button-border-style, var(--surface-border-style, var(--__missing-border-style)))));
|
|
193
|
+
border-color: var(--menu-trigger-border-color, var(--menu-border-color, var(--button-border-color, var(--surface-border-color, var(--__missing-border-color)))));
|
|
194
|
+
border-top: var(--menu-trigger-border-top, var(--menu-border-top, var(--button-border-top, var(--surface-border-top, var(--border-top, var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))))));
|
|
195
|
+
border-right: var(--menu-trigger-border-right, var(--menu-border-right, var(--button-border-right, var(--surface-border-right, var(--border-right, var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))))));
|
|
196
|
+
border-bottom: var(--menu-trigger-border-bottom, var(--menu-border-bottom, var(--button-border-bottom, var(--surface-border-bottom, var(--border-bottom, var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))))));
|
|
197
|
+
border-left: var(--menu-trigger-border-left, var(--menu-border-left, var(--button-border-left, var(--surface-border-left, var(--border-left, var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, none))))))))));
|
|
198
|
+
--_padding: var(--menu-trigger-padding, var(--menu-padding, var(--button-padding, var(--surface-padding, var(--padding, 4px)))));
|
|
186
199
|
padding: var(--_padding);
|
|
187
|
-
border-radius: var(--menu-square-radius, var(--button-square-radius, var(--surface-square-radius, var(--square-radius, 0))));
|
|
188
|
-
cursor: var(--menu-cursor, var(--button-cursor, var(--control-cursor, var(--cursor, pointer))));
|
|
189
|
-
transition: filter var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), background-color var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), border-color var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), box-shadow var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), transform var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))));
|
|
200
|
+
border-radius: var(--menu-trigger-square-radius, var(--menu-square-radius, var(--button-square-radius, var(--surface-square-radius, var(--square-radius, 0)))));
|
|
201
|
+
cursor: var(--menu-trigger-cursor, var(--menu-cursor, var(--button-cursor, var(--control-cursor, var(--cursor, pointer)))));
|
|
202
|
+
transition: filter var(--menu-trigger-transition, var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))))), background-color var(--menu-trigger-transition, var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))))), border-color var(--menu-trigger-transition, var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))))), box-shadow var(--menu-trigger-transition, var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))))), transform var(--menu-trigger-transition, var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))));
|
|
190
203
|
}
|
|
191
204
|
|
|
192
205
|
button:hover {
|
|
193
|
-
filter: var(--menu-hover-filter, var(--button-hover-filter, var(--control-hover-filter, var(--hover-filter, brightness(1.05)))));
|
|
194
|
-
transform: var(--menu-hover-transform, var(--button-hover-transform, var(--control-hover-transform, var(--hover-transform, none))));
|
|
206
|
+
filter: var(--menu-trigger-hover-filter, var(--menu-hover-filter, var(--button-hover-filter, var(--control-hover-filter, var(--hover-filter, brightness(1.05))))));
|
|
207
|
+
transform: var(--menu-trigger-hover-transform, var(--menu-hover-transform, var(--button-hover-transform, var(--control-hover-transform, var(--hover-transform, none)))));
|
|
195
208
|
background-color: color-mix(in oklch, var(--_background-color) var(--hover-base-color-percentage, 90%), var(--hover-color-mix, white) calc(100% - var(--hover-base-color-percentage, 90%)));
|
|
196
|
-
box-shadow: var(--menu-hover-box-shadow, var(--button-hover-box-shadow, var(--control-hover-box-shadow, var(--hover-box-shadow, var(--_box-shadow, none)))));
|
|
209
|
+
box-shadow: var(--menu-trigger-hover-box-shadow, var(--menu-hover-box-shadow, var(--button-hover-box-shadow, var(--control-hover-box-shadow, var(--hover-box-shadow, var(--_box-shadow, none))))));
|
|
197
210
|
}
|
|
198
211
|
|
|
199
212
|
button:active {
|
|
200
|
-
filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
|
|
201
|
-
transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
|
|
213
|
+
filter: var(--menu-trigger-active-filter, var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9))))));
|
|
214
|
+
transform: var(--menu-trigger-active-transform, var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none)))));
|
|
202
215
|
background-color: color-mix(in oklch, var(--_background-color) var(--active-base-color-percentage, 90%), var(--active-color-mix, black) calc(100% - var(--active-base-color-percentage, 90%)));
|
|
203
|
-
box-shadow: var(--menu-active-box-shadow, var(--button-active-box-shadow, var(--control-active-box-shadow, var(--active-box-shadow, var(--_box-shadow, none)))));
|
|
216
|
+
box-shadow: var(--menu-trigger-active-box-shadow, var(--menu-active-box-shadow, var(--button-active-box-shadow, var(--control-active-box-shadow, var(--active-box-shadow, var(--_box-shadow, none))))));
|
|
204
217
|
}
|
|
205
218
|
|
|
206
219
|
button:disabled {
|
|
207
|
-
cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
|
|
208
|
-
transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
|
|
209
|
-
filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
|
|
220
|
+
cursor: var(--menu-trigger-disabled-cursor, var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed)))));
|
|
221
|
+
transform: var(--menu-trigger-disabled-transform, var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none)))));
|
|
222
|
+
filter: var(--menu-trigger-disabled-filter, var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5))))));
|
|
210
223
|
background-color: color-mix(in oklch, var(--_background-color) var(--disabled-base-color-percentage, 50%), var(--disabled-color-mix, gray) calc(100% - var(--disabled-base-color-percentage, 50%)));
|
|
211
|
-
box-shadow: var(--menu-disabled-box-shadow, var(--button-disabled-box-shadow, var(--control-disabled-box-shadow, var(--disabled-box-shadow, var(--_box-shadow, none)))));
|
|
224
|
+
box-shadow: var(--menu-trigger-disabled-box-shadow, var(--menu-disabled-box-shadow, var(--button-disabled-box-shadow, var(--control-disabled-box-shadow, var(--disabled-box-shadow, var(--_box-shadow, none))))));
|
|
212
225
|
}
|
|
213
226
|
|
|
214
227
|
button:focus-visible {
|
|
@@ -221,25 +234,13 @@ button {
|
|
|
221
234
|
position: relative;
|
|
222
235
|
}
|
|
223
236
|
|
|
224
|
-
.menu {
|
|
237
|
+
.dropdown-content :global(.menu) {
|
|
225
238
|
--_background-color: var(--menu-bg, var(--surface-bg, var(--bg, unset)));
|
|
226
239
|
--_color: var(--menu-fg, var(--surface-fg, var(--fg, unset)));
|
|
227
240
|
--link-bg: var(--menu-link-bg, var(--surface-link-bg, inherit));
|
|
228
241
|
--link-fg: var(--menu-link-fg, var(--surface-link-fg, inherit));
|
|
229
242
|
background-color: var(--_background-color);
|
|
230
243
|
color: var(--_color);
|
|
231
|
-
box-sizing: border-box;
|
|
232
|
-
--_padding: var(--menu-padding, var(--padding, 4px));
|
|
233
|
-
padding: var(--_padding);
|
|
234
|
-
border: var(--menu-border, var(--border, inherit));
|
|
235
|
-
border-width: var(--menu-border-width, var(--__missing-border-width));
|
|
236
|
-
border-style: var(--menu-border-style, var(--__missing-border-style));
|
|
237
|
-
border-color: var(--menu-border-color, var(--__missing-border-color));
|
|
238
|
-
border-top: var(--menu-border-top, var(--border-top, var(--menu-border, var(--border, none))));
|
|
239
|
-
border-right: var(--menu-border-right, var(--border-right, var(--menu-border, var(--border, none))));
|
|
240
|
-
border-bottom: var(--menu-border-bottom, var(--border-bottom, var(--menu-border, var(--border, none))));
|
|
241
|
-
border-left: var(--menu-border-left, var(--border-left, var(--menu-border, var(--border, none))));
|
|
242
|
-
border-radius: var(--menu-border-radius, var(--border-radius, none));
|
|
243
244
|
font-family: var(--menu-font-family, var(--surface-font-family, var(--font-family, unset)));
|
|
244
245
|
text-transform: var(--menu-text-transform, var(--surface-text-transform, var(--text-transform, unset)));
|
|
245
246
|
text-decoration: var(--menu-text-decoration, var(--surface-text-decoration, var(--text-decoration, unset)));
|
|
@@ -261,21 +262,21 @@ button {
|
|
|
261
262
|
transition: filter var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), background-color var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), border-color var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), box-shadow var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms)))), transform var(--menu-transition, var(--button-transition, var(--control-transition, var(--transition, 300ms))));
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
.menu:hover {
|
|
265
|
+
.dropdown-content :global(.menu):hover {
|
|
265
266
|
filter: var(--menu-hover-filter, var(--button-hover-filter, var(--control-hover-filter, var(--hover-filter, brightness(1.05)))));
|
|
266
267
|
transform: var(--menu-hover-transform, var(--button-hover-transform, var(--control-hover-transform, var(--hover-transform, none))));
|
|
267
268
|
background-color: color-mix(in oklch, var(--_background-color) var(--hover-base-color-percentage, 90%), var(--hover-color-mix, white) calc(100% - var(--hover-base-color-percentage, 90%)));
|
|
268
269
|
box-shadow: var(--menu-hover-box-shadow, var(--button-hover-box-shadow, var(--control-hover-box-shadow, var(--hover-box-shadow, var(--_box-shadow, none)))));
|
|
269
270
|
}
|
|
270
271
|
|
|
271
|
-
.menu:active {
|
|
272
|
+
.dropdown-content :global(.menu):active {
|
|
272
273
|
filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
|
|
273
274
|
transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
|
|
274
275
|
background-color: color-mix(in oklch, var(--_background-color) var(--active-base-color-percentage, 90%), var(--active-color-mix, black) calc(100% - var(--active-base-color-percentage, 90%)));
|
|
275
276
|
box-shadow: var(--menu-active-box-shadow, var(--button-active-box-shadow, var(--control-active-box-shadow, var(--active-box-shadow, var(--_box-shadow, none)))));
|
|
276
277
|
}
|
|
277
278
|
|
|
278
|
-
.menu:disabled {
|
|
279
|
+
.dropdown-content :global(.menu):disabled {
|
|
279
280
|
cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
|
|
280
281
|
transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
|
|
281
282
|
filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
|
|
@@ -283,7 +284,7 @@ button {
|
|
|
283
284
|
box-shadow: var(--menu-disabled-box-shadow, var(--button-disabled-box-shadow, var(--control-disabled-box-shadow, var(--disabled-box-shadow, var(--_box-shadow, none)))));
|
|
284
285
|
}
|
|
285
286
|
|
|
286
|
-
.menu:focus-visible {
|
|
287
|
+
.dropdown-content :global(.menu):focus-visible {
|
|
287
288
|
outline: var(--focus-color, -webkit-focus-ring-color) auto 1px;
|
|
288
289
|
outline-offset: var(--focus-outline-offset, 2px);
|
|
289
290
|
box-shadow: var(--focus-ring-box-shadow, 0 0 0 3px var(--focus-shadow-color, rgba(100, 150, 250, 0.5)));
|
package/dist/layout/Bar.svelte
CHANGED
|
@@ -12,14 +12,11 @@ const cssKeys = [
|
|
|
12
12
|
"marginTop",
|
|
13
13
|
];
|
|
14
14
|
const style = $derived(injectVars(restProps, "bar", cssKeys));
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
extraStyle +=
|
|
21
|
-
"--bar-bg: var(--secondary-bg); --bar-fg: var(--secondary-fg);";
|
|
22
|
-
}
|
|
15
|
+
const extraStyle = $derived(primary
|
|
16
|
+
? "--bar-bg: var(--primary-bg); --bar-fg: var(--primary-fg);"
|
|
17
|
+
: secondary
|
|
18
|
+
? "--bar-bg: var(--secondary-bg); --bar-fg: var(--secondary-fg);"
|
|
19
|
+
: "");
|
|
23
20
|
</script>
|
|
24
21
|
|
|
25
22
|
<div class="bar" style="{style}{extraStyle}">
|
|
@@ -35,14 +32,16 @@ else if (secondary) {
|
|
|
35
32
|
/* Convenience groupings */
|
|
36
33
|
.bar {
|
|
37
34
|
display: flex;
|
|
35
|
+
container-type: inline-size;
|
|
36
|
+
flex-wrap: var(--bar-wrap, wrap);
|
|
38
37
|
align-items: var(--bar-align, center);
|
|
39
38
|
justify-content: var(--bar-justify, space-between);
|
|
40
39
|
padding: var(--bar-padding, var(--padding, 8px));
|
|
41
40
|
border-bottom: var(--bar-border-bottom, var(--bar-border-width, var(--border-width, 1px)) var(--bar-border-style, var(--border-style, 1px)) var(--bar-border-color, var(--border-color, 1px)));
|
|
42
41
|
border-top: var(--bar-border-top, var(--bar-border-width, var(--border-width, 1px)) var(--bar-border-style, var(--border-style, 1px)) var(--bar-border-color, var(--border-color, 1px)));
|
|
43
42
|
margin-bottom: var(--bar-margin-bottom, 1em);
|
|
44
|
-
min-height: var(--bar-min-height);
|
|
45
|
-
height: var(--bar-height,
|
|
43
|
+
min-height: var(--bar-min-height, var(--bar-height, 3em));
|
|
44
|
+
height: var(--bar-height, auto);
|
|
46
45
|
max-height: var(--bar-max-height);
|
|
47
46
|
--_background-color: var(--bar-bg, var(--surface-bg, var(--bg, unset)));
|
|
48
47
|
--_color: var(--bar-fg, var(--surface-fg, var(--fg, unset)));
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
let warned = false;
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
|
-
<script lang="ts">import
|
|
5
|
+
<script lang="ts">import { BROWSER, DEV } from "esm-env";
|
|
6
|
+
import ColumnContainer from "./ColumnContainer.svelte";
|
|
6
7
|
let { size = "medium", customWidth = null, children, ...restProps } = $props();
|
|
7
|
-
if (
|
|
8
|
+
if (BROWSER && DEV && !warned) {
|
|
8
9
|
warned = true;
|
|
9
10
|
console.warn("[ContainCSS] <Column> is deprecated. Use <ColumnContainer> for sized rails or <Stack> for generic vertical layout.");
|
|
10
11
|
}
|