contain-css-svelte 1.1.4 → 1.1.7

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 (60) hide show
  1. package/dist/Card.svelte +60 -10
  2. package/dist/controls/Button.svelte +72 -12
  3. package/dist/controls/ButtonLink.svelte +89 -15
  4. package/dist/controls/Checkbox.svelte +24 -4
  5. package/dist/controls/Input.svelte +12 -2
  6. package/dist/controls/Input.svelte.d.ts +1 -1
  7. package/dist/controls/MiniButton.svelte +84 -14
  8. package/dist/controls/Option.svelte +3 -3
  9. package/dist/controls/RadioButton.svelte +24 -4
  10. package/dist/controls/Select.svelte +28 -7
  11. package/dist/controls/Slider.svelte +5 -1
  12. package/dist/controls/TabItem.svelte +24 -4
  13. package/dist/controls/Toggle.svelte +24 -4
  14. package/dist/cssprops.js +3 -0
  15. package/dist/dropdowns/DropdownMenu.svelte +74 -35
  16. package/dist/layout/Accordion.svelte +48 -8
  17. package/dist/layout/Bar.svelte +28 -6
  18. package/dist/layout/Container.svelte +12 -2
  19. package/dist/layout/Container.svelte.d.ts +6 -4
  20. package/dist/layout/DataList.svelte +12 -2
  21. package/dist/layout/DataListItem.svelte +13 -3
  22. package/dist/layout/Fieldset.svelte +24 -4
  23. package/dist/layout/Form.svelte +12 -2
  24. package/dist/layout/FormProvider.svelte +3 -1
  25. package/dist/layout/GridLayout.svelte +1 -1
  26. package/dist/layout/Hero.svelte +12 -2
  27. package/dist/layout/Inline.svelte +5 -1
  28. package/dist/layout/MenuList.svelte +48 -8
  29. package/dist/layout/Page.svelte +53 -5
  30. package/dist/layout/ResponsiveText.svelte +1 -1
  31. package/dist/layout/ResponsiveText.svelte.d.ts +2 -0
  32. package/dist/layout/Sidebar.svelte +82 -17
  33. package/dist/layout/SplitPane.svelte +3 -3
  34. package/dist/layout/Stack.svelte +5 -1
  35. package/dist/layout/TabBar.svelte +14 -5
  36. package/dist/layout/Table.svelte +81 -21
  37. package/dist/layout/Tile.svelte +49 -8
  38. package/dist/misc/CodeInner.svelte +108 -18
  39. package/dist/misc/Progress.svelte +48 -8
  40. package/dist/misc/Tag.svelte +88 -22
  41. package/dist/overlays/Dialog.svelte +14 -4
  42. package/dist/overlays/Dialog.svelte.d.ts +2 -2
  43. package/dist/overlays/Tooltip.svelte +77 -29
  44. package/dist/overlays/Tooltip.svelte.d.ts +1 -0
  45. package/dist/review/loadReviewAppPage.d.ts +1 -1
  46. package/dist/review/scenarios/IncredibleAppShell.svelte +44 -37
  47. package/dist/review/scenarios/LaunchStudio.svelte +108 -83
  48. package/dist/review/scenarios/LayoutWorkbench.svelte +49 -34
  49. package/dist/review/scenarios/TableWorkbench.svelte +82 -74
  50. package/dist/review/scenarios/VisualSystemBoard.svelte +387 -0
  51. package/dist/review/scenarios/VisualSystemBoard.svelte.d.ts +3 -0
  52. package/dist/review/scenarios.d.ts +8 -4
  53. package/dist/review/scenarios.js +9 -4
  54. package/dist/sass/_color.scss +46 -2
  55. package/dist/types.d.ts +3 -0
  56. package/dist/vars/colors.css +1 -1
  57. package/dist/vars/defaults.css +8 -1
  58. package/dist/vars/layout.css +7 -0
  59. package/dist/vars/themes/bootstrap.css +1 -0
  60. package/package.json +2 -1
