@muibook/components 19.2.0 → 19.4.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.
@@ -103,7 +103,7 @@
103
103
  },
104
104
  {
105
105
  "kind": "javascript-module",
106
- "path": "src/components/mui-avatar/doc.ts",
106
+ "path": "src/components/mui-alert/doc.ts",
107
107
  "declarations": [
108
108
  {
109
109
  "kind": "variable",
@@ -111,7 +111,7 @@
111
111
  "type": {
112
112
  "text": "MuiDocs"
113
113
  },
114
- "default": "{ Avatar: { title: \"Avatar\", description: \"Avatar components are used to represent users or entities visually, often through images, initials, or icons.\", hero: [\"https://images.ctfassets.net/i5uwscj4pkk2/2Qj1aPRsHVZZs6eF8XO6XC/54dd3c04d5a0ac379050cfa6f45d9732/Avatar_-_Home_Image.png\"], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1498-15366&t=2P2nhh7B70fl6xQ4-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-avatar--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-avatar/index.ts\"], website: [\"https://muibook.com/#/avatar\"], guides: [\"https://guides.muibook.com/avatar\"], usage: { list: [ \"Represent a user or entity visually in lists, chats, comments, or profiles.\", \"Display a profile photo, initials, or icon associated with a person or object.\", \"Use in compact UI elements where space is limited (e.g., tables, cards).\", \"Pair with user metadata (name, role, status) for context.\", \"Indicate presence, status, or selection in collaborative interfaces.\", ], }, accessibility: { designerList: [ \"Avatars should always include an accessible label via the label attribute to ensure screen readers can convey their purpose.\", \"When using images, ensure they are clear and appropriately sized for the avatar component.\", \"For avatars representing users, consider using initials or icons when images are not available to maintain visual consistency.\", ], engineerList: [ \"Avatars should always include an accessible label via the label attribute to ensure screen readers can convey their purpose.\", \"When using images, ensure they are clear and appropriately sized for the avatar component.\", \"For avatars representing users, consider using initials or icons when images are not available to maintain visual consistency.\", ], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"\", items: [ { key: \"\", name: \"\", description: \"\", image: \"\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
114
+ "default": "{ Alert: { title: \"Alert\", description: \"Alerts surface meaningful system messages related to the users' current task or action.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/7GnGBCbpMF3wyjCDC06hX7/24739b86a907d15400fe8e9e240a9619/Alert_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-4444&t=ZA9uH4LK37tSuk6r-1\", ], guides: [\"https://guides.muibook.com/alert\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-alert/index.ts\"], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-alert--docs\"], website: [\"https://muibook.com/#/alert\"], usage: { list: [ \"Success: Confirm completed actions such as form submissions, data saves, or task completion.\", \"Info: For sharing new features, updates, contextual tips, or non-urgent system statuses.\", \"Warning: Alert users to unsaved changes, deprecated features, or risky actions.\", \"Error: Alert users of form validation issues, system failures, or tasks that need attention.\", ], }, accessibility: { designerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"The role is set to ALERT for immediate screen reader feedback.\", ], engineerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"The role is set to ALERT for immediate screen reader feedback.\", ], }, anatomy: { list: [ \"Preset icon: Communicates the type of alert visually. E.g. info, success, warning, error.\", \"Preset title: Provides a clear, predefined heading that reflects the alert’s purpose.\", \"Customisable text: Allows for specific details or guidance relevant to the situation.\", ], image: \"https://images.ctfassets.net/i5uwscj4pkk2/17j3DxAFlne6rvMi6QUXqZ/aedab2c349c8f8b0a8414b41132cda51/Alert_-_Anatomy.png\", }, variants: { items: [ { key: \"success\", title: \"Success\", description: \"Indicates that an operation or action has been completed successfully. Use this variant for scenarios such as form submissions processed without errors, successful data updates or saves, and confirmations of completed tasks or actions. For accessibility, this variant uses an aria-live value of polite.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2EbJsP3GZ98WPOiF4PbGh2/bc3e020b37b73f949be745e4e26b6e5a/alert-success.png\", }, { key: \"info\", title: \"Info\", description: \"Provides general information or updates that are helpful but not critical. This variant is used for announcing new features or updates, offering contextual information or tips, and informing users about non-urgent system statuses. For accessibility, it uses an aria-live value of polite.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1SDh1JVNouysPHylu9lTUj/6793dd8aa854d08045c2159b450b762c/alert-info.png\", }, { key: \"warning\", title: \"Warning\", description: \"Alerts users to potential issues or situations that require caution. Common use cases include notifying about unsaved changes, indicating deprecated features or upcoming changes, and highlighting actions that may have unintended consequences. For accessibility, this variant uses an aria-live value of assertive.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2zympGRb3wlU5P36FsKWsL/dd9bde33646345e65d5bff505d512e22/alert-warning.png\", }, { key: \"error\", title: \"Error\", description: \"Indicates that an error has occurred, requiring user attention or action. This variant is typically used for form validation errors, system failures or exceptions, and failed operations or transactions. For accessibility, it uses an aria-live value of assertive.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/zOH2Xinum4ZjIv3qp6LJM/180a2306dd624b6bc2fa55c0ad81ea0e/alert-error.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"ai-playground-error-1\", name: \"AI Playground (Error)\", description: \"Demonstrates the Muiplay AI Playground showing a floating error positioned close to the field where a prompt is required to generate a task.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/40RfRPVAN9dvWO7UFuIiUC/52de3cffd69a5bcc2e457f8de03bb9cf/Play-Alert-Composition.png\", }, { key: \"ai-playground-error-2\", name: \"AI Playground (Error)\", description: \"Demonstrates the Muiplay AI Playground showing a floating error positioned close to the field where a prompt is required to generate a task.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/40RfRPVAN9dvWO7UFuIiUC/52de3cffd69a5bcc2e457f8de03bb9cf/Play-Alert-Composition.png\", }, ], }, related: { items: [ { name: \"Message\", link: \"https://guides.muibook.com/message\" }, { name: \"Link\", link: \"https://guides.muibook.com/link\" }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [ { description: \"\", image: \"\" }, { description: \"\", image: \"\" }, ], dontContent: [{ description: \"\" }, { description: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
115
115
  }
116
116
  ],
117
117
  "exports": [
@@ -120,91 +120,132 @@
120
120
  "name": "muiDocs",
121
121
  "declaration": {
122
122
  "name": "muiDocs",
123
- "module": "src/components/mui-avatar/doc.ts"
123
+ "module": "src/components/mui-alert/doc.ts"
124
124
  }
125
125
  }
126
126
  ]
127
127
  },
128
128
  {
129
129
  "kind": "javascript-module",
130
- "path": "src/components/mui-avatar/index.ts",
130
+ "path": "src/components/mui-alert/index.ts",
131
131
  "declarations": [
132
132
  {
133
133
  "kind": "class",
134
134
  "description": "",
135
- "name": "MuiAvatar",
135
+ "name": "MuiAlert",
136
136
  "members": [
137
137
  {
138
138
  "kind": "field",
139
- "name": "_imageFailed",
139
+ "name": "actionSlotListener",
140
140
  "type": {
141
- "text": "boolean | undefined"
141
+ "text": "(() => void) | null"
142
142
  },
143
- "privacy": "private"
143
+ "privacy": "private",
144
+ "default": "null"
145
+ },
146
+ {
147
+ "kind": "field",
148
+ "name": "contentSlotListener",
149
+ "type": {
150
+ "text": "(() => void) | null"
151
+ },
152
+ "privacy": "private",
153
+ "default": "null"
144
154
  },
145
155
  {
146
156
  "kind": "method",
147
- "name": "hasSlottedContent"
157
+ "name": "render"
148
158
  },
149
159
  {
150
160
  "kind": "method",
151
- "name": "getInitials",
161
+ "name": "getAlertSize",
162
+ "privacy": "private",
163
+ "return": {
164
+ "type": {
165
+ "text": "AlertSize"
166
+ }
167
+ }
168
+ },
169
+ {
170
+ "kind": "method",
171
+ "name": "getInlineContentSize",
172
+ "privacy": "private",
173
+ "return": {
174
+ "type": {
175
+ "text": "string"
176
+ }
177
+ },
152
178
  "parameters": [
153
179
  {
154
- "name": "label",
180
+ "name": "size",
155
181
  "type": {
156
- "text": "string | null"
182
+ "text": "AlertSize"
157
183
  }
158
184
  }
159
185
  ]
160
186
  },
161
187
  {
162
188
  "kind": "method",
163
- "name": "getBackgroundCSS"
189
+ "name": "getActionControlSize",
190
+ "privacy": "private",
191
+ "return": {
192
+ "type": {
193
+ "text": "string"
194
+ }
195
+ },
196
+ "parameters": [
197
+ {
198
+ "name": "size",
199
+ "type": {
200
+ "text": "AlertSize"
201
+ }
202
+ }
203
+ ]
164
204
  },
165
205
  {
166
206
  "kind": "method",
167
- "name": "render"
207
+ "name": "setupActionSlot"
208
+ },
209
+ {
210
+ "kind": "method",
211
+ "name": "setupContentSlot"
168
212
  }
169
213
  ],
170
214
  "attributes": [
171
215
  {
172
- "name": "label"
173
- },
174
- {
175
- "name": "image"
216
+ "name": "variant"
176
217
  },
177
218
  {
178
- "name": "size"
219
+ "name": "label"
179
220
  },
180
221
  {
181
- "name": "background"
222
+ "name": "hide-label"
182
223
  },
183
224
  {
184
- "name": "background-color"
225
+ "name": "size"
185
226
  }
186
227
  ],
187
228
  "superclass": {
188
229
  "name": "HTMLElement"
189
230
  },
190
- "tagName": "mui-avatar",
231
+ "tagName": "mui-alert",
191
232
  "customElement": true
192
233
  }
193
234
  ],
194
235
  "exports": [
195
236
  {
196
237
  "kind": "custom-element-definition",
197
- "name": "mui-avatar",
238
+ "name": "mui-alert",
198
239
  "declaration": {
199
- "name": "MuiAvatar",
200
- "module": "src/components/mui-avatar/index.ts"
240
+ "name": "MuiAlert",
241
+ "module": "src/components/mui-alert/index.ts"
201
242
  }
202
243
  }
203
244
  ]
204
245
  },
205
246
  {
206
247
  "kind": "javascript-module",
207
- "path": "src/components/mui-alert/doc.ts",
248
+ "path": "src/components/mui-avatar/doc.ts",
208
249
  "declarations": [
209
250
  {
210
251
  "kind": "variable",
@@ -212,7 +253,7 @@
212
253
  "type": {
213
254
  "text": "MuiDocs"
214
255
  },
215
- "default": "{ Alert: { title: \"Alert\", description: \"Alerts surface meaningful system messages related to the users' current task or action.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/7GnGBCbpMF3wyjCDC06hX7/24739b86a907d15400fe8e9e240a9619/Alert_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-4444&t=ZA9uH4LK37tSuk6r-1\", ], guides: [\"https://guides.muibook.com/alert\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-alert/index.ts\"], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-alert--docs\"], website: [\"https://muibook.com/#/alert\"], usage: { list: [ \"Success: Confirm completed actions such as form submissions, data saves, or task completion.\", \"Info: For sharing new features, updates, contextual tips, or non-urgent system statuses.\", \"Warning: Alert users to unsaved changes, deprecated features, or risky actions.\", \"Error: Alert users of form validation issues, system failures, or tasks that need attention.\", ], }, accessibility: { designerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"The role is set to ALERT for immediate screen reader feedback.\", ], engineerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"The role is set to ALERT for immediate screen reader feedback.\", ], }, anatomy: { list: [ \"Preset icon: Communicates the type of alert visually. E.g. info, success, warning, error.\", \"Preset title: Provides a clear, predefined heading that reflects the alert’s purpose.\", \"Customisable text: Allows for specific details or guidance relevant to the situation.\", ], image: \"https://images.ctfassets.net/i5uwscj4pkk2/17j3DxAFlne6rvMi6QUXqZ/aedab2c349c8f8b0a8414b41132cda51/Alert_-_Anatomy.png\", }, variants: { items: [ { key: \"success\", title: \"Success\", description: \"Indicates that an operation or action has been completed successfully. Use this variant for scenarios such as form submissions processed without errors, successful data updates or saves, and confirmations of completed tasks or actions. For accessibility, this variant uses an aria-live value of polite.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2EbJsP3GZ98WPOiF4PbGh2/bc3e020b37b73f949be745e4e26b6e5a/alert-success.png\", }, { key: \"info\", title: \"Info\", description: \"Provides general information or updates that are helpful but not critical. This variant is used for announcing new features or updates, offering contextual information or tips, and informing users about non-urgent system statuses. For accessibility, it uses an aria-live value of polite.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1SDh1JVNouysPHylu9lTUj/6793dd8aa854d08045c2159b450b762c/alert-info.png\", }, { key: \"warning\", title: \"Warning\", description: \"Alerts users to potential issues or situations that require caution. Common use cases include notifying about unsaved changes, indicating deprecated features or upcoming changes, and highlighting actions that may have unintended consequences. For accessibility, this variant uses an aria-live value of assertive.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2zympGRb3wlU5P36FsKWsL/dd9bde33646345e65d5bff505d512e22/alert-warning.png\", }, { key: \"error\", title: \"Error\", description: \"Indicates that an error has occurred, requiring user attention or action. This variant is typically used for form validation errors, system failures or exceptions, and failed operations or transactions. For accessibility, it uses an aria-live value of assertive.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/zOH2Xinum4ZjIv3qp6LJM/180a2306dd624b6bc2fa55c0ad81ea0e/alert-error.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"ai-playground-error-1\", name: \"AI Playground (Error)\", description: \"Demonstrates the Muiplay AI Playground showing a floating error positioned close to the field where a prompt is required to generate a task.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/40RfRPVAN9dvWO7UFuIiUC/52de3cffd69a5bcc2e457f8de03bb9cf/Play-Alert-Composition.png\", }, { key: \"ai-playground-error-2\", name: \"AI Playground (Error)\", description: \"Demonstrates the Muiplay AI Playground showing a floating error positioned close to the field where a prompt is required to generate a task.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/40RfRPVAN9dvWO7UFuIiUC/52de3cffd69a5bcc2e457f8de03bb9cf/Play-Alert-Composition.png\", }, ], }, related: { items: [ { name: \"Message\", link: \"https://guides.muibook.com/message\" }, { name: \"Link\", link: \"https://guides.muibook.com/link\" }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [ { description: \"\", image: \"\" }, { description: \"\", image: \"\" }, ], dontContent: [{ description: \"\" }, { description: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
256
+ "default": "{ Avatar: { title: \"Avatar\", description: \"Avatar components are used to represent users or entities visually, often through images, initials, or icons.\", hero: [\"https://images.ctfassets.net/i5uwscj4pkk2/2Qj1aPRsHVZZs6eF8XO6XC/54dd3c04d5a0ac379050cfa6f45d9732/Avatar_-_Home_Image.png\"], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1498-15366&t=2P2nhh7B70fl6xQ4-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-avatar--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-avatar/index.ts\"], website: [\"https://muibook.com/#/avatar\"], guides: [\"https://guides.muibook.com/avatar\"], usage: { list: [ \"Represent a user or entity visually in lists, chats, comments, or profiles.\", \"Display a profile photo, initials, or icon associated with a person or object.\", \"Use in compact UI elements where space is limited (e.g., tables, cards).\", \"Pair with user metadata (name, role, status) for context.\", \"Indicate presence, status, or selection in collaborative interfaces.\", \"Avatar can be slotted into Button for identity-led actions such as switching video platform profiles, opening an account menu, or accessing workspace controls.\", \"Use an avatar-only button when the avatar itself is the visible trigger for a profile dropdown, account settings drawer, workspace switcher, or compact dialog action.\", \"In global app headers, avatar-only buttons are a good fit for account settings, billing, support, or team context menus.\", \"When Avatar is the only content inside Button, let the avatar define the final size and treat Button as the interactive wrapper.\", ], }, accessibility: { designerList: [ \"Avatars should always include an accessible label via the label attribute to ensure screen readers can convey their purpose.\", \"When using images, ensure they are clear and appropriately sized for the avatar component.\", \"For avatars representing users, consider using initials or icons when images are not available to maintain visual consistency.\", ], engineerList: [ \"Avatars should always include an accessible label via the label attribute to ensure screen readers can convey their purpose.\", \"When using images, ensure they are clear and appropriately sized for the avatar component.\", \"For avatars representing users, consider using initials or icons when images are not available to maintain visual consistency.\", ], }, anatomy: { image: \"\", list: [ \"Image / Initials / Icon: The visible identity marker shown inside the avatar.\", \"Label: Accessible name announced to assistive technology.\", \"Status or Context (optional): Additional meaning can be conveyed through surrounding UI such as presence, role, or action context.\", ], }, variants: { items: [ { key: \"image\", title: \"Image\", description: \"Use when a profile or entity image is available and recognition matters.\", image: \"\", }, { key: \"initials\", title: \"Initials\", description: \"Use as the default fallback when no image is present but the entity has a clear name.\", image: \"\", }, { key: \"icon\", title: \"Icon\", description: \"Use for generic entities, products, or utility actions where a person-specific identity is not required.\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how Avatar fits into identity, communication, and account-oriented UI patterns.\", items: [ { key: \"account-menu\", name: \"Account Menu Trigger\", description: \"An avatar-only button used in a global app header to open account, billing, or support actions.\", image: \"\", }, { key: \"profile-switcher\", name: \"Profile Switcher\", description: \"A compact avatar trigger used to switch between people, channels, or workspace identities in a media or collaboration product.\", image: \"\", }, ], }, related: { items: [ { name: \"Button\", link: \"https://guides.muibook.com/button\", }, { name: \"Chip\", link: \"https://guides.muibook.com/chip\", }, { name: \"Slat\", link: \"https://guides.muibook.com/slat\", }, ], }, rules: [ { heading: \"Use the right identity source\", description: \"Choose the avatar content type based on confidence in the identity data and the importance of recognition.\", doContent: [ { description: \"Use a real image when recognition matters, initials when a name is available, and an icon for generic or product-level identities.\", image: \"\", }, ], dontContent: [ { description: \"Do not force decorative imagery or inconsistent fallback logic when the identity is unclear.\", image: \"\", }, ], }, ], behaviour: { list: [ \"Avatar is presentational by default and becomes interactive when wrapped by Button or another interactive parent.\", \"When used inside an avatar-only button, Avatar owns the visible size while Button owns interaction semantics, focus, and disabled behaviour.\", ], }, writing: { list: [ \"Provide a meaningful label so assistive technology can identify the person, entity, or action context represented by the avatar.\", ], }, }, }"
216
257
  }
217
258
  ],
218
259
  "exports": [
@@ -221,125 +262,84 @@
221
262
  "name": "muiDocs",
222
263
  "declaration": {
223
264
  "name": "muiDocs",
224
- "module": "src/components/mui-alert/doc.ts"
265
+ "module": "src/components/mui-avatar/doc.ts"
225
266
  }
226
267
  }
227
268
  ]
