@muibook/components 18.0.1 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  # NPM Package 📦 – @muibook/components
4
4
 
5
+ [![Sponsor](https://img.shields.io/badge/Sponsor-GitHub-ff69b4?logo=githubsponsors)](https://github.com/sponsors/michaeltrilford)
6
+
5
7
  Leverage reusable vanilla Web Components built with the Mui (MichaelUI) Design System in your project. Simply install the [@muibook/components](https://www.npmjs.com/package/@muibook/components?activeTab=readme) package to access a framework-agnostic, accessible, and customizable component library.
6
8
 
7
9
  ## Usage Policy (Summary)
@@ -381,11 +381,6 @@ class h extends HTMLElement {
381
381
  border-radius: var(--radius-000);
382
382
  }
383
383
 
384
- :host([dropdown-slot]) button:hover,
385
- :host([dropdown-slot]) button:focus {
386
- background: var(--dropdown-button-background-hover);
387
- }
388
-
389
384
  :host([size][dropdown-slot-first]) button {
390
385
  border-top-left-radius: calc(var(--radius-100) / 2);
391
386
  border-top-right-radius: calc(var(--radius-100) / 2);
@@ -1,4 +1,4 @@
1
- const s = class s extends HTMLElement {
1
+ const o = class o extends HTMLElement {
2
2
  constructor() {
3
3
  super(), this.button = null, this.menu = null, this.handleResize = () => {
4
4
  var t;
@@ -8,13 +8,13 @@ const s = class s extends HTMLElement {
8
8
  (t = this.menu) != null && t.classList.contains("show") && this.adjustPosition();
9
9
  }, this.handleFocusOut = (t) => {
10
10
  var e;
11
- this.persistent || this.contains(t.relatedTarget) || (this.closeWithAnimation(), (e = this.menu) == null || e.setAttribute("inert", "true"), s.openDropdown === this && (s.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
11
+ this.persistent || this.contains(t.relatedTarget) || (this.closeWithAnimation(), (e = this.menu) == null || e.setAttribute("inert", "true"), o.openDropdown === this && (o.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
12
12
  }, this.attachShadow({ mode: "open" });
13
13
  }
14
14
  handleKeyDown(t) {
15
15
  if (t.key === "Escape") {
16
16
  if (!this.menu) return;
17
- this.menu.classList.remove("show"), this.menu.setAttribute("inert", "true"), s.openDropdown === this && (s.openDropdown = null), this.dispatchEvent(
17
+ this.menu.classList.remove("show"), this.menu.setAttribute("inert", "true"), o.openDropdown === this && (o.openDropdown = null), this.dispatchEvent(
18
18
  new CustomEvent("dropdown-toggle", {
19
19
  detail: { open: !1 },
20
20
  bubbles: !0
@@ -43,14 +43,14 @@ const s = class s extends HTMLElement {
43
43
  const d = (a = this.shadowRoot) == null ? void 0 : a.querySelector("slot:not([name])");
44
44
  if (d) {
45
45
  const u = () => {
46
- const c = d.assignedElements({ flatten: !0 });
47
- c.forEach((o) => {
48
- o.removeAttribute("dropdown-slot"), o.removeAttribute("dropdown-slot-first"), o.removeAttribute("dropdown-slot-last");
49
- }), c.forEach((o, w) => {
50
- o.setAttribute("variant", "tertiary"), o.setAttribute("dropdown-slot", ""), w === 0 && o.setAttribute("dropdown-slot-first", ""), w === c.length - 1 && o.setAttribute("dropdown-slot-last", ""), o._dropdownListenerAdded || (o.addEventListener("click", () => {
51
- var f, p;
52
- this.persistent || ((f = this.menu) == null || f.classList.remove("show"), (p = this.menu) == null || p.setAttribute("inert", "true"), s.openDropdown === this && (s.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
53
- }), o._dropdownListenerAdded = !0);
46
+ const c = d.assignedElements({ flatten: !0 }).filter((s) => s.tagName.toLowerCase() === "mui-button");
47
+ c.forEach((s) => {
48
+ s.removeAttribute("dropdown-slot"), s.removeAttribute("dropdown-slot-first"), s.removeAttribute("dropdown-slot-last");
49
+ }), c.forEach((s, w) => {
50
+ s.setAttribute("dropdown-slot", ""), w === 0 && s.setAttribute("dropdown-slot-first", ""), w === c.length - 1 && s.setAttribute("dropdown-slot-last", ""), s._dropdownListenerAdded || (s.addEventListener("click", () => {
51
+ var p, f;
52
+ this.persistent || ((p = this.menu) == null || p.classList.remove("show"), (f = this.menu) == null || f.setAttribute("inert", "true"), o.openDropdown === this && (o.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
53
+ }), s._dropdownListenerAdded = !0);
54
54
  });
55
55
  };
56
56
  d.addEventListener("slotchange", u), u();
@@ -71,23 +71,23 @@ const s = class s extends HTMLElement {
71
71
  var n;
72
72
  if (t.stopPropagation(), !this.menu) return;
73
73
  const e = this.menu.classList.contains("show");
74
- !e && s.openDropdown && s.openDropdown !== this && s.openDropdown.closeWithAnimation(), e ? (this.closeWithAnimation(), (n = this.menu) == null || n.setAttribute("inert", "true"), s.openDropdown === this && (s.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 }))) : (this.menu.style.display = "block", requestAnimationFrame(() => {
74
+ !e && o.openDropdown && o.openDropdown !== this && o.openDropdown.closeWithAnimation(), e ? (this.closeWithAnimation(), (n = this.menu) == null || n.setAttribute("inert", "true"), o.openDropdown === this && (o.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 }))) : (this.menu.style.display = "block", requestAnimationFrame(() => {
75
75
  var d, i;
76
76
  (d = this.menu) == null || d.classList.add("show"), (i = this.menu) == null || i.removeAttribute("inert"), this.adjustPosition();
77
- }), s.openDropdown = this, this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !0 }, bubbles: !0 })));
77
+ }), o.openDropdown = this, this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !0 }, bubbles: !0 })));
78
78
  }
79
79
  closeMenu(t) {
80
80
  var n;
81
81
  const e = t.composedPath();
82
- this.menu && e.includes(this.menu) || this.button && e.includes(this.button) || (this.closeWithAnimation(), (n = this.menu) == null || n.setAttribute("inert", "true"), s.openDropdown === this && (s.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
82
+ this.menu && e.includes(this.menu) || this.button && e.includes(this.button) || (this.closeWithAnimation(), (n = this.menu) == null || n.setAttribute("inert", "true"), o.openDropdown === this && (o.openDropdown = null), this.dispatchEvent(new CustomEvent("dropdown-toggle", { detail: { open: !1 }, bubbles: !0 })));
83
83
  }
84
84
  adjustPosition() {
85
85
  if (!this.menu) return;
86
86
  const t = this.menu, e = 8, n = getComputedStyle(this).getPropertyValue("--dropdown-offset").trim() || "0.8rem", d = parseFloat(getComputedStyle(document.documentElement).fontSize) || 10, i = n.endsWith("rem") ? parseFloat(n) * d : parseFloat(n) || 8;
87
87
  t.style.top = "", t.style.bottom = "", t.style.left = "", t.style.right = "", t.style.maxWidth = "";
88
- const r = this.getBoundingClientRect(), l = t.offsetWidth, a = t.offsetHeight, h = window.innerWidth, u = window.innerHeight, c = (this.getAttribute("vertical-position") || "auto").toLowerCase(), o = u - r.bottom, w = r.top, f = a + i, p = o >= f, g = w >= f;
88
+ const r = this.getBoundingClientRect(), l = t.offsetWidth, a = t.offsetHeight, h = window.innerWidth, u = window.innerHeight, v = (this.getAttribute("vertical-position") || "auto").toLowerCase(), c = u - r.bottom, s = r.top, w = a + i, p = c >= w, f = s >= w;
89
89
  let b = r.height + i;
90
- c === "up" ? b = g || !p ? -(a + i) : r.height + i : c === "down" ? b = p || !g ? r.height + i : -(a + i) : !p && w > o && (b = -(a + i));
90
+ v === "up" ? b = f || !p ? -(a + i) : r.height + i : v === "down" ? b = p || !f ? r.height + i : -(a + i) : !p && s > c && (b = -(a + i));
91
91
  let m = 0;
92
92
  switch (this.getAttribute("position") || "left") {
93
93
  case "left":
@@ -168,6 +168,6 @@ const s = class s extends HTMLElement {
168
168
  `;
169
169
  }
170
170
  };
171
- s.openDropdown = null;
172
- let v = s;
173
- customElements.get("mui-dropdown") || customElements.define("mui-dropdown", v);
171
+ o.openDropdown = null;
172
+ let g = o;
173
+ customElements.get("mui-dropdown") || customElements.define("mui-dropdown", g);
@@ -794,9 +794,9 @@ class S extends HTMLElement {
794
794
  .surface::before {
795
795
  content: "";
796
796
  position: absolute;
797
- inset: var(--stroke-size-200);
797
+ inset: 0;
798
798
  pointer-events: none;
799
- border-radius: calc(var(--radius-300) - var(--stroke-size-200));
799
+ border-radius: var(--radius-300);
800
800
  z-index: 1;
801
801
  opacity: 1;
802
802
  background: var(--surface-elevated-100);
@@ -839,7 +839,7 @@ class S extends HTMLElement {
839
839
  transition: opacity var(--speed-200) cubic-bezier(0.22, 1, 0.36, 1), filter var(--speed-200) ease;
840
840
  }
841
841
  .surface:hover {
842
- overflow: hidden;
842
+ overflow: visible;
843
843
  background: var(--surface-elevated-100);
844
844
  animation: promptBorderHoverPulse var(--prompt-hover-border-pulse-speed, var(--speed-500)) ease-in-out infinite;
845
845
  }
@@ -873,9 +873,7 @@ class S extends HTMLElement {
873
873
  var(--surface-elevated-100);
874
874
  mix-blend-mode: var(--_prompt-spectrum-blend-mode-hover);
875
875
  filter: none;
876
- animation:
877
- promptMeshHoverPulse var(--prompt-hover-sweep-speed, var(--speed-500)) ease-in-out infinite alternate,
878
- promptMeshPulse calc(var(--prompt-hover-sweep-speed, var(--speed-500)) * 1.15) ease-in-out infinite;
876
+ animation: promptMeshPulse calc(var(--prompt-hover-sweep-speed, var(--speed-500)) * 1.15) ease-in-out infinite;
879
877
  }
880
878
  .surface:hover::after {
881
879
  opacity: 0;
@@ -1246,7 +1244,7 @@ class S extends HTMLElement {
1246
1244
  }
1247
1245
  .actions-slot {
1248
1246
  position: absolute;
1249
- z-index: 2;
1247
+ z-index: 4;
1250
1248
  bottom: var(--space-300);
1251
1249
  display: inline-flex;
1252
1250
  align-items: center;
@@ -453,7 +453,7 @@ class E extends HTMLElement {
453
453
  id="slideFrameRatioSelect"
454
454
  size="x-small"
455
455
  style="width: 7rem; margin-right: var(--space-025)"
456
- options='[{"label":"16:9","value":"16:9"},{"label":"4:3","value":"4:3"},{"label":"1:1","value":"1:1"}]'
456
+ options='[{"label":"16:9","value":"16:9"},{"label":"4:3","value":"4:3"},{"label":"3:2","value":"3:2"},{"label":"1:1","value":"1:1"},{"label":"9:16","value":"9:16"}]'
457
457
  value="${this.getAttribute("ratio") || "16:9"}"
458
458
  aria-label="Slide ratio">
459
459
  </mui-select>
@@ -1,6 +1,6 @@
1
1
 
2
2
  /* ================================================================================================== */
3
- /* Don't edit directly • Generated on Sat, 28 Feb 2026 10:18:48 GMT • muibook.com */
3
+ /* Don't edit directly • Generated on Thu, 19 Mar 2026 13:05:27 GMT • muibook.com */
4
4
  /* ================================================================================================== */
5
5
 
6
6
  /* ================================================================================================== */