@muibook/components 19.5.0 → 19.5.1

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.
@@ -218,208 +218,6 @@
218
218
  }
219
219
  ]
220
220
  },
221
- {
222
- "kind": "javascript-module",
223
- "path": "src/components/mui-avatar/doc.ts",
224
- "declarations": [
225
- {
226
- "kind": "variable",
227
- "name": "muiDocs",
228
- "type": {
229
- "text": "MuiDocs"
230
- },
231
- "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.\", ], }, }, }"
232
- }
233
- ],
234
- "exports": [
235
- {
236
- "kind": "js",
237
- "name": "muiDocs",
238
- "declaration": {
239
- "name": "muiDocs",
240
- "module": "src/components/mui-avatar/doc.ts"
241
- }
242
- }
243
- ]
244
- },
245
- {
246
- "kind": "javascript-module",
247
- "path": "src/components/mui-avatar/index.ts",
248
- "declarations": [
249
- {
250
- "kind": "class",
251
- "description": "Displays an image, initials, or slotted icon for a represented person or entity.",
252
- "name": "MuiAvatar",
253
- "attributes": [
254
- {
255
- "name": "label",
256
- "type": {
257
- "text": "string"
258
- },
259
- "description": "Accessible name and initials source when no image or slotted content is present."
260
- },
261
- {
262
- "name": "image",
263
- "type": {
264
- "text": "string"
265
- },
266
- "description": "Image URL used when no slotted content is supplied."
267
- },
268
- {
269
- "name": "size",
270
- "type": {
271
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
272
- },
273
- "default": "medium",
274
- "description": "Avatar dimensions. Defaults map `xx-small` to 24px and `x-small` to 32px."
275
- },
276
- {
277
- "name": "background",
278
- "type": {
279
- "text": "string"
280
- },
281
- "default": "neutral",
282
- "description": "Named semantic or profile color background."
283
- },
284
- {
285
- "name": "background-color",
286
- "type": {
287
- "text": "string"
288
- },
289
- "description": "Custom CSS color overriding the named background treatment."
290
- }
291
- ],
292
- "superclass": {
293
- "name": "HTMLElement"
294
- },
295
- "tagName": "mui-avatar",
296
- "customElement": true,
297
- "slots": [
298
- {
299
- "name": "",
300
- "description": "Optional icon or custom visible avatar content."
301
- }
302
- ],
303
- "events": [],
304
- "cssProperties": [
305
- {
306
- "name": "--avatar-xx-small",
307
- "description": "Dimension for `size=\"xx-small\"`; defaults to 24px."
308
- },
309
- {
310
- "name": "--avatar-x-small",
311
- "description": "Dimension for `size=\"x-small\"`; defaults to 32px."
312
- },
313
- {
314
- "name": "--avatar-background-override",
315
- "description": "Overrides the resolved avatar background color."
316
- }
317
- ]
318
- }
319
- ],
320
- "exports": [
321
- {
322
- "kind": "custom-element-definition",
323
- "name": "mui-avatar",
324
- "declaration": {
325
- "name": "MuiAvatar",
326
- "module": "src/components/mui-avatar/index.ts"
327
- }
328
- }
329
- ]
330
- },
331
- {
332
- "kind": "javascript-module",
333
- "path": "src/components/mui-badge/doc.ts",
334
- "declarations": [
335
- {
336
- "kind": "variable",
337
- "name": "muiDocs",
338
- "type": {
339
- "text": "MuiDocs"
340
- },
341
- "default": "{ Badge: { title: \"Badge\", description: \"Badges are non-interactive and indicate counts or statuses.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/3uhL6lnJTEY4LtVyMA3og5/7844fa7e691b9f97e3c335e1a978e881/Badge_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-1108&t=FSv3FEahG8VQW1FZ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-badge--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-badge/index.ts\"], website: [\"https://muibook.com/#/badge\"], guides: [\"https://guides.muibook.com/badge\"], usage: { list: [ \"Show the number of unread notifications – E.g. '4' unread messages\", \"Indicate the status of a user – E.g. Online, Busy, or Away\", \"Use size variants (xx-small, x-small, small, medium, large) to match surrounding component scale.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"default\", title: \"default\", description: \"Used for data that is visually in the foreground.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3Xgz2qoLs8NACel4fRr9iC/52699b5763f1efd4853a9ffb991b3ff3/badge-default.png\", }, { key: \"positive\", title: \"positive\", description: \"For positive or completed statuses.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/65RMIuUEUIzusbSAwqLQcI/63edb290041c708fc69d0d27fc49e25d/badge-positive.png\", }, { key: \"warning\", title: \"warning\", description: \"For urgent or important statuses.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5AFfOShVyTEKO1wgIe6rYv/e809c76ddabdfd9789adc31a26becf83/badge-warning.png\", }, { key: \"error\", title: \"error\", description: \"Represents an error, issue or critical state.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/E0jtn7WSTwYligMqSNl0k/c3c041e025c3725682ec12eb3ab98400/badge-error.png\", }, { key: \"overlay\", title: \"overlay\", description: \"For labels placed on media/image surfaces with stronger contrast.\", 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\", }, { key: \"compliance-dashboard-table\", name: \"Compliance Dashboard Table\", description: \"This example shows a desktop view of a table used within an accounting compliance dashboard.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3vUKA5C5iJ3LvjLwf2WiO9/274ffe423dbe828244294f6809172ce1/table-composition-compliance-dashboard.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\", }, { key: \"outcomes-roadmap-dashboard\", name: \"Outcomes Roadmap Dashboard\", description: \"Example of the responsive component in the Outcomes Roadmap Dashboard, demonstrating layout, title, and padding adjustments across breakpoints.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3FsXandRr1Z9BAKv33twxT/b0d0e4a8b6237bf7d38660111bceb8ab/responsive-composition.gif\", }, ], }, related: { items: [ { name: \"Button\", link: \"https://guides.muibook.com/button\", }, { name: \"Link\", link: \"https://guides.muibook.com/link\", }, { name: \"Tab Bar\", link: \"https://guides.muibook.com/tab-bar\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
342
- }
343
- ],
344
- "exports": [
345
- {
346
- "kind": "js",
347
- "name": "muiDocs",
348
- "declaration": {
349
- "name": "muiDocs",
350
- "module": "src/components/mui-badge/doc.ts"
351
- }
352
- }
353
- ]
354
- },
355
- {
356
- "kind": "javascript-module",
357
- "path": "src/components/mui-badge/index.ts",
358
- "declarations": [
359
- {
360
- "kind": "class",
361
- "description": "Displays compact status or metadata labels with semantic variants and size scaling.",
362
- "name": "MuiBadge",
363
- "attributes": [
364
- {
365
- "name": "variant",
366
- "type": {
367
- "text": "\"neutral\" | \"positive\" | \"warning\" | \"attention\" | \"overlay\""
368
- },
369
- "default": "neutral",
370
- "description": "Sets the badge intent style."
371
- },
372
- {
373
- "name": "size",
374
- "type": {
375
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
376
- },
377
- "default": "medium",
378
- "description": "Controls the badge scale."
379
- },
380
- {
381
- "name": "usage",
382
- "type": {
383
- "text": "\"slat-end\""
384
- },
385
- "description": "Applies layout-specific styling for supported parent patterns."
386
- }
387
- ],
388
- "superclass": {
389
- "name": "HTMLElement"
390
- },
391
- "tagName": "mui-badge",
392
- "customElement": true,
393
- "slots": [
394
- {
395
- "name": "",
396
- "description": "Badge text content."
397
- }
398
- ],
399
- "events": [],
400
- "cssProperties": [
401
- {
402
- "name": "--badge-radius",
403
- "description": "Controls the badge corner radius."
404
- },
405
- {
406
- "name": "--badge-font-weight",
407
- "description": "Controls the badge text weight."
408
- }
409
- ]
410
- }
411
- ],
412
- "exports": [
413
- {
414
- "kind": "custom-element-definition",
415
- "name": "mui-badge",
416
- "declaration": {
417
- "name": "MuiBadge",
418
- "module": "src/components/mui-badge/index.ts"
419
- }
420
- }
421
- ]
422
- },
423
221
  {
424
222
  "kind": "javascript-module",
425
223
  "path": "src/components/mui-body/doc.ts",
@@ -648,7 +446,7 @@
648
446
  },
649
447
  {
650
448
  "kind": "javascript-module",
651
- "path": "src/components/mui-button/doc.ts",
449
+ "path": "src/components/mui-avatar/doc.ts",
652
450
  "declarations": [
653
451
  {
654
452
  "kind": "variable",
@@ -656,7 +454,7 @@
656
454
  "type": {
657
455
  "text": "MuiDocs"
658
456
  },
659
- "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.\", ], }, }, }"
457
+ "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.\", ], }, }, }"
660
458
  }
661
459
  ],
662
460
  "exports": [
@@ -665,66 +463,268 @@
665
463
  "name": "muiDocs",
666
464
  "declaration": {
667
465
  "name": "muiDocs",
668
- "module": "src/components/mui-button/doc.ts"
466
+ "module": "src/components/mui-avatar/doc.ts"
669
467
  }
670
468
  }
671
469
  ]
672
470
  },