228
269
  },
229
270
  {
230
271
  "kind": "javascript-module",
231
- "path": "src/components/mui-alert/index.ts",
272
+ "path": "src/components/mui-avatar/index.ts",
232
273
  "declarations": [
233
274
  {
234
275
  "kind": "class",
235
276
  "description": "",
236
- "name": "MuiAlert",
277
+ "name": "MuiAvatar",
237
278
  "members": [
238
279
  {
239
280
  "kind": "field",
240
- "name": "actionSlotListener",
241
- "type": {
242
- "text": "(() => void) | null"
243
- },
244
- "privacy": "private",
245
- "default": "null"
246
- },
247
- {
248
- "kind": "field",
249
- "name": "contentSlotListener",
281
+ "name": "_imageFailed",
250
282
  "type": {
251
- "text": "(() => void) | null"
283
+ "text": "boolean | undefined"
252
284
  },
253
- "privacy": "private",
254
- "default": "null"
255
- },
256
- {
257
- "kind": "method",
258
- "name": "render"
259
- },
260
- {
261
- "kind": "method",
262
- "name": "getAlertSize",
263
- "privacy": "private",
264
- "return": {
265
- "type": {
266
- "text": "AlertSize"
267
- }
268
- }
285
+ "privacy": "private"
269
286
  },
270
287
  {
271
288
  "kind": "method",
272
- "name": "getInlineContentSize",
273
- "privacy": "private",
274
- "return": {
275
- "type": {
276
- "text": "string"
277
- }
278
- },
279
- "parameters": [
280
- {
281
- "name": "size",
282
- "type": {
283
- "text": "AlertSize"
284
- }
285
- }
286
- ]
289
+ "name": "hasSlottedContent"
287
290
  },
288
291
  {
289
292
  "kind": "method",
290
- "name": "getActionControlSize",
291
- "privacy": "private",
292
- "return": {
293
- "type": {
294
- "text": "string"
295
- }
296
- },
293
+ "name": "getInitials",
297
294
  "parameters": [
298
295
  {
299
- "name": "size",
296
+ "name": "label",
300
297
  "type": {
301
- "text": "AlertSize"
298
+ "text": "string | null"
302
299
  }
303
300
  }
304
301
  ]
305
302
  },
306
303
  {
307
304
  "kind": "method",
308
- "name": "setupActionSlot"
305
+ "name": "getBackgroundCSS"
309
306
  },
310
307
  {
311
308
  "kind": "method",
312
- "name": "setupContentSlot"
309
+ "name": "render"
313
310
  }
314
311
  ],
315
312
  "attributes": [
316
- {
317
- "name": "variant"
318
- },
319
313
  {
320
314
  "name": "label"
321
315
  },
322
316
  {
323
- "name": "hide-label"
317
+ "name": "image"
324
318
  },
325
319
  {
326
320
  "name": "size"
321
+ },
322
+ {
323
+ "name": "background"
324
+ },
325
+ {
326
+ "name": "background-color"
327
327
  }
328
328
  ],
329
329
  "superclass": {
330
330
  "name": "HTMLElement"
331
331
  },
332
- "tagName": "mui-alert",
332
+ "tagName": "mui-avatar",
333
333
  "customElement": true
334
334
  }
335
335
  ],
336
336
  "exports": [
337
337
  {
338
338
  "kind": "custom-element-definition",
339
- "name": "mui-alert",
339
+ "name": "mui-avatar",
340
340
  "declaration": {
341
- "name": "MuiAlert",
342
- "module": "src/components/mui-alert/index.ts"
341
+ "name": "MuiAvatar",
342
+ "module": "src/components/mui-avatar/index.ts"
343
343
  }
344
344
  }
345
345
  ]
@@ -662,7 +662,7 @@
662
662
  "type": {
663
663
  "text": "MuiDocs"
664
664
  },
665
- "default": "{ Button: { title: \"Button\", description: \"Buttons are essential UI elements that trigger actions when clicked or tapped. They should be easily recognisable, provide clear feedback, and be accessible to all users.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/20zrQqKqJ17evXhkPwlDhq/e7ce6604a49aef64f2c4056d16ea1d97/Button_-_Home_Image.png\", ], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-570&t=fSFYVey9aCoE5oQa-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/actions-button--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-button/index.ts\"], website: [\"https://muibook.com/#/button\"], guides: [\"https://guides.muibook.com/button\"], usage: { list: [ \"Reserve buttons for core actions on a page.\", \"Avoid using too many buttons on a single page to prevent confusion.\", \"Use clear and concise label text on buttons.\", \"Ensure labels are action-oriented. E.g. 'Save'.\", \"Ensure sufficient contrast between button text and background.\", ], }, accessibility: { designerList: [ \"Never put tooltips on disabled buttons as Tooltips can't be reached on all devices or by some assitive technologies.\", \"Provide accessible labels for buttons.\", \"For icon-only buttons, ensure an aria-label is provided to describe the action, as screen readers cannot interpret icons alone.\", \"Ensure buttons are focusable via keyboard navigation.\", \"Use appropriate ARIA roles and properties.\", ], engineerList: [ \"Never put tooltips on disabled buttons as Tooltips can't be reached on all devices or by some assitive technologies.\", \"Provide accessible labels for buttons.\", \"For icon-only buttons, ensure an aria-label is provided to describe the action, as screen readers cannot interpret icons alone.\", \"Ensure buttons are focusable via keyboard navigation.\", \"Use appropriate ARIA roles and properties.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/2LUuCpBtbL794vr5DyhMCz/44b7a3b75d0418915ebcdbf43bf1214c/button-anatomy.png\", list: [ \"LABEL: Text describing the button action. Use action verbs or phrases to tell the user what will happen next, and follow the button label content guidelines.\", \"BEFORE: An optional area to include an icon before the label. Use an icon to add additional affordance where the icon has a clear and well-established meaning. Most buttons don't require an icon, so be consistent and deliberate when you do.\", \"AFTER: An optional area to include an icon after the label, often used for a chevron-down-arrow icon to indicate a dropdown menu or accordion experiences where the placement is on the far right of the button.\", \"ICON ONLY: Use when the action is easily understood and space is limited. For example: close, add, or menu toggle. Avoid for unfamiliar or complex actions.\", ], }, variants: { items: [ { key: \"primary\", title: \"Primary\", description: \"Used for the main action on a page. It should stand out visually and be used sparingly to avoid confusion. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7szaFYOxeEH9F6gl0NEGz0/9657b870cd37918ae15f30cfab8b3747/button-primary.png\", }, { key: \"primary-icon-only\", title: \"Primary: Icon-Only\", description: \"An icon only version of the primary button. Used for the main action on a page. Best when the icon meaning is immediately clear, such as submitting, navigating forward, or creating new items. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/uKSyCIeL7vmWxqVoxxkRD/6d12cec0aaad006d0245a1f6dea8e7ad/button-primary-icon.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"Used for secondary actions that are not as critical as the primary action. It should be distinguishable but less prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"Used for secondary actions that are not as critical as the primary action. It should be distinguishable but less prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"secondary-icon-only\", title: \"Secondary: Icon-only\", description: \"An icon only version of the secondary button. Used for secondary actions that support the main task. Best for actions like edit, copy, or open in a new window. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3ebS7TgW2aziGoqc59UZAQ/be7c2f7d7d06970b2ddfae9fed5562b3/button-secondary-icon.png\", }, { key: \"tertiary\", title: \"Tertiary\", description: \"Used for less important actions or actions that complement primary and secondary actions. They should be the least prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/78O8tlBpDFb3rxooJkRGgs/27138560e395e947c8782feba06d3f6c/button-tertiary.png\", }, { key: \"tertiary-icon-only\", title: \"Tertiary: Icon-only\", description: \"An icon only version of the tertiary button. Designed for lightweight or supporting actions with minimal emphasis, such as info, settings, expand, open a menu, or close. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/50Nmp65TaWcwTixZhpLoUT/af5c8743d1482969667cf2a063428759/button-tertiary-icon.png\", }, { key: \"overlay\", title: \"Overlay\", description: \"Use on layered media or tinted surfaces where a subtle translucent action is needed. Keeps controls readable over imagery while staying visually lightweight.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"attention\", title: \"Attention\", description: \"Used for critical or potentially destructive actions, such as deleting an item or submitting sensitive information. It should stand out clearly to alert users and prompt deliberate interaction. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6XBCZnwgBw6zp2fjJQR7ko/70a3c7e8931b4fbf442dd997a57e1058/button-attention.png\", }, { key: \"attention-icon-only\", title: \"Attention: Icon-only\", description: \"An icon only version of the attention button. Used for critical or potentially destructive actions, such as delete, remove, or report. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1TDTCC0SZZJL3cBEmqjs8Q/29ba81f3f76fb4d15aaa93d25aec87d4/button-attention-icon.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"in-browser-design-guidelines\", name: \"In-browser Design Guidelines\", description: \"A promotional example showcasing the in-browser design guidelines feature available on the Muibook website.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5YR94S9N6P5No4lNQFBxZb/45360d599105d16309486d33ca0705f1/Button_-_Composition.png\", }, { key: \"onboarding-form\", name: \"Onboarding Form\", description: \"Demonstrates an onboarding form within a card, using logic to confirm terms acceptance. Components include Heading, Input Fields, Checkbox, and Button.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1NrgynTcdmVVKSYCsQwlOW/5fc4776c1860b498a59a2865b4e57ecb/Card-Onboarding-Composition.png\", }, ], }, related: { items: [ { name: \"Link\", link: \"https://guides.muibook.com/link\", }, { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"Primary vs Secondary\", description: \"Primary buttons signify the main action on a page or view. Use only one per context to avoid confusion. Secondary buttons support the primary action and are used for supplementary or less critical choices.\", doContent: [ { description: \"Use one clear primary action, supported by a secondary button for an alternative or reversible choice.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5xunviJfjqUYYS5yWSfOqW/56b8cbaab4aeb86cb7585120c0ef911c/primary-actions-do.png\", }, ], dontContent: [ { description: \"Avoid giving multiple buttons equal visual weight, as this creates confusion about what to do next.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/64qD6QvbuqhFgHbj9IEOiD/f61a0250d0139abe4c8f6d9307ce5cad/primary-actions-do-not.png\", }, ], }, { heading: \"Primary and Tertiary\", description: \"Tertiary actions are low-priority, optional paths that support the experience without distracting from the primary or secondary actions. They are typically styled as text buttons and used for non-critical choices like “Skip” or “Learn more.”\", doContent: [ { description: \"The tertiary action offers an optional, less prominent path that doesn’t compete visually with the primary action.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3eFnCzhfq4d10CALfudUZU/de4b6a7d26964acae2245b73a158517d/tertiary-actions-do.png\", }, ], dontContent: [ { description: \"A tertiary action styled like a primary button creates visual confusion and implies equal importance, which undermines the intended hierarchy.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3K59awxzUKnnihZuDFyOpV/a8ba8a13d36bc63208a3079d0c4c86ac/tertiary-actions-do-not.png\", }, ], }, { heading: \"Pairing Buttons\", description: \"In circumstances where an icon-only button is paired with a button that includes both a label and an icon, use a medium icon for the icon-only button and an small icon for the labeled button. Follow a right-to-left layout, placing the primary action on the right.\", doContent: [ { description: \"Place the primary action on the right and use appropriate icon sizes: medium for icon-only, small for labeled buttons.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/34h9SltXeGjU2fRc5iM4PE/438f84d21e142c84bb98c1965a40b36b/button-groups-do.png\", }, ], dontContent: [ { description: \"Don’t place the primary action on the left or mismatch icon sizing for either button type.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5fwaA1NM6AAQMPbV2vwPMR/b0a491b6aca705f7493806fd13f99734/button-groups-do-not.png\", }, ], }, { heading: \"Table Button-Group\", description: \"You can group multiple actions in a table’s action cell, but be mindful not to overwhelm rows with too many buttons. Prioritize clarity by showing only the most relevant actions per row.\", doContent: [ { description: \"Use a secondary button for labeled actions paired with a tertiary icon-only button, and apply medium icons for icon-only buttons and small icons for labeled buttons.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7beVBzijhfRsyorthBC1fd/c7460f72456cdb1982b122df77dc9bf7/table-button-group-do.png\", }, ], dontContent: [ { description: \"Avoid using primary, tertiary, or attention variants for labeled buttons, as they can draw too much attention and disrupt the visual hierarchy.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7zoFP4Rl3InXCgP0tiDQg0/18ec719eb7a970da67bd12fea32c935b/table-button-group-do-not.png\", }, ], }, { heading: \"Button vs Link\", description: \"Buttons and links may look similar, but buttons are for triggering actions, while links are for navigating between pages or sections of your app or site.\", doContent: [ { description: \"Use a link when navigating to another page or view.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7xOE9DNKWgy1lZoT0FbMOW/cc13fbeeaa85b2507087645d925d7323/button-vs-link-do.png\", }, ], dontContent: [ { description: \"Don’t use a link to trigger tasks like submitting a form or saving data.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6tSAw6uBvg142Gzw7tenBc/4b8db682687b42f3c53fc32557cc4eee/button-vs-link-do-not.png\", }, ], }, { heading: \"Label Clarity\", description: \"\", doContent: [ { description: \"Use clear and concise labels for buttons: Ensure each button clearly indicates its action. E.g. 'Submit'.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3M9fgCF3JgFwDrooqXTvlf/92ad6b1c3faacebd8ea2884afadab24d/button-label-clarity-do.png\", }, ], dontContent: [ { description: \"Don't use ambiguous labels: Avoid using unclear or generic terms for buttons. E.g. 'Click here'.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1rXUNW1YiCVPJ2klPwL8WT/8137762316179653687bb1c1178ceb16/button-label-clarity-do-not.png\", }, ], }, { heading: \"Disabled Actions\", description: \"Avoid disabling call-to-action buttons to prevent form submission. Instead, consider using a combination of form validation, toasts, or alerts to inform users why they can’t proceed and how to resolve the issue.\", doContent: [ { description: \"Use form validation in combination with alerts to provide clear instructions on how to resolve the issue.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/41xe78AaqPHUxpd2RC6QoP/46b6f7217a8eb15bd928495d54a0728f/disabled-do.png\", }, ], dontContent: [ { description: \"Avoid disabling actions, as it prevents users from receiving feedback on why they can’t proceed.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6SiZPnnUlkMbNSJzxV8unt/7e6389d85eaac161d6cfd314190010f9/disabled-do-not.png\", }, ], }, { heading: \"Table Button: Icon-Only\", description: \"Use icon-only buttons in the end (far right) cell of a table row. When implementing tables in-browser, apply the correct action boolean and column auto-spacing to ensure the header and content align properly.\", doContent: [ { description: \"Use a tertiary icon-only button with a medium icon in the end table cell.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/EzbGECpviXXcjsmfftqEm/b21a44dec44b7243688fba26d2c9768c/table-button-do.png\", }, ], dontContent: [ { description: \"Don’t use other button variants or icon sizes in place of the designated icon-only approach.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/722XYLqqBwEJXE6qG0ZLDE/6e9a4d25fc5292688e62960090d92230/table-button-do-not.png\", }, ], }, { heading: \"Card, Dialog and Drawer Actions\", description: \"It is best practice to place actions in a footer for cards, dialogs, and drawers, providing a consistent location for users to find and interact with them.\", doContent: [ { description: \"Place actions in a footer within cards, dialogs, and drawers to ensure they are easily accessible and follow a consistent pattern.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4nFRwg1AOL74fQXM6OQvnV/d9c1eed80b86919656fb3ab8005f7d71/panel-actions-do.png\", }, ], dontContent: [ { description: \"Avoid placing actions in unconventional or hard-to-find locations within cards, dialogs, or drawers, as this can make them difficult for users to locate and use effectively.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3caBEJQxfRasuxw62RQVbw/4e3620f4e62f2fa8b8f8aa504625776a/panel-actions-do-not.png\", }, ], }, { heading: \"Icon-Only Actions\", description: \"\", doContent: [ { description: \"Use a 'medium' size icon when using an icon-only medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3syzrNBEXbBjp5hGEUvF4M/0471f4b16939d8ee54deaf48997ff455/action-icon-do.png\", }, ], dontContent: [ { description: \"Avoid 'x-small', 'medium' or 'large' size icons within an icon-only medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5V2TE85dY848jz1dP6Y0lC/b8e433c8abad5a4402ff1f86ddb8c848/action-icon-dont.png\", }, ], }, { heading: \"Text & Icon Actions\", description: \"Use icon-only buttons in the end (far right) cell of a table row. When implementing tables in-browser, apply the correct action boolean and column auto-spacing to ensure the header and content align properly.\", doContent: [ { description: \"Use the 'small' size icon within a medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2W1xs6NPj3jRrW6ZaVGRvZ/3a11566b68fffda85bf5f780c4d6a394/dropdown-bar-icon-do.png\", }, ], dontContent: [ { description: \"Avoid 'x-small', 'medium' or 'large' size icons within a medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6BgHzCgKqk44piisNH4tE6/c08d91a1cf5231a089844d20f6ab968c/dropdown-bar-icon-dont.png\", }, ], }, ], behaviour: { description: \"Buttons should provide visual feedback on hover and click. These states should be factored into the component and baked into the corresponding states in code.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3h2wNhGxd4f9AENDf3K7Qa/0ca6f8b224923e7fa9710735dc8f54e0/Button_-_Behaviour.png\", list: [ \"Default: Normal state.\", \"Hover: Changes when a user hovers over the button.\", \"Focus: Ensure buttons display a visible focus indicator when navigated to via keyboard.\", \"Disabled: Non-interactive, faded appearance.\", ], }, writing: { list: [ \"Keep button text short and action-oriented.\", \"Use sentence case for button text.\", \"Avoid using multiple lines of text on a button.\", ], }, }, }"
665
+ "default": "{ Button: { title: \"Button\", description: \"Buttons are essential UI elements that trigger actions when clicked or tapped. They should be easily recognisable, provide clear feedback, and be accessible to all users.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/20zrQqKqJ17evXhkPwlDhq/e7ce6604a49aef64f2c4056d16ea1d97/Button_-_Home_Image.png\", ], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-570&t=fSFYVey9aCoE5oQa-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/actions-button--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-button/index.ts\"], website: [\"https://muibook.com/#/button\"], guides: [\"https://guides.muibook.com/button\"], usage: { list: [ \"Reserve buttons for core actions on a page.\", \"Avoid using too many buttons on a single page to prevent confusion.\", \"Use clear and concise label text on buttons.\", \"Ensure labels are action-oriented. E.g. 'Save'.\", \"Ensure sufficient contrast between button text and background.\", \"Buttons can include Avatar for profile, identity, and account-oriented actions.\", \"Use avatar-only buttons when the avatar itself is the visible trigger, such as opening an account menu, switching profiles on a video platform, or launching a compact settings drawer.\", \"When the button only contains mui-avatar, the button collapses to the avatar footprint while preserving interaction semantics, focus, and disabled behaviour.\", \"Avatar-only buttons work well with Dropdown, Drawer, and Dialog when you want the control to read as identity-first rather than as a standard text button.\", ], }, accessibility: { designerList: [ \"Never put tooltips on disabled buttons as Tooltips can't be reached on all devices or by some assitive technologies.\", \"Provide accessible labels for buttons.\", \"For icon-only buttons, ensure an aria-label is provided to describe the action, as screen readers cannot interpret icons alone.\", \"Ensure buttons are focusable via keyboard navigation.\", \"Use appropriate ARIA roles and properties.\", ], engineerList: [ \"Never put tooltips on disabled buttons as Tooltips can't be reached on all devices or by some assitive technologies.\", \"Provide accessible labels for buttons.\", \"For icon-only buttons, ensure an aria-label is provided to describe the action, as screen readers cannot interpret icons alone.\", \"Ensure buttons are focusable via keyboard navigation.\", \"Use appropriate ARIA roles and properties.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/2LUuCpBtbL794vr5DyhMCz/44b7a3b75d0418915ebcdbf43bf1214c/button-anatomy.png\", list: [ \"LABEL: Text describing the button action. Use action verbs or phrases to tell the user what will happen next, and follow the button label content guidelines.\", \"BEFORE: An optional area to include an icon before the label. Use an icon to add additional affordance where the icon has a clear and well-established meaning. Most buttons don't require an icon, so be consistent and deliberate when you do.\", \"AFTER: An optional area to include an icon after the label, often used for a chevron-down-arrow icon to indicate a dropdown menu or accordion experiences where the placement is on the far right of the button.\", \"ICON ONLY: Use when the action is easily understood and space is limited. For example: close, add, or menu toggle. Avoid for unfamiliar or complex actions.\", ], }, variants: { items: [ { key: \"primary\", title: \"Primary\", description: \"Used for the main action on a page. It should stand out visually and be used sparingly to avoid confusion. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7szaFYOxeEH9F6gl0NEGz0/9657b870cd37918ae15f30cfab8b3747/button-primary.png\", }, { key: \"primary-icon-only\", title: \"Primary: Icon-Only\", description: \"An icon only version of the primary button. Used for the main action on a page. Best when the icon meaning is immediately clear, such as submitting, navigating forward, or creating new items. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/uKSyCIeL7vmWxqVoxxkRD/6d12cec0aaad006d0245a1f6dea8e7ad/button-primary-icon.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"Used for secondary actions that are not as critical as the primary action. It should be distinguishable but less prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"Used for secondary actions that are not as critical as the primary action. It should be distinguishable but less prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"secondary-icon-only\", title: \"Secondary: Icon-only\", description: \"An icon only version of the secondary button. Used for secondary actions that support the main task. Best for actions like edit, copy, or open in a new window. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3ebS7TgW2aziGoqc59UZAQ/be7c2f7d7d06970b2ddfae9fed5562b3/button-secondary-icon.png\", }, { key: \"tertiary\", title: \"Tertiary\", description: \"Used for less important actions or actions that complement primary and secondary actions. They should be the least prominent. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/78O8tlBpDFb3rxooJkRGgs/27138560e395e947c8782feba06d3f6c/button-tertiary.png\", }, { key: \"tertiary-icon-only\", title: \"Tertiary: Icon-only\", description: \"An icon only version of the tertiary button. Designed for lightweight or supporting actions with minimal emphasis, such as info, settings, expand, open a menu, or close. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/50Nmp65TaWcwTixZhpLoUT/af5c8743d1482969667cf2a063428759/button-tertiary-icon.png\", }, { key: \"overlay\", title: \"Overlay\", description: \"Use on layered media or tinted surfaces where a subtle translucent action is needed. Keeps controls readable over imagery while staying visually lightweight.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5MgDmdtcMDIIsHKlzMNpj1/42fbbce26a313f72c670ff91ff4fb500/button-secondary.png\", }, { key: \"attention\", title: \"Attention\", description: \"Used for critical or potentially destructive actions, such as deleting an item or submitting sensitive information. It should stand out clearly to alert users and prompt deliberate interaction. When an icon is slotted into a button, it automatically inherits the button’s default icon size. If you need a different look or emphasis, you can override the size as required.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6XBCZnwgBw6zp2fjJQR7ko/70a3c7e8931b4fbf442dd997a57e1058/button-attention.png\", }, { key: \"attention-icon-only\", title: \"Attention: Icon-only\", description: \"An icon only version of the attention button. Used for critical or potentially destructive actions, such as delete, remove, or report. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1TDTCC0SZZJL3cBEmqjs8Q/29ba81f3f76fb4d15aaa93d25aec87d4/button-attention-icon.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"in-browser-design-guidelines\", name: \"In-browser Design Guidelines\", description: \"A promotional example showcasing the in-browser design guidelines feature available on the Muibook website.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5YR94S9N6P5No4lNQFBxZb/45360d599105d16309486d33ca0705f1/Button_-_Composition.png\", }, { key: \"onboarding-form\", name: \"Onboarding Form\", description: \"Demonstrates an onboarding form within a card, using logic to confirm terms acceptance. Components include Heading, Input Fields, Checkbox, and Button.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1NrgynTcdmVVKSYCsQwlOW/5fc4776c1860b498a59a2865b4e57ecb/Card-Onboarding-Composition.png\", }, ], }, related: { items: [ { name: \"Link\", link: \"https://guides.muibook.com/link\", }, { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"Primary vs Secondary\", description: \"Primary buttons signify the main action on a page or view. Use only one per context to avoid confusion. Secondary buttons support the primary action and are used for supplementary or less critical choices.\", doContent: [ { description: \"Use one clear primary action, supported by a secondary button for an alternative or reversible choice.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5xunviJfjqUYYS5yWSfOqW/56b8cbaab4aeb86cb7585120c0ef911c/primary-actions-do.png\", }, ], dontContent: [ { description: \"Avoid giving multiple buttons equal visual weight, as this creates confusion about what to do next.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/64qD6QvbuqhFgHbj9IEOiD/f61a0250d0139abe4c8f6d9307ce5cad/primary-actions-do-not.png\", }, ], }, { heading: \"Primary and Tertiary\", description: \"Tertiary actions are low-priority, optional paths that support the experience without distracting from the primary or secondary actions. They are typically styled as text buttons and used for non-critical choices like “Skip” or “Learn more.”\", doContent: [ { description: \"The tertiary action offers an optional, less prominent path that doesn’t compete visually with the primary action.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3eFnCzhfq4d10CALfudUZU/de4b6a7d26964acae2245b73a158517d/tertiary-actions-do.png\", }, ], dontContent: [ { description: \"A tertiary action styled like a primary button creates visual confusion and implies equal importance, which undermines the intended hierarchy.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3K59awxzUKnnihZuDFyOpV/a8ba8a13d36bc63208a3079d0c4c86ac/tertiary-actions-do-not.png\", }, ], }, { heading: \"Pairing Buttons\", description: \"In circumstances where an icon-only button is paired with a button that includes both a label and an icon, use a medium icon for the icon-only button and an small icon for the labeled button. Follow a right-to-left layout, placing the primary action on the right.\", doContent: [ { description: \"Place the primary action on the right and use appropriate icon sizes: medium for icon-only, small for labeled buttons.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/34h9SltXeGjU2fRc5iM4PE/438f84d21e142c84bb98c1965a40b36b/button-groups-do.png\", }, ], dontContent: [ { description: \"Don’t place the primary action on the left or mismatch icon sizing for either button type.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5fwaA1NM6AAQMPbV2vwPMR/b0a491b6aca705f7493806fd13f99734/button-groups-do-not.png\", }, ], }, { heading: \"Table Button-Group\", description: \"You can group multiple actions in a table’s action cell, but be mindful not to overwhelm rows with too many buttons. Prioritize clarity by showing only the most relevant actions per row.\", doContent: [ { description: \"Use a secondary button for labeled actions paired with a tertiary icon-only button, and apply medium icons for icon-only buttons and small icons for labeled buttons.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7beVBzijhfRsyorthBC1fd/c7460f72456cdb1982b122df77dc9bf7/table-button-group-do.png\", }, ], dontContent: [ { description: \"Avoid using primary, tertiary, or attention variants for labeled buttons, as they can draw too much attention and disrupt the visual hierarchy.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7zoFP4Rl3InXCgP0tiDQg0/18ec719eb7a970da67bd12fea32c935b/table-button-group-do-not.png\", }, ], }, { heading: \"Button vs Link\", description: \"Buttons and links may look similar, but buttons are for triggering actions, while links are for navigating between pages or sections of your app or site.\", doContent: [ { description: \"Use a link when navigating to another page or view.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7xOE9DNKWgy1lZoT0FbMOW/cc13fbeeaa85b2507087645d925d7323/button-vs-link-do.png\", }, ], dontContent: [ { description: \"Don’t use a link to trigger tasks like submitting a form or saving data.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6tSAw6uBvg142Gzw7tenBc/4b8db682687b42f3c53fc32557cc4eee/button-vs-link-do-not.png\", }, ], }, { heading: \"Label Clarity\", description: \"\", doContent: [ { description: \"Use clear and concise labels for buttons: Ensure each button clearly indicates its action. E.g. 'Submit'.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3M9fgCF3JgFwDrooqXTvlf/92ad6b1c3faacebd8ea2884afadab24d/button-label-clarity-do.png\", }, ], dontContent: [ { description: \"Don't use ambiguous labels: Avoid using unclear or generic terms for buttons. E.g. 'Click here'.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1rXUNW1YiCVPJ2klPwL8WT/8137762316179653687bb1c1178ceb16/button-label-clarity-do-not.png\", }, ], }, { heading: \"Disabled Actions\", description: \"Avoid disabling call-to-action buttons to prevent form submission. Instead, consider using a combination of form validation, toasts, or alerts to inform users why they can’t proceed and how to resolve the issue.\", doContent: [ { description: \"Use form validation in combination with alerts to provide clear instructions on how to resolve the issue.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/41xe78AaqPHUxpd2RC6QoP/46b6f7217a8eb15bd928495d54a0728f/disabled-do.png\", }, ], dontContent: [ { description: \"Avoid disabling actions, as it prevents users from receiving feedback on why they can’t proceed.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6SiZPnnUlkMbNSJzxV8unt/7e6389d85eaac161d6cfd314190010f9/disabled-do-not.png\", }, ], }, { heading: \"Table Button: Icon-Only\", description: \"Use icon-only buttons in the end (far right) cell of a table row. When implementing tables in-browser, apply the correct action boolean and column auto-spacing to ensure the header and content align properly.\", doContent: [ { description: \"Use a tertiary icon-only button with a medium icon in the end table cell.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/EzbGECpviXXcjsmfftqEm/b21a44dec44b7243688fba26d2c9768c/table-button-do.png\", }, ], dontContent: [ { description: \"Don’t use other button variants or icon sizes in place of the designated icon-only approach.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/722XYLqqBwEJXE6qG0ZLDE/6e9a4d25fc5292688e62960090d92230/table-button-do-not.png\", }, ], }, { heading: \"Card, Dialog and Drawer Actions\", description: \"It is best practice to place actions in a footer for cards, dialogs, and drawers, providing a consistent location for users to find and interact with them.\", doContent: [ { description: \"Place actions in a footer within cards, dialogs, and drawers to ensure they are easily accessible and follow a consistent pattern.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4nFRwg1AOL74fQXM6OQvnV/d9c1eed80b86919656fb3ab8005f7d71/panel-actions-do.png\", }, ], dontContent: [ { description: \"Avoid placing actions in unconventional or hard-to-find locations within cards, dialogs, or drawers, as this can make them difficult for users to locate and use effectively.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3caBEJQxfRasuxw62RQVbw/4e3620f4e62f2fa8b8f8aa504625776a/panel-actions-do-not.png\", }, ], }, { heading: \"Icon-Only Actions\", description: \"\", doContent: [ { description: \"Use a 'medium' size icon when using an icon-only medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3syzrNBEXbBjp5hGEUvF4M/0471f4b16939d8ee54deaf48997ff455/action-icon-do.png\", }, ], dontContent: [ { description: \"Avoid 'x-small', 'medium' or 'large' size icons within an icon-only medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5V2TE85dY848jz1dP6Y0lC/b8e433c8abad5a4402ff1f86ddb8c848/action-icon-dont.png\", }, ], }, { heading: \"Text & Icon Actions\", description: \"Use icon-only buttons in the end (far right) cell of a table row. When implementing tables in-browser, apply the correct action boolean and column auto-spacing to ensure the header and content align properly.\", doContent: [ { description: \"Use the 'small' size icon within a medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2W1xs6NPj3jRrW6ZaVGRvZ/3a11566b68fffda85bf5f780c4d6a394/dropdown-bar-icon-do.png\", }, ], dontContent: [ { description: \"Avoid 'x-small', 'medium' or 'large' size icons within a medium sized action\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6BgHzCgKqk44piisNH4tE6/c08d91a1cf5231a089844d20f6ab968c/dropdown-bar-icon-dont.png\", }, ], }, ], behaviour: { description: \"Buttons should provide visual feedback on hover and click. These states should be factored into the component and baked into the corresponding states in code.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3h2wNhGxd4f9AENDf3K7Qa/0ca6f8b224923e7fa9710735dc8f54e0/Button_-_Behaviour.png\", list: [ \"Default: Normal state.\", \"Hover: Changes when a user hovers over the button.\", \"Focus: Ensure buttons display a visible focus indicator when navigated to via keyboard.\", \"Disabled: Non-interactive, faded appearance.\", ], }, writing: { list: [ \"Keep button text short and action-oriented.\", \"Use sentence case for button text.\", \"Avoid using multiple lines of text on a button.\", ], }, }, }"
666
666
  }
