@muibook/components 10.0.0 → 11.0.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.
Files changed (150) hide show
  1. package/LICENSE +27 -11
  2. package/README.md +7 -7
  3. package/dist/esm/components/mui-accordion/block/index.js +9 -5
  4. package/dist/esm/components/mui-alert/index.js +88 -52
  5. package/dist/esm/components/mui-badge/index.js +61 -16
  6. package/dist/esm/components/mui-body/index.js +76 -10
  7. package/dist/esm/components/mui-button/index.js +152 -32
  8. package/dist/esm/components/mui-card/card/index.js +13 -8
  9. package/dist/esm/components/mui-checkbox/index.js +64 -30
  10. package/dist/esm/components/mui-chip/index.js +153 -33
  11. package/dist/esm/components/mui-chip-input/index.js +407 -0
  12. package/dist/esm/components/mui-code/index.js +11 -9
  13. package/dist/esm/components/mui-dialog/index.js +17 -8
  14. package/dist/esm/components/mui-dropdown/index.js +44 -44
  15. package/dist/esm/components/mui-field/index.js +56 -21
  16. package/dist/esm/components/mui-form-group/index.js +88 -0
  17. package/dist/esm/components/mui-form-hint/index.js +1 -0
  18. package/dist/esm/components/mui-form-message/index.js +72 -0
  19. package/dist/esm/components/mui-form-section/index.js +108 -0
  20. package/dist/esm/components/mui-form-section-footer/index.js +46 -0
  21. package/dist/esm/components/mui-hint/index.js +146 -0
  22. package/dist/esm/components/mui-icons/accessibility/index.js +5 -4
  23. package/dist/esm/components/mui-icons/add/index.js +1 -0
  24. package/dist/esm/components/mui-icons/ai/index.js +9 -14
  25. package/dist/esm/components/mui-icons/attention/index.js +1 -0
  26. package/dist/esm/components/mui-icons/calendar/index.js +5 -4
  27. package/dist/esm/components/mui-icons/check/index.js +6 -5
  28. package/dist/esm/components/mui-icons/checkmark/index.js +9 -8
  29. package/dist/esm/components/mui-icons/close/index.js +6 -5
  30. package/dist/esm/components/mui-icons/down-arrow-circle/index.js +9 -8
  31. package/dist/esm/components/mui-icons/down-chevron/index.js +8 -7
  32. package/dist/esm/components/mui-icons/ellipsis/index.js +1 -0
  33. package/dist/esm/components/mui-icons/exclamationmark/index.js +49 -0
  34. package/dist/esm/components/mui-icons/game-controller/index.js +8 -7
  35. package/dist/esm/components/mui-icons/gear/index.js +5 -4
  36. package/dist/esm/components/mui-icons/globe/index.js +8 -7
  37. package/dist/esm/components/mui-icons/grid/index.js +1 -0
  38. package/dist/esm/components/mui-icons/home/index.js +9 -8
  39. package/dist/esm/components/mui-icons/index.js +3 -0
  40. package/dist/esm/components/mui-icons/info/index.js +3 -2
  41. package/dist/esm/components/mui-icons/left-arrow/index.js +1 -0
  42. package/dist/esm/components/mui-icons/left-chevron/index.js +6 -5
  43. package/dist/esm/components/mui-icons/left-sidebar/index.js +6 -5
  44. package/dist/esm/components/mui-icons/list-and-film/index.js +1 -0
  45. package/dist/esm/components/mui-icons/menu/index.js +8 -7
  46. package/dist/esm/components/mui-icons/message/index.js +5 -4
  47. package/dist/esm/components/mui-icons/moon/index.js +3 -2
  48. package/dist/esm/components/mui-icons/movie-clapper/index.js +5 -4
  49. package/dist/esm/components/mui-icons/music-microphone/index.js +6 -5
  50. package/dist/esm/components/mui-icons/music-quarter-note/index.js +1 -0
  51. package/dist/esm/components/mui-icons/notification/index.js +5 -4
  52. package/dist/esm/components/mui-icons/pin/index.js +3 -2
  53. package/dist/esm/components/mui-icons/pin-slash/index.js +6 -5
  54. package/dist/esm/components/mui-icons/play-rectangle/index.js +9 -8
  55. package/dist/esm/components/mui-icons/play-stack/index.js +5 -4
  56. package/dist/esm/components/mui-icons/rectangle/index.js +6 -5
  57. package/dist/esm/components/mui-icons/rectangle-bottom-panel/index.js +1 -0
  58. package/dist/esm/components/mui-icons/rectangle-dashed/index.js +1 -0
  59. package/dist/esm/components/mui-icons/rectangle-left-drawer/index.js +1 -0
  60. package/dist/esm/components/mui-icons/rectangle-media-text/index.js +6 -5
  61. package/dist/esm/components/mui-icons/right-chevron/index.js +1 -0
  62. package/dist/esm/components/mui-icons/search/index.js +6 -5
  63. package/dist/esm/components/mui-icons/spinner/index.js +56 -0
  64. package/dist/esm/components/mui-icons/stop/index.js +3 -2
  65. package/dist/esm/components/mui-icons/subtract/index.js +1 -0
  66. package/dist/esm/components/mui-icons/sun/index.js +1 -0
  67. package/dist/esm/components/mui-icons/text-below-folder/index.js +55 -0
  68. package/dist/esm/components/mui-icons/toggle/index.js +8 -6
  69. package/dist/esm/components/mui-icons/translate/index.js +5 -4
  70. package/dist/esm/components/mui-icons/up-arrow/index.js +5 -4
  71. package/dist/esm/components/mui-icons/up-chevron/index.js +6 -5
  72. package/dist/esm/components/mui-icons/warning/index.js +7 -6
  73. package/dist/esm/components/mui-input/index.js +298 -47
  74. package/dist/esm/components/mui-link/index.js +187 -59
  75. package/dist/esm/components/mui-list/item/index.js +3 -0
  76. package/dist/esm/components/mui-markdown/index.js +149 -0
  77. package/dist/esm/components/mui-media-player/index.js +184 -0
  78. package/dist/esm/components/mui-message/index.js +50 -20
  79. package/dist/esm/components/mui-progress/index.js +15 -15
  80. package/dist/esm/components/mui-prompt/index.js +1461 -0
  81. package/dist/esm/components/mui-prompt-message/index.js +114 -0
  82. package/dist/esm/components/mui-prompt-preview/index.js +497 -0
  83. package/dist/esm/components/mui-prompt-toggle/index.js +48 -0
  84. package/dist/esm/components/mui-radio/index.js +155 -0
  85. package/dist/esm/components/mui-radio-group/index.js +104 -0
  86. package/dist/esm/components/mui-range-input/index.js +122 -0
  87. package/dist/esm/components/mui-rule/index.js +11 -3
  88. package/dist/esm/components/mui-select/index.js +89 -30
  89. package/dist/esm/components/mui-spinner/index.js +70 -0
  90. package/dist/esm/components/mui-stepper/step/index.js +255 -18
  91. package/dist/esm/components/mui-stepper/stepper/index.js +68 -72
  92. package/dist/esm/components/mui-table/row/index.js +16 -3
  93. package/dist/esm/components/mui-tabs/controller/index.js +21 -14
  94. package/dist/esm/components/mui-tabs/item/index.js +285 -29
  95. package/dist/esm/components/mui-tabs/panel/index.js +3 -0
  96. package/dist/esm/components/mui-tabs/tab-bar/index.js +85 -34
  97. package/dist/esm/components/mui-textarea/index.js +257 -0
  98. package/dist/esm/css/mui-base.css +27 -0
  99. package/dist/esm/css/mui-brand.css +3 -1
  100. package/dist/esm/css/mui-tokens.css +234 -7
  101. package/dist/esm/custom-elements.json +5450 -2039
  102. package/dist/esm/index.js +24 -4
  103. package/dist/esm/tokens/js/index.js +107 -105
  104. package/dist/types/components/mui-agent-bubble/doc.d.ts +2 -0
  105. package/dist/types/components/mui-agent-bubble/index.d.ts +1 -0
  106. package/dist/types/components/mui-agent-prompt/doc.d.ts +2 -0
  107. package/dist/types/components/mui-agent-prompt/index.d.ts +1 -0
  108. package/dist/types/components/mui-chip-input/doc.d.ts +2 -0
  109. package/dist/types/components/mui-chip-input/index.d.ts +3 -0
  110. package/dist/types/components/mui-form-group/doc.d.ts +2 -0
  111. package/dist/types/components/mui-form-group/index.d.ts +2 -0
  112. package/dist/types/components/mui-form-group-horizontal/index.d.ts +1 -0
  113. package/dist/types/components/mui-form-hint/doc.d.ts +2 -0
  114. package/dist/types/components/mui-form-hint/index.d.ts +1 -0
  115. package/dist/types/components/mui-form-message/index.d.ts +2 -0
  116. package/dist/types/components/mui-form-section/doc.d.ts +2 -0
  117. package/dist/types/components/mui-form-section/index.d.ts +1 -0
  118. package/dist/types/components/mui-form-section-footer/doc.d.ts +2 -0
  119. package/dist/types/components/mui-form-section-footer/index.d.ts +1 -0
  120. package/dist/types/components/mui-hint/doc.d.ts +2 -0
  121. package/dist/types/components/mui-hint/index.d.ts +1 -0
  122. package/dist/types/components/mui-icons/exclamationmark.d.ts +1 -0
  123. package/dist/types/components/mui-icons/index.d.ts +3 -0
  124. package/dist/types/components/mui-icons/spinner.d.ts +1 -0
  125. package/dist/types/components/mui-icons/text-below-folder.d.ts +1 -0
  126. package/dist/types/components/mui-markdown/doc.d.ts +2 -0
  127. package/dist/types/components/mui-markdown/index.d.ts +1 -0
  128. package/dist/types/components/mui-media-player/doc.d.ts +2 -0
  129. package/dist/types/components/mui-media-player/index.d.ts +8 -0
  130. package/dist/types/components/mui-prompt/doc.d.ts +2 -0
  131. package/dist/types/components/mui-prompt/index.d.ts +18 -0
  132. package/dist/types/components/mui-prompt-chip/index.d.ts +1 -0
  133. package/dist/types/components/mui-prompt-message/doc.d.ts +2 -0
  134. package/dist/types/components/mui-prompt-message/index.d.ts +1 -0
  135. package/dist/types/components/mui-prompt-preview/doc.d.ts +2 -0
  136. package/dist/types/components/mui-prompt-preview/index.d.ts +7 -0
  137. package/dist/types/components/mui-prompt-toggle/index.d.ts +1 -0
  138. package/dist/types/components/mui-radio/doc.d.ts +2 -0
  139. package/dist/types/components/mui-radio/index.d.ts +1 -0
  140. package/dist/types/components/mui-radio-group/index.d.ts +1 -0
  141. package/dist/types/components/mui-range-input/doc.d.ts +2 -0
  142. package/dist/types/components/mui-range-input/index.d.ts +1 -0
  143. package/dist/types/components/mui-spinner/doc.d.ts +2 -0
  144. package/dist/types/components/mui-spinner/index.d.ts +1 -0
  145. package/dist/types/components/mui-stepper/step/index.d.ts +4 -1
  146. package/dist/types/components/mui-textarea/doc.d.ts +2 -0
  147. package/dist/types/components/mui-textarea/index.d.ts +1 -0
  148. package/dist/types/index.d.ts +21 -0
  149. package/dist/types/tokens/js/index.d.ts +2 -0
  150. package/package.json +88 -1