@@ -30,10 +30,20 @@ const style = $derived(injectVars(restProps, "mini-button", [
30
30
  */
31
31
  /* Convenience groupings */
32
32
  button.primary {
33
- --_background-color: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
34
- --_color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
35
33
  --link-bg: var(--primary-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
36
34
  --link-fg: var(--primary-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
35
+ --_bg-mix-color: var(--primary-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
36
+ --_bg-mix-amount: var(--primary-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
37
+ --_fg-mix-color: var(--primary-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
38
+ --_fg-mix-amount: var(--primary-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
39
+ --_bg-base: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
40
+ --_fg-base: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
41
+ --_background-color: color-mix(
42
+ in srgb,
43
+ var(--_bg-base),
44
+ var(--_bg-mix-color) var(--_bg-mix-amount)
45
+ );
46
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
37
47
  background-color: var(--_background-color);
38
48
  color: var(--_color);
39
49
  }
@@ -56,10 +66,20 @@ button {
56
66
  text-indent: var(--mini-button-indent, var(--button-indent, var(--ui-indent, var(--control-indent, var(--indent, unset)))));
57
67
  font-variant: var(--mini-button-font-variant, var(--button-font-variant, var(--ui-font-variant, var(--control-font-variant, var(--font-variant, unset)))));
58
68
  text-align: var(--mini-button-text-align, var(--button-text-align, var(--ui-text-align, var(--control-text-align, var(--text-align, unset)))));
59
- --_background-color: var(--mini-button-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
60
- --_color: var(--mini-button-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
61
69
  --link-bg: var(--mini-button-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, inherit))));
62
70
  --link-fg: var(--mini-button-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, inherit))));
71
+ --_bg-mix-color: var(--mini-button-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--secondary-bg-mix-color, var(--bg-mix-color, transparent)))));
72
+ --_bg-mix-amount: var(--mini-button-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--secondary-bg-mix-amount, var(--bg-mix-amount, 0%)))));
73
+ --_fg-mix-color: var(--mini-button-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--secondary-fg-mix-color, var(--fg-mix-color, transparent)))));
74
+ --_fg-mix-amount: var(--mini-button-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--secondary-fg-mix-amount, var(--fg-mix-amount, 0%)))));
75
+ --_bg-base: var(--mini-button-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
76
+ --_fg-base: var(--mini-button-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
77
+ --_background-color: color-mix(
78
+ in srgb,
79
+ var(--_bg-base),
80
+ var(--_bg-mix-color) var(--_bg-mix-amount)
81
+ );
82
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
63
83
  background-color: var(--_background-color);
64
84
  color: var(--_color);
65
85
  cursor: var(--mini-button-cursor, var(--button-cursor, var(--clickable-cursor, var(--cursor, pointer))));
@@ -116,46 +136,96 @@ button {
116
136
  }
117
137
 
118
138
  button.primary {
119
- --_background-color: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
120
- --_color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
121
139
  --link-bg: var(--primary-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
122
140
  --link-fg: var(--primary-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
141
+ --_bg-mix-color: var(--primary-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
142
+ --_bg-mix-amount: var(--primary-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
143
+ --_fg-mix-color: var(--primary-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
144
+ --_fg-mix-amount: var(--primary-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
145
+ --_bg-base: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
146
+ --_fg-base: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
147
+ --_background-color: color-mix(
148
+ in srgb,
149
+ var(--_bg-base),
150
+ var(--_bg-mix-color) var(--_bg-mix-amount)
151
+ );
152
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
123
153
  background-color: var(--_background-color);
124
154
  color: var(--_color);
125
155
  }
126
156
 
127
157
  button.warning {
128
- --_background-color: var(--warning-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
129
- --_color: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
130
158
  --link-bg: var(--warning-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
131
159
  --link-fg: var(--warning-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
160
+ --_bg-mix-color: var(--warning-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
161
+ --_bg-mix-amount: var(--warning-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
162
+ --_fg-mix-color: var(--warning-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
163
+ --_fg-mix-amount: var(--warning-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
164
+ --_bg-base: var(--warning-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
165
+ --_fg-base: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
166
+ --_background-color: color-mix(
167
+ in srgb,
168
+ var(--_bg-base),
169
+ var(--_bg-mix-color) var(--_bg-mix-amount)
170
+ );
171
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
132
172
  background-color: var(--_background-color);
133
173
  color: var(--_color);
134
174
  }
135
175
 
136
176
  button.danger {
137
- --_background-color: var(--danger-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
138
- --_color: var(--danger-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
139
177
  --link-bg: var(--danger-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
140
178
  --link-fg: var(--danger-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
179
+ --_bg-mix-color: var(--danger-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
180
+ --_bg-mix-amount: var(--danger-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
181
+ --_fg-mix-color: var(--danger-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
182
+ --_fg-mix-amount: var(--danger-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
183
+ --_bg-base: var(--danger-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
184
+ --_fg-base: var(--danger-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
185
+ --_background-color: color-mix(
186
+ in srgb,
187
+ var(--_bg-base),
188
+ var(--_bg-mix-color) var(--_bg-mix-amount)
189
+ );
190
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
141
191
  background-color: var(--_background-color);
142
192
  color: var(--_color);
143
193
  }
144
194
 
145
195
  button.success {
146
- --_background-color: var(--success-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
147
- --_color: var(--success-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
148
196
  --link-bg: var(--success-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
149
197
  --link-fg: var(--success-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
198
+ --_bg-mix-color: var(--success-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
199
+ --_bg-mix-amount: var(--success-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
200
+ --_fg-mix-color: var(--success-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
201
+ --_fg-mix-amount: var(--success-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
202
+ --_bg-base: var(--success-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
203
+ --_fg-base: var(--success-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
204
+ --_background-color: color-mix(
205
+ in srgb,
206
+ var(--_bg-base),
207
+ var(--_bg-mix-color) var(--_bg-mix-amount)
208
+ );
209
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
150
210
  background-color: var(--_background-color);
151
211
  color: var(--_color);
152
212
  }
153
213
 
154
214
  button.info {
155
- --_background-color: var(--info-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
156
- --_color: var(--info-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
157
215
  --link-bg: var(--info-link-bg, var(--button-link-bg, var(--control-link-bg, inherit)));
158
216
  --link-fg: var(--info-link-fg, var(--button-link-fg, var(--control-link-fg, inherit)));
217
+ --_bg-mix-color: var(--info-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--bg-mix-color, transparent))));
218
+ --_bg-mix-amount: var(--info-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--bg-mix-amount, 0%))));
219
+ --_fg-mix-color: var(--info-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--fg-mix-color, transparent))));
220
+ --_fg-mix-amount: var(--info-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--fg-mix-amount, 0%))));
221
+ --_bg-base: var(--info-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
222
+ --_fg-base: var(--info-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
223
+ --_background-color: color-mix(
224
+ in srgb,
225
+ var(--_bg-base),
226
+ var(--_bg-mix-color) var(--_bg-mix-amount)
227
+ );
228
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
159
229
  background-color: var(--_background-color);
160
230
  color: var(--_color);
161
231
  }</style>
@@ -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>
@@ -136,10 +136,20 @@ label.radio-item::before {
136
136
  content: " ";
137
137
  width: var(--radio-button-size, var(--font-size, var(--size, 1em)));
138
138
  height: var(--radio-button-size, var(--font-size, var(--size, 1em)));
139
- --_background-color: var(--radio-button-bg, var(--toggle-bg, var(--inactive-bg, var(--secondary-bg, var(--bg, unset)))));
140
- --_color: var(--radio-button-fg, var(--toggle-fg, var(--inactive-fg, var(--secondary-fg, var(--fg, unset)))));
141
139
  --link-bg: var(--radio-button-link-bg, var(--toggle-link-bg, var(--inactive-link-bg, var(--secondary-link-bg, inherit))));
142
140
  --link-fg: var(--radio-button-link-fg, var(--toggle-link-fg, var(--inactive-link-fg, var(--secondary-link-fg, inherit))));
141
+ --_bg-mix-color: var(--radio-button-bg-mix-color, var(--toggle-bg-mix-color, var(--inactive-bg-mix-color, var(--secondary-bg-mix-color, var(--bg-mix-color, transparent)))));
142
+ --_bg-mix-amount: var(--radio-button-bg-mix-amount, var(--toggle-bg-mix-amount, var(--inactive-bg-mix-amount, var(--secondary-bg-mix-amount, var(--bg-mix-amount, 0%)))));
143
+ --_fg-mix-color: var(--radio-button-fg-mix-color, var(--toggle-fg-mix-color, var(--inactive-fg-mix-color, var(--secondary-fg-mix-color, var(--fg-mix-color, transparent)))));
144
+ --_fg-mix-amount: var(--radio-button-fg-mix-amount, var(--toggle-fg-mix-amount, var(--inactive-fg-mix-amount, var(--secondary-fg-mix-amount, var(--fg-mix-amount, 0%)))));
145
+ --_bg-base: var(--radio-button-bg, var(--toggle-bg, var(--inactive-bg, var(--secondary-bg, var(--bg, unset)))));
146
+ --_fg-base: var(--radio-button-fg, var(--toggle-fg, var(--inactive-fg, var(--secondary-fg, var(--fg, unset)))));
147
+ --_background-color: color-mix(
148
+ in srgb,
149
+ var(--_bg-base),
150
+ var(--_bg-mix-color) var(--_bg-mix-amount)
151
+ );
152
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
143
153
  background-color: var(--_background-color);
144
154
  color: var(--_color);
145
155
  border: var(--radio-button-border, var(--border, 1px solid var(--border-color)));
@@ -163,10 +173,20 @@ label.radio-item:active::before {
163
173
  }
164
174
 
165
175
  label.radio-item:has(input:checked)::before {
166
- --_background-color: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--bg, unset))));
167
- --_color: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--fg, unset))));
168
176
  --link-bg: var(--radio-button-checked-link-bg, var(--toggle-on-link-bg, var(--primary-link-bg, inherit)));
169
177
  --link-fg: var(--radio-button-checked-link-fg, var(--toggle-on-link-fg, var(--primary-link-fg, inherit)));
178
+ --_bg-mix-color: var(--radio-button-checked-bg-mix-color, var(--toggle-on-bg-mix-color, var(--primary-bg-mix-color, var(--bg-mix-color, transparent))));
179
+ --_bg-mix-amount: var(--radio-button-checked-bg-mix-amount, var(--toggle-on-bg-mix-amount, var(--primary-bg-mix-amount, var(--bg-mix-amount, 0%))));
180
+ --_fg-mix-color: var(--radio-button-checked-fg-mix-color, var(--toggle-on-fg-mix-color, var(--primary-fg-mix-color, var(--fg-mix-color, transparent))));
181
+ --_fg-mix-amount: var(--radio-button-checked-fg-mix-amount, var(--toggle-on-fg-mix-amount, var(--primary-fg-mix-amount, var(--fg-mix-amount, 0%))));
182
+ --_bg-base: var(--radio-button-checked-bg, var(--toggle-on-bg, var(--primary-bg, var(--bg, unset))));
183
+ --_fg-base: var(--radio-button-checked-fg, var(--toggle-on-fg, var(--primary-fg, var(--fg, unset))));
184
+ --_background-color: color-mix(
185
+ in srgb,
186
+ var(--_bg-base),
187
+ var(--_bg-mix-color) var(--_bg-mix-amount)
188
+ );
189
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
170
190
  background-color: var(--_background-color);
171
191
  color: var(--_color);
172
192
  border: var(--radio-button-checked-border, var(--toggle-on-border, var(--border, radio-button)));
@@ -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];
@@ -126,10 +127,20 @@ select,
126
127
  --_padding: var(--select-padding, var(--input-padding, var(--menu-padding, var(--control-padding, var(--surface-padding, var(--padding, 4px))))));
127
128
  padding: var(--_padding);
128
129
  border-radius: var(--select-square-radius, var(--input-square-radius, var(--menu-square-radius, var(--control-square-radius, var(--surface-square-radius, var(--square-radius, 0))))));
129
- --_background-color: var(--select-bg, var(--input-bg, var(--menu-bg, var(--control-bg, var(--surface-bg, var(--bg, unset))))));
130
- --_color: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--surface-fg, var(--fg, unset))))));
131
130
  --link-bg: var(--select-link-bg, var(--input-link-bg, var(--menu-link-bg, var(--control-link-bg, var(--surface-link-bg, inherit)))));
132
131
  --link-fg: var(--select-link-fg, var(--input-link-fg, var(--menu-link-fg, var(--control-link-fg, var(--surface-link-fg, inherit)))));
132
+ --_bg-mix-color: var(--select-bg-mix-color, var(--input-bg-mix-color, var(--menu-bg-mix-color, var(--control-bg-mix-color, var(--surface-bg-mix-color, var(--bg-mix-color, transparent))))));
133
+ --_bg-mix-amount: var(--select-bg-mix-amount, var(--input-bg-mix-amount, var(--menu-bg-mix-amount, var(--control-bg-mix-amount, var(--surface-bg-mix-amount, var(--bg-mix-amount, 0%))))));
134
+ --_fg-mix-color: var(--select-fg-mix-color, var(--input-fg-mix-color, var(--menu-fg-mix-color, var(--control-fg-mix-color, var(--surface-fg-mix-color, var(--fg-mix-color, transparent))))));
135
+ --_fg-mix-amount: var(--select-fg-mix-amount, var(--input-fg-mix-amount, var(--menu-fg-mix-amount, var(--control-fg-mix-amount, var(--surface-fg-mix-amount, var(--fg-mix-amount, 0%))))));
136
+ --_bg-base: var(--select-bg, var(--input-bg, var(--menu-bg, var(--control-bg, var(--surface-bg, var(--bg, unset))))));
137
+ --_fg-base: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--surface-fg, var(--fg, unset))))));
138
+ --_background-color: color-mix(
139
+ in srgb,
140
+ var(--_bg-base),
141
+ var(--_bg-mix-color) var(--_bg-mix-amount)
142
+ );
143
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
133
144
  background-color: var(--_background-color);
134
145
  color: var(--_color);
135
146
  width: var(--select-width, var(--target-width, var(--dropdown-menu-width, min(12em, 100vw))));
@@ -179,10 +190,20 @@ button:focus-visible {
179
190
  }
180
191
 
181
192
  .dropdown-wrapper {
182
- --_background-color: var(--select-bg, var(--input-bg, var(--menu-bg, var(--control-bg, var(--surface-bg, var(--bg, unset))))));
183
- --_color: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--surface-fg, var(--fg, unset))))));
184
193
  --link-bg: var(--select-link-bg, var(--input-link-bg, var(--menu-link-bg, var(--control-link-bg, var(--surface-link-bg, inherit)))));
185
194
  --link-fg: var(--select-link-fg, var(--input-link-fg, var(--menu-link-fg, var(--control-link-fg, var(--surface-link-fg, inherit)))));
195
+ --_bg-mix-color: var(--select-bg-mix-color, var(--input-bg-mix-color, var(--menu-bg-mix-color, var(--control-bg-mix-color, var(--surface-bg-mix-color, var(--bg-mix-color, transparent))))));
196
+ --_bg-mix-amount: var(--select-bg-mix-amount, var(--input-bg-mix-amount, var(--menu-bg-mix-amount, var(--control-bg-mix-amount, var(--surface-bg-mix-amount, var(--bg-mix-amount, 0%))))));
197
+ --_fg-mix-color: var(--select-fg-mix-color, var(--input-fg-mix-color, var(--menu-fg-mix-color, var(--control-fg-mix-color, var(--surface-fg-mix-color, var(--fg-mix-color, transparent))))));
198
+ --_fg-mix-amount: var(--select-fg-mix-amount, var(--input-fg-mix-amount, var(--menu-fg-mix-amount, var(--control-fg-mix-amount, var(--surface-fg-mix-amount, var(--fg-mix-amount, 0%))))));
199
+ --_bg-base: var(--select-bg, var(--input-bg, var(--menu-bg, var(--control-bg, var(--surface-bg, var(--bg, unset))))));
200
+ --_fg-base: var(--select-fg, var(--input-fg, var(--menu-fg, var(--control-fg, var(--surface-fg, var(--fg, unset))))));
201
+ --_background-color: color-mix(
202
+ in srgb,
203
+ var(--_bg-base),
204
+ var(--_bg-mix-color) var(--_bg-mix-amount)
205
+ );
206
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
186
207
  background-color: var(--_background-color);
187
208
  color: var(--_color);
188
209
  --menu-item-justify: var(--select-menu-item-justify, flex-start);
@@ -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));
@@ -23,10 +23,20 @@ const style = $derived(injectVars(restProps, "tab", ["bg", "fg", "padding", "wid
23
23
 
24
24
  .tab > :global(button),
25
25
  .tab > :global(div > button) {
26
- --_background-color: var(--tab-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
27
- --_color: var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
28
26
  --link-bg: var(--tab-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, inherit))));
29
27
  --link-fg: var(--tab-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, inherit))));
28
+ --_bg-mix-color: var(--tab-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--secondary-bg-mix-color, var(--bg-mix-color, transparent)))));
29
+ --_bg-mix-amount: var(--tab-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--secondary-bg-mix-amount, var(--bg-mix-amount, 0%)))));
30
+ --_fg-mix-color: var(--tab-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--secondary-fg-mix-color, var(--fg-mix-color, transparent)))));
31
+ --_fg-mix-amount: var(--tab-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--secondary-fg-mix-amount, var(--fg-mix-amount, 0%)))));
32
+ --_bg-base: var(--tab-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
33
+ --_fg-base: var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
34
+ --_background-color: color-mix(
35
+ in srgb,
36
+ var(--_bg-base),
37
+ var(--_bg-mix-color) var(--_bg-mix-amount)
38
+ );
39
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
30
40
  background-color: var(--_background-color);
31
41
  color: var(--_color);
32
42
  box-sizing: border-box;
@@ -75,10 +85,20 @@ const style = $derived(injectVars(restProps, "tab", ["bg", "fg", "padding", "wid
75
85
 
76
86
  .tab.active > :global(button),
77
87
  .tab.active > :global(div > button) {
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)))))));
79
- --_color: var(--tab-active-fg, var(--primary-fg, var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))))));
80
88
  --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))))));