667
667
  ],
668
668
  "exports": [
@@ -685,6 +685,15 @@
685
685
  "description": "",
686
686
  "name": "MuiButton",
687
687
  "members": [
688
+ {
689
+ "kind": "method",
690
+ "name": "syncButtonState",
691
+ "return": {
692
+ "type": {
693
+ "text": "void"
694
+ }
695
+ }
696
+ },
688
697
  {
689
698
  "kind": "method",
690
699
  "name": "updateAvatarSizes",
@@ -1034,36 +1043,6 @@
1034
1043
  "declarations": [],
1035
1044
  "exports": []
1036
1045
  },
1037
- {
1038
- "kind": "javascript-module",
1039
- "path": "src/components/mui-carousel/doc.ts",
1040
- "declarations": [
1041
- {
1042
- "kind": "variable",
1043
- "name": "muiDocs",
1044
- "type": {
1045
- "text": "MuiDocs"
1046
- },
1047
- "default": "{ Carousel: { title: \"Carousel\", description: \"A carousel component with tab-based navigation, enabling users to switch between views or content sections with ease.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/55yS6ecrFIoh0pA08R98VB/07a93872e746c5723b7b4b21f0a9d56a/Carousel_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8697&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-carousel--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-carousel\"], website: [\"https://muibook.com/#/carousel\"], guides: [\"https://guides.muibook.com/carousel\"], usage: { list: [ \"Use to present grouped content that benefits from both tabbed access and horizontal transitions.\", \"Ideal for feature highlights, onboarding steps, or content previews.\", \"Ensure tab labels are short and clearly indicate the content behind each panel.\", \"Avoid using for unrelated content or when vertical scrolling is more appropriate.\", \"When adding custom content, account for the placement of carousel controls and maintain sufficient whitespace for readability and alignment.\", \"Swap out default controls when a different interaction pattern better suits the content or context.\", ], }, accessibility: { designerList: [ \"Users can navigate between carousel items using the left/right arrow keys, as well as Home and End keys.\", \"The active tab is always keyboard-focusable and shows a visible focus outline for clarity.\", \"Tabs are marked up using semantic roles (like tablist and tab) to help assistive technologies understand the structure.\", \"Behind the scenes, attributes like aria-selected and tabindex update automatically to reflect which tab is active.\", ], engineerList: [ \"Left/Right arrows, Home and End keys let keyboard users navigate between carousel items.\", \"aria-selected and tabindex attributes are updated on each tab-item when it becomes active or inactive.\", \"Each active tab-item can receive focus and shows a focus-visible outline.\", \"tab-bar uses role=tablist to group related tab-items and each tab-item uses role=tab within the tab-bar.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/7lrQyuy00XTDGTww5lWXsH/427804b3af03935cc06e8a691a5006a0/Carousel_-_Anatomy.png\", list: [ \"The outer wrapper that defines the structure, sliding behaviour, and background styling of the carousel.\", \"A flexible area where custom content is added. Designers are responsible for setting internal spacing, layout, and composition.\", \"Navigation elements such as tabs, dots, or arrows that float above the content. These controls can be customized or replaced based on the use case.\", ], }, variants: { items: [ { key: \"position\", title: \"Position\", description: \"Carousel controls can be positioned at any side or corner of the container, including top center, right middle, bottom center, left middle, top left, top right, bottom left, and bottom right.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/Yc6eg8YWdiiSiiPzR588D/bdfbad0967d9cc059310bd1406c656c5/position-bottom.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"product-carousel\", name: \"Product Carousel\", description: \"Demonstrates how to add custom compositions and layouts within the carousel panels.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4NRMfGil4AcMUh7FDhYyHz/7c4636822eba6d3ae15e684f50d10fdd/Carousel_-_Composition.png\", }, { key: \"carousel-showcase\", name: \"Carousel Showcase\", description: \"This example from the GuruSuite website demonstrates the carousel used to showcase two of the products on offer.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2TaRRm351HyujF9mT2w1wH/3958f69e939d20618751742130dc5f06/GuruSuite-Carousel-Composition.png\", }, ], }, related: { items: [ { name: \"Tab Bar\", link: \"https://guides.muibook.com/tab-bar\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
1048
- }
1049
- ],
1050
- "exports": [
1051
- {
1052
- "kind": "js",
1053
- "name": "muiDocs",
1054
- "declaration": {
1055
- "name": "muiDocs",
1056
- "module": "src/components/mui-carousel/doc.ts"
1057
- }
1058
- }
1059
- ]
1060
- },
1061
- {
1062
- "kind": "javascript-module",
1063
- "path": "src/components/mui-carousel/index.ts",
1064
- "declarations": [],
1065
- "exports": []
1066
- },
1067
1046
  {
1068
1047
  "kind": "javascript-module",
1069
1048
  "path": "src/components/mui-checkbox/doc.ts",
@@ -1172,6 +1151,36 @@
1172
1151
  }
1173
1152
  ]
1174
1153
  },