@@ -173,6 +173,46 @@ class h extends HTMLElement {
173
173
  :host([variant="tertiary"]) button:focus-visible ::slotted(.mui-icon) { fill: var(--action-tertiary-text-color-focus); }
174
174
  :host([variant="tertiary"]) button:disabled ::slotted(.mui-icon) { fill: var(--action-tertiary-text-color-disabled); }
175
175
 
176
+ /* Overlay
177
+ ========================================= */
178
+ :host([variant="overlay"]) button {
179
+ background: color-mix(in srgb, var(--action-overlay-background) 85%, transparent);
180
+ color: var(--action-overlay-text-color);
181
+ border: var(--action-overlay-border);
182
+ -webkit-backdrop-filter: blur(var(--space-100)) saturate(120%);
183
+ backdrop-filter: blur(var(--space-100)) saturate(120%);
184
+ }
185
+
186
+ :host([variant="overlay"]) button:hover {
187
+ background: color-mix(in srgb, var(--action-overlay-background-hover) 85%, transparent);
188
+ color: var(--action-overlay-text-color-hover);
189
+ border: var(--action-overlay-border-hover);
190
+ -webkit-backdrop-filter: blur(var(--space-100)) saturate(120%);
191
+ backdrop-filter: blur(var(--space-100)) saturate(120%);
192
+ }
193
+
194
+ :host([variant="overlay"]) button:focus-visible {
195
+ background: color-mix(in srgb, var(--action-overlay-background-focus) 85%, transparent);
196
+ color: var(--action-overlay-text-color-focus);
197
+ border: var(--action-overlay-border-focus);
198
+ -webkit-backdrop-filter: blur(var(--space-100)) saturate(120%);
199
+ backdrop-filter: blur(var(--space-100)) saturate(120%);
200
+ }
201
+
202
+ :host([variant="overlay"]) button:disabled {
203
+ background: color-mix(in srgb, var(--action-overlay-background-disabled) 85%, transparent);
204
+ color: var(--action-overlay-text-color-disabled);
205
+ border: var(--action-overlay-border-disabled);
206
+ -webkit-backdrop-filter: blur(var(--space-100)) saturate(120%);
207
+ backdrop-filter: blur(var(--space-100)) saturate(120%);
208
+ cursor: not-allowed;
209
+ }
210
+
211
+ :host([variant="overlay"]) button ::slotted(.mui-icon) { fill: var(--action-overlay-text-color); }
212
+ :host([variant="overlay"]) button:hover ::slotted(.mui-icon) { fill: var(--action-overlay-text-color-hover); }
213
+ :host([variant="overlay"]) button:focus-visible ::slotted(.mui-icon) { fill: var(--action-overlay-text-color-focus); }
214
+ :host([variant="overlay"]) button:disabled ::slotted(.mui-icon) { fill: var(--action-overlay-text-color-disabled); }
215
+
176
216
  /* Attention
177
217
  ========================================= */
178
218
  :host([variant="attention"]) button {
@@ -360,6 +400,7 @@ class h extends HTMLElement {
360
400
  --avatar-background-override: var(--action-avatar-background);
361
401
  }
362
402
 
403
+ :host([size="xx-small"]) button ::slotted(mui-avatar),
363
404
  :host([size="x-small"]) button ::slotted(mui-avatar) {
364
405
  margin-right: var(--space-025);
365
406
  }
@@ -381,6 +422,31 @@ class h extends HTMLElement {
381
422
  --avatar-background-override: var(--action-avatar-background-hover);
382
423
  }
383
424
 
425
+ /* Badge Spacing */
426
+ :host([has-before]) button ::slotted(mui-badge[slot="before"]) {
427
+ margin-right: var(--space-025);
428
+ }
429
+
430
+ :host([has-after]) button ::slotted(mui-badge[slot="after"]) {
431
+ margin-left: var(--space-025);
432
+ }
433
+
434
+ :host([size="x-small"][has-before]) button ::slotted(mui-badge[slot="before"]) {
435
+ margin-right: var(--space-025);
436
+ }
437
+
438
+ :host([size="x-small"][has-after]) button ::slotted(mui-badge[slot="after"]) {
439
+ margin-left: var(--space-025);
440
+ }
441
+
442
+ :host([size="large"][has-before]) button ::slotted(mui-badge[slot="before"]) {
443
+ margin-right: var(--space-050);
444
+ }
445
+
446
+ :host([size="large"][has-after]) button ::slotted(mui-badge[slot="after"]) {
447
+ margin-left: var(--space-050);
448
+ }
449
+
384
450
  /* Before & After Icon
385
451
  ========================================= */
386
452
  :host([has-after]) button,
@@ -409,6 +475,18 @@ class h extends HTMLElement {
409
475
 
410
476
  /* Size Variants
411
477
  ========================================= */
478
+ :host([size="xx-small"]) button,
479
+ :host([size="xx-small"]) button:hover,
480
+ :host([size="xx-small"]) button:focus,
481
+ :host([size="xx-small"]) button:disabled {
482
+ font-size: var(--font-size-15);
483
+ line-height: var(--line-height-25);
484
+ font-weight: var(--font-weight-semi-bold);
485
+ padding: var(--space-025) var(--space-100);
486
+ border-width: var(--stroke-size-100);
487
+ border-radius: var(--action-radius-x-small);
488
+ }
489
+
412
490
  :host([size="x-small"]) button,
413
491
  :host([size="x-small"]) button:hover,
414
492
  :host([size="x-small"]) button:focus,
@@ -441,6 +519,12 @@ class h extends HTMLElement {
441
519
  border-radius: var(--action-radius-large);
442
520
  }
443
521
 
522
+ :host([size="xx-small"][icon-only]) button {
523
+ height: calc(var(--action-icon-only-size-x-small) - var(--space-100));
524
+ width: calc(var(--action-icon-only-size-x-small) - var(--space-100));
525
+ padding: var(--action-icon-only-padding);
526
+ }
527
+
444
528
  :host([size="x-small"][icon-only]) button {
445
529
  height: var(--action-icon-only-size-x-small);
446
530
  width: var(--action-icon-only-size-x-small);
@@ -462,10 +546,29 @@ class h extends HTMLElement {
462
546
 
463
547
  /* Before & After Icon
464
548
  ========================================= */
549
+ :host([size="xx-small"][has-after]) button,
550
+ :host([size="xx-small"][has-before]) button,
551
+ :host([size="xx-small"][has-after][has-before]) button {
552
+ gap: var(--space-050);
553
+ }
554
+
555
+ :host([size="xx-small"][has-after][has-before]) button {
556
+ padding-right: var(--action-after-slot-padding-x-small);
557
+ padding-left: var(--action-before-slot-padding-x-small);
558
+ }
559
+
560
+ :host([size="xx-small"][has-after]) button {
561
+ padding-right: var(--action-after-slot-padding-x-small);
562
+ }
563
+
564
+ :host([size="xx-small"][has-before]) button {
565
+ padding-left: var(--action-before-slot-padding-x-small);
566
+ }
567
+
465
568
  :host([size="x-small"][has-after]) button,
466
569
  :host([size="x-small"][has-before]) button,
467
570
  :host([size="x-small"][has-after][has-before]) button {
468
- gap: var(--space-025);
571
+ gap: var(--space-050);
469
572
  }
470
573
 
471
574
  :host([size="x-small"][has-after][has-before]) button {
@@ -484,7 +587,7 @@ class h extends HTMLElement {
484
587
  :host([size="small"][has-after]) button,
485
588
  :host([size="small"][has-before]) button,
486
589
  :host([size="small"][has-after][has-before]) button {
487
- gap: var(--space-050);
590
+ gap: var(--space-100);
488
591
  }
489
592
 
490
593
  :host([size="small"][has-after][has-before]) button {
@@ -537,47 +640,47 @@ class h extends HTMLElement {
537
640
  `
538
641
  );
539
642
  this.shadowRoot.innerHTML = o, await customElements.whenDefined("mui-button"), requestAnimationFrame(() => {
540
- const n = this.shadowRoot;
541
- if (!n) return;
542
- const e = n.querySelector("slot:not([name])"), t = n.querySelector('slot[name="before"]'), i = n.querySelector('slot[name="after"]'), a = (l) => l ? l.assignedNodes({ flatten: !0 }).some((s) => {
543
- var c;
544
- return s.nodeType === Node.ELEMENT_NODE || s.nodeType === Node.TEXT_NODE && !!((c = s.textContent) != null && c.trim());
545
- }) : !1, d = a(t), u = a(i);
643
+ const s = this.shadowRoot;
644
+ if (!s) return;
645
+ const e = s.querySelector("slot:not([name])"), t = s.querySelector('slot[name="before"]'), a = s.querySelector('slot[name="after"]'), i = (c) => c ? c.assignedNodes({ flatten: !0 }).some((n) => {
646
+ var l;
647
+ return n.nodeType === Node.ELEMENT_NODE || n.nodeType === Node.TEXT_NODE && !!((l = n.textContent) != null && l.trim());
648
+ }) : !1, d = i(t), u = i(a);
546
649
  this.toggleAttribute("has-before", d), this.toggleAttribute("has-after", u);
547
650
  const v = (e == null ? void 0 : e.assignedNodes({ flatten: !0 })) ?? [];
548
- v.every((l) => {
549
- var s;
550
- if (l.nodeType === Node.ELEMENT_NODE) {
551
- const c = l;
552
- return c.tagName.toLowerCase() === "svg" || c.classList.contains("mui-icon");
651
+ v.every((c) => {
652
+ var n;
653
+ if (c.nodeType === Node.ELEMENT_NODE) {
654
+ const l = c;
655
+ return l.tagName.toLowerCase() === "svg" || l.classList.contains("mui-icon");
553
656
  }
554
- return l.nodeType === Node.TEXT_NODE && !((s = l.textContent) != null && s.trim());
555
- }) ? (this.setAttribute("icon-only", ""), this.updateIconSizes(v, !0)) : (this.removeAttribute("icon-only"), [t, e, i].forEach((s) => {
556
- if (s) {
557
- const c = s.assignedNodes({ flatten: !0 });
558
- this.updateIconSizes(c, !1), this.updateAvatarSizes(c);
657
+ return c.nodeType === Node.TEXT_NODE && !((n = c.textContent) != null && n.trim());
658
+ }) ? (this.setAttribute("icon-only", ""), this.updateIconSizes(v, !0)) : (this.removeAttribute("icon-only"), [t, e, a].forEach((n) => {
659
+ if (n) {
660
+ const l = n.assignedNodes({ flatten: !0 });
661
+ this.updateIconSizes(l, !1), this.updateAvatarSizes(l), this.updateBadgeSizes(l);
559
662
  }
560
663
  }));
561
664
  });
562
665
  }
563
- attributeChangedCallback(r, o, n) {
666
+ attributeChangedCallback(r, o, s) {
564
667
  var e;
565
668
  if (r === "disabled") {
566
669
  const t = (e = this.shadowRoot) == null ? void 0 : e.querySelector("button");
567
670
  t && (this.hasAttribute("disabled") ? t.setAttribute("disabled", "") : t.removeAttribute("disabled"));
568
671
  }
569
- r === "size" && o !== n && this.shadowRoot && requestAnimationFrame(() => {
672
+ r === "size" && o !== s && this.shadowRoot && requestAnimationFrame(() => {
570
673
  const t = this.shadowRoot;
571
674
  if (!t) return;
572
- const i = [
675
+ const a = [
573
676
  t.querySelector("slot:not([name])"),
574
677
  t.querySelector('slot[name="before"]'),
575
678
  t.querySelector('slot[name="after"]')
576
- ], a = this.hasAttribute("icon-only");
577
- i.forEach((d) => {
679
+ ], i = this.hasAttribute("icon-only");
680
+ a.forEach((d) => {
578
681
  if (d) {
579
682
  const u = d.assignedNodes({ flatten: !0 });
580
- this.updateIconSizes(u, a), this.updateAvatarSizes(u);
683
+ this.updateIconSizes(u, i), this.updateAvatarSizes(u), this.updateBadgeSizes(u);
581
684
  }
582
685
  });
583
686
  });
@@ -585,6 +688,7 @@ class h extends HTMLElement {
585
688
  // Update avatar sizes based on button size
586
689
  updateAvatarSizes(r) {
587
690
  const o = this.getAttribute("size") || "medium", e = {
691
+ "xx-small": "x-small",
588
692
  "x-small": "x-small",
589
693
  small: "x-small",
590
694
  medium: "small",
@@ -592,23 +696,39 @@ class h extends HTMLElement {
592
696
  }[o] || "small";
593
697
  r.forEach((t) => {
594
698
  if (t.nodeType === Node.ELEMENT_NODE) {
595
- const i = t;
596
- i.tagName.toLowerCase() === "mui-avatar" && i.setAttribute("size", e);
699
+ const a = t;
700
+ a.tagName.toLowerCase() === "mui-avatar" && a.setAttribute("size", e);
597
701
  }
598
702
  });
599
703
  }
600
704
  updateIconSizes(r, o) {
601
- const n = this.getAttribute("size") || "medium", t = {
705
+ const s = this.getAttribute("size") || "medium", t = {
706
+ "xx-small": "xx-small",
602
707
  "x-small": "x-small",
603
708
  small: "x-small",
604
709
  medium: o ? "medium" : "small",
605
710
  // small for regular, medium for icon-only
606
711
  large: o ? "large" : "medium"
607
- }[n] || "small";
608
- r.forEach((i) => {
609
- if (i.nodeType === Node.ELEMENT_NODE) {
610
- const a = i;
611
- (a.tagName.toLowerCase() === "svg" || a.classList.contains("mui-icon") || a.tagName.toLowerCase() === "mui-icon") && !a.hasAttribute("size") && a.setAttribute("size", t);
712
+ }[s] || "small";
713
+ r.forEach((a) => {
714
+ if (a.nodeType === Node.ELEMENT_NODE) {
715
+ const i = a;
716
+ (i.tagName.toLowerCase() === "svg" || i.classList.contains("mui-icon") || i.tagName.toLowerCase() === "mui-icon") && !i.hasAttribute("size") && i.setAttribute("size", t);
717
+ }
718
+ });
719
+ }
720
+ updateBadgeSizes(r) {
721
+ const o = this.getAttribute("size") || "medium", e = {
722
+ "xx-small": "x-small",
723
+ "x-small": "x-small",
724
+ small: "small",
725
+ medium: "medium",
726
+ large: "large"
727
+ }[o] || "medium";
728
+ r.forEach((t) => {
729
+ if (t.nodeType === Node.ELEMENT_NODE) {
730
+ const a = t;
731
+ a.tagName.toLowerCase() === "mui-badge" && a.setAttribute("size", e);
612
732
  }
613
733
  });
614
734
  }
@@ -1,13 +1,13 @@
1
1
  class n extends HTMLElement {
2
2
  static get observedAttributes() {
3
- return ["footer"];
3
+ return ["footer", "borderless"];
4
4
  }
5
5
  constructor() {
6
6
  super(), this.attachShadow({ mode: "open" });
7
7
  }
8
8
  connectedCallback() {
9
9
  if (!this.shadowRoot) return;
10
- let r = (
10
+ let a = (
11
11
  /*html*/
12
12
  `
13
13
  <style>
@@ -15,6 +15,11 @@ class n extends HTMLElement {
15
15
  display: block;
16
16
  border-radius: var(--card-radius);
17
17
  background: var(--surface-elevated-100);
18
+ border: var(--border-thin);
19
+ border-color: var(--border-color);
20
+ }
21
+ :host([borderless]) {
22
+ border: none;
18
23
  }
19
24
  ::slotted(*:last-child) {
20
25
  margin-bottom: 0;
@@ -26,17 +31,17 @@ class n extends HTMLElement {
26
31
  <slot></slot>
27
32
  `
28
33
  );
29
- this.shadowRoot.innerHTML = r;
34
+ this.shadowRoot.innerHTML = a;
30
35
  const t = this.shadowRoot.querySelector("slot");
31
36
  t && t.addEventListener("slotchange", () => {
32
- const a = t.assignedElements(), d = a.some((o) => {
37
+ const s = t.assignedElements(), d = s.some((r) => {
33
38
  var e;
34
- return ((e = o.tagName) == null ? void 0 : e.toLowerCase()) === "mui-card-header";
35
- }), s = a.find((o) => {
39
+ return ((e = r.tagName) == null ? void 0 : e.toLowerCase()) === "mui-card-header";
40
+ }), o = s.find((r) => {
36
41
  var e;
37
- return ((e = o.tagName) == null ? void 0 : e.toLowerCase()) === "mui-card-body";
42
+ return ((e = r.tagName) == null ? void 0 : e.toLowerCase()) === "mui-card-body";
38
43
  });
39
- s && (d ? s.setAttribute("inner-space-top", "") : s.removeAttribute("inner-space-top"));
44
+ o && (d ? o.setAttribute("inner-space-top", "") : o.removeAttribute("inner-space-top"));
40
45
  });
41
46
  }
42
47
  }
@@ -1,36 +1,36 @@
1
1
  import "../mui-body/index.js";
2
- class a extends HTMLElement {
2
+ class p extends HTMLElement {
3
3
  static get observedAttributes() {
4
- return ["checked", "disabled", "id", "indeterminate"];
4
+ return ["checked", "disabled", "id", "indeterminate", "size"];
5
5
  }
6
6
  constructor() {
7
7
  super(), this.attachShadow({ mode: "open" });
8
8
  }
9
9
  connectedCallback() {
10
- this.render(), this.setupListener();
10
+ this.hasAttribute("size") || this.setAttribute("size", "medium"), this.render(), this.setupListener();
11
11
  }
12
12
  disconnectedCallback() {
13
13
  this.cleanupListeners();
14
14
  }
15
- attributeChangedCallback(e, t, c) {
16
- var r, o, s;
15
+ attributeChangedCallback(e, t, s) {
16
+ var c, a, o;
17
17
  if (e === "checked") {
18
- const i = (r = this.shadowRoot) == null ? void 0 : r.querySelector("input");
18
+ const i = (c = this.shadowRoot) == null ? void 0 : c.querySelector("input");
19
19
  if (!i) return;
20
- i.checked = c !== null;
20
+ i.checked = s !== null;
21
21
  }
22
22
  if (e === "disabled") {
23
- const i = (o = this.shadowRoot) == null ? void 0 : o.querySelector("input");
23
+ const i = (a = this.shadowRoot) == null ? void 0 : a.querySelector("input");
24
24
  if (!i) return;
25
- i.disabled = c !== null;
25
+ i.disabled = s !== null;
26
26
  }
27
27
  if (e === "indeterminate") {
28
- const i = (s = this.shadowRoot) == null ? void 0 : s.querySelector("input");
28
+ const i = (o = this.shadowRoot) == null ? void 0 : o.querySelector("input");
29
29
  if (!i) return;
30
- const n = c !== null;
31
- i.indeterminate = n, n && (i.checked = !0, this.setAttribute("checked", ""));
30
+ const r = s !== null;
31
+ i.indeterminate = r, r && (i.checked = !0, this.setAttribute("checked", ""));
32
32
  }
33
- "id".includes(e) && (this.render(), this.setupListener());
33
+ ["id", "size"].includes(e) && (this.render(), this.setupListener());
34
34
  }
35
35
  cleanupListeners() {
36
36
  var t;
@@ -40,11 +40,11 @@ class a extends HTMLElement {
40
40
  setupListener() {
41
41
  var t;
42
42
  const e = (t = this.shadowRoot) == null ? void 0 : t.querySelector("input");
43
- e && (this.cleanupListeners(), e.indeterminate = this.hasAttribute("indeterminate"), this._changeHandler = (c) => {
44
- const r = c.target;
45
- r.checked ? this.setAttribute("checked", "") : this.removeAttribute("checked"), this.removeAttribute("indeterminate"), this.dispatchEvent(
43
+ e && (this.cleanupListeners(), e.indeterminate = this.hasAttribute("indeterminate"), this._changeHandler = (s) => {
44
+ const c = s.target;
45
+ c.checked ? this.setAttribute("checked", "") : this.removeAttribute("checked"), this.removeAttribute("indeterminate"), this.dispatchEvent(
46
46
  new CustomEvent("change", {
47
- detail: { checked: r.checked },
47
+ detail: { checked: c.checked },
48
48
  bubbles: !0,
49
49
  composed: !0
50
50
  })
@@ -52,11 +52,27 @@ class a extends HTMLElement {
52
52
  }, e.addEventListener("change", this._changeHandler));
53
53
  }
54
54
  render() {
55
- const e = this.getAttribute("id") || `mui-checkbox-${Math.random().toString(36).substr(2, 9)}`, t = this.hasAttribute("checked"), c = this.hasAttribute("disabled"), r = `
56
- <mui-icon-checkmark class="icon" size="x-small" color="inverted"></mui-icon-checkmark>
57
- `, o = this.hasAttribute("indeterminate"), i = o ? `
58
- <mui-icon-subtract class="icon" size="x-small" color="inverted"></mui-icon-subtract>
59
- ` : r, n = this.innerHTML.trim().length > 0;
55
+ const e = this.getAttribute("id") || `mui-checkbox-${Math.random().toString(36).substr(2, 9)}`, t = this.hasAttribute("checked"), s = this.hasAttribute("disabled"), c = this.getAttribute("size") || "medium", o = ["x-small", "small", "medium", "large"].includes(c) ? c : "medium", r = {
56
+ "x-small": "x-small",
57
+ small: "x-small",
58
+ medium: "small",
59
+ large: "medium"
60
+ }[o] || "small", l = {
61
+ "x-small": "x-small",
62
+ small: "x-small",
63
+ medium: "x-small",
64
+ large: "small"
65
+ }[o] || "x-small", d = (
66
+ /*html*/
67
+ `
68
+ <mui-icon-checkmark class="icon" size="${l}" color="inverted"></mui-icon-checkmark>
69
+ `
70
+ ), n = this.hasAttribute("indeterminate"), h = (
71
+ /*html*/
72
+ `
73
+ <mui-icon-subtract class="icon" size="${l}" color="inverted"></mui-icon-subtract>
74
+ `
75
+ ), u = n ? h : d, b = this.innerHTML.trim().length > 0;
60
76
  this.shadowRoot.innerHTML = /*html*/
61
77
  `
62
78
  <style>
@@ -66,10 +82,16 @@ class a extends HTMLElement {
66
82
 
67
83
  label {
68
84
  display: flex;
69
- align-items: start;
85
+ align-items: center;
70
86
  gap: var(--space-200);
71
87
  cursor: pointer;
72
88
  }
89
+ :host([disabled]) label {
90
+ cursor: not-allowed;
91
+ }
92
+ :host([disabled]) mui-body {
93
+ cursor: not-allowed;
94
+ }
73
95
 
74
96
  input[type="checkbox"] {
75
97
  all: unset;
@@ -85,6 +107,18 @@ class a extends HTMLElement {
85
107
  background-repeat: no-repeat;
86
108
  background-position: center;
87
109
  }
110
+ :host([size="x-small"]) input[type="checkbox"] {
111
+ width: calc(var(--checkbox-size) - var(--space-100));
112
+ height: calc(var(--checkbox-size) - var(--space-100));
113
+ }
114
+ :host([size="small"]) input[type="checkbox"] {
115
+ width: calc(var(--checkbox-size) - var(--space-050));
116
+ height: calc(var(--checkbox-size) - var(--space-050));
117
+ }
118
+ :host([size="large"]) input[type="checkbox"] {
119
+ width: calc(var(--checkbox-size) + var(--space-100));
120
+ height: calc(var(--checkbox-size) + var(--space-100));
121
+ }
88
122
 
89
123
  input[type="checkbox"]:hover {
90
124
  border-color: var(--form-default-border-color-hover);
@@ -99,7 +133,7 @@ class a extends HTMLElement {
99
133
  }
100
134
 
101
135
  input[type="checkbox"]:focus {
102
- outline: var(--outline-thick);
136
+ outline: var(--outline-medium);
103
137
  }
104
138
 
105
139
  input:disabled {
@@ -137,13 +171,13 @@ class a extends HTMLElement {
137
171
  <input
138
172
  type="checkbox"
139
173
  id="${e}"
140
- ${o ? "indeterminate" : ""}
141
- ${o || t ? "checked" : ""}
142
- ${c ? "disabled" : ""}
174
+ ${n ? "indeterminate" : ""}
175
+ ${n || t ? "checked" : ""}
176
+ ${s ? "disabled" : ""}
143
177
  />
144
- ${i}
178
+ ${u}
145
179
  </span>
146
- ${n ? '<mui-body size="small"><slot></slot></mui-body>' : ""}
180
+ ${b ? `<mui-body size="${r}"><slot></slot></mui-body>` : ""}
147
181
  </label>
148
182
  `;
149
183
  }
@@ -156,4 +190,4 @@ class a extends HTMLElement {
156
190
  e ? this.setAttribute("checked", "") : this.removeAttribute("checked");
157
191
  }
158
192
  }
159
- customElements.get("mui-checkbox") || customElements.define("mui-checkbox", a);
193
+ customElements.get("mui-checkbox") || customElements.define("mui-checkbox", p);