81
89
  --link-fg: var(--tab-active-link-fg, var(--primary-link-fg, var(--tab-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, inherit))))));
90
+ --_bg-mix-color: var(--tab-active-bg-mix-color, var(--primary-bg-mix-color, var(--tab-bg-mix-color, var(--button-bg-mix-color, var(--control-bg-mix-color, var(--secondary-bg-mix-color, var(--bg-mix-color, transparent)))))));
91
+ --_bg-mix-amount: var(--tab-active-bg-mix-amount, var(--primary-bg-mix-amount, var(--tab-bg-mix-amount, var(--button-bg-mix-amount, var(--control-bg-mix-amount, var(--secondary-bg-mix-amount, var(--bg-mix-amount, 0%)))))));
92
+ --_fg-mix-color: var(--tab-active-fg-mix-color, var(--primary-fg-mix-color, var(--tab-fg-mix-color, var(--button-fg-mix-color, var(--control-fg-mix-color, var(--secondary-fg-mix-color, var(--fg-mix-color, transparent)))))));
93
+ --_fg-mix-amount: var(--tab-active-fg-mix-amount, var(--primary-fg-mix-amount, var(--tab-fg-mix-amount, var(--button-fg-mix-amount, var(--control-fg-mix-amount, var(--secondary-fg-mix-amount, var(--fg-mix-amount, 0%)))))));
94
+ --_bg-base: var(--tab-active-bg, var(--primary-bg, var(--tab-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))))));
95
+ --_fg-base: var(--tab-active-fg, var(--primary-fg, var(--tab-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))))));
96
+ --_background-color: color-mix(
97
+ in srgb,
98
+ var(--_bg-base),
99
+ var(--_bg-mix-color) var(--_bg-mix-amount)
100
+ );
101
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
82
102
  background-color: var(--_background-color);
