@muibook/components 19.6.0 → 20.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.
Files changed (172) hide show
  1. package/AGENTS.md +67 -0
  2. package/DESIGN.md +358 -0
  3. package/README.md +53 -2
  4. package/dist/esm/agent/keywords/index.js +2 -173
  5. package/dist/esm/agent/prompts/index.js +6 -432
  6. package/dist/esm/components/mui-accordion/core/index.js +25 -17
  7. package/dist/esm/components/mui-addon/index.js +14 -14
  8. package/dist/esm/components/mui-avatar/index.js +103 -43
  9. package/dist/esm/components/mui-avatar-chip/index.js +158 -0
  10. package/dist/esm/components/mui-avatar-group/index.js +88 -0
  11. package/dist/esm/components/mui-badge/index.js +37 -20
  12. package/dist/esm/components/mui-body/index.js +20 -11
  13. package/dist/esm/components/mui-button/index.js +265 -78
  14. package/dist/esm/components/mui-calendar/index.js +199 -0
  15. package/dist/esm/components/mui-card/body/index.js +33 -18
  16. package/dist/esm/components/mui-card/footer/index.js +11 -9
  17. package/dist/esm/components/mui-carousel/controller/index.js +1 -1
  18. package/dist/esm/components/mui-checkbox/index.js +23 -18
  19. package/dist/esm/components/mui-chip/index.js +219 -73
  20. package/dist/esm/components/mui-chip-input/index.js +146 -137
  21. package/dist/esm/components/mui-chip-rail/index.js +342 -0
  22. package/dist/esm/components/mui-code/index.js +26 -7
  23. package/dist/esm/components/mui-container/index.js +68 -45
  24. package/dist/esm/components/mui-date-picker/index.js +169 -0
  25. package/dist/esm/components/mui-drawer/index.js +968 -100
  26. package/dist/esm/components/mui-dropdown/index.js +255 -59
  27. package/dist/esm/components/mui-field/index.js +1 -1
  28. package/dist/esm/components/mui-file-upload/index.js +14 -4
  29. package/dist/esm/components/mui-form-group/index.js +1 -2
  30. package/dist/esm/components/mui-form-message/index.js +4 -9
  31. package/dist/esm/components/mui-heading/index.js +3 -2
  32. package/dist/esm/components/mui-hint/index.js +178 -72
  33. package/dist/esm/components/mui-icons/copy/index.js +54 -0
  34. package/dist/esm/components/mui-icons/fullscreen/index.js +5 -0
  35. package/dist/esm/components/mui-icons/icon-helper/index.js +56 -0
  36. package/dist/esm/components/mui-icons/index.js +14 -1
  37. package/dist/esm/components/mui-icons/moon/index.js +3 -1
  38. package/dist/esm/components/mui-icons/{rectangle-bottom-panel → panel}/index.js +6 -6
  39. package/dist/esm/components/mui-icons/pause/index.js +5 -0
  40. package/dist/esm/components/mui-icons/picture-in-picture/index.js +5 -0
  41. package/dist/esm/components/mui-icons/play-fill/index.js +5 -0
  42. package/dist/esm/components/mui-icons/rectangle-right-drawer/index.js +56 -0
  43. package/dist/esm/components/mui-icons/reload/index.js +5 -0
  44. package/dist/esm/components/mui-icons/speaker-mute/index.js +5 -0
  45. package/dist/esm/components/mui-icons/speaker-one-wave/index.js +5 -0
  46. package/dist/esm/components/mui-icons/speaker-two-wave/index.js +5 -0
  47. package/dist/esm/components/mui-icons/spinner/index.js +7 -5
  48. package/dist/esm/components/mui-icons/stop-fill/index.js +5 -0
  49. package/dist/esm/components/mui-icons/sun/index.js +5 -5
  50. package/dist/esm/components/mui-icons/timer/index.js +54 -0
  51. package/dist/esm/components/mui-icons/toggle/index.js +16 -6
  52. package/dist/esm/components/mui-icons/vertical-ellipsis/index.js +5 -0
  53. package/dist/esm/components/mui-illustrations/trash/index.js +6 -5
  54. package/dist/esm/components/mui-input/index.js +96 -67
  55. package/dist/esm/components/mui-link/index.js +352 -96
  56. package/dist/esm/components/mui-media-player/index.js +1577 -83
  57. package/dist/esm/components/mui-message/index.js +7 -6
  58. package/dist/esm/components/mui-model-viewer/index.js +258 -0
  59. package/dist/esm/components/mui-progress-ring/index.js +349 -0
  60. package/dist/esm/components/mui-prompt/index.js +143 -115
  61. package/dist/esm/components/mui-prompt-preview/index.js +11 -23
  62. package/dist/esm/components/mui-radio/index.js +38 -17
  63. package/dist/esm/components/mui-range-input/index.js +9 -4
  64. package/dist/esm/components/mui-responsive/index.js +60 -27
  65. package/dist/esm/components/mui-search-input/index.js +300 -0
  66. package/dist/esm/components/mui-select/index.js +235 -46
  67. package/dist/esm/components/mui-slat/slat/index.js +40 -12
  68. package/dist/esm/components/mui-spinner/index.js +11 -9
  69. package/dist/esm/components/mui-stack/hstack/index.js +10 -5
  70. package/dist/esm/components/mui-status/index.js +239 -0
  71. package/dist/esm/components/mui-stepper/step/index.js +46 -32
  72. package/dist/esm/components/mui-switch/index.js +37 -26
  73. package/dist/esm/components/mui-table/row/index.js +2 -6
  74. package/dist/esm/components/mui-table/table/index.js +157 -14
  75. package/dist/esm/components/mui-tabs/controller/index.js +17 -6
  76. package/dist/esm/components/mui-tabs/item/index.js +17 -5
  77. package/dist/esm/components/mui-tabs/tab-bar/index.js +93 -39
  78. package/dist/esm/components/mui-textarea/index.js +43 -26
  79. package/dist/esm/components/mui-time/index/index.js +336 -0
  80. package/dist/esm/components/mui-time-picker/index.js +126 -0
  81. package/dist/esm/components/mui-video-thumbnail/index.js +205 -0
  82. package/dist/esm/css/mui-brand.css +12 -8
  83. package/dist/esm/css/mui-tokens.css +646 -344
  84. package/dist/esm/css/readme.md +2 -2
  85. package/dist/esm/custom-elements.json +4506 -1707
  86. package/dist/esm/dynamic-attrs.json +271 -54
  87. package/dist/esm/index.js +33 -6
  88. package/dist/esm/knowledge/compositions/index.js +1560 -0
  89. package/dist/esm/knowledge/index.js +28 -0
  90. package/dist/esm/knowledge/keywords/index.js +306 -0
  91. package/dist/esm/knowledge/rules/index.js +199 -0
  92. package/dist/esm/tokens/js/index.js +143 -139
  93. package/dist/types/agent/keywords/index.d.ts +1 -1
  94. package/dist/types/components/mui-avatar-chip/api.d.ts +28 -0
  95. package/dist/types/components/mui-avatar-chip/index.d.ts +18 -0
  96. package/dist/types/components/mui-avatar-group/api.d.ts +28 -0
  97. package/dist/types/components/mui-avatar-group/doc.d.ts +2 -0
  98. package/dist/types/components/mui-avatar-group/index.d.ts +1 -0
  99. package/dist/types/components/mui-button/api.d.ts +6 -2
  100. package/dist/types/components/mui-calendar/api.d.ts +41 -0
  101. package/dist/types/components/mui-calendar/doc.d.ts +2 -0
  102. package/dist/types/components/mui-calendar/index.d.ts +3 -0
  103. package/dist/types/components/mui-checkbox/api.d.ts +4 -0
  104. package/dist/types/components/mui-chip/api.d.ts +4 -0
  105. package/dist/types/components/mui-chip-input/api.d.ts +4 -0
  106. package/dist/types/components/mui-chip-rail/api.d.ts +21 -0
  107. package/dist/types/components/mui-chip-rail/doc.d.ts +2 -0
  108. package/dist/types/components/mui-chip-rail/index.d.ts +4 -0
  109. package/dist/types/components/mui-date-picker/api.d.ts +38 -0
  110. package/dist/types/components/mui-date-picker/doc.d.ts +2 -0
  111. package/dist/types/components/mui-date-picker/index.d.ts +6 -0
  112. package/dist/types/components/mui-drawer/api.d.ts +4 -0
  113. package/dist/types/components/mui-drawer/index.d.ts +2 -0
  114. package/dist/types/components/mui-file-upload/api.d.ts +4 -0
  115. package/dist/types/components/mui-icons/fullscreen.d.ts +1 -0
  116. package/dist/types/components/mui-icons/icon-helper.d.ts +1 -0
  117. package/dist/types/components/mui-icons/index.d.ts +14 -1
  118. package/dist/types/components/mui-icons/panel.d.ts +1 -0
  119. package/dist/types/components/mui-icons/pause.d.ts +1 -0
  120. package/dist/types/components/mui-icons/picture-in-picture.d.ts +1 -0
  121. package/dist/types/components/mui-icons/play-fill.d.ts +1 -0
  122. package/dist/types/components/mui-icons/rectangle-right-drawer.d.ts +1 -0
  123. package/dist/types/components/mui-icons/reload.d.ts +1 -0
  124. package/dist/types/components/mui-icons/speaker-mute.d.ts +1 -0
  125. package/dist/types/components/mui-icons/speaker-one-wave.d.ts +1 -0
  126. package/dist/types/components/mui-icons/speaker-two-wave.d.ts +1 -0
  127. package/dist/types/components/mui-icons/stop-fill.d.ts +1 -0
  128. package/dist/types/components/mui-icons/timer.d.ts +1 -0
  129. package/dist/types/components/mui-icons/vertical-ellipsis.d.ts +1 -0
  130. package/dist/types/components/mui-input/api.d.ts +12 -0
  131. package/dist/types/components/mui-link/api.d.ts +4 -0
  132. package/dist/types/components/mui-media-player/api.d.ts +4 -0
  133. package/dist/types/components/mui-media-player/index.d.ts +13 -4
  134. package/dist/types/components/mui-model-viewer/api.d.ts +28 -0
  135. package/dist/types/components/mui-model-viewer/doc.d.ts +2 -0
  136. package/dist/types/components/mui-model-viewer/index.d.ts +17 -0
  137. package/dist/types/components/mui-progress-ring/api.d.ts +24 -0
  138. package/dist/types/components/mui-progress-ring/doc.d.ts +2 -0
  139. package/dist/types/components/mui-progress-ring/index.d.ts +1 -0
  140. package/dist/types/components/mui-radio/api.d.ts +12 -0
  141. package/dist/types/components/mui-range-input/api.d.ts +4 -0
  142. package/dist/types/components/mui-responsive/api.d.ts +10 -2
  143. package/dist/types/components/mui-search-input/api.d.ts +40 -0
  144. package/dist/types/components/mui-search-input/doc.d.ts +2 -0
  145. package/dist/types/components/mui-search-input/index.d.ts +3 -0
  146. package/dist/types/components/mui-select/api.d.ts +12 -0
  147. package/dist/types/components/mui-status/api.d.ts +24 -0
  148. package/dist/types/components/mui-status/doc.d.ts +2 -0
  149. package/dist/types/components/mui-status/index.d.ts +1 -0
  150. package/dist/types/components/mui-switch/api.d.ts +4 -0
  151. package/dist/types/components/mui-table/api.d.ts +15 -0
  152. package/dist/types/components/mui-textarea/api.d.ts +12 -0
  153. package/dist/types/components/mui-time/api.d.ts +41 -0
  154. package/dist/types/components/mui-time/doc.d.ts +2 -0
  155. package/dist/types/components/mui-time/index.d.ts +1 -0
  156. package/dist/types/components/mui-time-picker/api.d.ts +38 -0
  157. package/dist/types/components/mui-time-picker/doc.d.ts +2 -0
  158. package/dist/types/components/mui-time-picker/index.d.ts +4 -0
  159. package/dist/types/components/mui-video-thumbnail/api.d.ts +28 -0
  160. package/dist/types/components/mui-video-thumbnail/doc.d.ts +2 -0
  161. package/dist/types/components/mui-video-thumbnail/index.d.ts +1 -0
  162. package/dist/types/index.d.ts +27 -2
  163. package/dist/types/knowledge/compositions.d.ts +4644 -0
  164. package/dist/types/knowledge/index.d.ts +4657 -0
  165. package/dist/types/knowledge/keywords.d.ts +4 -0
  166. package/dist/types/knowledge/rules.d.ts +1 -0
  167. package/dist/types/tokens/js/index.d.ts +11 -7
  168. package/package.json +131 -12
  169. package/dist/esm/components/mui-form-hint/index.js +0 -1
  170. package/dist/types/components/mui-form-hint/index.d.ts +0 -1
  171. /package/dist/types/components/{mui-form-hint → mui-avatar-chip}/doc.d.ts +0 -0
  172. /package/dist/types/components/mui-icons/{rectangle-bottom-panel.d.ts → copy.d.ts} +0 -0