1154
+ {
1155
+ "kind": "javascript-module",
1156
+ "path": "src/components/mui-carousel/doc.ts",
1157
+ "declarations": [
1158
+ {
1159
+ "kind": "variable",
1160
+ "name": "muiDocs",
1161
+ "type": {
1162
+ "text": "MuiDocs"
1163
+ },
1164
+ "default": "{ Carousel: { title: \"Carousel\", description: \"A carousel component with tab-based navigation, enabling users to switch between views or content sections with ease.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/55yS6ecrFIoh0pA08R98VB/07a93872e746c5723b7b4b21f0a9d56a/Carousel_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8697&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-carousel--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-carousel\"], website: [\"https://muibook.com/#/carousel\"], guides: [\"https://guides.muibook.com/carousel\"], usage: { list: [ \"Use to present grouped content that benefits from both tabbed access and horizontal transitions.\", \"Ideal for feature highlights, onboarding steps, or content previews.\", \"Ensure tab labels are short and clearly indicate the content behind each panel.\", \"Avoid using for unrelated content or when vertical scrolling is more appropriate.\", \"When adding custom content, account for the placement of carousel controls and maintain sufficient whitespace for readability and alignment.\", \"Swap out default controls when a different interaction pattern better suits the content or context.\", ], }, accessibility: { designerList: [ \"Users can navigate between carousel items using the left/right arrow keys, as well as Home and End keys.\", \"The active tab is always keyboard-focusable and shows a visible focus outline for clarity.\", \"Tabs are marked up using semantic roles (like tablist and tab) to help assistive technologies understand the structure.\", \"Behind the scenes, attributes like aria-selected and tabindex update automatically to reflect which tab is active.\", ], engineerList: [ \"Left/Right arrows, Home and End keys let keyboard users navigate between carousel items.\", \"aria-selected and tabindex attributes are updated on each tab-item when it becomes active or inactive.\", \"Each active tab-item can receive focus and shows a focus-visible outline.\", \"tab-bar uses role=tablist to group related tab-items and each tab-item uses role=tab within the tab-bar.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/7lrQyuy00XTDGTww5lWXsH/427804b3af03935cc06e8a691a5006a0/Carousel_-_Anatomy.png\", list: [ \"The outer wrapper that defines the structure, sliding behaviour, and background styling of the carousel.\", \"A flexible area where custom content is added. Designers are responsible for setting internal spacing, layout, and composition.\", \"Navigation elements such as tabs, dots, or arrows that float above the content. These controls can be customized or replaced based on the use case.\", ], }, variants: { items: [ { key: \"position\", title: \"Position\", description: \"Carousel controls can be positioned at any side or corner of the container, including top center, right middle, bottom center, left middle, top left, top right, bottom left, and bottom right.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/Yc6eg8YWdiiSiiPzR588D/bdfbad0967d9cc059310bd1406c656c5/position-bottom.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"product-carousel\", name: \"Product Carousel\", description: \"Demonstrates how to add custom compositions and layouts within the carousel panels.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4NRMfGil4AcMUh7FDhYyHz/7c4636822eba6d3ae15e684f50d10fdd/Carousel_-_Composition.png\", }, { key: \"carousel-showcase\", name: \"Carousel Showcase\", description: \"This example from the GuruSuite website demonstrates the carousel used to showcase two of the products on offer.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2TaRRm351HyujF9mT2w1wH/3958f69e939d20618751742130dc5f06/GuruSuite-Carousel-Composition.png\", }, ], }, related: { items: [ { name: \"Tab Bar\", link: \"https://guides.muibook.com/tab-bar\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
1165
+ }
1166
+ ],
1167
+ "exports": [
1168
+ {
1169
+ "kind": "js",
1170
+ "name": "muiDocs",
1171
+ "declaration": {
1172
+ "name": "muiDocs",
1173
+ "module": "src/components/mui-carousel/doc.ts"
1174
+ }
1175
+ }
1176
+ ]
1177
+ },
1178
+ {
1179
+ "kind": "javascript-module",
1180
+ "path": "src/components/mui-carousel/index.ts",
1181
+ "declarations": [],
1182
+ "exports": []
1183
+ },
1175
1184
  {
1176
1185
  "kind": "javascript-module",
1177
1186
  "path": "src/components/mui-chip/doc.ts",
@@ -2734,24 +2743,60 @@
2734
2743
  "name": "MuiFormGroup",
2735
2744
  "members": [
2736
2745
  {
2737
- "kind": "method",
2738
- "name": "render"
2739
- },
2740
- {
2741
- "kind": "method",
2742
- "name": "setupSlotBehavior",
2743
- "privacy": "private"
2744
- }
2746
+ "kind": "field",
2747
+ "name": "slotEl",
2748
+ "type": {
2749
+ "text": "HTMLSlotElement | null"
2750
+ },
2751
+ "privacy": "private",
2752
+ "default": "null"
2753
+ },
2754
+ {
2755
+ "kind": "method",
2756
+ "name": "render"
2757
+ },
2758
+ {
2759
+ "kind": "method",
2760
+ "name": "bindSlotBehavior",
2761
+ "privacy": "private"
2762
+ },
2763
+ {
2764
+ "kind": "field",
2765
+ "name": "updateChoiceGroupState",
2766
+ "privacy": "private"
2767
+ },
2768
+ {
2769
+ "kind": "method",
2770
+ "name": "syncLayoutAttributes",
2771
+ "privacy": "private"
2772
+ },
2773
+ {
2774
+ "kind": "method",
2775
+ "name": "getHeadingLevel",
2776
+ "privacy": "private"
2777
+ }
2745
2778
  ],
2746
2779
  "attributes": [
2747
2780
  {
2748
2781
  "name": "heading"
2749
2782
  },
2783
+ {
2784
+ "name": "heading-level"
2785
+ },
2786
+ {
2787
+ "name": "heading-space"
2788
+ },
2750
2789
  {
2751
2790
  "name": "hide-label"
2752
2791
  },
2753
2792
  {
2754
2793
  "name": "variant"
2794
+ },
2795
+ {
2796
+ "name": "space"
2797
+ },
2798
+ {
2799
+ "name": "aligny"
2755
2800
  }
2756
2801
  ],
2757
2802
  "superclass": {
@@ -2802,6 +2847,30 @@
2802
2847
  "declarations": [],
2803
2848
  "exports": []
2804
2849
  },
2850
+ {
2851
+ "kind": "javascript-module",
2852
+ "path": "src/components/mui-form-message/doc.ts",
2853
+ "declarations": [
2854
+ {
2855
+ "kind": "variable",
2856
+ "name": "muiDocs",
2857
+ "type": {
2858
+ "text": "MuiDocs"
2859
+ },
2860
+ "default": "{ FormMessage: { title: \"Form Message\", description: \"Form Message provides supporting text below form controls for guidance, validation, and status messaging.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-form-message/index.ts\"], website: [\"https://muibook.com/#/form-message\"], guides: [\"https://guides.muibook.com/field\"], usage: { list: [ \"Use for supporting text below form controls.\", \"Use inside mui-field with slot='message' for consistent spacing and placement.\", \"When used in Form Group layouts, attach each Form Message to its specific Field using slot='message'.\", \"Form Message wraps Mui Body with form-oriented defaults.\", \"Form Message renders an info icon by default; provide slot='before' to replace it.\", \"Supporting copy is intentionally knocked back so inputs and selections stay visually primary.\", \"Slot icons in before/after using Mui Body slot behavior.\", \"Style state feedback through slotted icon color and text styling in usage context.\", \"Use size to match nearby body text (x-small, small, medium, large).\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"] }, anatomy: { image: \"\", list: [\"Optional leading slot\", \"Hint text\", \"Optional trailing slot\"] }, variants: { items: [{ key: \"\", title: \"\", description: \"\", image: \"\" }] }, compositions: { description: \"\", items: [] }, related: { items: [ { name: \"Field\", link: \"https://guides.muibook.com/field\" }, { name: \"Input\", link: \"https://guides.muibook.com/input\" }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"] }, writing: { list: [\"\"] }, }, }"
2861
+ }
2862
+ ],
2863
+ "exports": [
2864
+ {
2865
+ "kind": "js",
2866
+ "name": "muiDocs",
2867
+ "declaration": {
2868
+ "name": "muiDocs",
2869
+ "module": "src/components/mui-form-message/doc.ts"
2870
+ }
2871
+ }
2872
+ ]
2873
+ },
2805
2874
  {
2806
2875
  "kind": "javascript-module",
2807
2876
  "path": "src/components/mui-form-message/index.ts",
@@ -6258,6 +6327,76 @@
6258
6327
  }
6259
6328
  ]
6260
6329
  },
6330
+ {
6331
+ "kind": "javascript-module",
6332
+ "path": "src/components/mui-loader/doc.ts",
6333
+ "declarations": [
6334
+ {
6335
+ "kind": "variable",
6336
+ "name": "muiDocs",
6337
+ "type": {
6338
+ "text": "MuiDocs"
6339
+ },
6340
+ "default": "{ Loader: { title: \"Loader\", description: \"The Loader component applies smooth, built-in transitions during page loads, content updates, or skeleton placeholders to maintain a seamless, polished experience.\", hero: [\"\"], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1059-12710&t=BwezUSymTClm00wJ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-loader--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-loader/index.ts\"], website: [\"\"], guides: [\"https://guides.muibook.com/loader\"], usage: { list: [ \"Wrap any page or UI section with Mui-Loader to automatically display loading animations.\", \"Ideal for initial page loads, content transitions, or skeleton screens while data is fetching.\", \"When crafting skeleton states inside Loader, prefer design tokens, rem units, and percentages over fixed pixel sizes.\", \"Compose placeholders with Muibook layout components such as mui-v-stack, mui-h-stack, and mui-grid for consistent spacing.\", \"Applied to pages or key components for seamless load transitions.\", \"Works seamlessly with other MUI components and layouts without additional setup.\", \"Use with Mui Spinner, skeletons, or other feedback to improve perceived performance.\", ], }, accessibility: { designerList: [ \"The loader is announced to screen readers via role='status', ensuring updates are conveyed politely.\", \"aria-busy is set to true when loading, indicating the region is currently in a 'busy' state.\", \"A visually hidden 'Loading…' text is included by default to provide meaningful content for screen readers, even if the slotted content is purely visual.\", \"The component respects the user’s reduced motion preferences via prefers-reduced-motion, preventing potentially distracting animations.\", \"No additional labels are required from the consumer, making it lightweight and flexible while remaining accessible by default.\", ], engineerList: [ \"The loader is announced to screen readers via role='status', ensuring updates are conveyed politely.\", \"aria-busy is set to true when loading, indicating the region is currently in a 'busy' state.\", \"A visually hidden 'Loading…' text is included by default to provide meaningful content for screen readers, even if the slotted content is purely visual.\", \"The component respects the user’s reduced motion preferences via prefers-reduced-motion, preventing potentially distracting animations.\", \"No additional labels are required from the consumer, making it lightweight and flexible while remaining accessible by default.\", ], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"pulsate\", title: \"Pulsate\", description: \"\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5gZwRuH4Ojs38xlq7HAMCt/47be2502487c0d85955c203788442d12/pulse.gif\", }, { key: \"fade-in\", title: \"Fade-In\", description: \"\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/xPo8WGtJjoiW5y8gcXFJG/ed432ec413dc4839129139dad546e926/fade-in.gif\", }, { key: \"translate-up\", title: \"Translate: Up\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4UTi4tmMxdiTDNR0wi5AOt/8d0e21d88eb33c71d1c7f69df8f42772/up.gif\", }, { key: \"translate-down\", title: \"Translate: Down\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/63936AreBgAC7oxohQbLpY/e26318a5b4b6aaa790f363c4180d92ad/down.gif\", }, { key: \"translate-left\", title: \"Translate: Left\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"hhttps://images.ctfassets.net/i5uwscj4pkk2/5Rzmo4ISRIfaY5aMAbO1U6/0db9896ce44b9704960fde8bc9b70a07/left.gif\", }, { key: \"translate-right\", title: \"Translate: Right\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2pzlTEsdJj4FKmnsleLO0T/79a8d4fbecc3953a9ec21772df5ee9ac/right.gif\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"guru-outcomes-dashboard\", name: \"Guru Outcomes - Dashboard\", description: \"Use the <mui-loader> component to mask slow network or initial data load times. Combine its features to create a seamless loading experience.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7fsKn4mqKGieVh2D1EdyuR/a9afa145001e13470054aa9d7004127d/outcomes-home.gif\", }, { key: \"guru-outcomes-roadmap\", name: \"Guru Outcomes - Roadmap\", description: \"The Loader component in action on the roadmap page, smoothly loading the UI while masking delays and improving perceived performance.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7Hebis0o1mlvvDZlQRZfzl/f0c06679ab417f2ee624b570226da77d/outcomes-roadmap.gif\", }, ], }, related: { items: [ { name: \"Spinner\", link: \"https://guides.muibook.com/loader\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
6341
+ }
6342
+ ],
6343
+ "exports": [
6344
+ {
6345
+ "kind": "js",
6346
+ "name": "muiDocs",
6347
+ "declaration": {
6348
+ "name": "muiDocs",
6349
+ "module": "src/components/mui-loader/doc.ts"
6350
+ }
6351
+ }
6352
+ ]
6353
+ },
6354
+ {
6355
+ "kind": "javascript-module",
6356
+ "path": "src/components/mui-loader/index.ts",
6357
+ "declarations": [
6358
+ {
6359
+ "kind": "class",
6360
+ "description": "",
6361
+ "name": "MuiLoader",
6362
+ "members": [
6363
+ {
6364
+ "kind": "method",
6365
+ "name": "render"
6366
+ }
6367
+ ],
6368
+ "attributes": [
6369
+ {
6370
+ "name": "loading"
6371
+ },
6372
+ {
6373
+ "name": "animation"
6374
+ },
6375
+ {
6376
+ "name": "direction"
6377
+ },
6378
+ {
6379
+ "name": "duration"
6380
+ }
6381
+ ],
6382
+ "superclass": {
6383
+ "name": "HTMLElement"
6384
+ },
6385
+ "tagName": "mui-loader",
6386
+ "customElement": true
6387
+ }
6388
+ ],
6389
+ "exports": [
6390
+ {
6391
+ "kind": "custom-element-definition",
6392
+ "name": "mui-loader",
6393
+ "declaration": {
6394
+ "name": "MuiLoader",
6395
+ "module": "src/components/mui-loader/index.ts"
6396
+ }
6397
+ }
6398
+ ]
6399
+ },
6261
6400
  {
6262
6401
  "kind": "javascript-module",
6263
6402
  "path": "src/components/mui-link/doc.ts",
@@ -6591,76 +6730,6 @@
6591
6730
  "declarations": [],
6592
6731
  "exports": []
6593
6732
  },