83
103
  color: var(--_color);
84
104
  font-family: var(--tab-active-font-family, var(--tab-font-family, var(--button-font-family, var(--ui-font-family, var(--control-font-family, var(--secondary-font-family, var(--font-family, unset)))))));
@@ -79,10 +79,20 @@ const effectiveOnLabel = $derived(onLabel || children);
79
79
  }
80
80
 
81
81
  .toggle-track {
82
- --_background-color: var(--toggle-bg, var(--toggle-off-bg, var(--inactive-bg, var(--secondary-bg, var(--bg, unset)))));
83
- --_color: var(--toggle-fg, var(--toggle-off-fg, var(--inactive-fg, var(--secondary-fg, var(--fg, unset)))));
84
82
  --link-bg: var(--toggle-link-bg, var(--toggle-off-link-bg, var(--inactive-link-bg, var(--secondary-link-bg, inherit))));
85
83
  --link-fg: var(--toggle-link-fg, var(--toggle-off-link-fg, var(--inactive-link-fg, var(--secondary-link-fg, inherit))));
84
+ --_bg-mix-color: var(--toggle-bg-mix-color, var(--toggle-off-bg-mix-color, var(--inactive-bg-mix-color, var(--secondary-bg-mix-color, var(--bg-mix-color, transparent)))));
85
+ --_bg-mix-amount: var(--toggle-bg-mix-amount, var(--toggle-off-bg-mix-amount, var(--inactive-bg-mix-amount, var(--secondary-bg-mix-amount, var(--bg-mix-amount, 0%)))));
86
+ --_fg-mix-color: var(--toggle-fg-mix-color, var(--toggle-off-fg-mix-color, var(--inactive-fg-mix-color, var(--secondary-fg-mix-color, var(--fg-mix-color, transparent)))));
87
+ --_fg-mix-amount: var(--toggle-fg-mix-amount, var(--toggle-off-fg-mix-amount, var(--inactive-fg-mix-amount, var(--secondary-fg-mix-amount, var(--fg-mix-amount, 0%)))));
88
+ --_bg-base: var(--toggle-bg, var(--toggle-off-bg, var(--inactive-bg, var(--secondary-bg, var(--bg, unset)))));
89
+ --_fg-base: var(--toggle-fg, var(--toggle-off-fg, var(--inactive-fg, var(--secondary-fg, var(--fg, unset)))));
90
+ --_background-color: color-mix(
91
+ in srgb,
92
+ var(--_bg-base),
93
+ var(--_bg-mix-color) var(--_bg-mix-amount)
94
+ );
95
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
86
96
  background-color: var(--_background-color);
87
97
  color: var(--_color);
88
98
  display: block;
@@ -138,10 +148,20 @@ input[type=checkbox] {
138
148
  }
139
149
 
140
150
  .toggle:has(input:checked) .toggle-track {
141
- --_background-color: var(--toggle-on-bg, var(--primary-bg, var(--toggle-bg, var(--bg, unset))));
142
- --_color: var(--toggle-on-fg, var(--primary-fg, var(--toggle-fg, var(--fg, unset))));
143
151
  --link-bg: var(--toggle-on-link-bg, var(--primary-link-bg, var(--toggle-link-bg, inherit)));
144
152
  --link-fg: var(--toggle-on-link-fg, var(--primary-link-fg, var(--toggle-link-fg, inherit)));
153
+ --_bg-mix-color: var(--toggle-on-bg-mix-color, var(--primary-bg-mix-color, var(--toggle-bg-mix-color, var(--bg-mix-color, transparent))));
154
+ --_bg-mix-amount: var(--toggle-on-bg-mix-amount, var(--primary-bg-mix-amount, var(--toggle-bg-mix-amount, var(--bg-mix-amount, 0%))));
155
+ --_fg-mix-color: var(--toggle-on-fg-mix-color, var(--primary-fg-mix-color, var(--toggle-fg-mix-color, var(--fg-mix-color, transparent))));
156
+ --_fg-mix-amount: var(--toggle-on-fg-mix-amount, var(--primary-fg-mix-amount, var(--toggle-fg-mix-amount, var(--fg-mix-amount, 0%))));
157
+ --_bg-base: var(--toggle-on-bg, var(--primary-bg, var(--toggle-bg, var(--bg, unset))));
158
+ --_fg-base: var(--toggle-on-fg, var(--primary-fg, var(--toggle-fg, var(--fg, unset))));
159
+ --_background-color: color-mix(
160
+ in srgb,
161
+ var(--_bg-base),
162
+ var(--_bg-mix-color) var(--_bg-mix-amount)
163
+ );
164
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
145
165
  background-color: var(--_background-color);
146
166
  color: var(--_color);
147
167
  border: var(--toggle-on-border, var(--toggle-border, var(--border, 1px solid transparent)));
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",
@@ -13,7 +13,16 @@ let buttonElement = $state();
13
13
  let dropdownContentElement = $state();
14
14
  let isOpen = $state(false);
15
15
  // Style injection
16
- const style = $derived(injectVars(props, "menu", ["bg", "fg", "padding", "width", "height"]));
16
+ const style = $derived(injectVars(props, "menu", [
17
+ "bg",
18
+ "fg",
19
+ "padding",
20
+ "width",
21
+ "height",
22
+ "triggerBg",
23
+ "triggerFg",
24
+ "triggerPadding",
25
+ ]));
17
26
  let dropdownTop = $state(0);
18
27
  let dropdownLeft = $state(0);
19
28
  let dropdownMaxHeight = $state(0);
@@ -34,13 +43,13 @@ function computePosition() {
34
43
  }
35
44
  dropdownMaxHeight = window.innerHeight - dropdownTop;
36
45
  }
37
- function triggerMenu(e) {
46
+ function triggerMenu(_e) {
38
47
  if (!isOpen) {
39
48
  injectVariablesIntoDropdown();
40
49
  computePosition();
41
50
  }
42
51
  }
43
- function dismissPopover(e) {
52
+ function dismissPopover(_e) {
44
53
  if (!popoverDiv)
45
54
  return;
46
55
  popoverDiv.hidePopover();
@@ -63,7 +72,7 @@ function handleKeystroke(event) {
63
72
  else {
64
73
  searchString = "";
65
74
  if (event.key === "Escape") {
66
- popoverDiv.hidePopover();
75
+ popoverDiv?.hidePopover();
67
76
  }
68
77
  else if (event.key === "ArrowDown" || event.key === "ArrowUp") {
69
78
  event.preventDefault(); // Prevent default to stop scrolling the page
@@ -87,7 +96,7 @@ function maybeFocusMatch(searchString) {
87
96
  }
88
97
  }
89
98
  function navigateMenu(direction) {
90
- if (!popoverDiv.matches(":popover-open") && buttonElement) {
99
+ if (!popoverDiv?.matches(":popover-open") && buttonElement) {
91
100
  buttonElement.click();
92
101
  return;
93
102
  }
@@ -171,48 +180,58 @@ let popoverDiv = $state();
171
180
  */
172
181
  /* Convenience groupings */
173
182
  button {
174
- --_background-color: var(--menu-bg, var(--button-bg, var(--surface-bg, var(--bg, unset))));
175
- --_color: var(--menu-fg, var(--button-fg, var(--surface-fg, var(--fg, unset))));
176
- --link-bg: var(--menu-link-bg, var(--button-link-bg, var(--surface-link-bg, inherit)));
177
- --link-fg: var(--menu-link-fg, var(--button-link-fg, var(--surface-link-fg, inherit)));
183
+ --link-bg: var(--menu-trigger-link-bg, var(--menu-link-bg, var(--button-link-bg, var(--surface-link-bg, inherit))));
184
+ --link-fg: var(--menu-trigger-link-fg, var(--menu-link-fg, var(--button-link-fg, var(--surface-link-fg, inherit))));
185
+ --_bg-mix-color: var(--menu-trigger-bg-mix-color, var(--menu-bg-mix-color, var(--button-bg-mix-color, var(--surface-bg-mix-color, var(--bg-mix-color, transparent)))));
186
+ --_bg-mix-amount: var(--menu-trigger-bg-mix-amount, var(--menu-bg-mix-amount, var(--button-bg-mix-amount, var(--surface-bg-mix-amount, var(--bg-mix-amount, 0%)))));
187
+ --_fg-mix-color: var(--menu-trigger-fg-mix-color, var(--menu-fg-mix-color, var(--button-fg-mix-color, var(--surface-fg-mix-color, var(--fg-mix-color, transparent)))));
188
+ --_fg-mix-amount: var(--menu-trigger-fg-mix-amount, var(--menu-fg-mix-amount, var(--button-fg-mix-amount, var(--surface-fg-mix-amount, var(--fg-mix-amount, 0%)))));
189
+ --_bg-base: var(--menu-trigger-bg, var(--menu-bg, var(--button-bg, var(--surface-bg, var(--bg, unset)))));
190
+ --_fg-base: var(--menu-trigger-fg, var(--menu-fg, var(--button-fg, var(--surface-fg, var(--fg, unset)))));
191
+ --_background-color: color-mix(
192
+ in srgb,
193
+ var(--_bg-base),
194
+ var(--_bg-mix-color) var(--_bg-mix-amount)
195
+ );
196
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
178
197
  background-color: var(--_background-color);
179
198
  color: var(--_color);
180
199
  box-sizing: border-box;
181
- border: var(--menu-border, var(--button-border, var(--surface-border, var(--border, inherit))));
182
- border-width: var(--menu-border-width, var(--button-border-width, var(--surface-border-width, var(--__missing-border-width))));
183
- border-style: var(--menu-border-style, var(--button-border-style, var(--surface-border-style, var(--__missing-border-style))));
184
- border-color: var(--menu-border-color, var(--button-border-color, var(--surface-border-color, var(--__missing-border-color))));
185
- 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))))))));
186
- 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))))))));
187
- 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))))))));
188
- 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))))))));
189
- --_padding: var(--menu-padding, var(--button-padding, var(--surface-padding, var(--padding, 4px))));
200
+ border: var(--menu-trigger-border, var(--menu-border, var(--button-border, var(--surface-border, var(--border, inherit)))));
201
+ border-width: var(--menu-trigger-border-width, var(--menu-border-width, var(--button-border-width, var(--surface-border-width, var(--__missing-border-width)))));
202
+ border-style: var(--menu-trigger-border-style, var(--menu-border-style, var(--button-border-style, var(--surface-border-style, var(--__missing-border-style)))));
203
+ border-color: var(--menu-trigger-border-color, var(--menu-border-color, var(--button-border-color, var(--surface-border-color, var(--__missing-border-color)))));
204
+ 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))))))))));
205
+ 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))))))))));
206
+ 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))))))))));
207
+ 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))))))))));
208
+ --_padding: var(--menu-trigger-padding, var(--menu-padding, var(--button-padding, var(--surface-padding, var(--padding, 4px)))));
190
209
  padding: var(--_padding);