673
471
  {
674
472
  "kind": "javascript-module",
675
- "path": "src/components/mui-button/index.ts",
473
+ "path": "src/components/mui-avatar/index.ts",
676
474
  "declarations": [
677
475
  {
678
476
  "kind": "class",
679
- "description": "Triggers an action with semantic button behaviour, visual emphasis variants, and optional leading or trailing content.",
680
- "name": "MuiButton",
477
+ "description": "Displays an image, initials, or slotted icon for a represented person or entity.",
478
+ "name": "MuiAvatar",
681
479
  "attributes": [
682
480
  {
683
- "name": "onclick"
684
- },
685
- {
686
- "name": "type",
687
- "type": {
688
- "text": "\"button\" | \"submit\" | \"reset\""
689
- },
690
- "default": "button",
691
- "description": "Native button type applied inside the component."
692
- },
693
- {
694
- "name": "aria-label",
481
+ "name": "label",
695
482
  "type": {
696
483
  "text": "string"
697
484
  },
698
- "description": "Accessible name for icon-only or avatar-only buttons without visible action text."
485
+ "description": "Accessible name and initials source when no image or slotted content is present."
699
486
  },
700
487
  {
701
- "name": "disabled",
488
+ "name": "image",
702
489
  "type": {
703
- "text": "boolean"
490
+ "text": "string"
704
491
  },
705
- "default": "false",
706
- "description": "Disables button interaction."
492
+ "description": "Image URL used when no slotted content is supplied."
707
493
  },
708
494
  {
709
- "name": "variant",
495
+ "name": "size",
710
496
  "type": {
711
- "text": "\"primary\" | \"secondary\" | \"tertiary\" | \"overlay\" | \"attention\""
497
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
712
498
  },
713
- "default": "primary",
714
- "description": "Visual emphasis and intent of the action."
499
+ "default": "medium",
500
+ "description": "Avatar dimensions. Defaults map `xx-small` to 24px and `x-small` to 32px."
715
501
  },
716
502
  {
717
- "name": "size",
503
+ "name": "background",
718
504
  "type": {
719
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
505
+ "text": "string"
720
506
  },
721
- "default": "medium",
722
- "description": "Button scale; also controls automatic icon, avatar, and badge sizing."
507
+ "default": "neutral",
508
+ "description": "Named semantic or profile color background."
723
509
  },
724
510
  {
725
- "name": "usage",
511
+ "name": "background-color",
726
512
  "type": {
727
- "text": "\"input\""
513
+ "text": "string"
514
+ },
515
+ "description": "Custom CSS color overriding the named background treatment."
516
+ }
517
+ ],
518
+ "superclass": {
519
+ "name": "HTMLElement"
520
+ },
521
+ "tagName": "mui-avatar",
522
+ "customElement": true,
523
+ "slots": [
524
+ {
525
+ "name": "",
526
+ "description": "Optional icon or custom visible avatar content."
527
+ }
528
+ ],
529
+ "events": [],
530
+ "cssProperties": [
531
+ {
532
+ "name": "--avatar-xx-small",
533
+ "description": "Dimension for `size=\"xx-small\"`; defaults to 24px."
534
+ },
535
+ {
536
+ "name": "--avatar-x-small",
537
+ "description": "Dimension for `size=\"x-small\"`; defaults to 32px."
538
+ },
539
+ {
540
+ "name": "--avatar-background-override",
541
+ "description": "Overrides the resolved avatar background color."
542
+ }
543
+ ]
544
+ }
545
+ ],
546
+ "exports": [
547
+ {
548
+ "kind": "custom-element-definition",
549
+ "name": "mui-avatar",
550
+ "declaration": {
551
+ "name": "MuiAvatar",
552
+ "module": "src/components/mui-avatar/index.ts"
553
+ }
554
+ }
555
+ ]
556
+ },
557
+ {
558
+ "kind": "javascript-module",
559
+ "path": "src/components/mui-badge/doc.ts",
560
+ "declarations": [
561
+ {
562
+ "kind": "variable",
563
+ "name": "muiDocs",
564
+ "type": {
565
+ "text": "MuiDocs"
566
+ },
567
+ "default": "{ Badge: { title: \"Badge\", description: \"Badges are non-interactive and indicate counts or statuses.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/3uhL6lnJTEY4LtVyMA3og5/7844fa7e691b9f97e3c335e1a978e881/Badge_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-1108&t=FSv3FEahG8VQW1FZ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/feedback-badge--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-badge/index.ts\"], website: [\"https://muibook.com/#/badge\"], guides: [\"https://guides.muibook.com/badge\"], usage: { list: [ \"Show the number of unread notifications – E.g. '4' unread messages\", \"Indicate the status of a user – E.g. Online, Busy, or Away\", \"Use size variants (xx-small, x-small, small, medium, large) to match surrounding component scale.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"default\", title: \"default\", description: \"Used for data that is visually in the foreground.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3Xgz2qoLs8NACel4fRr9iC/52699b5763f1efd4853a9ffb991b3ff3/badge-default.png\", }, { key: \"positive\", title: \"positive\", description: \"For positive or completed statuses.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/65RMIuUEUIzusbSAwqLQcI/63edb290041c708fc69d0d27fc49e25d/badge-positive.png\", }, { key: \"warning\", title: \"warning\", description: \"For urgent or important statuses.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5AFfOShVyTEKO1wgIe6rYv/e809c76ddabdfd9789adc31a26becf83/badge-warning.png\", }, { key: \"error\", title: \"error\", description: \"Represents an error, issue or critical state.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/E0jtn7WSTwYligMqSNl0k/c3c041e025c3725682ec12eb3ab98400/badge-error.png\", }, { key: \"overlay\", title: \"overlay\", description: \"For labels placed on media/image surfaces with stronger contrast.\", 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\", }, { key: \"compliance-dashboard-table\", name: \"Compliance Dashboard Table\", description: \"This example shows a desktop view of a table used within an accounting compliance dashboard.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3vUKA5C5iJ3LvjLwf2WiO9/274ffe423dbe828244294f6809172ce1/table-composition-compliance-dashboard.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\", }, { key: \"outcomes-roadmap-dashboard\", name: \"Outcomes Roadmap Dashboard\", description: \"Example of the responsive component in the Outcomes Roadmap Dashboard, demonstrating layout, title, and padding adjustments across breakpoints.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3FsXandRr1Z9BAKv33twxT/b0d0e4a8b6237bf7d38660111bceb8ab/responsive-composition.gif\", }, ], }, related: { items: [ { name: \"Button\", link: \"https://guides.muibook.com/button\", }, { name: \"Link\", link: \"https://guides.muibook.com/link\", }, { name: \"Tab Bar\", link: \"https://guides.muibook.com/tab-bar\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
568
+ }
569
+ ],
570
+ "exports": [
571
+ {
572
+ "kind": "js",
573
+ "name": "muiDocs",
574
+ "declaration": {
575
+ "name": "muiDocs",
576
+ "module": "src/components/mui-badge/doc.ts"
577
+ }
578
+ }
579
+ ]
580
+ },
581
+ {
582
+ "kind": "javascript-module",
583
+ "path": "src/components/mui-badge/index.ts",
584
+ "declarations": [
585
+ {
586
+ "kind": "class",
587
+ "description": "Displays compact status or metadata labels with semantic variants and size scaling.",
588
+ "name": "MuiBadge",
589
+ "attributes": [
590
+ {
591
+ "name": "variant",
592
+ "type": {
593
+ "text": "\"neutral\" | \"positive\" | \"warning\" | \"attention\" | \"overlay\""
594
+ },
595
+ "default": "neutral",
596
+ "description": "Sets the badge intent style."
597
+ },
598
+ {
599
+ "name": "size",
600
+ "type": {
601
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
602
+ },
603
+ "default": "medium",
604
+ "description": "Controls the badge scale."
605
+ },
606
+ {
607
+ "name": "usage",
608
+ "type": {
609
+ "text": "\"slat-end\""
610
+ },
611
+ "description": "Applies layout-specific styling for supported parent patterns."
612
+ }
613
+ ],
614
+ "superclass": {
615
+ "name": "HTMLElement"
616
+ },
617
+ "tagName": "mui-badge",
618
+ "customElement": true,
619
+ "slots": [
620
+ {
621
+ "name": "",
622
+ "description": "Badge text content."
623
+ }
624
+ ],
625
+ "events": [],
626
+ "cssProperties": [
627
+ {
628
+ "name": "--badge-radius",
629
+ "description": "Controls the badge corner radius."
630
+ },
631
+ {
632
+ "name": "--badge-font-weight",
633
+ "description": "Controls the badge text weight."
634
+ }
635
+ ]
636
+ }
637
+ ],
638
+ "exports": [
639
+ {
640
+ "kind": "custom-element-definition",
641
+ "name": "mui-badge",
642
+ "declaration": {
643
+ "name": "MuiBadge",
644
+ "module": "src/components/mui-badge/index.ts"
645
+ }
646
+ }
647
+ ]
648
+ },
649
+ {
650
+ "kind": "javascript-module",
651
+ "path": "src/components/mui-button/doc.ts",
652
+ "declarations": [
653
+ {
654
+ "kind": "variable",
655
+ "name": "muiDocs",
656
+ "type": {
657
+ "text": "MuiDocs"
658
+ },
659
+ "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.\", ], }, }, }"
660
+ }
661
+ ],
662
+ "exports": [
663
+ {
664
+ "kind": "js",
665
+ "name": "muiDocs",
666
+ "declaration": {
667
+ "name": "muiDocs",
668
+ "module": "src/components/mui-button/doc.ts"
669
+ }
670
+ }
671
+ ]
672
+ },
673
+ {
674
+ "kind": "javascript-module",
675
+ "path": "src/components/mui-button/index.ts",
676
+ "declarations": [
677
+ {
678
+ "kind": "class",
679
+ "description": "Triggers an action with semantic button behaviour, visual emphasis variants, and optional leading or trailing content.",
680
+ "name": "MuiButton",
681
+ "attributes": [
682
+ {
683
+ "name": "onclick"
684
+ },
685
+ {
686
+ "name": "type",
687
+ "type": {
688
+ "text": "\"button\" | \"submit\" | \"reset\""
689
+ },
690
+ "default": "button",
691
+ "description": "Native button type applied inside the component."
692
+ },
693
+ {
694
+ "name": "aria-label",
695
+ "type": {
696
+ "text": "string"
697
+ },
698
+ "description": "Accessible name for icon-only or avatar-only buttons without visible action text."
699
+ },
700
+ {
701
+ "name": "disabled",
702
+ "type": {
703
+ "text": "boolean"
704
+ },
705
+ "default": "false",
706
+ "description": "Disables button interaction."
707
+ },
708
+ {
709
+ "name": "variant",
710
+ "type": {
711
+ "text": "\"primary\" | \"secondary\" | \"tertiary\" | \"overlay\" | \"attention\""
712
+ },
713
+ "default": "primary",
714
+ "description": "Visual emphasis and intent of the action."
715
+ },
716
+ {
717
+ "name": "size",
718
+ "type": {
719
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
720
+ },
721
+ "default": "medium",
722
+ "description": "Button scale; also controls automatic icon, avatar, and badge sizing."
723
+ },
724
+ {
725
+ "name": "usage",
726
+ "type": {
727
+ "text": "\"input\""
728
728
  },
729
729
  "description": "Uses field-compatible styling when the button is slotted before or after an input."
730
730
  }
@@ -3278,392 +3278,53 @@
3278
3278
  },
3279
3279
  {
3280
3280
  "kind": "javascript-module",
3281
- "path": "src/components/mui-image/doc.ts",
3281
+ "path": "src/components/mui-icons/accessibility.ts",
3282
3282
  "declarations": [
3283
3283
  {
3284
- "kind": "variable",
3285
- "name": "muiDocs",
3286
- "type": {
3287
- "text": "MuiDocs"
3284
+ "kind": "class",
3285
+ "name": "MuiIconAccessibility",
3286
+ "attributes": [
3287
+ {
3288
+ "name": "size"
3289
+ },
3290
+ {
3291
+ "name": "color"
3292
+ }
3293
+ ],
3294
+ "superclass": {
3295
+ "name": "HTMLElement"
3288
3296
  },
3289
- "default": "{ Image: { title: \"Image\", description: \"Displays an image alongside an optional caption to provide context, explanation, or attribution. Useful for supporting content visually while maintaining clarity through descriptive labelling.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/14eozXMPlzipgAfqaIR2Py/4e211990a30b4a08549deccfd30c71a9/Image_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4194&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-image--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-image/index.ts\"], website: [\"\"], guides: [\"https://guides.muibook.com/image\"], usage: { list: [ \"Use to display images that require additional context or explanation.\", \"Use height + crop + fit=cover when you need fixed-height visual crops.\", \"Use max-height with aspect-ratio for responsive image frames that should not exceed a visual cap.\", \"Use focal-x/focal-y or position to keep important content in frame.\", \"Use zoom carefully to tighten framing without switching to background-image.\", \"Captions should clarify the relevance of the image, not repeat surrounding content.\", \"Ideal for diagrams, UI examples, or content requiring attribution.\", \"Ensure images are accessible with alt text and meaningful captions.\", ], }, accessibility: { designerList: [ \"Use meaningful alt text that describes the image’s purpose.\", \"Use alt=“” for decorative images that don’t convey information.\", \"Use the caption slot for extended context, especially for diagrams or UI patterns.\", ], engineerList: [ \"Use meaningful alt text that describes the image’s purpose.\", \"Use alt=“” for decorative images that don’t convey information.\", \"Use the caption slot for extended context, especially for diagrams or UI patterns.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/3BSbMl1cqUOB6oDmFLQjRx/193889c0f6d3da6178d51e5fff06b8ed/Image_-_Anatomy.png\", list: [\"Standard styling for a hero image.\", \"Optional caption for the image.\"], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"muibook-resource\", name: \"Muibook Resource\", description: \"The Muibook documentation site uses MUI components to compose its layout, including headings, text, lists, buttons, icons, and image components.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3LVvuYDZWRnMhxNy6GMLNd/c5074a05eacb2c22c50ea172b3567c48/Muibook-List-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
3297
+ "tagName": "mui-icon-accessibility",
3298
+ "customElement": true
3290
3299
  }
3291
3300
  ],
3292
3301
  "exports": [
3293
3302
  {
3294
- "kind": "js",
3295
- "name": "muiDocs",
3303
+ "kind": "custom-element-definition",
3304
+ "name": "mui-icon-accessibility",
3296
3305
  "declaration": {
3297
- "name": "muiDocs",
3298
- "module": "src/components/mui-image/doc.ts"
3306
+ "name": "MuiIconAccessibility",
3307
+ "module": "src/components/mui-icons/accessibility.ts"
3299
3308
  }
3300
3309
  }
3301
3310
  ]
3302
3311
  },
3303
3312
  {
3304
3313
  "kind": "javascript-module",
3305
- "path": "src/components/mui-image/index.ts",
3314
+ "path": "src/components/mui-icons/add.ts",
3306
3315
  "declarations": [
3307
3316
  {
3308
3317
  "kind": "class",
3309
- "description": "Frames a slotted image with optional cropping, focal positioning and caption content.",
3310
- "name": "MuiImage",
3318
+ "description": "Representative API for Muibook icon glyph elements.",
3319
+ "name": "MuiIconAdd",
3311
3320
  "attributes": [
3312
3321
  {
3313
- "name": "height",
3322
+ "name": "size",
3314
3323
  "type": {
3315
- "text": "string"
3324
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
3316
3325
  },
3317
- "description": "Sets the rendered image container height using any valid CSS height value."
3318
- },
3319
- {
3320
- "name": "fit",
3321
- "type": {
3322
- "text": "\"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\""
3323
- },
3324
- "default": "contain",
3325
- "description": "Controls how the image fits its container."
3326
- },
3327
- {
3328
- "name": "crop",
3329
- "type": {
3330
- "text": "boolean"
3331
- },
3332
- "default": "false",
3333
- "description": "Enables cropped image presentation."
3334
- },
3335
- {
3336
- "name": "position",
3337
- "type": {
3338
- "text": "string"
3339
- },
3340
- "default": "center center",
3341
- "description": "Sets the object position when a focal position is not supplied."
3342
- },
3343
- {
3344
- "name": "zoom",
3345
- "type": {
3346
- "text": "number"
3347
- },
3348
- "default": "1",
3349
- "description": "Scales the image around its focal position."
3350
- },
3351
- {
3352
- "name": "focal-x",
3353
- "type": {
3354
- "text": "string"
3355
- },
3356
- "description": "Sets the horizontal focal point used for cropped images."
3357
- },
3358
- {
3359
- "name": "focal-y",
3360
- "type": {
3361
- "text": "string"
3362
- },
3363
- "description": "Sets the vertical focal point used for cropped images."
3364
- },
3365
- {
3366
- "name": "radius",
3367
- "type": {
3368
- "text": "string"
3369
- },
3370
- "default": "var(--radius-300)",
3371
- "description": "Sets the frame border radius."
3372
- },
3373
- {
3374
- "name": "aspect-ratio",
3375
- "type": {
3376
- "text": "string"
3377
- },
3378
- "description": "Sets the media aspect ratio using any valid CSS aspect-ratio value."
3379
- }
3380
- ],
3381
- "superclass": {
3382
- "name": "HTMLElement"
3383
- },
3384
- "tagName": "mui-image",
3385
- "customElement": true,
3386
- "slots": [
3387
- {
3388
- "name": "image",
3389
- "description": "Image media, normally an `img` element."
3390
- },
3391
- {
3392
- "name": "caption",
3393
- "description": "Optional caption content, normally a `figcaption` element."
3394
- }
3395
- ],
3396
- "events": [],
3397
- "cssProperties": []
3398
- }
3399
- ],
3400
- "exports": [
3401
- {
3402
- "kind": "custom-element-definition",
3403
- "name": "mui-image",
3404
- "declaration": {
3405
- "name": "MuiImage",
3406
- "module": "src/components/mui-image/index.ts"
3407
- }
3408
- }
3409
- ]
3410
- },
3411
- {
3412
- "kind": "javascript-module",
3413
- "path": "src/components/mui-input/doc.ts",
3414
- "declarations": [
3415
- {
3416
- "kind": "variable",
3417
- "name": "muiDocs",
3418
- "type": {
3419
- "text": "MuiDocs"
3420
- },
3421
- "default": "{ Input: { title: \"Input\", description: \"An input component for capturing user text, styled for consistency across your UI.\", hero: [\"\"], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-795&t=GMqx21isUVAMpLJp-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-input--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-input/index.ts\"], website: [\"https://muibook.com/#/input\"], guides: [\"https://guides.muibook.com/input\"], usage: { list: [ \"Ensure the purpose of the input is clear, either through a placeholder text or surrounding context.\", \"Ensure validation feedback is considered when using an input. E.g. Error text.\", \"Ensure the experience has clear focus states to support keyboard accessibility.\", \"Select the appropriate input types for the specific use case. E.g. Text, Email, Password.\", \"Use size='x-small|small|medium|large' to align inputs with surrounding form controls.\", \"Use slot='hint' for contextual overlays, including mui-hint with interactive tooltip content.\", \"Use mui-chip in before/after slots for tag-style contextual input patterns.\", \"Use placeholder text to provide context of the input use; avoid using them as primary labels.\", \"Avoid relying solely on placeholder text for instructions, as it disappears when users start typing.\", \"Use the optional attribute when a field is not required to show a clear (optional) marker in the label.\", \"Use max-length when input limits matter; the component shows a live character count.\", \"In React controlled mode, keep value updates isolated from structural attribute updates (label, type, placeholder, variant) to avoid focus loss while typing.\", ], }, accessibility: { designerList: [\"\"], engineerList: [ \"A label is required for screen reader support to describe the input's purpose.\", \"If hide-label is used, the label is visually hidden but accessible via aria-label.\", \"The label and input are linked via for and id. If no id is provided, one is generated.\", \"Clear focus styles are shown for keyboard users.\", \"The native disabled attribute is fully supported by assistive tech.\", \"Optional fields can be explicitly communicated with the optional attribute without changing label association.\", \"When max-length is set, users get visible character progress while native maxlength enforcement remains intact.\", \"For React integrations, prefer reading event.detail.value from the web component custom event instead of querying shadow DOM internals.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/5aiWlqSJ4BYCGtXn9MbGd/2734f1771c0e666806060bc85f753927/Input_-_Anatomy.png\", list: [ \"Label: Describes the purpose of the Input; required for accessibility. Can be hidden if the context is clear. Ensure the label text is still provided for developers to support screen reader access.\", \"Text: The label or placeholder text that describes the input field’s purpose.\", \"Before: Optional icons can be placed before or after the text input for additional functionality or clarity (e.g., search or password visibility icons).\", \"After: Optional icons can be placed before or after the text input for additional functionality or clarity (e.g., search or password visibility icons).\", \"Slot Before: Allows insertion of an Add-On, Select, or Button before the input to provide contextual or interactive elements. Some design craft may be needed to align elements visually in tools like Figma.\", \"Slot After: Allows insertion of an Add-On, Select, or Button after the input to support or clarify the user’s entry. Some design craft may be needed to ensure alignment and spacing look accurate in design tools.\", ], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"The standard Input with visible label and no interaction or validation states applied. Used for most form field scenarios.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5t0SMtVRHvOSHiuHZ8jLfS/64da2bbaf5d2f4216f1c876f205c1298/input-default.png\", }, { key: \"hide-label\", title: \"Hide Label\", description: \"The label is visually hidden but remains accessible to screen readers. Use when the label context is already clear from surrounding UI. Ensure the label name is documented for developers, as the component requires a label for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4wC0xbPgmsMGi6YhMG8PnI/f01da9a977092a2da1e128fbee3325eb/input-hide-label.png\", }, { key: \"hover\", title: \"Hover\", description: \"Displays the hover state styling when a pointer is placed over the Input. Useful for demonstrating interactive feedback.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5IXEcxa2RxqubupHmblDhd/ab41eba34289194733a87994b096e95d/input-hover.png\", }, { key: \"focus\", title: \"Focus\", description: \"Shows the focus ring or border to indicate that the Input is currently active. Supports accessible keyboard navigation.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4AA4IcIdnov9MfSeY4rSdL/bbaf44297cdd4bd09d626b707dbe5f47/input-focus.png\", }, { key: \"error\", title: \"Error\", description: \"Displays a visual error style to indicate invalid input. Used with the Field component to surface validation messaging.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2LYMpJwtH7f8KfPYl0vwAg/385529402b5e73399320c9581c8e1301/input-error.png\", }, { key: \"input-field\", title: \"Input + Field\", description: \"Displays a visual error style to indicate invalid input. Used with the Field component to surface validation messaging.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/kSXvQ6D4hvuP3c9bC0ZUa/319272dc75f0b08493753a49c0fbff75/success-message.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"user-details\", name: \"User Details (Step 1)\", description: \"This composition uses an accordion to contain a step in a multi-step flow. It focuses on input fields with labels, placeholders, and optional states, keeping the layout compact and clear.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1L2XfteVwNBQcFlddTYmfi/c791eb538285e2cfb919342e84228811/accordion-block_-_Variants.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: \"Field\", link: \"https://guides.muibook.com/field\", }, { name: \"Select\", link: \"https://guides.muibook.com/select\", }, { name: \"File Upload\", link: \"https://guides.muibook.com/file-upload\", }, { name: \"Add on\", link: \"https://guides.muibook.com/add-on\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
3422
- }
3423
- ],
3424
- "exports": [
3425
- {
3426
- "kind": "js",
3427
- "name": "muiDocs",
3428
- "declaration": {
3429
- "name": "muiDocs",
3430
- "module": "src/components/mui-input/doc.ts"
3431
- }
3432
- }
3433
- ]
3434
- },
3435
- {
3436
- "kind": "javascript-module",
3437
- "path": "src/components/mui-input/index.ts",
3438
- "declarations": [
3439
- {
3440
- "kind": "class",
3441
- "description": "Captures a single text-like form value with label, validation state and composable affordance slots.",
3442
- "name": "MuiInput",
3443
- "events": [
3444
- {
3445
- "name": "change",
3446
- "type": {
3447
- "text": "CustomEvent"
3448
- },
3449
- "description": "Dispatched when the native input change event occurs with `detail.value`."
3450
- },
3451
- {
3452
- "name": "input",
3453
- "type": {
3454
- "text": "CustomEvent"
3455
- },
3456
- "description": "Dispatched during value entry with `detail.value`."
3457
- }
3458
- ],
3459
- "attributes": [
3460
- {
3461
- "name": "type",
3462
- "type": {
3463
- "text": "\"text\" | \"password\" | \"email\" | \"number\" | \"search\" | \"tel\" | \"url\" | \"date\" | \"time\" | \"datetime-local\" | \"month\" | \"week\""
3464
- },
3465
- "default": "text",
3466
- "description": "Native input data type."
3467
- },
3468
- {
3469
- "name": "name",
3470
- "type": {
3471
- "text": "string"
3472
- },
3473
- "description": "Form field name."
3474
- },
3475
- {
3476
- "name": "value",
3477
- "type": {
3478
- "text": "string"
3479
- },
3480
- "default": "",
3481
- "description": "Current input value."
3482
- },
3483
- {
3484
- "name": "placeholder",
3485
- "type": {
3486
- "text": "string"
3487
- },
3488
- "description": "Hint displayed when no value is entered."
3489
- },
3490
- {
3491
- "name": "id",
3492
- "type": {
3493
- "text": "string"
3494
- },
3495
- "description": "Input identifier used to associate the visible label."
3496
- },
3497
- {
3498
- "name": "label",
3499
- "type": {
3500
- "text": "string"
3501
- },
3502
- "description": "Accessible input label. Required for labelled form usage."
3503
- },
3504
- {
3505
- "name": "disabled",
3506
- "type": {
3507
- "text": "boolean"
3508
- },
3509
- "default": "false",
3510
- "description": "Disables input interaction."
3511
- },
3512
- {
3513
- "name": "hide-label",
3514
- "type": {
3515
- "text": "boolean"
3516
- },
3517
- "default": "false",
3518
- "description": "Visually hides the supplied label while preserving it as the accessible name."
3519
- },
3520
- {
3521
- "name": "variant",
3522
- "type": {
3523
- "text": "\"default\" | \"success\" | \"warning\" | \"error\""
3524
- },
3525
- "default": "default",
3526
- "description": "Visual validation state."
3527
- },
3528
- {
3529
- "name": "optional",
3530
- "type": {
3531
- "text": "boolean"
3532
- },
3533
- "default": "false",
3534
- "description": "Displays an optional marker beside the label."
3535
- },
3536
- {
3537
- "name": "max-length",
3538
- "type": {
3539
- "text": "number | string"
3540
- },
3541
- "description": "Maximum character length. Providing it displays a live count."
3542
- },
3543
- {
3544
- "name": "size",
3545
- "type": {
3546
- "text": "\"x-small\" | \"small\" | \"medium\" | \"large\""
3547
- },
3548
- "default": "medium",
3549
- "description": "Input and slotted affordance size scale."
3550
- },
3551
- {
3552
- "name": "slot-layout",
3553
- "type": {
3554
- "text": "\"inline\" | \"stack-mobile\""
3555
- },
3556
- "default": "inline",
3557
- "description": "Arranges external before and after slots inline or stacked around the input."
3558
- }
3559
- ],
3560
- "superclass": {
3561
- "name": "HTMLElement"
3562
- },
3563
- "tagName": "mui-input",
3564
- "customElement": true,
3565
- "slots": [
3566
- {
3567
- "name": "before",
3568
- "description": "Flush leading control, such as `mui-addon`, `mui-select`, `mui-button` or `mui-chip`."
3569
- },
3570
- {
3571
- "name": "after",
3572
- "description": "Flush trailing control, such as `mui-addon`, `mui-select`, `mui-button` or `mui-chip`."
3573
- },
3574
- {
3575
- "name": "inside-before",
3576
- "description": "Leading content displayed inside the input edge, such as an icon or badge."
3577
- },
3578
- {
3579
- "name": "inside-after",
3580
- "description": "Trailing content displayed inside the input edge, such as an icon or badge."
3581
- },
3582
- {
3583
- "name": "hint",
3584
- "description": "Contextual hint content displayed inside the trailing input affordance area."
3585
- }
3586
- ],
3587
- "cssProperties": [
3588
- {
3589
- "name": "--input-before-slot-max-width",
3590
- "description": "Maximum width for leading external slot content."
3591
- },
3592
- {
3593
- "name": "--input-after-slot-max-width",
3594
- "description": "Maximum width for trailing external slot content."
3595
- },
3596
- {
3597
- "name": "--input-slot-wrap",
3598
- "description": "Wrapping behaviour for external slot content."
3599
- },
3600
- {
3601
- "name": "--input-slot-overflow-x",
3602
- "description": "Horizontal overflow behaviour for external slot content."
3603
- }
3604
- ]
3605
- }
3606
- ],
3607
- "exports": [
3608
- {
3609
- "kind": "custom-element-definition",
3610
- "name": "mui-input",
3611
- "declaration": {
3612
- "name": "MuiInput",
3613
- "module": "src/components/mui-input/index.ts"
3614
- }
3615
- }
3616
- ]
3617
- },
3618
- {
3619
- "kind": "javascript-module",
3620
- "path": "src/components/mui-icons/accessibility.ts",
3621
- "declarations": [
3622
- {
3623
- "kind": "class",
3624
- "name": "MuiIconAccessibility",
3625
- "attributes": [
3626
- {
3627
- "name": "size"
3628
- },
3629
- {
3630
- "name": "color"
3631
- }
3632
- ],
3633
- "superclass": {
3634
- "name": "HTMLElement"
3635
- },
3636
- "tagName": "mui-icon-accessibility",
3637
- "customElement": true
3638
- }
3639
- ],
3640
- "exports": [
3641
- {
3642
- "kind": "custom-element-definition",
3643
- "name": "mui-icon-accessibility",
3644
- "declaration": {
3645
- "name": "MuiIconAccessibility",
3646
- "module": "src/components/mui-icons/accessibility.ts"
3647
- }
3648
- }
3649
- ]
3650
- },
3651
- {
3652
- "kind": "javascript-module",
3653
- "path": "src/components/mui-icons/add.ts",
3654
- "declarations": [
3655
- {
3656
- "kind": "class",
3657
- "description": "Representative API for Muibook icon glyph elements.",
3658
- "name": "MuiIconAdd",
3659
- "attributes": [
3660
- {
3661
- "name": "size",
3662
- "type": {
3663
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
3664
- },
3665
- "default": "small",
3666
- "description": "Sets the icon footprint."
3326
+ "default": "small",
3327
+ "description": "Sets the icon footprint."
3667
3328
  },
3668
3329
  {
3669
3330
  "name": "color",
@@ -4777,11 +4438,242 @@
4777
4438
  },
4778
4439
  {
4779
4440
  "kind": "javascript-module",
4780
- "path": "src/components/mui-icons/rectangle-dashed.ts",
4441
+ "path": "src/components/mui-icons/rectangle-dashed.ts",
4442
+ "declarations": [
4443
+ {
4444
+ "kind": "class",
4445
+ "name": "MuiIconRectangleDashed",
4446
+ "attributes": [
4447
+ {
4448
+ "name": "size"
4449
+ },
4450
+ {
4451
+ "name": "color"
4452
+ }
4453
+ ],
4454
+ "superclass": {
4455
+ "name": "HTMLElement"
4456
+ },
4457
+ "tagName": "mui-icon-rectangle-dashed",
4458
+ "customElement": true
4459
+ }
4460
+ ],
4461
+ "exports": [
4462
+ {
4463
+ "kind": "custom-element-definition",
4464
+ "name": "mui-icon-rectangle-dashed",
4465
+ "declaration": {
4466
+ "name": "MuiIconRectangleDashed",
4467
+ "module": "src/components/mui-icons/rectangle-dashed.ts"
4468
+ }
4469
+ }
4470
+ ]
4471
+ },
4472
+ {
4473
+ "kind": "javascript-module",
4474
+ "path": "src/components/mui-icons/rectangle-left-drawer.ts",
4475
+ "declarations": [
4476
+ {
4477
+ "kind": "class",
4478
+ "name": "MuiIconRectangleLeftDrawer",
4479
+ "attributes": [
4480
+ {
4481
+ "name": "size"
4482
+ },
4483
+ {
4484
+ "name": "color"
4485
+ }
4486
+ ],
4487
+ "superclass": {
4488
+ "name": "HTMLElement"
4489
+ },
4490
+ "tagName": "mui-icon-rectangle-left-drawer",
4491
+ "customElement": true
4492
+ }
4493
+ ],
4494
+ "exports": [
4495
+ {
4496
+ "kind": "custom-element-definition",
4497
+ "name": "mui-icon-rectangle-left-drawer",
4498
+ "declaration": {
4499
+ "name": "MuiIconRectangleLeftDrawer",
4500
+ "module": "src/components/mui-icons/rectangle-left-drawer.ts"
4501
+ }
4502
+ }
4503
+ ]
4504
+ },
4505
+ {
4506
+ "kind": "javascript-module",
4507
+ "path": "src/components/mui-icons/rectangle-media-text.ts",
4508
+ "declarations": [
4509
+ {
4510
+ "kind": "class",
4511
+ "name": "MuiIconRectangleMediaText",
4512
+ "attributes": [
4513
+ {
4514
+ "name": "size"
4515
+ },
4516
+ {
4517
+ "name": "color"
4518
+ }
4519
+ ],
4520
+ "superclass": {
4521
+ "name": "HTMLElement"
4522
+ },
4523
+ "tagName": "mui-icon-rectangle-media-text",
4524
+ "customElement": true
4525
+ }
4526
+ ],
4527
+ "exports": [
4528
+ {
4529
+ "kind": "custom-element-definition",
4530
+ "name": "mui-icon-rectangle-media-text",
4531
+ "declaration": {
4532
+ "name": "MuiIconRectangleMediaText",
4533
+ "module": "src/components/mui-icons/rectangle-media-text.ts"
4534
+ }
4535
+ }
4536
+ ]
4537
+ },
4538
+ {
4539
+ "kind": "javascript-module",
4540
+ "path": "src/components/mui-icons/rectangle.ts",
4541
+ "declarations": [
4542
+ {
4543
+ "kind": "class",
4544
+ "name": "MuiIconRectangle",
4545
+ "attributes": [
4546
+ {
4547
+ "name": "size"
4548
+ },
4549
+ {
4550
+ "name": "color"
4551
+ }
4552
+ ],
4553
+ "superclass": {
4554
+ "name": "HTMLElement"
4555
+ },
4556
+ "tagName": "mui-icon-rectangle",
4557
+ "customElement": true
4558
+ }
4559
+ ],
4560
+ "exports": [
4561
+ {
4562
+ "kind": "custom-element-definition",
4563
+ "name": "mui-icon-rectangle",
4564
+ "declaration": {
4565
+ "name": "MuiIconRectangle",
4566
+ "module": "src/components/mui-icons/rectangle.ts"
4567
+ }
4568
+ }
4569
+ ]
4570
+ },
4571
+ {
4572
+ "kind": "javascript-module",
4573
+ "path": "src/components/mui-icons/right-chevron.ts",
4574
+ "declarations": [
4575
+ {
4576
+ "kind": "class",
4577
+ "name": "MuiIconRightChevron",
4578
+ "attributes": [
4579
+ {
4580
+ "name": "size"
4581
+ },
4582
+ {
4583
+ "name": "color"
4584
+ }
4585
+ ],
4586
+ "superclass": {
4587
+ "name": "HTMLElement"
4588
+ },
4589
+ "tagName": "mui-icon-right-chevron",
4590
+ "customElement": true
4591
+ }
4592
+ ],
4593
+ "exports": [
4594
+ {
4595
+ "kind": "custom-element-definition",
4596
+ "name": "mui-icon-right-chevron",
4597
+ "declaration": {
4598
+ "name": "MuiIconRightChevron",
4599
+ "module": "src/components/mui-icons/right-chevron.ts"
4600
+ }
4601
+ }
4602
+ ]
4603
+ },
4604
+ {
4605
+ "kind": "javascript-module",
4606
+ "path": "src/components/mui-icons/search.ts",
4607
+ "declarations": [
4608
+ {
4609
+ "kind": "class",
4610
+ "name": "MuiIconSearch",
4611
+ "attributes": [
4612
+ {
4613
+ "name": "size"
4614
+ },
4615
+ {
4616
+ "name": "color"
4617
+ }
4618
+ ],
4619
+ "superclass": {
4620
+ "name": "HTMLElement"
4621
+ },
4622
+ "tagName": "mui-icon-search",
4623
+ "customElement": true
4624
+ }
4625
+ ],
4626
+ "exports": [
4627
+ {
4628
+ "kind": "custom-element-definition",
4629
+ "name": "mui-icon-search",
4630
+ "declaration": {
4631
+ "name": "MuiIconSearch",
4632
+ "module": "src/components/mui-icons/search.ts"
4633
+ }
4634
+ }
4635
+ ]
4636
+ },
4637
+ {
4638
+ "kind": "javascript-module",
4639
+ "path": "src/components/mui-icons/spinner.ts",
4640
+ "declarations": [
4641
+ {
4642
+ "kind": "class",
4643
+ "name": "MuiIconSpinner",
4644
+ "attributes": [
4645
+ {
4646
+ "name": "size"
4647
+ },
4648
+ {
4649
+ "name": "color"
4650
+ }
4651
+ ],
4652
+ "superclass": {
4653
+ "name": "HTMLElement"
4654
+ },
4655
+ "tagName": "mui-icon-spinner",
4656
+ "customElement": true
4657
+ }
4658
+ ],
4659
+ "exports": [
4660
+ {
4661
+ "kind": "custom-element-definition",
4662
+ "name": "mui-icon-spinner",
4663
+ "declaration": {
4664
+ "name": "MuiIconSpinner",
4665
+ "module": "src/components/mui-icons/spinner.ts"
4666
+ }
4667
+ }
4668
+ ]
4669
+ },
4670
+ {
4671
+ "kind": "javascript-module",
4672
+ "path": "src/components/mui-icons/stop.ts",
4781
4673
  "declarations": [
4782
4674
  {
4783
4675
  "kind": "class",
4784
- "name": "MuiIconRectangleDashed",
4676
+ "name": "MuiIconStop",
4785
4677
  "attributes": [
4786
4678
  {
4787
4679
  "name": "size"
@@ -4793,28 +4685,28 @@
4793
4685
  "superclass": {
4794
4686
  "name": "HTMLElement"
4795
4687
  },
4796
- "tagName": "mui-icon-rectangle-dashed",
4688
+ "tagName": "mui-icon-stop",
4797
4689
  "customElement": true
4798
4690
  }
4799
4691
  ],
4800
4692
  "exports": [
4801
4693
  {
4802
4694
  "kind": "custom-element-definition",
4803
- "name": "mui-icon-rectangle-dashed",
4695
+ "name": "mui-icon-stop",
4804
4696
  "declaration": {
4805
- "name": "MuiIconRectangleDashed",
4806
- "module": "src/components/mui-icons/rectangle-dashed.ts"
4697
+ "name": "MuiIconStop",
4698
+ "module": "src/components/mui-icons/stop.ts"
4807
4699
  }
4808
4700
  }
4809
4701
  ]
4810
4702
  },
4811
4703
  {
4812
4704
  "kind": "javascript-module",
4813
- "path": "src/components/mui-icons/rectangle-left-drawer.ts",
4705
+ "path": "src/components/mui-icons/subtract.ts",
4814
4706
  "declarations": [
4815
4707
  {
4816
4708
  "kind": "class",
4817
- "name": "MuiIconRectangleLeftDrawer",
4709
+ "name": "MuiIconSubtract",
4818
4710
  "attributes": [
4819
4711
  {
4820
4712
  "name": "size"
@@ -4826,28 +4718,28 @@
4826
4718
  "superclass": {
4827
4719
  "name": "HTMLElement"
4828
4720
  },
4829
- "tagName": "mui-icon-rectangle-left-drawer",
4721
+ "tagName": "mui-icon-subtract",
4830
4722
  "customElement": true
4831
4723
  }
4832
4724
  ],
4833
4725
  "exports": [
4834
4726
  {
4835
4727
  "kind": "custom-element-definition",
4836
- "name": "mui-icon-rectangle-left-drawer",
4728
+ "name": "mui-icon-subtract",
4837
4729
  "declaration": {
4838
- "name": "MuiIconRectangleLeftDrawer",
4839
- "module": "src/components/mui-icons/rectangle-left-drawer.ts"
4730
+ "name": "MuiIconSubtract",
4731
+ "module": "src/components/mui-icons/subtract.ts"
4840
4732
  }
4841
4733
  }
4842
4734
  ]
4843
4735
  },
4844
4736
  {
4845
4737
  "kind": "javascript-module",
4846
- "path": "src/components/mui-icons/rectangle-media-text.ts",
4738
+ "path": "src/components/mui-icons/sun.ts",
4847
4739
  "declarations": [
4848
4740
  {
4849
4741
  "kind": "class",
4850
- "name": "MuiIconRectangleMediaText",
4742
+ "name": "MuiIconSun",
4851
4743
  "attributes": [
4852
4744
  {
4853
4745
  "name": "size"
@@ -4859,28 +4751,28 @@
4859
4751
  "superclass": {
4860
4752
  "name": "HTMLElement"
4861
4753
  },
4862
- "tagName": "mui-icon-rectangle-media-text",
4754
+ "tagName": "mui-icon-sun",
4863
4755
  "customElement": true
4864
4756
  }
4865
4757
  ],
4866
4758
  "exports": [
4867
4759
  {
4868
4760
  "kind": "custom-element-definition",
4869
- "name": "mui-icon-rectangle-media-text",
4761
+ "name": "mui-icon-sun",
4870
4762
  "declaration": {
4871
- "name": "MuiIconRectangleMediaText",
4872
- "module": "src/components/mui-icons/rectangle-media-text.ts"
4763
+ "name": "MuiIconSun",
4764
+ "module": "src/components/mui-icons/sun.ts"
4873
4765
  }
4874
4766
  }
4875
4767
  ]
4876
4768
  },
4877
4769
  {
4878
4770
  "kind": "javascript-module",
4879
- "path": "src/components/mui-icons/rectangle.ts",
4771
+ "path": "src/components/mui-icons/text-below-folder.ts",
4880
4772
  "declarations": [
4881
4773
  {
4882
4774
  "kind": "class",
4883
- "name": "MuiIconRectangle",
4775
+ "name": "MuiIconTextBelowFolder",
4884
4776
  "attributes": [
4885
4777
  {
4886
4778
  "name": "size"
@@ -4892,94 +4784,128 @@
4892
4784
  "superclass": {
4893
4785
  "name": "HTMLElement"
4894
4786
  },
4895
- "tagName": "mui-icon-rectangle",
4787
+ "tagName": "mui-icon-text-below-folder",
4896
4788
  "customElement": true
4897
4789
  }
4898
4790
  ],
4899
4791
  "exports": [
4900
4792
  {
4901
4793
  "kind": "custom-element-definition",
4902
- "name": "mui-icon-rectangle",
4794
+ "name": "mui-icon-text-below-folder",
4903
4795
  "declaration": {
4904
- "name": "MuiIconRectangle",
4905
- "module": "src/components/mui-icons/rectangle.ts"
4796
+ "name": "MuiIconTextBelowFolder",
4797
+ "module": "src/components/mui-icons/text-below-folder.ts"
4906
4798
  }
4907
4799
  }
4908
4800
  ]
4909
4801
  },
4910
4802
  {
4911
4803
  "kind": "javascript-module",
4912
- "path": "src/components/mui-icons/right-chevron.ts",
4804
+ "path": "src/components/mui-icons/toggle.ts",
4913
4805
  "declarations": [
4914
4806
  {
4915
4807
  "kind": "class",
4916
- "name": "MuiIconRightChevron",
4808
+ "description": "Transitions between two slotted icons to communicate an active or expanded state.",
4809
+ "name": "MuiIconToggle",
4917
4810
  "attributes": [
4918
4811
  {
4919
- "name": "size"
4812
+ "name": "toggle",
4813
+ "type": {
4814
+ "text": "boolean"
4815
+ },
4816
+ "default": "false",
4817
+ "description": "Displays the end icon instead of the start icon."
4920
4818
  },
4921
4819
  {
4922
- "name": "color"
4820
+ "name": "rotate",
4821
+ "type": {
4822
+ "text": "boolean"
4823
+ },
4824
+ "default": "false",
4825
+ "description": "Rotates the icon when switching state."
4826
+ },
4827
+ {
4828
+ "name": "size",
4829
+ "type": {
4830
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
4831
+ },
4832
+ "default": "medium",
4833
+ "description": "Sets the icon toggle footprint."
4923
4834
  }
4924
4835
  ],
4925
4836
  "superclass": {
4926
4837
  "name": "HTMLElement"
4927
4838
  },
4928
- "tagName": "mui-icon-right-chevron",
4929
- "customElement": true
4839
+ "tagName": "mui-icon-toggle",
4840
+ "customElement": true,
4841
+ "slots": [
4842
+ {
4843
+ "name": "start",
4844
+ "description": "Icon displayed when the toggle is inactive."
4845
+ },
4846
+ {
4847
+ "name": "end",
4848
+ "description": "Icon displayed when the toggle is active."
4849
+ }
4850
+ ],
4851
+ "events": [],
4852
+ "cssProperties": []
4930
4853
  }
4931
4854
  ],
4932
4855
  "exports": [
4933
4856
  {
4934
4857
  "kind": "custom-element-definition",
4935
- "name": "mui-icon-right-chevron",
4858
+ "name": "mui-icon-toggle",
4936
4859
  "declaration": {
4937
- "name": "MuiIconRightChevron",
4938
- "module": "src/components/mui-icons/right-chevron.ts"
4860
+ "name": "MuiIconToggle",
4861
+ "module": "src/components/mui-icons/toggle.ts"
4939
4862
  }
4940
4863
  }
4941
4864
  ]
4942
4865
  },
4943
4866
  {
4944
4867
  "kind": "javascript-module",
4945
- "path": "src/components/mui-icons/search.ts",
4868
+ "path": "src/components/mui-icons/translate.ts",
4946
4869
  "declarations": [
4947
4870
  {
4948
4871
  "kind": "class",
4949
- "name": "MuiIconSearch",
4872
+ "name": "MuiIconTranslate",
4950
4873
  "attributes": [
4951
4874
  {
4952
4875
  "name": "size"
4953
4876
  },
4954
4877
  {
4955
4878
  "name": "color"
4879
+ },
4880
+ {
4881
+ "name": "flip"
4956
4882
  }
4957
4883
  ],
4958
4884
  "superclass": {
4959
4885
  "name": "HTMLElement"
4960
4886
  },
4961
- "tagName": "mui-icon-search",
4887
+ "tagName": "mui-icon-translate",
4962
4888
  "customElement": true
4963
4889
  }
4964
4890
  ],
4965
4891
  "exports": [
4966
4892
  {
4967
4893
  "kind": "custom-element-definition",
4968
- "name": "mui-icon-search",
4894
+ "name": "mui-icon-translate",
4969
4895
  "declaration": {
4970
- "name": "MuiIconSearch",
4971
- "module": "src/components/mui-icons/search.ts"
4896
+ "name": "MuiIconTranslate",
4897
+ "module": "src/components/mui-icons/translate.ts"
4972
4898
  }
4973
4899
  }
4974
4900
  ]
4975
4901
  },
4976
4902
  {
4977
4903
  "kind": "javascript-module",
4978
- "path": "src/components/mui-icons/spinner.ts",
4904
+ "path": "src/components/mui-icons/up-arrow.ts",
4979
4905
  "declarations": [
4980
4906
  {
4981
4907
  "kind": "class",
4982
- "name": "MuiIconSpinner",
4908
+ "name": "MuiIconUpArrow",
4983
4909
  "attributes": [
4984
4910
  {
4985
4911
  "name": "size"
@@ -4991,28 +4917,28 @@
4991
4917
  "superclass": {
4992
4918
  "name": "HTMLElement"
4993
4919
  },
4994
- "tagName": "mui-icon-spinner",
4920
+ "tagName": "mui-icon-up-arrow",
4995
4921
  "customElement": true
4996
4922
  }
4997
4923
  ],
4998
4924
  "exports": [
4999
4925
  {
5000
4926
  "kind": "custom-element-definition",
5001
- "name": "mui-icon-spinner",
4927
+ "name": "mui-icon-up-arrow",
5002
4928
  "declaration": {
5003
- "name": "MuiIconSpinner",
5004
- "module": "src/components/mui-icons/spinner.ts"
4929
+ "name": "MuiIconUpArrow",
4930
+ "module": "src/components/mui-icons/up-arrow.ts"
5005
4931
  }
5006
4932
  }
5007
4933
  ]
5008
4934
  },
5009
4935
  {
5010
4936
  "kind": "javascript-module",
5011
- "path": "src/components/mui-icons/stop.ts",
4937
+ "path": "src/components/mui-icons/up-chevron.ts",
5012
4938
  "declarations": [
5013
4939
  {
5014
4940
  "kind": "class",
5015
- "name": "MuiIconStop",
4941
+ "name": "MuiIconUpChevron",
5016
4942
  "attributes": [
5017
4943
  {
5018
4944
  "name": "size"
@@ -5024,28 +4950,28 @@
5024
4950
  "superclass": {
5025
4951
  "name": "HTMLElement"
5026
4952
  },
5027
- "tagName": "mui-icon-stop",
4953
+ "tagName": "mui-icon-up-chevron",
5028
4954
  "customElement": true
5029
4955
  }
5030
4956
  ],
5031
4957
  "exports": [
5032
4958
  {
5033
4959
  "kind": "custom-element-definition",
5034
- "name": "mui-icon-stop",
4960
+ "name": "mui-icon-up-chevron",
5035
4961
  "declaration": {
5036
- "name": "MuiIconStop",
5037
- "module": "src/components/mui-icons/stop.ts"
4962
+ "name": "MuiIconUpChevron",
4963
+ "module": "src/components/mui-icons/up-chevron.ts"
5038
4964
  }
5039
4965
  }
5040
4966
  ]
5041
4967
  },
5042
4968
  {
5043
4969
  "kind": "javascript-module",
5044
- "path": "src/components/mui-icons/subtract.ts",
4970
+ "path": "src/components/mui-icons/warning.ts",
5045
4971
  "declarations": [
5046
4972
  {
5047
4973
  "kind": "class",
5048
- "name": "MuiIconSubtract",
4974
+ "name": "MuiIconWarning",
5049
4975
  "attributes": [
5050
4976
  {
5051
4977
  "name": "size"
@@ -5057,282 +4983,356 @@
5057
4983
  "superclass": {
5058
4984
  "name": "HTMLElement"
5059
4985
  },
5060
- "tagName": "mui-icon-subtract",
4986
+ "tagName": "mui-icon-warning",
5061
4987
  "customElement": true
5062
4988
  }
5063
4989
  ],
5064
4990
  "exports": [
5065
4991
  {
5066
4992
  "kind": "custom-element-definition",
5067
- "name": "mui-icon-subtract",
4993
+ "name": "mui-icon-warning",
5068
4994
  "declaration": {
5069
- "name": "MuiIconSubtract",
5070
- "module": "src/components/mui-icons/subtract.ts"
4995
+ "name": "MuiIconWarning",
4996
+ "module": "src/components/mui-icons/warning.ts"
5071
4997
  }
5072
4998
  }
5073
4999
  ]
5074
5000
  },
5075
5001
  {
5076
5002
  "kind": "javascript-module",
5077
- "path": "src/components/mui-icons/sun.ts",
5003
+ "path": "src/components/mui-image/doc.ts",
5004
+ "declarations": [
5005
+ {
5006
+ "kind": "variable",
5007
+ "name": "muiDocs",
5008
+ "type": {
5009
+ "text": "MuiDocs"
5010
+ },
5011
+ "default": "{ Image: { title: \"Image\", description: \"Displays an image alongside an optional caption to provide context, explanation, or attribution. Useful for supporting content visually while maintaining clarity through descriptive labelling.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/14eozXMPlzipgAfqaIR2Py/4e211990a30b4a08549deccfd30c71a9/Image_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4194&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-image--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-image/index.ts\"], website: [\"\"], guides: [\"https://guides.muibook.com/image\"], usage: { list: [ \"Use to display images that require additional context or explanation.\", \"Use height + crop + fit=cover when you need fixed-height visual crops.\", \"Use max-height with aspect-ratio for responsive image frames that should not exceed a visual cap.\", \"Use focal-x/focal-y or position to keep important content in frame.\", \"Use zoom carefully to tighten framing without switching to background-image.\", \"Captions should clarify the relevance of the image, not repeat surrounding content.\", \"Ideal for diagrams, UI examples, or content requiring attribution.\", \"Ensure images are accessible with alt text and meaningful captions.\", ], }, accessibility: { designerList: [ \"Use meaningful alt text that describes the image’s purpose.\", \"Use alt=“” for decorative images that don’t convey information.\", \"Use the caption slot for extended context, especially for diagrams or UI patterns.\", ], engineerList: [ \"Use meaningful alt text that describes the image’s purpose.\", \"Use alt=“” for decorative images that don’t convey information.\", \"Use the caption slot for extended context, especially for diagrams or UI patterns.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/3BSbMl1cqUOB6oDmFLQjRx/193889c0f6d3da6178d51e5fff06b8ed/Image_-_Anatomy.png\", list: [\"Standard styling for a hero image.\", \"Optional caption for the image.\"], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"muibook-resource\", name: \"Muibook Resource\", description: \"The Muibook documentation site uses MUI components to compose its layout, including headings, text, lists, buttons, icons, and image components.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3LVvuYDZWRnMhxNy6GMLNd/c5074a05eacb2c22c50ea172b3567c48/Muibook-List-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
5012
+ }
5013
+ ],
5014
+ "exports": [
5015
+ {
5016
+ "kind": "js",
5017
+ "name": "muiDocs",
5018
+ "declaration": {
5019
+ "name": "muiDocs",
5020
+ "module": "src/components/mui-image/doc.ts"
5021
+ }
5022
+ }
5023
+ ]
5024
+ },
5025
+ {
5026
+ "kind": "javascript-module",
5027
+ "path": "src/components/mui-image/index.ts",
5078
5028
  "declarations": [
5079
5029
  {
5080
5030
  "kind": "class",
5081
- "name": "MuiIconSun",
5031
+ "description": "Frames a slotted image with optional cropping, focal positioning and caption content.",
5032
+ "name": "MuiImage",
5082
5033
  "attributes": [
5083
5034
  {
5084
- "name": "size"
5035
+ "name": "height",
5036
+ "type": {
5037
+ "text": "string"
5038
+ },
5039
+ "description": "Sets the rendered image container height using any valid CSS height value."
5085
5040
  },
5086
5041
  {
5087
- "name": "color"
5042
+ "name": "fit",
5043
+ "type": {
5044
+ "text": "\"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\""
5045
+ },
5046
+ "default": "contain",
5047
+ "description": "Controls how the image fits its container."
5048
+ },
5049
+ {
5050
+ "name": "crop",
5051
+ "type": {
5052
+ "text": "boolean"
5053
+ },
5054
+ "default": "false",
5055
+ "description": "Enables cropped image presentation."
5056
+ },
5057
+ {
5058
+ "name": "position",
5059
+ "type": {
5060
+ "text": "string"
5061
+ },
5062
+ "default": "center center",
5063
+ "description": "Sets the object position when a focal position is not supplied."
5064
+ },
5065
+ {
5066
+ "name": "zoom",
5067
+ "type": {
5068
+ "text": "number"
5069
+ },
5070
+ "default": "1",
5071
+ "description": "Scales the image around its focal position."
5072
+ },
5073
+ {
5074
+ "name": "focal-x",
5075
+ "type": {
5076
+ "text": "string"
5077
+ },
5078
+ "description": "Sets the horizontal focal point used for cropped images."
5079
+ },
5080
+ {
5081
+ "name": "focal-y",
5082
+ "type": {
5083
+ "text": "string"
5084
+ },
5085
+ "description": "Sets the vertical focal point used for cropped images."
5086
+ },
5087
+ {
5088
+ "name": "radius",
5089
+ "type": {
5090
+ "text": "string"
5091
+ },
5092
+ "default": "var(--radius-300)",
5093
+ "description": "Sets the frame border radius."
5094
+ },
5095
+ {
5096
+ "name": "aspect-ratio",
5097
+ "type": {
5098
+ "text": "string"
5099
+ },
5100
+ "description": "Sets the media aspect ratio using any valid CSS aspect-ratio value."
5101
+ }
5102
+ ],
5103
+ "superclass": {
5104
+ "name": "HTMLElement"
5105
+ },
5106
+ "tagName": "mui-image",
5107
+ "customElement": true,
5108
+ "slots": [
5109
+ {
5110
+ "name": "image",
5111
+ "description": "Image media, normally an `img` element."
5112
+ },
5113
+ {
5114
+ "name": "caption",
5115
+ "description": "Optional caption content, normally a `figcaption` element."
5088
5116
  }
5089
5117
  ],
5090
- "superclass": {
5091
- "name": "HTMLElement"
5092
- },
5093
- "tagName": "mui-icon-sun",
5094
- "customElement": true
5118
+ "events": [],
5119
+ "cssProperties": []
5095
5120
  }
5096
5121
  ],
5097
5122
  "exports": [
5098
5123
  {
5099
5124
  "kind": "custom-element-definition",
5100
- "name": "mui-icon-sun",
5125
+ "name": "mui-image",
5101
5126
  "declaration": {
5102
- "name": "MuiIconSun",
5103
- "module": "src/components/mui-icons/sun.ts"
5127
+ "name": "MuiImage",
5128
+ "module": "src/components/mui-image/index.ts"
5104
5129
  }
5105
5130
  }
5106
5131
  ]
5107
5132
  },
5108
5133
  {
5109
5134
  "kind": "javascript-module",
5110
- "path": "src/components/mui-icons/text-below-folder.ts",
5135
+ "path": "src/components/mui-input/doc.ts",
5111
5136
  "declarations": [
5112
5137
  {
5113
- "kind": "class",
5114
- "name": "MuiIconTextBelowFolder",
5115
- "attributes": [
5116
- {
5117
- "name": "size"
5118
- },
5119
- {
5120
- "name": "color"
5121
- }
5122
- ],
5123
- "superclass": {
5124
- "name": "HTMLElement"
5138
+ "kind": "variable",
5139
+ "name": "muiDocs",
5140
+ "type": {
5141
+ "text": "MuiDocs"
5125
5142
  },
5126
- "tagName": "mui-icon-text-below-folder",
5127
- "customElement": true
5143
+ "default": "{ Input: { title: \"Input\", description: \"An input component for capturing user text, styled for consistency across your UI.\", hero: [\"\"], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-795&t=GMqx21isUVAMpLJp-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-input--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-input/index.ts\"], website: [\"https://muibook.com/#/input\"], guides: [\"https://guides.muibook.com/input\"], usage: { list: [ \"Ensure the purpose of the input is clear, either through a placeholder text or surrounding context.\", \"Ensure validation feedback is considered when using an input. E.g. Error text.\", \"Ensure the experience has clear focus states to support keyboard accessibility.\", \"Select the appropriate input types for the specific use case. E.g. Text, Email, Password.\", \"Use size='x-small|small|medium|large' to align inputs with surrounding form controls.\", \"Use slot='hint' for contextual overlays, including mui-hint with interactive tooltip content.\", \"Use mui-chip in before/after slots for tag-style contextual input patterns.\", \"Use placeholder text to provide context of the input use; avoid using them as primary labels.\", \"Avoid relying solely on placeholder text for instructions, as it disappears when users start typing.\", \"Use the optional attribute when a field is not required to show a clear (optional) marker in the label.\", \"Use max-length when input limits matter; the component shows a live character count.\", \"In React controlled mode, keep value updates isolated from structural attribute updates (label, type, placeholder, variant) to avoid focus loss while typing.\", ], }, accessibility: { designerList: [\"\"], engineerList: [ \"A label is required for screen reader support to describe the input's purpose.\", \"If hide-label is used, the label is visually hidden but accessible via aria-label.\", \"The label and input are linked via for and id. If no id is provided, one is generated.\", \"Clear focus styles are shown for keyboard users.\", \"The native disabled attribute is fully supported by assistive tech.\", \"Optional fields can be explicitly communicated with the optional attribute without changing label association.\", \"When max-length is set, users get visible character progress while native maxlength enforcement remains intact.\", \"For React integrations, prefer reading event.detail.value from the web component custom event instead of querying shadow DOM internals.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/5aiWlqSJ4BYCGtXn9MbGd/2734f1771c0e666806060bc85f753927/Input_-_Anatomy.png\", list: [ \"Label: Describes the purpose of the Input; required for accessibility. Can be hidden if the context is clear. Ensure the label text is still provided for developers to support screen reader access.\", \"Text: The label or placeholder text that describes the input field’s purpose.\", \"Before: Optional icons can be placed before or after the text input for additional functionality or clarity (e.g., search or password visibility icons).\", \"After: Optional icons can be placed before or after the text input for additional functionality or clarity (e.g., search or password visibility icons).\", \"Slot Before: Allows insertion of an Add-On, Select, or Button before the input to provide contextual or interactive elements. Some design craft may be needed to align elements visually in tools like Figma.\", \"Slot After: Allows insertion of an Add-On, Select, or Button after the input to support or clarify the user’s entry. Some design craft may be needed to ensure alignment and spacing look accurate in design tools.\", ], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"The standard Input with visible label and no interaction or validation states applied. Used for most form field scenarios.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5t0SMtVRHvOSHiuHZ8jLfS/64da2bbaf5d2f4216f1c876f205c1298/input-default.png\", }, { key: \"hide-label\", title: \"Hide Label\", description: \"The label is visually hidden but remains accessible to screen readers. Use when the label context is already clear from surrounding UI. Ensure the label name is documented for developers, as the component requires a label for accessibility.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4wC0xbPgmsMGi6YhMG8PnI/f01da9a977092a2da1e128fbee3325eb/input-hide-label.png\", }, { key: \"hover\", title: \"Hover\", description: \"Displays the hover state styling when a pointer is placed over the Input. Useful for demonstrating interactive feedback.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5IXEcxa2RxqubupHmblDhd/ab41eba34289194733a87994b096e95d/input-hover.png\", }, { key: \"focus\", title: \"Focus\", description: \"Shows the focus ring or border to indicate that the Input is currently active. Supports accessible keyboard navigation.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4AA4IcIdnov9MfSeY4rSdL/bbaf44297cdd4bd09d626b707dbe5f47/input-focus.png\", }, { key: \"error\", title: \"Error\", description: \"Displays a visual error style to indicate invalid input. Used with the Field component to surface validation messaging.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2LYMpJwtH7f8KfPYl0vwAg/385529402b5e73399320c9581c8e1301/input-error.png\", }, { key: \"input-field\", title: \"Input + Field\", description: \"Displays a visual error style to indicate invalid input. Used with the Field component to surface validation messaging.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/kSXvQ6D4hvuP3c9bC0ZUa/319272dc75f0b08493753a49c0fbff75/success-message.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"user-details\", name: \"User Details (Step 1)\", description: \"This composition uses an accordion to contain a step in a multi-step flow. It focuses on input fields with labels, placeholders, and optional states, keeping the layout compact and clear.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1L2XfteVwNBQcFlddTYmfi/c791eb538285e2cfb919342e84228811/accordion-block_-_Variants.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: \"Field\", link: \"https://guides.muibook.com/field\", }, { name: \"Select\", link: \"https://guides.muibook.com/select\", }, { name: \"File Upload\", link: \"https://guides.muibook.com/file-upload\", }, { name: \"Add on\", link: \"https://guides.muibook.com/add-on\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
5128
5144
  }
5129
5145
  ],
5130
5146
  "exports": [
5131
5147
  {
5132
- "kind": "custom-element-definition",
5133
- "name": "mui-icon-text-below-folder",
5148
+ "kind": "js",
5149
+ "name": "muiDocs",
5134
5150
  "declaration": {
5135
- "name": "MuiIconTextBelowFolder",
5136
- "module": "src/components/mui-icons/text-below-folder.ts"
5151
+ "name": "muiDocs",
5152
+ "module": "src/components/mui-input/doc.ts"
5137
5153
  }
5138
5154
  }
5139
5155
  ]
5140
5156
  },
5141
5157
  {
5142
5158
  "kind": "javascript-module",
5143
- "path": "src/components/mui-icons/toggle.ts",
5159
+ "path": "src/components/mui-input/index.ts",
5144
5160
  "declarations": [
5145
5161
  {
5146
5162
  "kind": "class",
5147
- "description": "Transitions between two slotted icons to communicate an active or expanded state.",
5148
- "name": "MuiIconToggle",
5163
+ "description": "Captures a single text-like form value with label, validation state and composable affordance slots.",
5164
+ "name": "MuiInput",
5165
+ "events": [
5166
+ {
5167
+ "name": "change",
5168
+ "type": {
5169
+ "text": "CustomEvent"
5170
+ },
5171
+ "description": "Dispatched when the native input change event occurs with `detail.value`."
5172
+ },
5173
+ {
5174
+ "name": "input",
5175
+ "type": {
5176
+ "text": "CustomEvent"
5177
+ },
5178
+ "description": "Dispatched during value entry with `detail.value`."
5179
+ }
5180
+ ],
5149
5181
  "attributes": [
5150
5182
  {
5151
- "name": "toggle",
5183
+ "name": "type",
5184
+ "type": {
5185
+ "text": "\"text\" | \"password\" | \"email\" | \"number\" | \"search\" | \"tel\" | \"url\" | \"date\" | \"time\" | \"datetime-local\" | \"month\" | \"week\""
5186
+ },
5187
+ "default": "text",
5188
+ "description": "Native input data type."
5189
+ },
5190
+ {
5191
+ "name": "name",
5192
+ "type": {
5193
+ "text": "string"
5194
+ },
5195
+ "description": "Form field name."
5196
+ },
5197
+ {
5198
+ "name": "value",
5199
+ "type": {
5200
+ "text": "string"
5201
+ },
5202
+ "default": "",
5203
+ "description": "Current input value."
5204
+ },
5205
+ {
5206
+ "name": "placeholder",
5207
+ "type": {
5208
+ "text": "string"
5209
+ },
5210
+ "description": "Hint displayed when no value is entered."
5211
+ },
5212
+ {
5213
+ "name": "id",
5214
+ "type": {
5215
+ "text": "string"
5216
+ },
5217
+ "description": "Input identifier used to associate the visible label."
5218
+ },
5219
+ {
5220
+ "name": "label",
5221
+ "type": {
5222
+ "text": "string"
5223
+ },
5224
+ "description": "Accessible input label. Required for labelled form usage."
5225
+ },
5226
+ {
5227
+ "name": "disabled",
5152
5228
  "type": {
5153
5229
  "text": "boolean"
5154
5230
  },
5155
5231
  "default": "false",
5156
- "description": "Displays the end icon instead of the start icon."
5232
+ "description": "Disables input interaction."
5157
5233
  },
5158
5234
  {
5159
- "name": "rotate",
5235
+ "name": "hide-label",
5160
5236
  "type": {
5161
5237
  "text": "boolean"
5162
5238
  },
5163
5239
  "default": "false",
5164
- "description": "Rotates the icon when switching state."
5240
+ "description": "Visually hides the supplied label while preserving it as the accessible name."
5241
+ },
5242
+ {
5243
+ "name": "variant",
5244
+ "type": {
5245
+ "text": "\"default\" | \"success\" | \"warning\" | \"error\""
5246
+ },
5247
+ "default": "default",
5248
+ "description": "Visual validation state."
5249
+ },
5250
+ {
5251
+ "name": "optional",
5252
+ "type": {
5253
+ "text": "boolean"
5254
+ },
5255
+ "default": "false",
5256
+ "description": "Displays an optional marker beside the label."
5257
+ },
5258
+ {
5259
+ "name": "max-length",
5260
+ "type": {
5261
+ "text": "number | string"
5262
+ },
5263
+ "description": "Maximum character length. Providing it displays a live count."
5165
5264
  },
5166
5265
  {
5167
5266
  "name": "size",
5168
5267
  "type": {
5169
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
5268
+ "text": "\"x-small\" | \"small\" | \"medium\" | \"large\""
5170
5269
  },
5171
5270
  "default": "medium",
5172
- "description": "Sets the icon toggle footprint."
5271
+ "description": "Input and slotted affordance size scale."
5272
+ },
5273
+ {
5274
+ "name": "slot-layout",
5275
+ "type": {
5276
+ "text": "\"inline\" | \"stack-mobile\""
5277
+ },
5278
+ "default": "inline",
5279
+ "description": "Arranges external before and after slots inline or stacked around the input."
5173
5280
  }
5174
5281
  ],
5175
5282
  "superclass": {
5176
5283
  "name": "HTMLElement"
5177
5284
  },
5178
- "tagName": "mui-icon-toggle",
5285
+ "tagName": "mui-input",
5179
5286
  "customElement": true,
5180
5287
  "slots": [
5181
5288
  {
5182
- "name": "start",
5183
- "description": "Icon displayed when the toggle is inactive."
5289
+ "name": "before",
5290
+ "description": "Flush leading control, such as `mui-addon`, `mui-select`, `mui-button` or `mui-chip`."
5184
5291
  },
5185
5292
  {
5186
- "name": "end",
5187
- "description": "Icon displayed when the toggle is active."
5188
- }
5189
- ],
5190
- "events": [],
5191
- "cssProperties": []
5192
- }
5193
- ],
5194
- "exports": [
5195
- {
5196
- "kind": "custom-element-definition",
5197
- "name": "mui-icon-toggle",
5198
- "declaration": {
5199
- "name": "MuiIconToggle",
5200
- "module": "src/components/mui-icons/toggle.ts"
5201
- }
5202
- }
5203
- ]
5204
- },
5205
- {
5206
- "kind": "javascript-module",
5207
- "path": "src/components/mui-icons/translate.ts",
5208
- "declarations": [
5209
- {
5210
- "kind": "class",
5211
- "name": "MuiIconTranslate",
5212
- "attributes": [
5213
- {
5214
- "name": "size"
5293
+ "name": "after",
5294
+ "description": "Flush trailing control, such as `mui-addon`, `mui-select`, `mui-button` or `mui-chip`."
5215
5295
  },
5216
5296
  {
5217
- "name": "color"
5297
+ "name": "inside-before",
5298
+ "description": "Leading content displayed inside the input edge, such as an icon or badge."
5218
5299
  },
5219
5300
  {
5220
- "name": "flip"
5221
- }
5222
- ],
5223
- "superclass": {
5224
- "name": "HTMLElement"
5225
- },
5226
- "tagName": "mui-icon-translate",
5227
- "customElement": true
5228
- }
5229
- ],
5230
- "exports": [
5231
- {
5232
- "kind": "custom-element-definition",
5233
- "name": "mui-icon-translate",
5234
- "declaration": {
5235
- "name": "MuiIconTranslate",
5236
- "module": "src/components/mui-icons/translate.ts"
5237
- }
5238
- }
5239
- ]
5240
- },
5241
- {
5242
- "kind": "javascript-module",
5243
- "path": "src/components/mui-icons/up-arrow.ts",
5244
- "declarations": [
5245
- {
5246
- "kind": "class",
5247
- "name": "MuiIconUpArrow",
5248
- "attributes": [
5249
- {
5250
- "name": "size"
5301
+ "name": "inside-after",
5302
+ "description": "Trailing content displayed inside the input edge, such as an icon or badge."
5251
5303
  },
5252
5304
  {
5253
- "name": "color"
5305
+ "name": "hint",
5306
+ "description": "Contextual hint content displayed inside the trailing input affordance area."
5254
5307
  }
5255
- ],
5256
- "superclass": {
5257
- "name": "HTMLElement"
5258
- },
5259
- "tagName": "mui-icon-up-arrow",
5260
- "customElement": true
5261
- }
5262
- ],
5263
- "exports": [
5264
- {
5265
- "kind": "custom-element-definition",
5266
- "name": "mui-icon-up-arrow",
5267
- "declaration": {
5268
- "name": "MuiIconUpArrow",
5269
- "module": "src/components/mui-icons/up-arrow.ts"
5270
- }
5271
- }
5272
- ]
5273
- },
5274
- {
5275
- "kind": "javascript-module",
5276
- "path": "src/components/mui-icons/up-chevron.ts",
5277
- "declarations": [
5278
- {
5279
- "kind": "class",
5280
- "name": "MuiIconUpChevron",
5281
- "attributes": [
5308
+ ],
5309
+ "cssProperties": [
5282
5310
  {
5283
- "name": "size"
5311
+ "name": "--input-before-slot-max-width",
5312
+ "description": "Maximum width for leading external slot content."
5284
5313
  },
5285
5314
  {
5286
- "name": "color"
5287
- }
5288
- ],
5289
- "superclass": {
5290
- "name": "HTMLElement"
5291
- },
5292
- "tagName": "mui-icon-up-chevron",
5293
- "customElement": true
5294
- }
5295
- ],
5296
- "exports": [
5297
- {
5298
- "kind": "custom-element-definition",
5299
- "name": "mui-icon-up-chevron",
5300
- "declaration": {
5301
- "name": "MuiIconUpChevron",
5302
- "module": "src/components/mui-icons/up-chevron.ts"
5303
- }
5304
- }
5305
- ]
5306
- },
5307
- {
5308
- "kind": "javascript-module",
5309
- "path": "src/components/mui-icons/warning.ts",
5310
- "declarations": [
5311
- {
5312
- "kind": "class",
5313
- "name": "MuiIconWarning",
5314
- "attributes": [
5315
+ "name": "--input-after-slot-max-width",
5316
+ "description": "Maximum width for trailing external slot content."
5317
+ },
5315
5318
  {
5316
- "name": "size"
5319
+ "name": "--input-slot-wrap",
5320
+ "description": "Wrapping behaviour for external slot content."
5317
5321
  },
5318
5322
  {
5319
- "name": "color"
5323
+ "name": "--input-slot-overflow-x",
5324
+ "description": "Horizontal overflow behaviour for external slot content."
5320
5325
  }
5321
- ],
5322
- "superclass": {
5323
- "name": "HTMLElement"
5324
- },
5325
- "tagName": "mui-icon-warning",
5326
- "customElement": true
5326
+ ]
5327
5327
  }
5328
5328
  ],
5329
5329
  "exports": [
5330
5330
  {
5331
5331
  "kind": "custom-element-definition",
5332
- "name": "mui-icon-warning",
5332
+ "name": "mui-input",
5333
5333
  "declaration": {
5334
- "name": "MuiIconWarning",
5335
- "module": "src/components/mui-icons/warning.ts"
5334
+ "name": "MuiInput",
5335
+ "module": "src/components/mui-input/index.ts"
5336
5336
  }
5337
5337
  }
5338
5338
  ]
@@ -9022,96 +9022,96 @@
9022
9022
  },
9023
9023
  {
9024
9024
  "kind": "javascript-module",
9025
- "path": "src/components/mui-card/body/index.ts",
9025
+ "path": "src/components/mui-card/card/index.ts",
9026
9026
  "declarations": [
9027
9027
  {
9028
9028
  "kind": "class",
9029
- "description": "Displays the main content area of a card and adapts spacing for known layout components.",
9030
- "name": "MuiCardBody",
9029
+ "description": "Frames related content in a bordered surface and coordinates spacing with its slotted card sections.",
9030
+ "name": "MuiCard",
9031
9031
  "attributes": [
9032
9032
  {
9033
- "name": "condensed",
9033
+ "name": "footer"
9034
+ },
9035
+ {
9036
+ "name": "borderless",
9034
9037
  "type": {
9035
9038
  "text": "boolean"
9036
9039
  },
9037
9040
  "default": "false",
9038
- "description": "Removes the default body padding."
9041
+ "description": "Removes the card border."
9039
9042
  }
9040
9043
  ],
9041
9044
  "superclass": {
9042
9045
  "name": "HTMLElement"
9043
9046
  },
9044
- "tagName": "mui-card-body",
9047
+ "tagName": "mui-card",
9045
9048
  "customElement": true,
9046
9049
  "slots": [
9047
9050
  {
9048
9051
  "name": "",
9049
- "description": "Main card content, including layouts such as tables, slats, and accordions."
9052
+ "description": "Related `mui-card-header`, `mui-card-body`, and `mui-card-footer` sections."
9050
9053
  }
9051
9054
  ],
9052
9055
  "events": [],
9053
- "cssProperties": []
9056
+ "cssProperties": [
9057
+ {
9058
+ "name": "--card-radius",
9059
+ "description": "Corner radius applied to the card surface."
9060
+ }
9061
+ ]
9054
9062
  }
9055
9063
  ],
9056
9064
  "exports": [
9057
9065
  {
9058
9066
  "kind": "custom-element-definition",
9059
- "name": "mui-card-body",
9067
+ "name": "mui-card",
9060
9068
  "declaration": {
9061
- "name": "MuiCardBody",
9062
- "module": "src/components/mui-card/body/index.ts"
9069
+ "name": "MuiCard",
9070
+ "module": "src/components/mui-card/card/index.ts"
9063
9071
  }
9064
9072
  }
9065
9073
  ]
9066
9074
  },
9067
9075
  {
9068
9076
  "kind": "javascript-module",
9069
- "path": "src/components/mui-card/card/index.ts",
9077
+ "path": "src/components/mui-card/body/index.ts",
9070
9078
  "declarations": [
9071
9079
  {
9072
9080
  "kind": "class",
9073
- "description": "Frames related content in a bordered surface and coordinates spacing with its slotted card sections.",
9074
- "name": "MuiCard",
9081
+ "description": "Displays the main content area of a card and adapts spacing for known layout components.",
9082
+ "name": "MuiCardBody",
9075
9083
  "attributes": [
9076
9084
  {
9077
- "name": "footer"
9078
- },
9079
- {
9080
- "name": "borderless",
9085
+ "name": "condensed",
9081
9086
  "type": {
9082
9087
  "text": "boolean"
9083
9088
  },
9084
9089
  "default": "false",
9085
- "description": "Removes the card border."
9090
+ "description": "Removes the default body padding."
9086
9091
  }
9087
9092
  ],
9088
9093
  "superclass": {
9089
9094
  "name": "HTMLElement"
9090
9095
  },
9091
- "tagName": "mui-card",
9096
+ "tagName": "mui-card-body",
9092
9097
  "customElement": true,
9093
9098
  "slots": [
9094
9099
  {
9095
9100
  "name": "",
9096
- "description": "Related `mui-card-header`, `mui-card-body`, and `mui-card-footer` sections."
9101
+ "description": "Main card content, including layouts such as tables, slats, and accordions."
9097
9102
  }
9098
9103
  ],
9099
9104
  "events": [],
9100
- "cssProperties": [
9101
- {
9102
- "name": "--card-radius",
9103
- "description": "Corner radius applied to the card surface."
9104
- }
9105
- ]
9105
+ "cssProperties": []
9106
9106
  }
9107
9107
  ],
9108
9108
  "exports": [
9109
9109
  {
9110
9110
  "kind": "custom-element-definition",
9111
- "name": "mui-card",
9111
+ "name": "mui-card-body",
9112
9112
  "declaration": {
9113
- "name": "MuiCard",
9114
- "module": "src/components/mui-card/card/index.ts"
9113
+ "name": "MuiCardBody",
9114
+ "module": "src/components/mui-card/body/index.ts"
9115
9115
  }
9116
9116
  }
9117
9117
  ]
@@ -10128,6 +10128,66 @@
10128
10128
  }
10129
10129
  ]
10130
10130
  },
10131
+ {
10132
+ "kind": "javascript-module",
10133
+ "path": "src/components/mui-table/row/index.ts",
10134
+ "declarations": [
10135
+ {
10136
+ "kind": "class",
10137
+ "description": "Arranges table cells in a configurable column grid.",
10138
+ "name": "MuiRow",
10139
+ "attributes": [
10140
+ {
10141
+ "name": "columns",
10142
+ "type": {
10143
+ "text": "string"
10144
+ },
10145
+ "description": "Sets column sizing using any valid `grid-template-columns` value."
10146
+ },
10147
+ {
10148
+ "name": "size",
10149
+ "type": {
10150
+ "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
10151
+ },
10152
+ "default": "medium",
10153
+ "description": "Sets row cell typography and action-column sizing."
10154
+ }
10155
+ ],
10156
+ "superclass": {
10157
+ "name": "HTMLElement"
10158
+ },
10159
+ "tagName": "mui-row",
10160
+ "customElement": true,
10161
+ "slots": [
10162
+ {
10163
+ "name": "",
10164
+ "description": "Related `mui-cell` children."
10165
+ }
10166
+ ],
10167
+ "events": [],
10168
+ "cssProperties": [
10169
+ {
10170
+ "name": "--row-action-size",
10171
+ "description": "Resolved square action-cell size for the current row."
10172
+ },
10173
+ {
10174
+ "name": "--row-min-height",
10175
+ "description": "Minimum row height."
10176
+ }
10177
+ ]
10178
+ }
10179
+ ],
10180
+ "exports": [
10181
+ {
10182
+ "kind": "custom-element-definition",
10183
+ "name": "mui-row",
10184
+ "declaration": {
10185
+ "name": "MuiRow",
10186
+ "module": "src/components/mui-table/row/index.ts"
10187
+ }
10188
+ }
10189
+ ]
10190
+ },
10131
10191
  {
10132
10192
  "kind": "javascript-module",
10133
10193
  "path": "src/components/mui-table/cell/index.ts",
@@ -10190,60 +10250,35 @@
10190
10250
  },
10191
10251
  {
10192
10252
  "kind": "javascript-module",
10193
- "path": "src/components/mui-table/row/index.ts",
10253
+ "path": "src/components/mui-table/table/index.ts",
10194
10254
  "declarations": [
10195
10255
  {
10196
10256
  "kind": "class",
10197
- "description": "Arranges table cells in a configurable column grid.",
10198
- "name": "MuiRow",
10199
- "attributes": [
10200
- {
10201
- "name": "columns",
10202
- "type": {
10203
- "text": "string"
10204
- },
10205
- "description": "Sets column sizing using any valid `grid-template-columns` value."
10206
- },
10207
- {
10208
- "name": "size",
10209
- "type": {
10210
- "text": "\"xx-small\" | \"x-small\" | \"small\" | \"medium\" | \"large\""
10211
- },
10212
- "default": "medium",
10213
- "description": "Sets row cell typography and action-column sizing."
10214
- }
10215
- ],
10257
+ "description": "Groups row collections into an accessible table layout.",
10258
+ "name": "MuiTable",
10216
10259
  "superclass": {
10217
10260
  "name": "HTMLElement"
10218
10261
  },
10219
- "tagName": "mui-row",
10262
+ "tagName": "mui-table",
10220
10263
  "customElement": true,
10264
+ "attributes": [],
10221
10265
  "slots": [
10222
10266
  {
10223
10267
  "name": "",
10224
- "description": "Related `mui-cell` children."
10268
+ "description": "Related `mui-row-group` children."
10225
10269
  }
10226
10270
  ],
10227
10271
  "events": [],
10228
- "cssProperties": [
10229
- {
10230
- "name": "--row-action-size",
10231
- "description": "Resolved square action-cell size for the current row."
10232
- },
10233
- {
10234
- "name": "--row-min-height",
10235
- "description": "Minimum row height."
10236
- }
10237
- ]
10272
+ "cssProperties": []
10238
10273
  }
10239
10274
  ],
10240
10275
  "exports": [
10241
10276
  {
10242
10277
  "kind": "custom-element-definition",
10243
- "name": "mui-row",
10278
+ "name": "mui-table",
10244
10279
  "declaration": {
10245
- "name": "MuiRow",
10246
- "module": "src/components/mui-table/row/index.ts"
10280
+ "name": "MuiTable",
10281
+ "module": "src/components/mui-table/table/index.ts"
10247
10282
  }
10248
10283
  }
10249
10284
  ]
@@ -10292,41 +10327,6 @@
10292
10327
  }
10293
10328
  ]
10294
10329
  },
10295
- {
10296
- "kind": "javascript-module",
10297
- "path": "src/components/mui-table/table/index.ts",
10298
- "declarations": [
10299
- {
10300
- "kind": "class",
10301
- "description": "Groups row collections into an accessible table layout.",
10302
- "name": "MuiTable",
10303
- "superclass": {
10304
- "name": "HTMLElement"
10305
- },
10306
- "tagName": "mui-table",
10307
- "customElement": true,
10308
- "attributes": [],
10309
- "slots": [
10310
- {
10311
- "name": "",
10312
- "description": "Related `mui-row-group` children."
10313
- }
10314
- ],
10315
- "events": [],
10316
- "cssProperties": []
10317
- }
10318
- ],
10319
- "exports": [
10320
- {
10321
- "kind": "custom-element-definition",
10322
- "name": "mui-table",
10323
- "declaration": {
10324
- "name": "MuiTable",
10325
- "module": "src/components/mui-table/table/index.ts"
10326
- }
10327
- }
10328
- ]
10329
- },
10330
10330
  {
10331
10331
  "kind": "javascript-module",
10332
10332
  "path": "src/components/mui-tabs/controller/index.ts",