6594
- {
6595
- "kind": "javascript-module",
6596
- "path": "src/components/mui-loader/doc.ts",
6597
- "declarations": [
6598
- {
6599
- "kind": "variable",
6600
- "name": "muiDocs",
6601
- "type": {
6602
- "text": "MuiDocs"
6603
- },
6604
- "default": "{ Loader: { title: \"Loader\", description: \"The Loader component applies smooth, built-in transitions during page loads, content updates, or skeleton placeholders to maintain a seamless, polished experience.\", hero: [\"\"], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1059-12710&t=BwezUSymTClm00wJ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-loader--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-loader/index.ts\"], website: [\"\"], guides: [\"https://guides.muibook.com/loader\"], usage: { list: [ \"Wrap any page or UI section with Mui-Loader to automatically display loading animations.\", \"Ideal for initial page loads, content transitions, or skeleton screens while data is fetching.\", \"When crafting skeleton states inside Loader, prefer design tokens, rem units, and percentages over fixed pixel sizes.\", \"Compose placeholders with Muibook layout components such as mui-v-stack, mui-h-stack, and mui-grid for consistent spacing.\", \"Applied to pages or key components for seamless load transitions.\", \"Works seamlessly with other MUI components and layouts without additional setup.\", \"Use with Mui Spinner, skeletons, or other feedback to improve perceived performance.\", ], }, accessibility: { designerList: [ \"The loader is announced to screen readers via role='status', ensuring updates are conveyed politely.\", \"aria-busy is set to true when loading, indicating the region is currently in a 'busy' state.\", \"A visually hidden 'Loading…' text is included by default to provide meaningful content for screen readers, even if the slotted content is purely visual.\", \"The component respects the user’s reduced motion preferences via prefers-reduced-motion, preventing potentially distracting animations.\", \"No additional labels are required from the consumer, making it lightweight and flexible while remaining accessible by default.\", ], engineerList: [ \"The loader is announced to screen readers via role='status', ensuring updates are conveyed politely.\", \"aria-busy is set to true when loading, indicating the region is currently in a 'busy' state.\", \"A visually hidden 'Loading…' text is included by default to provide meaningful content for screen readers, even if the slotted content is purely visual.\", \"The component respects the user’s reduced motion preferences via prefers-reduced-motion, preventing potentially distracting animations.\", \"No additional labels are required from the consumer, making it lightweight and flexible while remaining accessible by default.\", ], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"pulsate\", title: \"Pulsate\", description: \"\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5gZwRuH4Ojs38xlq7HAMCt/47be2502487c0d85955c203788442d12/pulse.gif\", }, { key: \"fade-in\", title: \"Fade-In\", description: \"\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/xPo8WGtJjoiW5y8gcXFJG/ed432ec413dc4839129139dad546e926/fade-in.gif\", }, { key: \"translate-up\", title: \"Translate: Up\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4UTi4tmMxdiTDNR0wi5AOt/8d0e21d88eb33c71d1c7f69df8f42772/up.gif\", }, { key: \"translate-down\", title: \"Translate: Down\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/63936AreBgAC7oxohQbLpY/e26318a5b4b6aaa790f363c4180d92ad/down.gif\", }, { key: \"translate-left\", title: \"Translate: Left\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"hhttps://images.ctfassets.net/i5uwscj4pkk2/5Rzmo4ISRIfaY5aMAbO1U6/0db9896ce44b9704960fde8bc9b70a07/left.gif\", }, { key: \"translate-right\", title: \"Translate: Right\", description: \"Default direction is Up. Ability to define the preferred direction: Up, Right, Down, Left.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2pzlTEsdJj4FKmnsleLO0T/79a8d4fbecc3953a9ec21772df5ee9ac/right.gif\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"guru-outcomes-dashboard\", name: \"Guru Outcomes - Dashboard\", description: \"Use the <mui-loader> component to mask slow network or initial data load times. Combine its features to create a seamless loading experience.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7fsKn4mqKGieVh2D1EdyuR/a9afa145001e13470054aa9d7004127d/outcomes-home.gif\", }, { key: \"guru-outcomes-roadmap\", name: \"Guru Outcomes - Roadmap\", description: \"The Loader component in action on the roadmap page, smoothly loading the UI while masking delays and improving perceived performance.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7Hebis0o1mlvvDZlQRZfzl/f0c06679ab417f2ee624b570226da77d/outcomes-roadmap.gif\", }, ], }, related: { items: [ { name: \"Spinner\", link: \"https://guides.muibook.com/loader\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
6605
- }
6606
- ],
6607
- "exports": [
6608
- {
6609
- "kind": "js",
6610
- "name": "muiDocs",
6611
- "declaration": {
6612
- "name": "muiDocs",
6613
- "module": "src/components/mui-loader/doc.ts"
6614
- }
6615
- }
6616
- ]
6617
- },
6618
- {
6619
- "kind": "javascript-module",
6620
- "path": "src/components/mui-loader/index.ts",
6621
- "declarations": [
6622
- {
6623
- "kind": "class",
6624
- "description": "",
6625
- "name": "MuiLoader",
6626
- "members": [
6627
- {
6628
- "kind": "method",
6629
- "name": "render"
6630
- }
6631
- ],
6632
- "attributes": [
6633
- {
6634
- "name": "loading"
6635
- },
6636
- {
6637
- "name": "animation"
6638
- },
6639
- {
6640
- "name": "direction"
6641
- },
6642
- {
6643
- "name": "duration"
6644
- }
6645
- ],
6646
- "superclass": {
6647
- "name": "HTMLElement"
6648
- },
6649
- "tagName": "mui-loader",
6650
- "customElement": true
6651
- }
6652
- ],
6653
- "exports": [
6654
- {
6655
- "kind": "custom-element-definition",
6656
- "name": "mui-loader",
6657
- "declaration": {
6658
- "name": "MuiLoader",
6659
- "module": "src/components/mui-loader/index.ts"
6660
- }
6661
- }
6662
- ]
6663
- },
6664
6733
  {
6665
6734
  "kind": "javascript-module",
6666
6735
  "path": "src/components/mui-markdown/doc.ts",
@@ -7000,7 +7069,7 @@
7000
7069
  },
7001
7070
  {
7002
7071
  "kind": "javascript-module",
7003
- "path": "src/components/mui-progress/doc.ts",
7072
+ "path": "src/components/mui-message/doc.ts",
7004
7073
  "declarations": [
7005
7074
  {
7006
7075
  "kind": "variable",
@@ -7008,7 +7077,7 @@
7008
7077
  "type": {
7009
7078
  "text": "MuiDocs"
7010
7079
  },
7011
- "default": "{ Progress: { title: \"Progress\", description: \"A Progress Bar visually represents completion status by filling a bar based on a percentage value. It gives users a clear indication of progress for a given task or process.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2NPcL7tA0zGUWFLShr66fS/23d0050dce8c8379afc6deb8e351d049/Progress_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4161&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-progress--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-progress/index.ts\"], website: [\"https://muibook.com/#/progress\"], guides: [\"https://guides.muibook.com/progress\"], usage: { list: [ \"Show task progress Indicate how much of a task or process has been completed.\", \"Display loading states Represent the progress of a background operation, such as file uploads.\", \"Track step completion Show progress in multi-step workflows or onboarding processes.\", \"Tune visual density and motion with component tokens such as --progress-radius, --progress-syncing-width, and --progress-pending-stripe-size.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/1iPll53Pmtgjh50qYwhsgY/908da9c51dd605895bd6306290fc6bd9/Progress_-_Anatomy.png\", list: [ \"Fill (Indicator) The colored portion inside the track that represents the progress percentage.\", \"Track The background of the progress bar, providing the visual boundary for progress.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"outcome-based-roadmap\", name: \"Outcome-Based Roadmap\", description: \"Example of an Outcome-Based Roadmap page showing objectives organised into Upcoming, Doing, and Finished columns. Progress bars indicate the completion status of each task, providing a clear view of overall progress.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3w5htPtfEz7QMCH9alVcwf/de35725fb4542b891bd695b900195291/Outcomes-Progress-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7080
+ "default": "{ Message: { title: \"Message\", description: \"The message component provides persistent, non-dismissible notifications that remain visible until the system determines they should be suspended. Unlike alerts, these messages are static elements integrated into the page layout, offering continuous information without disrupting the user’s workflow.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/01OU9JbOlDZGvbpkq2ismi/b0410cb8002858ded88987d9556daa04/Message_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=9-1053&t=ZA9uH4LK37tSuk6r-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-message--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-message/index.ts\"], website: [\"https://muibook.com/#/message\"], guides: [\"https://guides.muibook.com/message\"], usage: { list: [ \"Plain: A subtle, transparent style suited for vibrant backgrounds where minimal visual impact is preferred.\", \"Neutral: A calm, balanced tone for non-critical, persistent messages.\", \"Positive: To confirm successful actions like form submissions, saves, or completed tasks.\", \"Info: To share feature announcements, enhancements, or contextual onboarding tips.\", \"Warning: Caution users about potential issues such as unsaved changes or upcoming expirations.\", \"Attention: Highlight urgent issues like system errors or security breaches requiring immediate action.\", ], }, accessibility: { designerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"Neutral, Postive, Info support the role of STATUS for screen reader feedback.\", \"Warning, Attention support the role of ALERT for screen reader feedback.\", ], engineerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"Neutral, Postive, Info support the role of STATUS for screen reader feedback.\", \"Warning, Attention support the role of ALERT for screen reader feedback.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/6S1MOtZZKP2bxYuIUNScSC/993a910363fbfbba29a3de384ecb182a/Message_-_Anatomy.png\", list: [ \"Preset icon: Communicates the type of message visually. E.g. neutral, positive, info, warning, attention.\", \"Customisable title: Allows for a general heading that describes the message details or guidance relevant to the situation.\", \"Customisable text: Allows for specific details or guidance relevant to the situation.\", ], }, variants: { items: [ { key: \"plain\", title: \"Plain\", description: \"A subtle, transparent style designed for vibrant backgrounds where minimal visual impact is preferred. Best for passive messages like accessibility notes, system status, or routine updates. Use for non-critical information that doesn’t require immediate attention or action. This variant sets aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/21KWc3TZOJPqZ2BtZ3ngrY/3cbf4aa6df3a72f195eebaa8fe8ecfde/message-plain.png\", }, { key: \"neutral\", title: \"Neutral\", description: \"The Neutral state offers a calm, balanced tone for non-critical, persistent messages. It is suitable for displaying non-urgent information, such as background status like sync confirmation or feature explanations. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2VF8KPxaXCm6P4dlpsAnXs/5a2011d1a63a900dcdd6669ec5c097e9/message-neutral.png\", }, { key: \"positive\", title: \"Positive\", description: \"The Positive state conveys successful actions, confirmations, or achievements, helping foster a sense of accomplishment and satisfaction. It’s used to indicate things like successful form submissions, completed tasks, or acknowledged milestones. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2HOuPOpHOuMGuVUoPAs5MI/ff1e156bc8f31e580972289fcc7bf3d7/message-positive.png\", }, { key: \"info\", title: \"Info\", description: \"The Info state provides helpful messages that inform users about system status, feature updates, or changes—guiding them without urgency. It’s suitable for announcing new features, enhancements, or system changes, and works well for onboarding tips or contextual help. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1x63W880Trpx0GYiYQJhCt/72c09a93d6ec34a18bc15310927fe9ef/message-info.png\", }, { key: \"warning\", title: \"Warning\", description: \"The Warning state alerts users to potential issues that may require attention, helping prevent errors or misunderstandings. It’s commonly used to notify users of unsaved changes, actions with potential consequences, or upcoming limitations or expirations. This variant uses aria-live='assertive' and role='alert' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/50V1Ap7vVxPUWRbbKh0kx5/2fe4c203befa779087c8b23984d951b7/message-warning.png\", }, { key: \"attention\", title: \"Attention\", description: \"The Attention state demands immediate user focus, highlighting critical issues that require prompt action. It’s used to alert users to urgent problems like system errors or security breaches, or for time-sensitive notifications that significantly impact the user experience. This variant uses aria-live='assertive' and role='alert' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5GXIEuluNJBlg8h4hDCfWH/ddeec560354ab06af73bf5c5d8749c12/message-attention.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"plain-message\", name: \"Plain message\", description: \"This example uses the Plain variant, suitable for both white and colored backgrounds. It’s ideal for presenting information passively, without demanding user attention. In this case, it’s used to deliver accessibility notes.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3akJJDd28DOIhQrYq6g4y2/456c02f32dc9c40d84d92371b7ddbead/message-composition-neutral.png\", }, { key: \"info-message\", name: \"Info message\", description: \"Use a page-level Info message to remind users to log in to the provided tools, ensuring the MUI Guidelines are shown instead of the default guidelines.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1ySFimf3eEleYLPKomWuem/34772aed4257db976f2ca8cb633d3d5b/message-composition-info.png\", }, ], }, related: { items: [ { name: \"Alert\", link: \"https://guides.muibook.com/alert\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7012
7081
  }
7013
7082
  ],
7014
7083
  "exports": [
@@ -7017,120 +7086,56 @@
7017
7086
  "name": "muiDocs",
7018
7087
  "declaration": {
7019
7088
  "name": "muiDocs",
7020
- "module": "src/components/mui-progress/doc.ts"
7089
+ "module": "src/components/mui-message/doc.ts"
7021
7090
  }
7022
7091
  }
7023
7092
  ]
7024
7093
  },