191
- border-radius: var(--menu-square-radius, var(--button-square-radius, var(--surface-square-radius, var(--square-radius, 0))));
192
- cursor: var(--menu-cursor, var(--button-cursor, var(--control-cursor, var(--cursor, pointer))));
193
- 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))));
210
+ border-radius: var(--menu-trigger-square-radius, var(--menu-square-radius, var(--button-square-radius, var(--surface-square-radius, var(--square-radius, 0)))));
211
+ cursor: var(--menu-trigger-cursor, var(--menu-cursor, var(--button-cursor, var(--control-cursor, var(--cursor, pointer)))));
212
+ 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)))));
194
213
  }
195
214
 
196
215
  button:hover {
197
- filter: var(--menu-hover-filter, var(--button-hover-filter, var(--control-hover-filter, var(--hover-filter, brightness(1.05)))));
198
- transform: var(--menu-hover-transform, var(--button-hover-transform, var(--control-hover-transform, var(--hover-transform, none))));
216
+ filter: var(--menu-trigger-hover-filter, var(--menu-hover-filter, var(--button-hover-filter, var(--control-hover-filter, var(--hover-filter, brightness(1.05))))));
217
+ transform: var(--menu-trigger-hover-transform, var(--menu-hover-transform, var(--button-hover-transform, var(--control-hover-transform, var(--hover-transform, none)))));
199
218
  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%)));