@@ -1,30 +1,75 @@
1
- import { getPartMap as a } from "../../utils/part-map/index.js";
1
+ import { getPartMap as l } from "../../utils/part-map/index.js";
2
2
  import "../mui-icons/down-chevron/index.js";
3
- class x extends HTMLElement {
3
+ class I extends HTMLElement {
4
4
  constructor() {
5
5
  super(), this.partMap = "", this.attachShadow({ mode: "open" });
6
6
  }
7
7
  static get observedAttributes() {
8
- return ["name", "value", "id", "label", "options", "disabled", "hide-label", "variant", "optional", "size"];
8
+ return [
9
+ "name",
10
+ "value",
11
+ "id",
12
+ "label",
13
+ "options",
14
+ "disabled",
15
+ "hide-label",
16
+ "variant",
17
+ "optional",
18
+ "size",
19
+ "appearance",
20
+ "selected-content",
21
+ "col",
22
+ "space",
23
+ "max-height",
24
+ "padding-block",
25
+ "padding-inline"
26
+ ];
27
+ }
28
+ get value() {
29
+ var t;
30
+ const e = (t = this.shadowRoot) == null ? void 0 : t.querySelector("select");
31
+ return (e == null ? void 0 : e.value) ?? this.getAttribute("value") ?? "";
32
+ }
33
+ set value(e) {
34
+ this.setAttribute("value", e ?? "");
35
+ }
36
+ focus(e) {
37
+ var a;
38
+ const t = (a = this.shadowRoot) == null ? void 0 : a.querySelector("select");
39
+ t ? t.focus(e) : super.focus(e);
9
40
  }
10
41
  async connectedCallback() {
11
- this.hasAttribute("size") || this.setAttribute("size", "medium"), await this.waitForPartMap(), this.partMap = a("text", "visual"), this.render(), this.setupListener();
42
+ this.hasAttribute("size") || this.setAttribute("size", "medium"), await this.waitForPartMap(), this.partMap = l("text", "visual"), this.render(), this.setupListener();
12
43
  }
13
44
  disconnectedCallback() {
14
45
  this.cleanupListeners();
15
46
  }
16
- attributeChangedCallback(e, t, r) {
17
- if (!this.shadowRoot || t === r) return;
18
- const o = this.shadowRoot.querySelector("select");
19
- if (e === "value" && o) {
20
- o.value = r || "";
47
+ attributeChangedCallback(e, t, a) {
48
+ if (!this.shadowRoot || t === a) return;
49
+ const r = this.shadowRoot.querySelector("select");
50
+ if (e === "value" && r) {
51
+ r.value = a || "";
21
52
  return;
22
53
  }
23
- if (e === "disabled" && o) {
24
- r === null || r === "false" ? o.removeAttribute("disabled") : o.setAttribute("disabled", "");
54
+ if (e === "disabled" && r) {
55
+ a === null || a === "false" ? r.removeAttribute("disabled") : r.setAttribute("disabled", "");
25
56
  return;
26
57
  }
27
- ["options", "label", "hide-label", "variant", "optional", "size"].includes(e) && (this.render(), this.setupListener());
58
+ [
59
+ "options",
60
+ "label",
61
+ "hide-label",
62
+ "variant",
63
+ "optional",
64
+ "size",
65
+ "appearance",
66
+ "selected-content",
67
+ "col",
68
+ "space",
69
+ "max-height",
70
+ "padding-block",
71
+ "padding-inline"
72
+ ].includes(e) && (this.render(), this.setupListener());
28
73
  }
29
74
  cleanupListeners() {
30
75
  var t;
@@ -35,33 +80,42 @@ class x extends HTMLElement {
35
80
  if (!this.shadowRoot) return;
36
81
  const e = this.shadowRoot.querySelector("select");
37
82
  e && (this.cleanupListeners(), this._changeHandler = (t) => {
38
- const r = t.target;
39
- this.setAttribute("value", r.value);
40
- const o = {
41
- detail: { value: r.value },
83
+ const a = t.target;
84
+ this.setAttribute("value", a.value);
85
+ const r = {
86
+ detail: { value: a.value },
42
87
  bubbles: !0,
43
88
  composed: !0
44
89
  };
45
- this.dispatchEvent(new CustomEvent("change", o)), this.dispatchEvent(new CustomEvent("input", o));
90
+ this.dispatchEvent(new CustomEvent("change", r)), this.dispatchEvent(new CustomEvent("input", r));
46
91
  }, e.addEventListener("change", this._changeHandler), e.addEventListener("input", this._changeHandler));
47
92
  }
48
93
  render() {
49
94
  if (!this.shadowRoot) return;
50
- const e = this.getAttribute("name") || "", t = this.getAttribute("id") || `mui-select-${Math.random().toString(36).substr(2, 9)}`, r = this.getAttribute("label") || "", o = this.getAttribute("value") || "", s = this.hasAttribute("hide-label"), d = this.hasAttribute("optional"), v = this.hasAttribute("disabled"), p = this.getAttribute("options") || "[]", n = this.getAttribute("size") || "medium", l = ["x-small", "small", "medium", "large"].includes(n) ? n : "medium", u = {
95
+ const e = this.getAttribute("name") || "", t = this.getAttribute("id") || `mui-select-${Math.random().toString(36).substr(2, 9)}`, a = this.getAttribute("label") || "", r = this.getAttribute("value") || "", c = this.hasAttribute("hide-label"), f = this.hasAttribute("optional"), x = this.hasAttribute("disabled"), k = this.getAttribute("options") || "[]", d = this.getAttribute("size") || "medium", i = this.getAttribute("appearance") === "custom" ? "custom" : "native", z = this.getAttribute("selected-content") === "label" ? "label" : "rich", w = this.getAttribute("col") || "1fr", $ = this.getAttribute("space") || "var(--space-100)", p = this.getAttribute("max-height") || "", o = this.getAttribute("padding-block") || "", n = this.getAttribute("padding-inline") || "", h = ["x-small", "small", "medium", "large"].includes(d) ? d : "medium", A = {
51
96
  "x-small": "xx-small",
52
97
  small: "x-small",
53
98
  medium: "x-small",
54
99
  large: "small"
55
- }[l] || "x-small", c = this.getAttribute("variant") || "", g = c || "", b = s && r ? `aria-label="${r}"` : "";
56
- let h = [];
100
+ }[h] || "x-small", u = this.getAttribute("variant") || "", E = u || "", y = c && a ? `aria-label="${a}"` : "";
101
+ let v = [];
57
102
  try {
58
- h = JSON.parse(p);
59
- } catch (i) {
60
- console.error("Invalid JSON in options attribute", i);
103
+ v = JSON.parse(k);
104
+ } catch (s) {
105
+ console.error("Invalid JSON in options attribute", s);
61
106
  }
62
- const m = h.map(
63
- (i) => `<option value="${i.value}" ${i.value === o ? "selected" : ""} ${i.disabled ? "disabled" : ""}>${i.label}</option>`
64
- ).join(""), f = (
107
+ const g = Array.from(this.querySelectorAll(":scope > option")), b = i === "custom" && g.length > 0 ? g : null, S = b ? b.map((s) => {
108
+ const m = s.getAttribute("value") || "", H = m === r || s.hasAttribute("selected"), R = s.hasAttribute("disabled");
109
+ return `<option value="${m}" ${H ? "selected" : ""} ${R ? "disabled" : ""}>${s.innerHTML}</option>`;
110
+ }).join("") : v.map(
111
+ (s) => `<option value="${s.value}" ${s.value === r ? "selected" : ""} ${s.disabled ? "disabled" : ""}>${s.label}</option>`
112
+ ).join(""), C = i === "custom" && z === "rich" ? "<button><selectedcontent></selectedcontent></button>" : "", L = i === "custom" ? "" : `<mui-icon-down-chevron class="chevron" size="${A}"></mui-icon-down-chevron>`, M = `
113
+ --select-picker-col: ${w};
114
+ --select-picker-space: ${$};
115
+ ${p ? `--select-picker-max-height: ${p};` : ""}
116
+ ${o ? `--select-padding-block: ${o}; --select-option-padding-block: ${o};` : ""}
117
+ ${n ? `--select-padding-inline: ${n}; --select-option-padding-inline: ${n};` : ""}
118
+ `, T = (
65
119
  /*html*/
66
120
  `
67
121
  <style>
@@ -96,40 +150,174 @@ class x extends HTMLElement {
96
150
  select {
97
151
  min-height: 4.4rem;
98
152
  line-height: var(--text-line-height);
99
- padding: var(--space-200) var(--space-300);
153
+ --select-padding-block-start-default: var(--space-200);
154
+ --select-padding-block-end-default: var(--space-200);
155
+ --select-padding-inline-start-default: var(--space-300);
156
+ --select-padding-inline-end-default: var(--space-300);
157
+ padding-block: var(
158
+ --select-padding-block,
159
+ var(--select-padding-block-start-default) var(--select-padding-block-end-default)
160
+ );
161
+ padding-inline: var(
162
+ --select-padding-inline,
163
+ var(--select-padding-inline-start-default) var(--select-padding-inline-end-default)
164
+ );
100
165
  font-size: var(--text-font-size);
101
166
  border: var(--border-thin);
102
167
  border-color: var(--form-default-border-color);
103
- border-radius: var(--radius-100);
168
+ border-radius: var(--form-radius-medium);
104
169
  color: var(--form-default-text-color);
105
170
  background: var(--input-background);
106
171
  width: 100%;
107
172
  box-sizing: border-box;
108
173
  appearance: none;
109
174
  }
175
+ select.appearance-custom,
176
+ select.appearance-custom::picker(select) {
177
+ appearance: base-select;
178
+ font: inherit;
179
+ color: var(--form-default-text-color);
180
+ }
181
+ select.appearance-custom {
182
+ cursor: pointer;
183
+ }
184
+ select.appearance-custom button {
185
+ appearance: none;
186
+ border: 0;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: space-between;
190
+ gap: var(--space-100);
191
+ padding: 0;
192
+ width: 100%;
193
+ min-width: 0;
194
+ box-sizing: border-box;
195
+ background: transparent;
196
+ color: inherit;
197
+ font: inherit;
198
+ text-align: left;
199
+ }
200
+ select.appearance-custom selectedcontent {
201
+ min-width: 0;
202
+ flex: 1 1 auto;
203
+ }
204
+ select.appearance-custom::picker-icon {
205
+ content: "";
206
+ display: inline-block;
207
+ width: var(--select-picker-icon-size, var(--space-400));
208
+ height: var(--select-picker-icon-size, var(--space-400));
209
+ flex: 0 0 auto;
210
+ align-self: center;
211
+ background: currentColor;
212
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36'%3E%3Cpath d='M18 25c-.79 0-1.428-.269-2.091-.917L6.7 15.072C6.23 14.595 6 14.069 6 13.42 6 12.101 7.122 11 8.487 11c.688 0 1.326.281 1.849.795l7.69 7.617 7.65-7.617c.524-.526 1.161-.795 1.837-.795C28.878 11 30 12.1 30 13.421c0 .648-.217 1.186-.701 1.638l-9.195 9.024c-.663.636-1.288.917-2.104.917'/%3E%3C/svg%3E");
213
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 36'%3E%3Cpath d='M18 25c-.79 0-1.428-.269-2.091-.917L6.7 15.072C6.23 14.595 6 14.069 6 13.42 6 12.101 7.122 11 8.487 11c.688 0 1.326.281 1.849.795l7.69 7.617 7.65-7.617c.524-.526 1.161-.795 1.837-.795C28.878 11 30 12.1 30 13.421c0 .648-.217 1.186-.701 1.638l-9.195 9.024c-.663.636-1.288.917-2.104.917'/%3E%3C/svg%3E");
214
+ -webkit-mask-position: center;
215
+ mask-position: center;
216
+ -webkit-mask-repeat: no-repeat;
217
+ mask-repeat: no-repeat;
218
+ -webkit-mask-size: 100% 100%;
219
+ mask-size: 100% 100%;
220
+ transition: transform var(--speed-200) ease;
221
+ }
222
+ select.appearance-custom:open::picker-icon {
223
+ transform: rotate(180deg);
224
+ }
225
+ select.appearance-custom::picker(select) {
226
+ display: none;
227
+ grid-template-columns: var(--select-picker-col, 1fr);
228
+ gap: var(--select-picker-space, var(--space-100));
229
+ max-height: var(--select-picker-max-height, none);
230
+ overflow: auto;
231
+ margin-block-start: var(--space-100);
232
+ padding: var(--space-100);
233
+ border: var(--border-thin);
234
+ border-color: var(--form-default-border-color);
235
+ border-radius: var(--radius-200);
236
+ background: var(--input-background);
237
+ box-shadow: var(--shadow-300);
238
+ box-sizing: border-box;
239
+ box-shadow: var(--shadow-thick);
240
+ }
241
+ select.appearance-custom:open::picker(select) {
242
+ display: grid;
243
+ }
244
+ select.appearance-custom option {
245
+ display: block;
246
+ min-width: 0;
247
+ padding-block: var(
248
+ --select-option-padding-block,
249
+ var(--select-padding-block-start-default) var(--select-padding-block-end-default)
250
+ );
251
+ padding-inline: var(
252
+ --select-option-padding-inline,
253
+ var(--select-padding-inline-start-default) var(--select-padding-inline-end-default)
254
+ );
255
+ border-radius: var(--radius-100);
256
+ background: transparent;
257
+ color: var(--form-default-text-color);
258
+ }
259
+ select.appearance-custom option:hover,
260
+ select.appearance-custom option:focus-visible {
261
+ background: var(--action-tertiary-background-hover);
262
+ }
263
+ select.appearance-custom option:checked {
264
+ background: var(--action-tertiary-background-focus);
265
+ }
266
+ select.appearance-custom option::checkmark {
267
+ display: none;
268
+ }
110
269
  select.size-x-small {
111
- min-height: var(--action-icon-only-size-x-small);
112
- padding: var(--action-padding-x-small);
270
+ min-height: var(--action-size-x-small);
271
+ --select-padding-block-start-default: var(--space-050);
272
+ --select-padding-block-end-default: var(--space-050);
273
+ --select-padding-inline-start-default: var(--space-100);
274
+ --select-padding-inline-end-default: var(--space-100);
113
275
  font-size: var(--text-font-size-xs);
114
276
  line-height: var(--text-line-height-xs);
277
+ border-radius: var(--form-radius-x-small);
115
278
  }
116
279
  select.size-small {
117
- min-height: var(--action-icon-only-size-small);
118
- padding: var(--action-padding-small);
280
+ min-height: var(--action-size-small);
281
+ --select-padding-block-start-default: var(--space-100);
282
+ --select-padding-block-end-default: var(--space-100);
283
+ --select-padding-inline-start-default: var(--space-200);
284
+ --select-padding-inline-end-default: var(--space-200);
119
285
  font-size: var(--text-font-size-s);
120
286
  line-height: var(--text-line-height-s);
287
+ border-radius: var(--form-radius-small);
121
288
  }
122
289
  select.size-medium {
123
- min-height: 4.4rem;
124
- padding: var(--space-200) var(--space-300);
290
+ min-height: var(--action-size-medium);
291
+ --select-padding-block-start-default: var(--space-200);
292
+ --select-padding-block-end-default: var(--space-200);
293
+ --select-padding-inline-start-default: var(--space-300);
294
+ --select-padding-inline-end-default: var(--space-300);
125
295
  font-size: var(--text-font-size);
126
296
  line-height: var(--text-line-height);
297
+ border-radius: var(--form-radius-medium);
127
298
  }
128
299
  select.size-large {
129
- min-height: var(--action-icon-only-size-large);
130
- padding: var(--space-300) var(--space-400);
300
+ min-height: var(--action-size-large);
301
+ --select-padding-block-start-default: var(--space-300);
302
+ --select-padding-block-end-default: var(--space-300);
303
+ --select-padding-inline-start-default: var(--space-400);
304
+ --select-padding-inline-end-default: var(--space-400);
131
305
  font-size: var(--text-font-size-l);
132
306
  line-height: var(--text-line-height-l);
307
+ border-radius: var(--form-radius-large);
308
+ }
309
+ select.appearance-custom.size-x-small {
310
+ --select-picker-icon-size: 1.3rem;
311
+ }
312
+ select.appearance-custom.size-small {
313
+ --select-picker-icon-size: var(--space-400);
314
+ --select-padding-inline-end-default: var(--space-200);
315
+ }
316
+ select.appearance-custom.size-medium {
317
+ --select-picker-icon-size: var(--space-400);
318
+ }
319
+ select.appearance-custom.size-large {
320
+ --select-picker-icon-size: 2.1rem;
133
321
  }
134
322
  select:hover {
135
323
  border-color: var(--form-default-border-color-hover);
@@ -284,29 +472,30 @@ class x extends HTMLElement {
284
472
  /* ========================================================================== */
285
473
 
286
474
  </style>
287
- ${r ? (
475
+ ${a ? (
288
476
  /*html*/
289
- `<label for="${t}" class="${s ? "vh" : ""}">${r}${d ? ' <span class="optional"><span class="optional-dot" aria-hidden="true">•</span><span class="optional-text">Optional</span></span>' : ""}</label>`
477
+ `<label for="${t}" class="${c ? "vh" : ""}">${a}${f ? ' <span class="optional"><span class="optional-dot" aria-hidden="true">•</span><span class="optional-text">Optional</span></span>' : ""}</label>`
290
478
  ) : ""}
291
479
  <div style="position: relative;">
292
- <select class="${[g, `size-${l}`].filter(Boolean).join(" ")}" part="${this.partMap || ""}" name="${e}" id="${t}" ${b}
293
- ${v ? "disabled" : ""}>
294
- ${m}
480
+ <select class="${[E, `size-${h}`, `appearance-${i}`].filter(Boolean).join(" ")}" part="${this.partMap || ""}" name="${e}" id="${t}" ${y} style="${M}"
481
+ ${x ? "disabled" : ""}>
482
+ ${C}
483
+ ${S}
295
484
  </select>
296
- <mui-icon-down-chevron class="chevron" size="${u}"></mui-icon-down-chevron>
485
+ ${L}
297
486
  </div>
298
487
  `
299
488
  );
300
- this.shadowRoot.innerHTML = f;
489
+ this.shadowRoot.innerHTML = T;
301
490
  }
302
491
  waitForPartMap() {
303
492
  return new Promise((e) => {
304
- if (typeof a == "function") return e();
493
+ if (typeof l == "function") return e();
305
494
  const t = () => {
306
- typeof a == "function" ? e() : requestAnimationFrame(t);
495
+ typeof l == "function" ? e() : requestAnimationFrame(t);
307
496
  };
308
497
  t();
309
498
  });
310
499
  }
311
500
  }
312
- customElements.get("mui-select") || customElements.define("mui-select", x);
501
+ customElements.get("mui-select") || customElements.define("mui-select", I);
@@ -16,8 +16,8 @@ class i extends HTMLElement {
16
16
  var t;
17
17
  const a = (t = this.shadowRoot) == null ? void 0 : t.querySelectorAll("slot");
18
18
  a == null || a.forEach((r) => {
19
- r.assignedElements({ flatten: !0 }).forEach((s) => {
20
- s.tagName.toLowerCase() === "mui-avatar" && s.setAttribute("size", "small");
19
+ r.assignedElements({ flatten: !0 }).forEach((o) => {
20
+ o.tagName.toLowerCase() === "mui-avatar" && o.setAttribute("size", "small");
21
21
  });
22
22
  });
23
23
  }
@@ -30,8 +30,8 @@ class i extends HTMLElement {
30
30
  var t;
31
31
  const a = (t = this.shadowRoot) == null ? void 0 : t.querySelectorAll("slot");
32
32
  a == null || a.forEach((r) => {
33
- r.assignedElements({ flatten: !0 }).forEach((s) => {
34
- s.setAttribute("role", "cell");
33
+ r.assignedElements({ flatten: !0 }).forEach((o) => {
34
+ o.setAttribute("role", "cell");
35
35
  });
36
36
  });
37
37
  }
@@ -39,7 +39,7 @@ class i extends HTMLElement {
39
39
  return this.querySelector('[slot="accessory"]') !== null;
40
40
  }
41
41
  render() {
42
- const a = this.variant === "action", t = this.getAttribute("col") || (a ? "minmax(0, 1fr) auto" : "1fr 1fr"), r = this.getAttribute("space") || "var(--space-500)", e = this.hasAccessorySlot(), s = (
42
+ const a = this.variant === "action", t = this.getAttribute("col") || (a ? "minmax(0, 1fr) auto" : "1fr 1fr"), r = this.getAttribute("space") || "var(--space-500)", s = this.hasAccessorySlot(), o = (
43
43
  /*css*/
44
44
  `
45
45
  :host {
@@ -56,6 +56,20 @@ class i extends HTMLElement {
56
56
  border-radius: var(--slat-radius);
57
57
  }
58
58
 
59
+ :host([variant="row"][card-slot][condensed-slot]) {
60
+ border-radius: 0;
61
+ }
62
+
63
+ :host([variant="row"][card-slot][condensed-slot-first]) {
64
+ border-top-left-radius: var(--card-radius);
65
+ border-top-right-radius: var(--card-radius);
66
+ }
67
+
68
+ :host([variant="row"][card-slot][condensed-slot-last]) {
69
+ border-bottom-left-radius: var(--card-radius);
70
+ border-bottom-right-radius: var(--card-radius);
71
+ }
72
+
59
73
  :host([variant="header"]) {
60
74
  padding: var(--space-200) var(--space-400);
61
75
  padding-top: var(--space-400);
@@ -120,12 +134,12 @@ class i extends HTMLElement {
120
134
  border-radius: 0;
121
135
  }
122
136
 
123
- :host([radius="none"][condensed-slot]:first-of-type) .action::part(border-radius) {
137
+ :host([radius="none"][condensed-slot-first]) .action::part(border-radius) {
124
138
  border-top-left-radius: var(--card-radius);
125
139
  border-top-right-radius: var(--card-radius);
126
140
  }
127
141
 
128
- :host([radius="none"][condensed-slot]:last-of-type) .action::part(border-radius) {
142
+ :host([radius="none"][condensed-slot-last]) .action::part(border-radius) {
129
143
  border-bottom-left-radius: var(--card-radius);
130
144
  border-bottom-right-radius: var(--card-radius);
131
145
  }
@@ -133,21 +147,35 @@ class i extends HTMLElement {
133
147
  ::slotted(mui-avatar) {
134
148
  --avatar-background-override: var(--slat-avatar-background);
135
149
  }
150
+ ::slotted(mui-avatar-group) {
151
+ --avatar-group-ring-color: var(--slat-background);
152
+ }
136
153
  .action:hover ::slotted(mui-avatar),
137
154
  .action:focus ::slotted(mui-avatar) {
138
155
  --avatar-background-override: var(--slat-avatar-background-hover);
139
156
  }
157
+ .action:hover ::slotted(mui-avatar-group),
158
+ .action:focus ::slotted(mui-avatar-group) {
159
+ --avatar-group-ring-color: var(--slat-background-hover);
160
+ }
140
161
 
141
162
  :host([card-slot]) ::slotted(mui-avatar) {
142
163
  --avatar-background-override: var(--slat-card-avatar-background);
143
164
  }
165
+ :host([card-slot]) ::slotted(mui-avatar-group) {
166
+ --avatar-group-ring-color: var(--slat-card-background);
167
+ }
144
168
  :host([card-slot]) .action:hover ::slotted(mui-avatar),
145
169
  :host([card-slot]) .action:focus ::slotted(mui-avatar) {
146
170
  --avatar-background-override: var(--slat-card-avatar-background-hover);
147
171
  }
172
+ :host([card-slot]) .action:hover ::slotted(mui-avatar-group),
173
+ :host([card-slot]) .action:focus ::slotted(mui-avatar-group) {
174
+ --avatar-group-ring-color: var(--slat-card-background-hover);
175
+ }
148
176
 
149
177
  `
150
- ), o = e ? `
178
+ ), e = s ? `
151
179
  <mui-h-stack alignY="center" space="var(--space-400)">
152
180
  <slot name="accessory"></slot>
153
181
  <slot name="start"></slot>
@@ -156,9 +184,9 @@ class i extends HTMLElement {
156
184
  this.shadowRoot.innerHTML = a ? (
157
185
  /*html*/
158
186
  `
159
- <style>${s}</style>
187
+ <style>${o}</style>
160
188
  <mui-button variant="tertiary" class="action">
161
- ${o}
189
+ ${e}
162
190
  <div class="end" slot="after">
163
191
  <slot name="end"></slot>
164
192
  <mui-icon-right-chevron size="x-small"></mui-icon-right-chevron>
@@ -169,8 +197,8 @@ class i extends HTMLElement {
169
197
  ) : (
170
198
  /*html*/
171
199
  `
172
- <style>${s}</style>
173
- ${o}
200
+ <style>${o}</style>
201
+ ${e}
174
202
  <slot name="end"></slot>
175
203
  `
176
204
  ), requestAnimationFrame(() => this.applyCellRoles());
@@ -1,5 +1,5 @@
1
1
  import "../mui-icons/spinner/index.js";
2
- class o extends HTMLElement {
2
+ class a extends HTMLElement {
3
3
  static get observedAttributes() {
4
4
  return ["size", "color", "duration", "label"];
5
5
  }
@@ -9,18 +9,20 @@ class o extends HTMLElement {
9
9
  connectedCallback() {
10
10
  this.hasAttribute("size") || this.setAttribute("size", "medium"), this.hasAttribute("duration") || this.setAttribute("duration", "0.8s"), this.hasAttribute("color") || this.setAttribute("color", "default"), this.render();
11
11
  }
12
- attributeChangedCallback(t, e, i) {
13
- e !== i && this.render();
12
+ attributeChangedCallback(e, t, i) {
13
+ t !== i && this.render();
14
14
  }
15
15
  render() {
16
16
  if (!this.shadowRoot) return;
17
- const t = this.getAttribute("size") || "medium", e = this.getAttribute("duration") || "0.8s", i = this.getAttribute("color") || "default", s = this.getAttribute("label") || "Loading", n = {
17
+ const e = this.getAttribute("size") || "medium", t = this.getAttribute("duration") || "0.8s", i = this.getAttribute("color") || "default", s = this.getAttribute("label") || "Loading", n = {
18
18
  "xx-small": "1.3rem",
19
19
  "x-small": "1.6rem",
20
20
  small: "2.1rem",
21
21
  medium: "2.4rem",
22
- large: "2.8rem"
23
- }, r = n[t] || n.medium;
22
+ large: "2.8rem",
23
+ "x-large": "3.6rem",
24
+ "xx-large": "4.8rem"
25
+ }, r = n[e] || n.medium;
24
26
  this.shadowRoot.innerHTML = /*html*/
25
27
  `
26
28
  <style>
@@ -34,7 +36,7 @@ class o extends HTMLElement {
34
36
  .spinner {
35
37
  width: 100%;
36
38
  height: 100%;
37
- animation: spin ${e} linear infinite;
39
+ animation: spin ${t} linear infinite;
38
40
  box-sizing: border-box;
39
41
  display: inline-flex;
40
42
  align-items: center;
@@ -62,9 +64,9 @@ class o extends HTMLElement {
62
64
  </style>
63
65
  <span class="vh">${s}</span>
64
66
  <span class="spinner" role="status" aria-label="${s}">
65
- <mui-icon-spinner size="${t}" color="${i}"></mui-icon-spinner>
67
+ <mui-icon-spinner size="${e}" color="${i}"></mui-icon-spinner>
66
68
  </span>
67
69
  `;
68
70
  }
69
71
  }
70
- customElements.get("mui-spinner") || customElements.define("mui-spinner", o);
72
+ customElements.get("mui-spinner") || customElements.define("mui-spinner", a);
@@ -1,10 +1,10 @@
1
1
  import { getPartMap as a } from "../../../utils/part-map/index.js";
2
- class h extends HTMLElement {
2
+ class r extends HTMLElement {
3
3
  static get observedAttributes() {
4
- return ["space", "aligny", "alignx", "padding", "height", "width", "viewport", "fill"];
4
+ return ["space", "aligny", "alignx", "padding", "height", "width", "viewport", "fill", "wrap"];
5
5
  }
6
6
  constructor() {
7
- super(), this.attachShadow({ mode: "open" }), this.space = "var(--space-500)", this.alignY = "flex-start", this.alignX = "flex-start", this.styles = /*css*/
7
+ super(), this.attachShadow({ mode: "open" }), this.space = "var(--space-500)", this.alignY = "flex-start", this.alignX = "flex-start", this.wrap = "nowrap", this.styles = /*css*/
8
8
  `
9
9
  :host {
10
10
  display: block;
@@ -20,6 +20,7 @@ class h extends HTMLElement {
20
20
  padding: var(--padding);
21
21
  align-items: var(--alignY);
22
22
  justify-content: var(--alignX);
23
+ flex-wrap: var(--wrap);
23
24
  }
24
25
  :host([height]) slot,
25
26
  :host([viewport]) slot,
@@ -46,6 +47,7 @@ class h extends HTMLElement {
46
47
  --padding: ${this.getAttribute("padding") || "var(--space-000)"};
47
48
  --alignY: ${this.getAttribute("aligny") || this.alignY};
48
49
  --alignX: ${this.getAttribute("alignx") || this.alignX};
50
+ --wrap: ${this.resolveWrap(this.getAttribute("wrap"))};
49
51
  ">
50
52
  </slot>
51
53
  `;
@@ -53,12 +55,15 @@ class h extends HTMLElement {
53
55
  attributeChangedCallback(t, i, s) {
54
56
  if (i === s || ((t === "height" || t === "width" || t === "viewport" || t === "fill") && this.syncDimensions(), !this.shadowRoot)) return;
55
57
  const e = this.shadowRoot.querySelector("slot");
56
- e && (t === "space" && e.style.setProperty("--space", s || this.space), t === "padding" && e.style.setProperty("--padding", s || "var(--space-000)"), t === "aligny" && e.style.setProperty("--alignY", s || this.alignY), t === "alignx" && e.style.setProperty("--alignX", s || this.alignX));
58
+ e && (t === "space" && e.style.setProperty("--space", s || this.space), t === "padding" && e.style.setProperty("--padding", s || "var(--space-000)"), t === "aligny" && e.style.setProperty("--alignY", s || this.alignY), t === "alignx" && e.style.setProperty("--alignX", s || this.alignX), t === "wrap" && e.style.setProperty("--wrap", this.resolveWrap(s)));
57
59
  }
58
60
  syncDimensions() {
59
61
  const t = this.getAttribute("height") || (this.hasAttribute("viewport") ? "100dvh" : this.hasAttribute("fill") ? "100%" : "auto"), i = this.getAttribute("width") || (this.hasAttribute("fill") ? "100%" : "auto");
60
62
  this.style.setProperty("--stack-height", t), this.style.setProperty("--stack-width", i);
61
63
  }
64
+ resolveWrap(t) {
65
+ return t === null || t === "" ? this.hasAttribute("wrap") ? "wrap" : this.wrap : t;
66
+ }
62
67
  waitForPartMap() {
63
68
  return new Promise((t) => {
64
69
  if (typeof a == "function") return t();
@@ -69,4 +74,4 @@ class h extends HTMLElement {
69
74
  });
70
75
  }
71
76
  }
72
- customElements.get("mui-h-stack") || customElements.define("mui-h-stack", h);
77
+ customElements.get("mui-h-stack") || customElements.define("mui-h-stack", r);