7025
7094
  {
7026
7095
  "kind": "javascript-module",
7027
- "path": "src/components/mui-progress/index.ts",
7096
+ "path": "src/components/mui-message/index.ts",
7028
7097
  "declarations": [
7029
7098
  {
7030
7099
  "kind": "class",
7031
7100
  "description": "",
7032
- "name": "MuiProgress",
7101
+ "name": "MuiMessage",
7033
7102
  "members": [
7103
+ {
7104
+ "kind": "field",
7105
+ "name": "contentSlotListener",
7106
+ "type": {
7107
+ "text": "(() => void) | null"
7108
+ },
7109
+ "privacy": "private",
7110
+ "default": "null"
7111
+ },
7034
7112
  {
7035
7113
  "kind": "method",
7036
- "name": "render"
7037
- }
7038
- ],
7039
- "attributes": [
7114
+ "name": "getMessageSize",
7115
+ "privacy": "private",
7116
+ "return": {
7117
+ "type": {
7118
+ "text": "MessageSize"
7119
+ }
7120
+ }
7121
+ },
7040
7122
  {
7041
- "name": "progress"
7042
- },
7043
- {
7044
- "name": "state"
7045
- }
7046
- ],
7047
- "superclass": {
7048
- "name": "HTMLElement"
7049
- },
7050
- "tagName": "mui-progress",
7051
- "customElement": true
7052
- }
7053
- ],
7054
- "exports": [
7055
- {
7056
- "kind": "custom-element-definition",
7057
- "name": "mui-progress",
7058
- "declaration": {
7059
- "name": "MuiProgress",
7060
- "module": "src/components/mui-progress/index.ts"
7061
- }
7062
- }
7063
- ]
7064
- },
7065
- {
7066
- "kind": "javascript-module",
7067
- "path": "src/components/mui-message/doc.ts",
7068
- "declarations": [
7069
- {
7070
- "kind": "variable",
7071
- "name": "muiDocs",
7072
- "type": {
7073
- "text": "MuiDocs"
7074
- },
7075
- "default": "{ Message: { title: \"Message\", description: \"The message component provides persistent, non-dismissible notifications that remain visible until the system determines they should be suspended. Unlike alerts, these messages are static elements integrated into the page layout, offering continuous information without disrupting the user’s workflow.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/01OU9JbOlDZGvbpkq2ismi/b0410cb8002858ded88987d9556daa04/Message_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=9-1053&t=ZA9uH4LK37tSuk6r-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-message--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-message/index.ts\"], website: [\"https://muibook.com/#/message\"], guides: [\"https://guides.muibook.com/message\"], usage: { list: [ \"Plain: A subtle, transparent style suited for vibrant backgrounds where minimal visual impact is preferred.\", \"Neutral: A calm, balanced tone for non-critical, persistent messages.\", \"Positive: To confirm successful actions like form submissions, saves, or completed tasks.\", \"Info: To share feature announcements, enhancements, or contextual onboarding tips.\", \"Warning: Caution users about potential issues such as unsaved changes or upcoming expirations.\", \"Attention: Highlight urgent issues like system errors or security breaches requiring immediate action.\", ], }, accessibility: { designerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"Neutral, Postive, Info support the role of STATUS for screen reader feedback.\", \"Warning, Attention support the role of ALERT for screen reader feedback.\", ], engineerList: [ \"ARIA-live is built in, using POLITE + ASSERTIVE for screen readers.\", \"Neutral, Postive, Info support the role of STATUS for screen reader feedback.\", \"Warning, Attention support the role of ALERT for screen reader feedback.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/6S1MOtZZKP2bxYuIUNScSC/993a910363fbfbba29a3de384ecb182a/Message_-_Anatomy.png\", list: [ \"Preset icon: Communicates the type of message visually. E.g. neutral, positive, info, warning, attention.\", \"Customisable title: Allows for a general heading that describes the message details or guidance relevant to the situation.\", \"Customisable text: Allows for specific details or guidance relevant to the situation.\", ], }, variants: { items: [ { key: \"plain\", title: \"Plain\", description: \"A subtle, transparent style designed for vibrant backgrounds where minimal visual impact is preferred. Best for passive messages like accessibility notes, system status, or routine updates. Use for non-critical information that doesn’t require immediate attention or action. This variant sets aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/21KWc3TZOJPqZ2BtZ3ngrY/3cbf4aa6df3a72f195eebaa8fe8ecfde/message-plain.png\", }, { key: \"neutral\", title: \"Neutral\", description: \"The Neutral state offers a calm, balanced tone for non-critical, persistent messages. It is suitable for displaying non-urgent information, such as background status like sync confirmation or feature explanations. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2VF8KPxaXCm6P4dlpsAnXs/5a2011d1a63a900dcdd6669ec5c097e9/message-neutral.png\", }, { key: \"positive\", title: \"Positive\", description: \"The Positive state conveys successful actions, confirmations, or achievements, helping foster a sense of accomplishment and satisfaction. It’s used to indicate things like successful form submissions, completed tasks, or acknowledged milestones. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2HOuPOpHOuMGuVUoPAs5MI/ff1e156bc8f31e580972289fcc7bf3d7/message-positive.png\", }, { key: \"info\", title: \"Info\", description: \"The Info state provides helpful messages that inform users about system status, feature updates, or changes—guiding them without urgency. It’s suitable for announcing new features, enhancements, or system changes, and works well for onboarding tips or contextual help. This variant uses aria-live='polite' and role='status' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1x63W880Trpx0GYiYQJhCt/72c09a93d6ec34a18bc15310927fe9ef/message-info.png\", }, { key: \"warning\", title: \"Warning\", description: \"The Warning state alerts users to potential issues that may require attention, helping prevent errors or misunderstandings. It’s commonly used to notify users of unsaved changes, actions with potential consequences, or upcoming limitations or expirations. This variant uses aria-live='assertive' and role='alert' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/50V1Ap7vVxPUWRbbKh0kx5/2fe4c203befa779087c8b23984d951b7/message-warning.png\", }, { key: \"attention\", title: \"Attention\", description: \"The Attention state demands immediate user focus, highlighting critical issues that require prompt action. It’s used to alert users to urgent problems like system errors or security breaches, or for time-sensitive notifications that significantly impact the user experience. This variant uses aria-live='assertive' and role='alert' for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5GXIEuluNJBlg8h4hDCfWH/ddeec560354ab06af73bf5c5d8749c12/message-attention.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"plain-message\", name: \"Plain message\", description: \"This example uses the Plain variant, suitable for both white and colored backgrounds. It’s ideal for presenting information passively, without demanding user attention. In this case, it’s used to deliver accessibility notes.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3akJJDd28DOIhQrYq6g4y2/456c02f32dc9c40d84d92371b7ddbead/message-composition-neutral.png\", }, { key: \"info-message\", name: \"Info message\", description: \"Use a page-level Info message to remind users to log in to the provided tools, ensuring the MUI Guidelines are shown instead of the default guidelines.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1ySFimf3eEleYLPKomWuem/34772aed4257db976f2ca8cb633d3d5b/message-composition-info.png\", }, ], }, related: { items: [ { name: \"Alert\", link: \"https://guides.muibook.com/alert\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7076
- }
7077
- ],
7078
- "exports": [
7079
- {
7080
- "kind": "js",
7081
- "name": "muiDocs",
7082
- "declaration": {
7083
- "name": "muiDocs",
7084
- "module": "src/components/mui-message/doc.ts"
7085
- }
7086
- }
7087
- ]
7088
- },
7089
- {
7090
- "kind": "javascript-module",
7091
- "path": "src/components/mui-message/index.ts",
7092
- "declarations": [
7093
- {
7094
- "kind": "class",
7095
- "description": "",
7096
- "name": "MuiMessage",
7097
- "members": [
7098
- {
7099
- "kind": "field",
7100
- "name": "contentSlotListener",
7101
- "type": {
7102
- "text": "(() => void) | null"
7103
- },
7104
- "privacy": "private",
7105
- "default": "null"
7106
- },
7107
- {
7108
- "kind": "method",
7109
- "name": "getMessageSize",
7110
- "privacy": "private",
7111
- "return": {
7112
- "type": {
7113
- "text": "MessageSize"
7114
- }
7115
- }
7116
- },
7117
- {
7118
- "kind": "method",
7119
- "name": "getInlineContentSize",
7120
- "privacy": "private",
7121
- "return": {
7122
- "type": {
7123
- "text": "string"
7124
- }
7125
- },
7126
- "parameters": [
7127
- {
7128
- "name": "size",
7129
- "type": {
7130
- "text": "MessageSize"
7131
- }
7132
- }
7133
- ]
7123
+ "kind": "method",
7124
+ "name": "getInlineContentSize",
7125
+ "privacy": "private",
7126
+ "return": {
7127
+ "type": {
7128
+ "text": "string"
7129
+ }
7130
+ },
7131
+ "parameters": [
7132
+ {
7133
+ "name": "size",
7134
+ "type": {
7135
+ "text": "MessageSize"
7136
+ }
7137
+ }
7138
+ ]
7134
7139
  },
7135
7140
  {
7136
7141
  "kind": "method",
@@ -7885,6 +7890,70 @@
7885
7890
  }
7886
7891
  ]
7887
7892
  },
7893
+ {
7894
+ "kind": "javascript-module",
7895
+ "path": "src/components/mui-progress/doc.ts",
7896
+ "declarations": [
7897
+ {
7898
+ "kind": "variable",
7899
+ "name": "muiDocs",
7900
+ "type": {
7901
+ "text": "MuiDocs"
7902
+ },
7903
+ "default": "{ Progress: { title: \"Progress\", description: \"A Progress Bar visually represents completion status by filling a bar based on a percentage value. It gives users a clear indication of progress for a given task or process.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2NPcL7tA0zGUWFLShr66fS/23d0050dce8c8379afc6deb8e351d049/Progress_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4161&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-progress--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-progress/index.ts\"], website: [\"https://muibook.com/#/progress\"], guides: [\"https://guides.muibook.com/progress\"], usage: { list: [ \"Show task progress – Indicate how much of a task or process has been completed.\", \"Display loading states – Represent the progress of a background operation, such as file uploads.\", \"Track step completion – Show progress in multi-step workflows or onboarding processes.\", \"Tune visual density and motion with component tokens such as --progress-radius, --progress-syncing-width, and --progress-pending-stripe-size.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/1iPll53Pmtgjh50qYwhsgY/908da9c51dd605895bd6306290fc6bd9/Progress_-_Anatomy.png\", list: [ \"Fill (Indicator) – The colored portion inside the track that represents the progress percentage.\", \"Track – The background of the progress bar, providing the visual boundary for progress.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"outcome-based-roadmap\", name: \"Outcome-Based Roadmap\", description: \"Example of an Outcome-Based Roadmap page showing objectives organised into Upcoming, Doing, and Finished columns. Progress bars indicate the completion status of each task, providing a clear view of overall progress.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3w5htPtfEz7QMCH9alVcwf/de35725fb4542b891bd695b900195291/Outcomes-Progress-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7904
+ }
7905
+ ],
7906
+ "exports": [
7907
+ {
7908
+ "kind": "js",
7909
+ "name": "muiDocs",
7910
+ "declaration": {
7911
+ "name": "muiDocs",
7912
+ "module": "src/components/mui-progress/doc.ts"
7913
+ }
7914
+ }
7915
+ ]
7916
+ },
7917
+ {
7918
+ "kind": "javascript-module",
7919
+ "path": "src/components/mui-progress/index.ts",
7920
+ "declarations": [
7921
+ {
7922
+ "kind": "class",
7923
+ "description": "",
7924
+ "name": "MuiProgress",
7925
+ "members": [
7926
+ {
7927
+ "kind": "method",
7928
+ "name": "render"
7929
+ }
7930
+ ],
7931
+ "attributes": [
7932
+ {
7933
+ "name": "progress"
7934
+ },
7935
+ {
7936
+ "name": "state"
7937
+ }
7938
+ ],
7939
+ "superclass": {
7940
+ "name": "HTMLElement"
7941
+ },
7942
+ "tagName": "mui-progress",
7943
+ "customElement": true
7944
+ }
7945
+ ],
7946
+ "exports": [
7947
+ {
7948
+ "kind": "custom-element-definition",
7949
+ "name": "mui-progress",
7950
+ "declaration": {
7951
+ "name": "MuiProgress",
7952
+ "module": "src/components/mui-progress/index.ts"
7953
+ }
7954
+ }
7955
+ ]
7956
+ },
7888
7957
  {
7889
7958
  "kind": "javascript-module",
7890
7959
  "path": "src/components/mui-prompt-message/doc.ts",
@@ -8193,6 +8262,30 @@
8193
8262
  }
8194
8263
  ]
8195
8264
  },
8265
+ {
8266
+ "kind": "javascript-module",
8267
+ "path": "src/components/mui-prompt-toggle/doc.ts",
8268
+ "declarations": [
8269
+ {
8270
+ "kind": "variable",
8271
+ "name": "muiDocs",
8272
+ "type": {
8273
+ "text": "MuiDocs"
8274
+ },
8275
+ "default": "{ PromptToggle: { title: \"Prompt Toggle\", description: \"Prompt Toggle switches between compact prompt actions and expanded active content inside Prompt.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-prompt-toggle/index.ts\"], website: [\"https://muibook.com/#/prompt-toggle\"], guides: [\"\"], usage: { list: [ \"Use inside mui-prompt when a compact action needs to expand into an active state, chip state, spinner, or close action.\", \"Use mode='icon' for the collapsed trigger state and mode='chip' for the expanded active state.\", \"Slot toggle content for the collapsed action and active or chip content for the expanded state.\", \"This pattern works well for context selectors, source pickers, tool toggles, or lightweight prompt-side dropdown triggers.\", \"Pair with Dropdown when the expanded state needs to reveal additional actions or menu choices.\", \"Use close or active controls when the expanded state should be dismissible without clearing the entire prompt.\", ], }, accessibility: { designerList: [ \"Keep the compact and expanded states visually related so users understand they represent the same prompt action.\", \"Use clear affordances for close or dismiss actions when expanded state can be exited independently.\", ], engineerList: [ \"Treat Prompt Toggle as a display-mode switcher; app state should still own the action, context, and dismissal logic.\", \"Ensure slotted toggle and active controls expose their own accessible labels when they are icon-only.\", ], }, anatomy: { image: \"\", list: [\"Collapsed toggle content\", \"Expanded active or chip content\", \"Optional close or spinner content\"], }, variants: { items: [ { key: \"icon\", title: \"Icon\", description: \"Collapsed state showing the prompt action trigger.\", image: \"\", }, { key: \"chip\", title: \"Chip\", description: \"Expanded or active state showing the selected context, dismiss action, or loading state.\", image: \"\", }, ], }, compositions: { description: \"Showcases prompt-side action patterns that transform from compact controls into richer active states.\", items: [ { key: \"context-toggle\", name: \"Prompt Context Toggle\", description: \"A compact prompt action that expands into an active chip with dismiss or close behavior.\", image: \"\", }, ], }, related: { items: [ { name: \"Prompt\", link: \"https://guides.muibook.com/prompt\" }, { name: \"Dropdown\", link: \"https://guides.muibook.com/dropdown\" }, { name: \"Button\", link: \"https://guides.muibook.com/button\" }, ], }, rules: [ { heading: \"Use for stateful prompt actions\", description: \"Prompt Toggle is for prompt actions that need a compact state and a richer active state in the same position.\", doContent: [ { description: \"Use it for context, source, or tool actions that start as a small trigger and then become an active chip, dropdown launcher, or dismissible action.\", image: \"\", }, ], dontContent: [ { description: \"Do not use it for static prompt actions that never change shape or state.\", image: \"\", }, ], }, ], behaviour: { list: [ \"mode='icon' shows toggle content and hides active, chip, close, and spinner content.\", \"mode='chip' shows active, chip, close, and spinner content and hides the compact toggle content.\", \"Prompt Toggle reacts to slotted content marked with slot names or context-* attributes so composed prompt actions can be shown or hidden consistently.\", ], }, writing: { list: [ \"Use short labels so the expanded chip or active state stays compact inside the prompt action rail.\", ], }, }, }"
8276
+ }
8277
+ ],
8278
+ "exports": [
8279
+ {
8280
+ "kind": "js",
8281
+ "name": "muiDocs",
8282
+ "declaration": {
8283
+ "name": "muiDocs",
8284
+ "module": "src/components/mui-prompt-toggle/doc.ts"
8285
+ }
8286
+ }
8287
+ ]
8288
+ },
8196
8289
  {
8197
8290
  "kind": "javascript-module",
8198
8291
  "path": "src/components/mui-prompt-toggle/index.ts",
@@ -8404,6 +8497,30 @@
8404
8497
  }
8405
8498
  ]
8406
8499
  },
