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.
Files changed (64) hide show
  1. package/dist/Card.svelte +156 -156
  2. package/dist/controls/ButtonLink.svelte +5 -1
  3. package/dist/controls/Input.svelte.d.ts +1 -1
  4. package/dist/controls/Option.svelte +3 -3
  5. package/dist/controls/RadioButton.svelte +7 -7
  6. package/dist/controls/Select.svelte +4 -3
  7. package/dist/controls/Slider.svelte +5 -1
  8. package/dist/controls/TabItem.svelte +9 -10
  9. package/dist/cssprops.js +3 -0
  10. package/dist/dropdowns/DropdownMenu.svelte +51 -50
  11. package/dist/layout/Bar.svelte +9 -10
  12. package/dist/layout/Column.svelte +3 -2
  13. package/dist/layout/Container.svelte +156 -156
  14. package/dist/layout/Container.svelte.d.ts +6 -4
  15. package/dist/layout/DataListItem.svelte +158 -158
  16. package/dist/layout/FormProvider.svelte +3 -1
  17. package/dist/layout/GridLayout.svelte +1 -1
  18. package/dist/layout/Hero.svelte +156 -156
  19. package/dist/layout/Inline.svelte +5 -1
  20. package/dist/layout/MenuList.svelte +34 -27
  21. package/dist/layout/Page.svelte +29 -1
  22. package/dist/layout/ResponsiveText.svelte +1 -1
  23. package/dist/layout/ResponsiveText.svelte.d.ts +2 -0
  24. package/dist/layout/Row.svelte +3 -2
  25. package/dist/layout/Sidebar.svelte +25 -11
  26. package/dist/layout/Sidebar.svelte.d.ts +4 -26
  27. package/dist/layout/SplitPane.svelte +11 -11
  28. package/dist/layout/SplitPane.svelte.d.ts +8 -20
  29. package/dist/layout/Stack.svelte +5 -1
  30. package/dist/layout/TabBar.svelte +2 -3
  31. package/dist/layout/Table.svelte +177 -167
  32. package/dist/layout/Tile.svelte +157 -156
  33. package/dist/misc/Code.svelte +1 -3
  34. package/dist/misc/Code.svelte.d.ts +2 -1
  35. package/dist/misc/CodeInner.svelte +18 -5
  36. package/dist/misc/CodeInner.svelte.d.ts +5 -1
  37. package/dist/misc/Progress.svelte +159 -159
  38. package/dist/misc/Progress.svelte.d.ts +4 -27
  39. package/dist/overlays/Dialog.svelte +2 -2
  40. package/dist/overlays/Dialog.svelte.d.ts +2 -2
  41. package/dist/overlays/Tooltip.svelte +221 -183
  42. package/dist/overlays/Tooltip.svelte.d.ts +1 -0
  43. package/dist/review/loadReviewAppPage.d.ts +1 -1
  44. package/dist/review/scenarios/IncredibleAppShell.svelte +44 -37
  45. package/dist/review/scenarios/LaunchStudio.svelte +108 -83
  46. package/dist/review/scenarios/LayoutWorkbench.svelte +49 -34
  47. package/dist/review/scenarios/TableWorkbench.svelte +82 -74
  48. package/dist/review/scenarios/VisualSystemBoard.svelte +387 -0
  49. package/dist/review/scenarios/VisualSystemBoard.svelte.d.ts +3 -0
  50. package/dist/review/scenarios.d.ts +8 -4
  51. package/dist/review/scenarios.js +9 -4
  52. package/dist/sass/_affordances.scss +26 -25
  53. package/dist/sass/_box.scss +21 -20
  54. package/dist/sass/_functions.scss +41 -30
  55. package/dist/sass/_mixins.scss +7 -7
  56. package/dist/sass/_typography.scss +37 -36
  57. package/dist/types/prismjs.d.ts +13 -0
  58. package/dist/types.d.ts +3 -0
  59. package/dist/typography/TextLayout.svelte +156 -156
  60. package/dist/vars/colors.css +1 -1
  61. package/dist/vars/defaults.css +8 -1
  62. package/dist/vars/layout.css +7 -0
  63. package/dist/vars/themes/bootstrap.css +1 -0
  64. 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 { style: inlineStyle, ...elementProps } = restProps;
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,6 +1,6 @@
1
1
  import type { HTMLInputAttributes } from "svelte/elements";
2
2
  type Props = {
3
- value?: string;
3
+ value?: string | number;
4
4
  placeholder?: string;
5
5
  } & HTMLInputAttributes;
6
6
  declare const Input: import("svelte").Component<Props, {}, "value">;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">let { children, value, ...restProps } = $props();
2
- let template = $state(null);
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(async () => {
10
- await tick(); // Ensure slot content is rendered
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 { style: inlineStyle, ...elementProps } = restProps;
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
- div,
21
- span {
20
+ .tab {
22
21
  display: contents;
23
22
  }
24
23
 
25
- div > :global(button),
26
- div > :global(div > button) {
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
- div > :global(button):focus-visible,
65
- div > :global(div > button):focus-visible {
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
- div > :global(button),
72
- div > :global(div > button) {
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
- div.active > :global(button),
78
- div.active > :global(div > button) {
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(e) {
46
+ function triggerMenu(_e) {
42
47
  if (!isOpen) {
43
48
  injectVariablesIntoDropdown();
44
49
  computePosition();
45
50
  }
46
51
  }
47
- function dismissPopover(e) {
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.hidePopover();
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.matches(":popover-open")) {
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)));
@@ -12,14 +12,11 @@ const cssKeys = [
12
12
  "marginTop",
13
13
  ];
14
14
  const style = $derived(injectVars(restProps, "bar", cssKeys));
15
- let extraStyle = "";
16
- if (primary) {
17
- extraStyle += "--bar-bg: var(--primary-bg); --bar-fg: var(--primary-fg);";
18
- }
19
- else if (secondary) {
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, 3em);
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 ColumnContainer from "./ColumnContainer.svelte";
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 (typeof window !== "undefined" && import.meta.env.DEV && !warned) {
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
  }