200
- 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)))));
219
+ 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))))));
201
220
  }
202
221
 
203
222
  button:active {
204
- filter: var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9)))));
205
- transform: var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none))));
223
+ filter: var(--menu-trigger-active-filter, var(--menu-active-filter, var(--button-active-filter, var(--control-active-filter, var(--active-filter, brightness(0.9))))));
224
+ transform: var(--menu-trigger-active-transform, var(--menu-active-transform, var(--button-active-transform, var(--control-active-transform, var(--active-transform, none)))));
206
225
  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%)));
207
- 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)))));
226
+ 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))))));
208
227
  }
209
228
 
210
229
  button:disabled {
211
- cursor: var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed))));
212
- transform: var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none))));
213
- filter: var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5)))));
230
+ cursor: var(--menu-trigger-disabled-cursor, var(--menu-disabled-cursor, var(--button-disabled-cursor, var(--control-disabled-cursor, var(--disabled-cursor, not-allowed)))));
231
+ transform: var(--menu-trigger-disabled-transform, var(--menu-disabled-transform, var(--button-disabled-transform, var(--control-disabled-transform, var(--disabled-transform, none)))));
232
+ filter: var(--menu-trigger-disabled-filter, var(--menu-disabled-filter, var(--button-disabled-filter, var(--control-disabled-filter, var(--disabled-filter, grayscale(0.5))))));
214
233
  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%)));