8500
+ {
8501
+ "kind": "javascript-module",
8502
+ "path": "src/components/mui-radio-group/doc.ts",
8503
+ "declarations": [
8504
+ {
8505
+ "kind": "variable",
8506
+ "name": "muiDocs",
8507
+ "type": {
8508
+ "text": "MuiDocs"
8509
+ },
8510
+ "default": "{ RadioGroup: { title: \"Radio Group\", description: \"Radio Group manages a related set of radios so exactly one option can be selected, labelled, and submitted together.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-radio-group/index.ts\"], website: [\"https://muibook.com/#/radio-group\"], guides: [\"\"], usage: { list: [ \"Use mui-radio-group when a user must select exactly one option from a known set.\", \"Set label when the group needs a visible question or section prompt.\", \"Use hide-label when nearby context already explains the group but an accessible label is still required.\", \"Use optional when the user may leave the group unselected.\", \"Set value on the group to control which radio is selected across the entire set.\", \"Use one size on the group so all child radios stay visually aligned.\", ], }, accessibility: { designerList: [ \"Use a clear group label so the set reads as one question rather than isolated controls.\", \"Reserve radio groups for mutually exclusive choices. If users can choose more than one option, use Checkbox instead.\", ], engineerList: [ \"mui-radio-group provides radiogroup semantics and forwards a shared name to child radios.\", \"Use the group label or aria-labelledby so assistive technology can announce the question before the options.\", \"Emit and listen to the group change event when app state should update from the selected value.\", ], }, anatomy: { image: \"\", list: [\"Group label\", \"Optional indicator\", \"Radio set\"], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"A standard labelled radio group for one required choice.\", image: \"\", }, { key: \"optional\", title: \"Optional\", description: \"Use when the group is supplementary and can be left unselected.\", image: \"\", }, { key: \"hidden-label\", title: \"Hidden Label\", description: \"Use when surrounding layout already provides the visible context but the group still needs an accessible label.\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"settings-choice\", name: \"Settings Choice\", description: \"A group of mutually exclusive account or preference options controlled as one field.\", image: \"\", }, ], }, related: { items: [ { name: \"Radio\", link: \"https://guides.muibook.com/radio\" }, { name: \"Field\", link: \"https://guides.muibook.com/field\" }, { name: \"Checkbox\", link: \"https://guides.muibook.com/checkbox\" }, ], }, rules: [ { heading: \"Use for single selection\", description: \"Radio Group is for one choice from a fixed set, not for independent toggles.\", doContent: [ { description: \"Use a radio group for choices like plan, delivery speed, or notification preference where only one answer is valid.\", image: \"\", }, ], dontContent: [ { description: \"Do not use radio group when users may select multiple options or when each option is an independent setting.\", image: \"\", }, ], }, ], behaviour: { list: [ \"The group syncs a shared name and size to all child radios.\", \"When value is set on the group, the matching child radio becomes checked and other checked radios are cleared.\", \"When disabled is set on the group, all child radios are disabled together.\", ], }, writing: { list: [ \"Write the label as the question or decision the radios answer, and keep option text mutually exclusive and easy to compare.\", ], }, }, }"
8511
+ }
8512
+ ],
8513
+ "exports": [
8514
+ {
8515
+ "kind": "js",
8516
+ "name": "muiDocs",
8517
+ "declaration": {
8518
+ "name": "muiDocs",
8519
+ "module": "src/components/mui-radio-group/doc.ts"
8520
+ }
8521
+ }
8522
+ ]
8523
+ },
8407
8524
  {
8408
8525
  "kind": "javascript-module",
8409
8526
  "path": "src/components/mui-radio-group/index.ts",
@@ -9249,7 +9366,7 @@
9249
9366
  "type": {
9250
9367
  "text": "MuiDocs"
9251
9368
  },
9252
- "default": "{ Slat: { title: \"Slat\", description: \"Used to display structured data in a stacked format, typically on smaller viewports or within narrow-width layouts. Slats offer flexibility to surface key content and support custom layouts, stacking, or expansion of additional details.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2SHOSwTkf7V7Ql4OaobtMg/2cacf5103d02e00f67748578213f4433/Slat_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=957-8535&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-slat--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-slat/index.ts\"], website: [\"https://muibook.com/#/slat\"], guides: [\"https://guides.muibook.com/slat\"], usage: { list: [ \"Suitable for displaying data in narrow-width containers, such as side panels\", \"Use as a responsive alternative to tables on mobile or narrow viewports\", \"deal for presenting structured data in a compact, scannable format\", \"Supports stacking labels and values for easier readability\", \"Can include expandable sections to reveal more content on demand\", ], }, accessibility: { designerList: [\"mui-slat uses role='row'\", \"slotted children inherit role='cell'\"], engineerList: [\"mui-slat uses role='row'\", \"slotted children inherit role='cell'\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/0OzwVoT0EyK1sR1ufn3Vw/3cbee51beec1240ebeaaad485bff5970/Slat_-_Anatomy.png\", list: [ \"Header (Start): Slot for the header of slat items.\", \"Header (End): Optional area for secondary information.\", \"Row (Start): Primary content slot in a slat layout.\", \"Row (End): Secondary content slot in a slat layout.\", \"Accessory: Use for an icon or other suitable elements within the limited space available.\", \"Action: Enables the slat to become a clickable action.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"smart-card\", name: \"Smart Card\", description: \"The Smart Card composition uses slats to present structured information in a compact format. Slats help organise details such as titles, descriptions, and supporting actions, making the card easy to scan and interact with.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/74knMtil1vp9nHPPWXM1kr/54f8d978b0a82bca2c126e8ab800826f/SmartCard_-_Card_Composition.png\", }, { key: \"account-activity\", name: \"Account Activity\", description: \"In Account Activity, slats are used to display a list of recent actions. Each slat provides a clear breakdown of primary details with optional secondary information, ensuring activity is both easy to read and consistent across the interface.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5GVrfo3fcsVnX7yduux6kE/978c2c6635bf19ee7e67ccd26744ad33/Slat_-_Account_Composition.png\", }, ], }, related: { items: [ { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9369
+ "default": "{ Slat: { title: \"Slat\", description: \"Used to display structured data in a stacked format, typically on smaller viewports or within narrow-width layouts. Slats offer flexibility to surface key content and support custom layouts, stacking, or expansion of additional details.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2SHOSwTkf7V7Ql4OaobtMg/2cacf5103d02e00f67748578213f4433/Slat_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=957-8535&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-slat--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-slat/index.ts\"], website: [\"https://muibook.com/#/slat\"], guides: [\"https://guides.muibook.com/slat\"], usage: { list: [ \"Suitable for displaying data in narrow-width containers, such as side panels\", \"Use as a responsive alternative to tables on mobile or narrow viewports\", \"Ideal for presenting structured data in a compact, scannable format\", \"Supports stacking labels and values for easier readability\", \"Can include expandable sections to reveal more content on demand\", \"Use with SlatGroup when rows need to be presented as a related set, such as wallet activity, settings lists, grouped account records, or transaction histories.\", ], }, accessibility: { designerList: [\"mui-slat uses role='row'\", \"slotted children inherit role='cell'\"], engineerList: [\"mui-slat uses role='row'\", \"slotted children inherit role='cell'\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/0OzwVoT0EyK1sR1ufn3Vw/3cbee51beec1240ebeaaad485bff5970/Slat_-_Anatomy.png\", list: [ \"Header (Start): Slot for the header of slat items.\", \"Header (End): Optional area for secondary information.\", \"Row (Start): Primary content slot in a slat layout.\", \"Row (End): Secondary content slot in a slat layout.\", \"Accessory: Use for an icon or other suitable elements within the limited space available.\", \"Action: Enables the slat to become a clickable action.\", ], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"Use for structured row content where information is primarily read rather than clicked.\", image: \"\", }, { key: \"header\", title: \"Header\", description: \"Use for section headers or grouped row labels where the slat introduces the items that follow.\", image: \"\", }, { key: \"action\", title: \"Action\", description: \"Use when the whole slat acts as the trigger, such as opening details, drilling into settings, or selecting a transaction.\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"smart-card\", name: \"Smart Card\", description: \"The Smart Card composition uses slats to present structured information in a compact format. Slats help organise details such as titles, descriptions, and supporting actions, making the card easy to scan and interact with.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/74knMtil1vp9nHPPWXM1kr/54f8d978b0a82bca2c126e8ab800826f/SmartCard_-_Card_Composition.png\", }, { key: \"account-activity\", name: \"Account Activity\", description: \"In Account Activity, slats are used to display a list of recent actions. Each slat provides a clear breakdown of primary details with optional secondary information, ensuring activity is both easy to read and consistent across the interface.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5GVrfo3fcsVnX7yduux6kE/978c2c6635bf19ee7e67ccd26744ad33/Slat_-_Account_Composition.png\", }, ], }, related: { items: [ { name: \"Slat Group\", link: \"https://guides.muibook.com/slat\", }, { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"Choose the right slat variant\", description: \"Use the slat variant that matches the row’s job so grouped lists stay clear and predictable.\", doContent: [ { description: \"Use a header slat to introduce a grouped set, a default slat for readable content, and an action slat when the whole row should be interactive.\", image: \"\", }, ], dontContent: [ { description: \"Avoid making every slat interactive if the rows are only there to present information.\", image: \"\", }, ], }, ], behaviour: { list: [ \"Use the default variant when the slat is primarily informational, and use the action variant when the entire row should be interactive.\", \"Header slats work well as structural labels before a grouped run of related slats.\", ], }, writing: { list: [ \"Keep primary row content concise and scannable so labels, values, and actions remain easy to parse at a glance.\", ], }, }, SlatGroup: { title: \"Slat Group\", description: \"Slat Group arranges multiple slats into a related set so they can be presented as one grouped list or feed.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com/?path=/docs/content-slat--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-slat/index.ts\"], website: [\"https://muibook.com/#/slat\"], guides: [\"https://guides.muibook.com/slat\"], usage: { list: [ \"Use to group related slats into one compact list or section.\", \"Works well for wallet and account activity feeds where a header slat is followed by action or detail slats.\", \"A strong pattern is a header slat followed by grouped item slats for balances, recent activity, account options, or grouped settings.\", \"Use inside Card when grouped rows need a shared container or section framing.\", \"Pair with Rule between header and item sets when additional separation is needed.\", \"Use Slat for the individual row content and SlatGroup for the grouped structure.\", ], }, accessibility: { designerList: [\"Maintain a consistent row order so grouped content is easy to scan.\"], engineerList: [\"Use SlatGroup as structural grouping; individual mui-slat rows continue to own their row/cell semantics.\"], }, anatomy: { image: \"\", list: [\"Grouped slat container\", \"Optional header slat\", \"Related slat items\"], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"A grouped collection of related slats.\", image: \"\", }, ], }, compositions: { description: \"Showcases grouped slat patterns in real-world structures.\", items: [ { key: \"wallet-activity\", name: \"Wallet Activity\", description: \"A header slat followed by grouped activity rows, useful for transactions, balances, and recent account events.\", image: \"\", }, ], }, related: { items: [ { name: \"Slat\", link: \"https://guides.muibook.com/slat\", }, { name: \"Rule\", link: \"https://guides.muibook.com/rule\", }, { name: \"Card\", link: \"https://guides.muibook.com/card\", }, ], }, rules: [ { heading: \"Group meaningfully\", description: \"Use SlatGroup when multiple slats belong to the same topic, task, or account context and should be read together.\", doContent: [ { description: \"Group related rows such as a wallet summary, account activity, or a list of linked settings under one clear header or section label.\", image: \"\", }, ], dontContent: [ { description: \"Avoid using SlatGroup as a generic spacing wrapper when the rows do not share a clear relationship.\", image: \"\", }, ], }, ], behaviour: { list: [ \"SlatGroup provides structure for a related set while each slat continues to handle its own content and interaction behaviour.\", ], }, writing: { list: [ \"Use concise section labels so grouped rows are easy to scan and the relationship between items is obvious.\", ], }, }, }"
9253
9370
  }
9254
9371
  ],
9255
9372
  "exports": [
@@ -11023,71 +11140,6 @@
11023
11140
  }
11024
11141
  ]
11025
11142
  },
11026
- {
11027
- "kind": "javascript-module",
11028
- "path": "src/components/mui-slat/group/index.ts",
11029
- "declarations": [
11030
- {
11031
- "kind": "class",
11032
- "description": "",
11033
- "name": "MuiSlatGroup",
11034
- "members": [
11035
- {
11036
- "kind": "field",
11037
- "name": "usage",
11038
- "type": {
11039
- "text": "string"
11040
- },
11041
- "privacy": "private",
11042
- "default": "\"\""
11043
- },
11044
- {
11045
- "kind": "field",
11046
- "name": "mutationObserver",
11047
- "type": {
11048
- "text": "MutationObserver | null"
11049
- },
11050
- "privacy": "private",
11051
- "default": "null"
11052
- },
11053
- {
11054
- "kind": "method",
11055
- "name": "observeSlotChanges",
11056
- "privacy": "private"
11057
- },
11058
- {
11059
- "kind": "method",
11060
- "name": "setLastInGroup",
11061
- "privacy": "private"
11062
- },
11063
- {
11064
- "kind": "method",
11065
- "name": "render"
11066
- }
11067
- ],
11068
- "attributes": [
11069
- {
11070
- "name": "usage"
11071
- }
11072
- ],
11073
- "superclass": {
11074
- "name": "HTMLElement"
11075
- },
11076
- "tagName": "mui-slat-group",
11077
- "customElement": true
11078
- }
11079
- ],
11080
- "exports": [
11081
- {
11082
- "kind": "custom-element-definition",
11083
- "name": "mui-slat-group",
11084
- "declaration": {
11085
- "name": "MuiSlatGroup",
11086
- "module": "src/components/mui-slat/group/index.ts"
11087
- }
11088
- }
11089
- ]
11090
- },
11091
11143
  {
11092
11144
  "kind": "javascript-module",
11093
11145
  "path": "src/components/mui-slat/slat/index.ts",
@@ -11159,12 +11211,77 @@
11159
11211
  },
11160
11212
  {
11161
11213
  "kind": "javascript-module",
11162
- "path": "src/components/mui-stack/hstack/index.ts",
11214
+ "path": "src/components/mui-slat/group/index.ts",
11163
11215
  "declarations": [
11164
11216
  {
11165
11217
  "kind": "class",
11166
11218
  "description": "",
11167
- "name": "MuiHStack",
11219
+ "name": "MuiSlatGroup",
11220
+ "members": [
11221
+ {
11222
+ "kind": "field",
11223
+ "name": "usage",
11224
+ "type": {
11225
+ "text": "string"
11226
+ },
11227
+ "privacy": "private",
11228
+ "default": "\"\""
11229
+ },
11230
+ {
11231
+ "kind": "field",
11232
+ "name": "mutationObserver",
11233
+ "type": {
11234
+ "text": "MutationObserver | null"
11235
+ },
11236
+ "privacy": "private",
11237
+ "default": "null"
11238
+ },
11239
+ {
11240
+ "kind": "method",
11241
+ "name": "observeSlotChanges",
11242
+ "privacy": "private"
11243
+ },
11244
+ {
11245
+ "kind": "method",
11246
+ "name": "setLastInGroup",
11247
+ "privacy": "private"
11248
+ },
11249
+ {
11250
+ "kind": "method",
11251
+ "name": "render"
11252
+ }
11253
+ ],
11254
+ "attributes": [
11255
+ {
11256
+ "name": "usage"
11257
+ }
11258
+ ],
11259
+ "superclass": {
11260
+ "name": "HTMLElement"
11261
+ },
11262
+ "tagName": "mui-slat-group",
11263
+ "customElement": true
11264
+ }
11265
+ ],
11266
+ "exports": [
11267
+ {
11268
+ "kind": "custom-element-definition",
11269
+ "name": "mui-slat-group",
11270
+ "declaration": {
11271
+ "name": "MuiSlatGroup",
11272
+ "module": "src/components/mui-slat/group/index.ts"
11273
+ }
11274
+ }
11275
+ ]
11276
+ },
11277
+ {
11278
+ "kind": "javascript-module",
11279
+ "path": "src/components/mui-stack/vstack/index.ts",
11280
+ "declarations": [
11281
+ {
11282
+ "kind": "class",
11283
+ "description": "",
11284
+ "name": "MuiVStack",
11168
11285
  "members": [
11169
11286
  {
11170
11287
  "kind": "field",
@@ -11182,7 +11299,7 @@
11182
11299
  "text": "string"
11183
11300
  },
11184
11301
  "privacy": "private",
11185
- "default": "`flex-start`"
11302
+ "default": "`normal`"
11186
11303
  },
11187
11304
  {
11188
11305
  "kind": "field",
@@ -11191,7 +11308,7 @@
11191
11308
  "text": "string"
11192
11309
  },
11193
11310
  "privacy": "private",
11194
- "default": "`flex-start`"
11311
+ "default": "`normal`"
11195
11312
  },
11196
11313
  {
11197
11314
  "kind": "field",
@@ -11200,7 +11317,12 @@
11200
11317
  "text": "string"
11201
11318
  },
11202
11319
  "privacy": "private",
11203
- "default": "` :host { display: block; } slot { display: flex; gap: var(--space); align-items: var(--alignY); justify-content: var(--alignX); } `"
11320
+ "default": "` :host { display: block; height: var(--stack-height, auto); width: var(--stack-width, auto); } :host([fill]) { --stack-height: 100%; --stack-width: 100%; } :host([viewport]) { --stack-height: 100dvh; } slot { display: grid; box-sizing: border-box; height: 100%; width: 100%; gap: var(--space); justify-items: var(--alignX); align-items: var(--alignY); } `"
11321
+ },
11322
+ {
11323
+ "kind": "method",
11324
+ "name": "syncDimensions",
11325
+ "privacy": "private"
11204
11326
  },
11205
11327
  {
11206
11328
  "kind": "method",
@@ -11216,17 +11338,29 @@
11216
11338
  {
11217
11339
  "name": "space"
11218
11340
  },
11341
+ {
11342
+ "name": "alignx"
11343
+ },
11219
11344
  {
11220
11345
  "name": "aligny"
11221
11346
  },
11222
11347
  {
11223
- "name": "alignx"
11348
+ "name": "height"
11349
+ },
11350
+ {
11351
+ "name": "width"
11352
+ },
11353
+ {
11354
+ "name": "viewport"
11355
+ },
11356
+ {
11357
+ "name": "fill"
11224
11358
  }
11225
11359
  ],
11226
11360
  "superclass": {
11227
11361
  "name": "HTMLElement"
11228
11362
  },
11229
- "tagName": "mui-h-stack",
11363
+ "tagName": "mui-v-stack",
11230
11364
  "customElement": true,
11231
11365
  "cssParts": [
11232
11366
  {
@@ -11383,22 +11517,22 @@
11383
11517
  "exports": [
11384
11518
  {
11385
11519
  "kind": "custom-element-definition",
11386
- "name": "mui-h-stack",
11520
+ "name": "mui-v-stack",
11387
11521
  "declaration": {
11388
- "name": "MuiHStack",
11389
- "module": "src/components/mui-stack/hstack/index.ts"
11522
+ "name": "MuiVStack",
11523
+ "module": "src/components/mui-stack/vstack/index.ts"
11390
11524
  }
11391
11525
  }
11392
11526
  ]
11393
11527
  },
11394
11528
  {
11395
11529
  "kind": "javascript-module",
11396
- "path": "src/components/mui-stack/vstack/index.ts",
11530
+ "path": "src/components/mui-stack/hstack/index.ts",
11397
11531
  "declarations": [
11398
11532
  {
11399
11533
  "kind": "class",
11400
11534
  "description": "",
11401
- "name": "MuiVStack",
11535
+ "name": "MuiHStack",
11402
11536
  "members": [
11403
11537
  {
11404
11538
  "kind": "field",
@@ -11416,7 +11550,7 @@
11416
11550
  "text": "string"
11417
11551
  },
11418
11552
  "privacy": "private",
11419
- "default": "`normal`"
11553
+ "default": "`flex-start`"
11420
11554
  },
11421
11555
  {
11422
11556
  "kind": "field",
@@ -11425,7 +11559,7 @@
11425
11559
  "text": "string"
11426
11560
  },
11427
11561
  "privacy": "private",
11428
- "default": "`normal`"
11562
+ "default": "`flex-start`"
11429
11563
  },
11430
11564
  {
11431
11565
  "kind": "field",
@@ -11434,7 +11568,12 @@
11434
11568
  "text": "string"
11435
11569
  },
11436
11570
  "privacy": "private",
11437
- "default": "` :host { display: block; } slot { display: grid; gap: var(--space); justify-items: var(--alignX); align-items: var(--alignY); } `"
11571
+ "default": "` :host { display: block; height: var(--stack-height, auto); width: var(--stack-width, auto); } :host([fill]) { --stack-height: 100%; --stack-width: 100%; } :host([viewport]) { --stack-height: 100dvh; } slot { display: flex; box-sizing: border-box; height: 100%; width: 100%; gap: var(--space); align-items: var(--alignY); justify-content: var(--alignX); } `"
11572
+ },
11573
+ {
11574
+ "kind": "method",
11575
+ "name": "syncDimensions",
11576
+ "privacy": "private"
11438
11577
  },
11439
11578
  {
11440
11579
  "kind": "method",
@@ -11450,17 +11589,29 @@
11450
11589
  {
11451
11590
  "name": "space"
11452
11591
  },
11592
+ {
11593
+ "name": "aligny"
11594
+ },
11453
11595
  {
11454
11596
  "name": "alignx"
11455
11597
  },
11456
11598
  {
11457
- "name": "aligny"
11599
+ "name": "height"
11600
+ },
11601
+ {
11602
+ "name": "width"
11603
+ },
11604
+ {
11605
+ "name": "viewport"
11606
+ },
11607
+ {
11608
+ "name": "fill"
11458
11609
  }
11459
11610
  ],
11460
11611
  "superclass": {
11461
11612
  "name": "HTMLElement"
11462
11613
  },
11463
- "tagName": "mui-v-stack",
11614
+ "tagName": "mui-h-stack",
11464
11615
  "customElement": true,
11465
11616
  "cssParts": [
11466
11617
  {
@@ -11617,22 +11768,22 @@
11617
11768
  "exports": [
11618
11769
  {
11619
11770
  "kind": "custom-element-definition",
11620
- "name": "mui-v-stack",
11771
+ "name": "mui-h-stack",
11621
11772
  "declaration": {
11622
- "name": "MuiVStack",
11623
- "module": "src/components/mui-stack/vstack/index.ts"
11773
+ "name": "MuiHStack",
11774
+ "module": "src/components/mui-stack/hstack/index.ts"
11624
11775
  }
11625
11776
  }
11626
11777
  ]
11627
11778
  },
11628
11779
  {
11629
11780
  "kind": "javascript-module",
11630
- "path": "src/components/mui-table/cell/index.ts",
11781
+ "path": "src/components/mui-stepper/step/index.ts",
11631
11782
  "declarations": [
11632
11783
  {
11633
11784
  "kind": "class",
11634
11785
  "description": "",
11635
- "name": "MuiCell",
11786
+ "name": "MuiStep",
11636
11787
  "members": [
11637
11788
  {
11638
11789
  "kind": "method",
@@ -11641,23 +11792,38 @@
11641
11792
  ],
11642
11793
  "attributes": [
11643
11794
  {
11644
- "name": "align-y"
11795
+ "name": "state"
11796
+ },
11797
+ {
11798
+ "name": "resolved-state"
11799
+ },
11800
+ {
11801
+ "name": "title"
11802
+ },
11803
+ {
11804
+ "name": "direction"
11805
+ },
11806
+ {
11807
+ "name": "hide-icon"
11808
+ },
11809
+ {
11810
+ "name": "size"
11645
11811
  }
11646
11812
  ],
11647
11813
  "superclass": {
11648
11814
  "name": "HTMLElement"
11649
11815
  },
11650
- "tagName": "mui-cell",
11816
+ "tagName": "mui-step",
11651
11817
  "customElement": true
11652
11818
  }
11653
11819
  ],
11654
11820
  "exports": [
11655
11821
  {
11656
11822
  "kind": "custom-element-definition",
11657
- "name": "mui-cell",
11823
+ "name": "mui-step",
11658
11824
  "declaration": {
11659
- "name": "MuiCell",
11660
- "module": "src/components/mui-table/cell/index.ts"
11825
+ "name": "MuiStep",
11826
+ "module": "src/components/mui-stepper/step/index.ts"
11661
11827
  }
11662
11828
  }
11663
11829
  ]
@@ -11837,12 +12003,12 @@
11837
12003
  },
11838
12004
  {
11839
12005
  "kind": "javascript-module",
11840
- "path": "src/components/mui-stepper/step/index.ts",
12006
+ "path": "src/components/mui-table/cell/index.ts",
11841
12007
  "declarations": [
11842
12008
  {
11843
12009
  "kind": "class",
11844
12010
  "description": "",
11845
- "name": "MuiStep",
12011
+ "name": "MuiCell",
11846
12012
  "members": [
11847
12013
  {
11848
12014
  "kind": "method",
@@ -11851,38 +12017,49 @@
11851
12017
  ],
11852
12018
  "attributes": [
11853
12019
  {
11854
- "name": "state"
11855
- },
11856
- {
11857
- "name": "resolved-state"
11858
- },
11859
- {
11860
- "name": "title"
11861
- },
11862
- {
11863
- "name": "direction"
11864
- },
11865
- {
11866
- "name": "hide-icon"
11867
- },
11868
- {
11869
- "name": "size"
12020
+ "name": "align-y"
11870
12021
  }
11871
12022
  ],
11872
12023
  "superclass": {
11873
12024
  "name": "HTMLElement"
11874
12025
  },
11875
- "tagName": "mui-step",
12026
+ "tagName": "mui-cell",
11876
12027
  "customElement": true
11877
12028
  }
11878
12029
  ],
11879
12030
  "exports": [
11880
12031
  {
11881
12032
  "kind": "custom-element-definition",
11882
- "name": "mui-step",
12033
+ "name": "mui-cell",
11883
12034
  "declaration": {
11884
- "name": "MuiStep",
11885
- "module": "src/components/mui-stepper/step/index.ts"
12035
+ "name": "MuiCell",
12036
+ "module": "src/components/mui-table/cell/index.ts"
12037
+ }
12038
+ }
12039
+ ]
12040
+ },
12041
+ {
12042
+ "kind": "javascript-module",
12043
+ "path": "src/components/mui-table/row-group/index.ts",
12044
+ "declarations": [
12045
+ {
12046
+ "kind": "class",
12047
+ "description": "",
12048
+ "name": "MuiRowGroup",
12049
+ "superclass": {
12050
+ "name": "HTMLElement"
12051
+ },
12052
+ "tagName": "mui-row-group",
12053
+ "customElement": true
12054
+ }
12055
+ ],
12056
+ "exports": [
12057
+ {
12058
+ "kind": "custom-element-definition",
12059
+ "name": "mui-row-group",
12060
+ "declaration": {
12061
+ "name": "MuiRowGroup",
12062
+ "module": "src/components/mui-table/row-group/index.ts"
11886
12063
  }
11887
12064
  }
11888
12065
  ]
@@ -11966,229 +12143,248 @@
11966
12143
  },
11967
12144
  {
11968
12145
  "kind": "javascript-module",
11969
- "path": "src/components/mui-table/row-group/index.ts",
12146
+ "path": "src/components/mui-table/table/index.ts",
11970
12147
  "declarations": [
11971
12148
  {
11972
12149
  "kind": "class",
11973
12150
  "description": "",
11974
- "name": "MuiRowGroup",
12151
+ "name": "MuiTable",
11975
12152
  "superclass": {
11976
12153
  "name": "HTMLElement"
11977
12154
  },
11978
- "tagName": "mui-row-group",
12155
+ "tagName": "mui-table",
11979
12156
  "customElement": true
11980
12157
  }
11981
12158
  ],
11982
12159
  "exports": [
11983
12160
  {
11984
12161
  "kind": "custom-element-definition",
11985
- "name": "mui-row-group",
12162
+ "name": "mui-table",
11986
12163
  "declaration": {
11987
- "name": "MuiRowGroup",
11988
- "module": "src/components/mui-table/row-group/index.ts"
12164
+ "name": "MuiTable",
12165
+ "module": "src/components/mui-table/table/index.ts"
11989
12166
  }
11990
12167
  }
11991
12168
  ]
11992
12169
  },
11993
12170
  {
11994
12171
  "kind": "javascript-module",
11995
- "path": "src/components/mui-tabs/item/index.ts",
12172
+ "path": "src/components/mui-tabs/controller/index.ts",
11996
12173
  "declarations": [
11997
12174
  {
11998
12175
  "kind": "class",
11999
12176
  "description": "",
12000
- "name": "MuiTabItem",
12177
+ "name": "MuiTabController",
12001
12178
  "members": [
12002
- {
12003
- "kind": "field",
12004
- "name": "beforeSlot",
12005
- "type": {
12006
- "text": "HTMLSlotElement | null | undefined"
12007
- },
12008
- "privacy": "private"
12009
- },
12010
- {
12011
- "kind": "field",
12012
- "name": "afterSlot",
12013
- "type": {
12014
- "text": "HTMLSlotElement | null | undefined"
12015
- },
12016
- "privacy": "private"
12017
- },
12018
- {
12019
- "kind": "method",
12020
- "name": "getIconSizeFromTabSize",
12021
- "privacy": "private"
12022
- },
12023
12179
  {
12024
12180
  "kind": "method",
12025
- "name": "getBadgeSizeFromTabSize",
12026
- "privacy": "private"
12181
+ "name": "initializePanels",
12182
+ "privacy": "private",
12183
+ "return": {
12184
+ "type": {
12185
+ "text": "void"
12186
+ }
12187
+ }
12027
12188
  },
12028
12189
  {
12029
12190
  "kind": "method",
12030
- "name": "hasAssignedContent",
12031
- "privacy": "private",
12191
+ "name": "handleTabChange",
12032
12192
  "return": {
12033
12193
  "type": {
12034
- "text": "boolean"
12194
+ "text": "void"
12035
12195
  }
12036
12196
  },
12037
12197
  "parameters": [
12038
12198
  {
12039
- "name": "slot",
12199
+ "name": "event",
12040
12200
  "type": {
12041
- "text": "HTMLSlotElement | null | undefined"
12201
+ "text": "Event"
12042
12202
  }
12043
12203
  }
12044
12204
  ]
12045
12205
  },
12046
12206
  {
12047
12207
  "kind": "method",
12048
- "name": "syncSlottedAffordances",
12049
- "privacy": "private",
12208
+ "name": "updatePanels",
12209
+ "return": {
12210
+ "type": {
12211
+ "text": "void"
12212
+ }
12213
+ },
12050
12214
  "parameters": [
12051
12215
  {
12052
- "name": "slot",
12216
+ "name": "activeId",
12053
12217
  "type": {
12054
- "text": "HTMLSlotElement | null | undefined"
12218
+ "text": "string"
12055
12219
  }
12056
12220
  }
12057
12221
  ]
12058
- },
12059
- {
12060
- "kind": "method",
12061
- "name": "updateSlotState",
12062
- "privacy": "private"
12063
- },
12064
- {
12065
- "kind": "method",
12066
- "name": "updateActiveState"
12067
- }
12068
- ],
12069
- "attributes": [
12070
- {
12071
- "name": "active"
12072
- },
12073
- {
12074
- "name": "size"
12075
- },
12076
- {
12077
- "name": "variant"
12078
12222
  }
12079
12223
  ],
12080
12224
  "superclass": {
12081
12225
  "name": "HTMLElement"
12082
12226
  },
12083
- "tagName": "mui-tab-item",
12227
+ "tagName": "mui-tab-controller",
12084
12228
  "customElement": true
12085
12229
  }
12086
12230
  ],
12087
12231
  "exports": [
12088
12232
  {
12089
12233
  "kind": "custom-element-definition",
12090
- "name": "mui-tab-item",
12234
+ "name": "mui-tab-controller",
12091
12235
  "declaration": {
12092
- "name": "MuiTabItem",
12093
- "module": "src/components/mui-tabs/item/index.ts"
12236
+ "name": "MuiTabController",
12237
+ "module": "src/components/mui-tabs/controller/index.ts"
12094
12238
  }
12095
12239
  }
12096
12240
  ]
12097
12241
  },
12098
12242
  {
12099
12243
  "kind": "javascript-module",
12100
- "path": "src/components/mui-table/table/index.ts",
12244
+ "path": "src/components/mui-tabs/panel/index.ts",
12101
12245
  "declarations": [
12102
12246
  {
12103
12247
  "kind": "class",
12104
12248
  "description": "",
12105
- "name": "MuiTable",
12249
+ "name": "MuiTabPanel",
12250
+ "members": [
12251
+ {
12252
+ "kind": "field",
12253
+ "name": "item",
12254
+ "type": {
12255
+ "text": "string | null"
12256
+ }
12257
+ },
12258
+ {
12259
+ "kind": "field",
12260
+ "name": "innerHTML",
12261
+ "default": "` <style> :host { display: block; } :host([hidden]) { display: none !important; } .inner { padding: var(--tab-panel-padding, 0); } </style> <div class=\"inner\"> <slot></slot> </div> `"
12262
+ }
12263
+ ],
12264
+ "attributes": [
12265
+ {
12266
+ "name": "item"
12267
+ }
12268
+ ],
12106
12269
  "superclass": {
12107
12270
  "name": "HTMLElement"
12108
12271
  },
12109
- "tagName": "mui-table",
12272
+ "tagName": "mui-tab-panel",
12110
12273
  "customElement": true
12111
12274
  }
12112
12275
  ],
12113
12276
  "exports": [
12114
12277
  {
12115
12278
  "kind": "custom-element-definition",
12116
- "name": "mui-table",
12279
+ "name": "mui-tab-panel",
12117
12280
  "declaration": {
12118
- "name": "MuiTable",
12119
- "module": "src/components/mui-table/table/index.ts"
12281
+ "name": "MuiTabPanel",
12282
+ "module": "src/components/mui-tabs/panel/index.ts"
12120
12283
  }
12121
12284
  }
12122
12285
  ]
12123
12286
  },
12124
12287
  {
12125
12288
  "kind": "javascript-module",
12126
- "path": "src/components/mui-tabs/controller/index.ts",
12289
+ "path": "src/components/mui-tabs/item/index.ts",
12127
12290
  "declarations": [
12128
12291
  {
12129
12292
  "kind": "class",
12130
12293
  "description": "",
12131
- "name": "MuiTabController",
12294
+ "name": "MuiTabItem",
12132
12295
  "members": [
12296
+ {
12297
+ "kind": "field",
12298
+ "name": "beforeSlot",
12299
+ "type": {
12300
+ "text": "HTMLSlotElement | null | undefined"
12301
+ },
12302
+ "privacy": "private"
12303
+ },
12304
+ {
12305
+ "kind": "field",
12306
+ "name": "afterSlot",
12307
+ "type": {
12308
+ "text": "HTMLSlotElement | null | undefined"
12309
+ },
12310
+ "privacy": "private"
12311
+ },
12133
12312
  {
12134
12313
  "kind": "method",
12135
- "name": "initializePanels",
12136
- "privacy": "private",
12137
- "return": {
12138
- "type": {
12139
- "text": "void"
12140
- }
12141
- }
12314
+ "name": "getIconSizeFromTabSize",
12315
+ "privacy": "private"
12142
12316
  },
12143
12317
  {
12144
12318
  "kind": "method",
12145
- "name": "handleTabChange",
12319
+ "name": "getBadgeSizeFromTabSize",
12320
+ "privacy": "private"
12321
+ },
12322
+ {
12323
+ "kind": "method",
12324
+ "name": "hasAssignedContent",
12325
+ "privacy": "private",
12146
12326
  "return": {
12147
12327
  "type": {
12148
- "text": "void"
12328
+ "text": "boolean"
12149
12329
  }
12150
12330
  },
12151
12331
  "parameters": [
12152
12332
  {
12153
- "name": "event",
12333
+ "name": "slot",
12154
12334
  "type": {
12155
- "text": "Event"
12335
+ "text": "HTMLSlotElement | null | undefined"
12156
12336
  }
12157
12337
  }
12158
12338
  ]
12159
12339
  },
12160
12340
  {
12161
12341
  "kind": "method",
12162
- "name": "updatePanels",
12163
- "return": {
12164
- "type": {
12165
- "text": "void"
12166
- }
12167
- },
12342
+ "name": "syncSlottedAffordances",
12343
+ "privacy": "private",
12168
12344
  "parameters": [
12169
12345
  {
12170
- "name": "activeId",
12346
+ "name": "slot",
12171
12347
  "type": {
12172
- "text": "string"
12348
+ "text": "HTMLSlotElement | null | undefined"
12173
12349
  }
12174
12350
  }
12175
12351
  ]
12352
+ },
12353
+ {
12354
+ "kind": "method",
12355
+ "name": "updateSlotState",
12356
+ "privacy": "private"
12357
+ },
12358
+ {
12359
+ "kind": "method",
12360
+ "name": "updateActiveState"
12361
+ }
12362
+ ],
12363
+ "attributes": [
12364
+ {
12365
+ "name": "active"
12366
+ },
12367
+ {
12368
+ "name": "size"
12369
+ },
12370
+ {
12371
+ "name": "variant"
12176
12372
  }
12177
12373
  ],
12178
12374
  "superclass": {
12179
12375
  "name": "HTMLElement"
12180
12376
  },
12181
- "tagName": "mui-tab-controller",
12377
+ "tagName": "mui-tab-item",
12182
12378
  "customElement": true
12183
12379
  }
12184
12380
  ],
12185
12381
  "exports": [
12186
12382
  {
12187
12383
  "kind": "custom-element-definition",
12188
- "name": "mui-tab-controller",
12384
+ "name": "mui-tab-item",
12189
12385
  "declaration": {
12190
- "name": "MuiTabController",
12191
- "module": "src/components/mui-tabs/controller/index.ts"
12386
+ "name": "MuiTabItem",
12387
+ "module": "src/components/mui-tabs/item/index.ts"
12192
12388
  }
12193
12389
  }
12194
12390
  ]
@@ -12352,51 +12548,6 @@
12352
12548
  }
12353
12549
  }
12354
12550
  ]
12355
- },
12356
- {
12357
- "kind": "javascript-module",
12358
- "path": "src/components/mui-tabs/panel/index.ts",
12359
- "declarations": [
12360
- {
12361
- "kind": "class",
12362
- "description": "",
12363
- "name": "MuiTabPanel",
12364
- "members": [
12365
- {
12366
- "kind": "field",
12367
- "name": "item",
12368
- "type": {
12369
- "text": "string | null"
12370
- }
12371
- },
12372
- {
12373
- "kind": "field",
12374
- "name": "innerHTML",
12375
- "default": "` <style> :host { display: block; } :host([hidden]) { display: none !important; } .inner { padding: var(--tab-panel-padding, 0); } </style> <div class=\"inner\"> <slot></slot> </div> `"
12376
- }
12377
- ],
12378
- "attributes": [
12379
- {
12380
- "name": "item"
12381
- }
12382
- ],
12383
- "superclass": {
12384
- "name": "HTMLElement"
12385
- },
12386
- "tagName": "mui-tab-panel",
12387
- "customElement": true
12388
- }
12389
- ],
12390
- "exports": [
12391
- {
12392
- "kind": "custom-element-definition",
12393
- "name": "mui-tab-panel",
12394
- "declaration": {
12395
- "name": "MuiTabPanel",
12396
- "module": "src/components/mui-tabs/panel/index.ts"
12397
- }
12398
- }
12399
- ]
12400
12551
  }
12401
12552
  ]
12402
12553
  }