215
- 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)))));
234
+ 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))))));
216
235
  }
217
236
 
218
237
  button:focus-visible {
@@ -226,10 +245,20 @@ button {
226
245
  }
227
246
 
228
247
  .dropdown-content :global(.menu) {
229
- --_background-color: var(--menu-bg, var(--surface-bg, var(--bg, unset)));
230
- --_color: var(--menu-fg, var(--surface-fg, var(--fg, unset)));
231
248
  --link-bg: var(--menu-link-bg, var(--surface-link-bg, inherit));
232
249
  --link-fg: var(--menu-link-fg, var(--surface-link-fg, inherit));
250
+ --_bg-mix-color: var(--menu-bg-mix-color, var(--surface-bg-mix-color, var(--bg-mix-color, transparent)));
251
+ --_bg-mix-amount: var(--menu-bg-mix-amount, var(--surface-bg-mix-amount, var(--bg-mix-amount, 0%)));
252
+ --_fg-mix-color: var(--menu-fg-mix-color, var(--surface-fg-mix-color, var(--fg-mix-color, transparent)));
253
+ --_fg-mix-amount: var(--menu-fg-mix-amount, var(--surface-fg-mix-amount, var(--fg-mix-amount, 0%)));
254
+ --_bg-base: var(--menu-bg, var(--surface-bg, var(--bg, unset)));
255
+ --_fg-base: var(--menu-fg, var(--surface-fg, var(--fg, unset)));
256
+ --_background-color: color-mix(
257
+ in srgb,
258
+ var(--_bg-base),
259
+ var(--_bg-mix-color) var(--_bg-mix-amount)
260
+ );
261
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
233
262
  background-color: var(--_background-color);
234
263
  color: var(--_color);
235
264
  font-family: var(--menu-font-family, var(--surface-font-family, var(--font-family, unset)));
@@ -354,10 +383,20 @@ button {
354
383
  .dropdown-content {
355
384
  width: max(var(--dropdown-menu-min-width, 12em), var(--dropdown-menu-width, 12em));
356
385
  min-width: var(--dropdown-menu-min-width, 12em);
357
- --_background-color: var(--dropdown-menu-bg, var(--menu-bg, var(--surface-bg, var(--bg, unset))));
358
- --_color: var(--dropdown-menu-fg, var(--menu-fg, var(--surface-fg, var(--fg, unset))));
359
386
  --link-bg: var(--dropdown-menu-link-bg, var(--menu-link-bg, var(--surface-link-bg, inherit)));
360
387
  --link-fg: var(--dropdown-menu-link-fg, var(--menu-link-fg, var(--surface-link-fg, inherit)));
388
+ --_bg-mix-color: var(--dropdown-menu-bg-mix-color, var(--menu-bg-mix-color, var(--surface-bg-mix-color, var(--bg-mix-color, transparent))));
389
+ --_bg-mix-amount: var(--dropdown-menu-bg-mix-amount, var(--menu-bg-mix-amount, var(--surface-bg-mix-amount, var(--bg-mix-amount, 0%))));
390
+ --_fg-mix-color: var(--dropdown-menu-fg-mix-color, var(--menu-fg-mix-color, var(--surface-fg-mix-color, var(--fg-mix-color, transparent))));
391
+ --_fg-mix-amount: var(--dropdown-menu-fg-mix-amount, var(--menu-fg-mix-amount, var(--surface-fg-mix-amount, var(--fg-mix-amount, 0%))));
392
+ --_bg-base: var(--dropdown-menu-bg, var(--menu-bg, var(--surface-bg, var(--bg, unset))));
393
+ --_fg-base: var(--dropdown-menu-fg, var(--menu-fg, var(--surface-fg, var(--fg, unset))));
394
+ --_background-color: color-mix(
395
+ in srgb,
396
+ var(--_bg-base),
397
+ var(--_bg-mix-color) var(--_bg-mix-amount)
398
+ );
399
+ --_color: color-mix(in srgb, var(--_fg-base), var(--_fg-mix-color) var(--_fg-mix-amount));
361
400
  background-color: var(--_background-color);
362
401
  color: var(--_color);
363
402
  --_box-shadow: