@muibook/components 17.0.0 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,36 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "readme": "",
4
4
  "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/components/mui-accordion/doc.ts",
8
+ "declarations": [
9
+ {
10
+ "kind": "variable",
11
+ "name": "muiDocs",
12
+ "type": {
13
+ "text": "MuiDocs"
14
+ },
15
+ "default": "{ Accordion: { title: \"Accordion\", description: \"A collapsible container used to reveal sections of related content. Useful for progressive disclosure, especially when space is limited or the content is secondary. On smaller viewports, accordions can replace tables to group and reveal related rows of data.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/1TykTEhPNTJlZdyzqAayEH/b5293336f033020bbcef964db811cdd3/Accordion_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8558&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-accordion--docs\"], website: [\"https://muibook.com/#/accordion\"], guides: [\"https://guides.muibook.com/accordion\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-accordion/index.ts\"], usage: { list: [ \"Use to progressively reveal grouped or secondary content.\", \"Can replace tables on small viewports when content is grouped by row.\", \"Ideal for mobile or narrow layouts where space is constrained.\", \"Stack, slat, or grid layouts can be used inside an accordion for custom structures.\", ], }, accessibility: { designerList: [ \"Accordion summary uses role='button' and tabindex='0' for keyboard access.\", \"Supports Enter and Space keys for toggling.\", \"aria-expanded reflects open/closed state.\", \"aria-controls links summary to detail with a unique ID.\", \"mui-heading applies semantic heading with role='heading' and aria-level.\", \"Chevron icon rotates visually and the state is conveyed via aria-expanded.\", ], engineerList: [ \"Accordion summary uses role='button' and tabindex='0' for keyboard access.\", \"Supports Enter and Space keys for toggling.\", \"aria-expanded reflects open/closed state.\", \"aria-controls links summary to detail with a unique ID.\", \"mui-heading applies semantic heading with role='heading' and aria-level.\", \"Chevron icon rotates visually and the state is conveyed via aria-expanded.\", ], }, anatomy: { list: [ \"Heading: Provides the accordion with a heading\", \"Icon: A chevron icon that indicates the state of the Accordion\", \"Detail: Define the detail content for the expanded section within the Accordion.\", ], image: \"https://images.ctfassets.net/i5uwscj4pkk2/4JgAhsxwz3YOt28fLTVgDB/b404f3407eb06e2f26a196da04f7d217/Accordion_-_Anatomy.png\", }, variants: { items: [ { key: \"accordion-block\", title: \"Accordion Block\", description: \"The block accordion is typically used within a page layout full-width to the parent container.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1L2XfteVwNBQcFlddTYmfi/c791eb538285e2cfb919342e84228811/accordion-block_-_Variants.png\", }, { key: \"accordion-inline\", title: \"Accordion Inline\", description: \"The inline accordion is typically used within a block layout as a secondary UI element to a block element.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/RMnvBLRsW3Vvq9V3yaTcW/86afba39ed0b7ffc00d0033b1b1bfd07/accordion_inline_-_Variants.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"menu-groups\", name: \"Menu Groups\", description: \"Accordions can be used in menus to collapse and expand groups of related items, helping keep navigation organized and reducing visual clutter.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/zFHrSdH3CYbZXOv8WFKkL/90cad70c32b40fca61a875263d4cc366/accordion_menu_-_composition.png\", }, { key: \"code-snippets\", name: \"Code snippets\", description: \"An accordion in a card footer allows code snippets or supporting details to be revealed on demand, keeping the card compact while still providing access to additional information.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7FKVgkCxv3UenOQTC9Tr4R/25c357aceea16b169c48775d7363df1d/accordion_card_footer_-_composition.png\", }, { key: \"account-activity\", name: \"Account Activity (Accordion + Card)\", description: \"Accordions can split account activity into segments, such as by year, with the ability to expand each section for detailed transactions. This makes large sets of data easier to scan and navigate.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4PEUUHgxpuDM6nDgdGOotY/bf078e07bc3fbabf07f03b99800e5306/accordion_card_body_-_composition.png\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [ { description: \"\", image: \"\" }, { description: \"\", image: \"\" }, ], dontContent: [{ description: \"\" }, { description: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, related: { items: [ { name: \"Card\", link: \"https://guides.muibook.com/card\" }, { name: \"Slat\", link: \"https://guides.muibook.com/slat\" }, ], }, }, }"
16
+ }
17
+ ],
18
+ "exports": [
19
+ {
20
+ "kind": "js",
21
+ "name": "muiDocs",
22
+ "declaration": {
23
+ "name": "muiDocs",
24
+ "module": "src/components/mui-accordion/doc.ts"
25
+ }
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ "kind": "javascript-module",
31
+ "path": "src/components/mui-accordion/index.ts",
32
+ "declarations": [],
33
+ "exports": []
34
+ },
5
35
  {
6
36
  "kind": "javascript-module",
7
37
  "path": "src/components/mui-addon/doc.ts",
@@ -71,36 +101,6 @@
71
101
  }
72
102
  ]
73
103
  },
74
- {
75
- "kind": "javascript-module",
76
- "path": "src/components/mui-accordion/doc.ts",
77
- "declarations": [
78
- {
79
- "kind": "variable",
80
- "name": "muiDocs",
81
- "type": {
82
- "text": "MuiDocs"
83
- },
84
- "default": "{ Accordion: { title: \"Accordion\", description: \"A collapsible container used to reveal sections of related content. Useful for progressive disclosure, especially when space is limited or the content is secondary. On smaller viewports, accordions can replace tables to group and reveal related rows of data.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/1TykTEhPNTJlZdyzqAayEH/b5293336f033020bbcef964db811cdd3/Accordion_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8558&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-accordion--docs\"], website: [\"https://muibook.com/#/accordion\"], guides: [\"https://guides.muibook.com/accordion\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-accordion/index.ts\"], usage: { list: [ \"Use to progressively reveal grouped or secondary content.\", \"Can replace tables on small viewports when content is grouped by row.\", \"Ideal for mobile or narrow layouts where space is constrained.\", \"Stack, slat, or grid layouts can be used inside an accordion for custom structures.\", ], }, accessibility: { designerList: [ \"Accordion summary uses role='button' and tabindex='0' for keyboard access.\", \"Supports Enter and Space keys for toggling.\", \"aria-expanded reflects open/closed state.\", \"aria-controls links summary to detail with a unique ID.\", \"mui-heading applies semantic heading with role='heading' and aria-level.\", \"Chevron icon rotates visually and the state is conveyed via aria-expanded.\", ], engineerList: [ \"Accordion summary uses role='button' and tabindex='0' for keyboard access.\", \"Supports Enter and Space keys for toggling.\", \"aria-expanded reflects open/closed state.\", \"aria-controls links summary to detail with a unique ID.\", \"mui-heading applies semantic heading with role='heading' and aria-level.\", \"Chevron icon rotates visually and the state is conveyed via aria-expanded.\", ], }, anatomy: { list: [ \"Heading: Provides the accordion with a heading\", \"Icon: A chevron icon that indicates the state of the Accordion\", \"Detail: Define the detail content for the expanded section within the Accordion.\", ], image: \"https://images.ctfassets.net/i5uwscj4pkk2/4JgAhsxwz3YOt28fLTVgDB/b404f3407eb06e2f26a196da04f7d217/Accordion_-_Anatomy.png\", }, variants: { items: [ { key: \"accordion-block\", title: \"Accordion Block\", description: \"The block accordion is typically used within a page layout full-width to the parent container.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1L2XfteVwNBQcFlddTYmfi/c791eb538285e2cfb919342e84228811/accordion-block_-_Variants.png\", }, { key: \"accordion-inline\", title: \"Accordion Inline\", description: \"The inline accordion is typically used within a block layout as a secondary UI element to a block element.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/RMnvBLRsW3Vvq9V3yaTcW/86afba39ed0b7ffc00d0033b1b1bfd07/accordion_inline_-_Variants.png\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"menu-groups\", name: \"Menu Groups\", description: \"Accordions can be used in menus to collapse and expand groups of related items, helping keep navigation organized and reducing visual clutter.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/zFHrSdH3CYbZXOv8WFKkL/90cad70c32b40fca61a875263d4cc366/accordion_menu_-_composition.png\", }, { key: \"code-snippets\", name: \"Code snippets\", description: \"An accordion in a card footer allows code snippets or supporting details to be revealed on demand, keeping the card compact while still providing access to additional information.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/7FKVgkCxv3UenOQTC9Tr4R/25c357aceea16b169c48775d7363df1d/accordion_card_footer_-_composition.png\", }, { key: \"account-activity\", name: \"Account Activity (Accordion + Card)\", description: \"Accordions can split account activity into segments, such as by year, with the ability to expand each section for detailed transactions. This makes large sets of data easier to scan and navigate.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4PEUUHgxpuDM6nDgdGOotY/bf078e07bc3fbabf07f03b99800e5306/accordion_card_body_-_composition.png\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [ { description: \"\", image: \"\" }, { description: \"\", image: \"\" }, ], dontContent: [{ description: \"\" }, { description: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, related: { items: [ { name: \"Card\", link: \"https://guides.muibook.com/card\" }, { name: \"Slat\", link: \"https://guides.muibook.com/slat\" }, ], }, }, }"
85
- }
86
- ],
87
- "exports": [
88
- {
89
- "kind": "js",
90
- "name": "muiDocs",
91
- "declaration": {
92
- "name": "muiDocs",
93
- "module": "src/components/mui-accordion/doc.ts"
94
- }
95
- }
96
- ]
97
- },
98
- {
99
- "kind": "javascript-module",
100
- "path": "src/components/mui-accordion/index.ts",
101
- "declarations": [],
102
- "exports": []
103
- },
104
104
  {
105
105
  "kind": "javascript-module",
106
106
  "path": "src/components/mui-alert/doc.ts",
@@ -3219,145 +3219,6 @@
3219
3219
  }
3220
3220
  ]
3221
3221
  },
3222
- {
3223
- "kind": "javascript-module",
3224
- "path": "src/components/mui-input/doc.ts",
3225
- "declarations": [
3226
- {
3227
- "kind": "variable",
3228
- "name": "muiDocs",
3229
- "type": {
3230
- "text": "MuiDocs"
3231
- },
3232
- "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: [\"\"], }, }, }"
3233
- }
3234
- ],
3235
- "exports": [
3236
- {
3237
- "kind": "js",
3238
- "name": "muiDocs",
3239
- "declaration": {
3240
- "name": "muiDocs",
3241
- "module": "src/components/mui-input/doc.ts"
3242
- }
3243
- }
3244
- ]
3245
- },
3246
- {
3247
- "kind": "javascript-module",
3248
- "path": "src/components/mui-input/index.ts",
3249
- "declarations": [
3250
- {
3251
- "kind": "class",
3252
- "description": "",
3253
- "name": "MuiInput",
3254
- "members": [
3255
- {
3256
- "kind": "field",
3257
- "name": "_changeHandler",
3258
- "type": {
3259
- "text": "(e: Event) => void | undefined"
3260
- }
3261
- },
3262
- {
3263
- "kind": "method",
3264
- "name": "cleanupListeners"
3265
- },
3266
- {
3267
- "kind": "method",
3268
- "name": "setupListener"
3269
- },
3270
- {
3271
- "kind": "method",
3272
- "name": "updateCharacterCount"
3273
- },
3274
- {
3275
- "kind": "method",
3276
- "name": "updateSlottedButtons",
3277
- "return": {
3278
- "type": {
3279
- "text": "void"
3280
- }
3281
- }
3282
- },
3283
- {
3284
- "kind": "method",
3285
- "name": "render"
3286
- }
3287
- ],
3288
- "events": [
3289
- {
3290
- "name": "change",
3291
- "type": {
3292
- "text": "CustomEvent"
3293
- }
3294
- },
3295
- {
3296
- "name": "input",
3297
- "type": {
3298
- "text": "CustomEvent"
3299
- }
3300
- }
3301
- ],
3302
- "attributes": [
3303
- {
3304
- "name": "type"
3305
- },
3306
- {
3307
- "name": "name"
3308
- },
3309
- {
3310
- "name": "value"
3311
- },
3312
- {
3313
- "name": "placeholder"
3314
- },
3315
- {
3316
- "name": "id"
3317
- },
3318
- {
3319
- "name": "label"
3320
- },
3321
- {
3322
- "name": "disabled"
3323
- },
3324
- {
3325
- "name": "hide-label"
3326
- },
3327
- {
3328
- "name": "variant"
3329
- },
3330
- {
3331
- "name": "optional"
3332
- },
3333
- {
3334
- "name": "max-length"
3335
- },
3336
- {
3337
- "name": "size"
3338
- },
3339
- {
3340
- "name": "slot-layout"
3341
- }
3342
- ],
3343
- "superclass": {
3344
- "name": "HTMLElement"
3345
- },
3346
- "tagName": "mui-input",
3347
- "customElement": true
3348
- }
3349
- ],
3350
- "exports": [
3351
- {
3352
- "kind": "custom-element-definition",
3353
- "name": "mui-input",
3354
- "declaration": {
3355
- "name": "MuiInput",
3356
- "module": "src/components/mui-input/index.ts"
3357
- }
3358
- }
3359
- ]
3360
- },
3361
3222
  {
3362
3223
  "kind": "javascript-module",
3363
3224
  "path": "src/components/mui-icons/accessibility.ts",
@@ -5654,7 +5515,7 @@
5654
5515
  },
5655
5516
  {
5656
5517
  "kind": "javascript-module",
5657
- "path": "src/components/mui-link/doc.ts",
5518
+ "path": "src/components/mui-input/doc.ts",
5658
5519
  "declarations": [
5659
5520
  {
5660
5521
  "kind": "variable",
@@ -5662,7 +5523,7 @@
5662
5523
  "type": {
5663
5524
  "text": "MuiDocs"
5664
5525
  },
5665
- "default": "{ Link: { title: \"Link\", description: \"Links are used to navigate between pages or external content. They are visually distinct from surrounding text by using underlines — a familiar and accessible pattern that ensures clarity and consistency.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/7bK1593sNzW75ZoqBupCRj/0420d8ef12472208403efa48d2fe98d6/Link_-_Home_Image.png\", ], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-663&t=fSFYVey9aCoE5oQa-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/actions-link--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-link/index.ts\"], website: [\"https://muibook.com/#/link\"], guides: [\"https://guides.muibook.com/link\"], usage: { list: [ \"Use links to navigate to related content or different pages.\", \"Use for navigation only — use buttons for actions like submitting forms or changing data.\", \"Keep link text concise and descriptive. Avoid vague labels like 'Click here.'\", \"Use full sentences or phrases that clearly describe the destination.\", \"Prefer inline links within body text unless a more prominent callout is needed.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/6Rbr0KRWAiNRuPsagpreV7/2adc3626aa45ddc95ddf7d0a508c7917/Link_-_Anatomy.png\", list: [ \"LABEL: Text describing the link / link button action. Use action verbs or phrases to tell the user what will happen next, and follow the link 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 links 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 link.\", \"ICON ONLY: Use when the action is easily understood and space is limited.\", ], }, variants: { items: [ { key: \"size-large\", title: \"Size: Large\", description: \"Used when a link needs to stand out in layouts, such as hero sections or alongside large headings. If used inline, it should match the surrounding text size to maintain visual hierarchy and scale consistency. E.g. Use small size icon when it is paired with large sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/Tbxhps7s88CFzROYc0Lqs/3440df9aefca7cb9de3ce5015a3a4e82/Default_-_Large.png\", }, { key: \"size-medium\", title: \"Size: Medium (Default)\", description: \"The standard size for most link usage. Works well inline with body text or as standalone links within common page layouts. When used inline, it aligns with default body text for consistent reading flow. E.g. Use x-small size icon when it is paired with medium sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3NbinCPLEbtetN63xh18Sy/e0a0e9bbcd11a71faefc6ad1fc0e064d/Default_-_Medium.png\", }, { key: \"size-small\", title: \"Size: Small\", description: \"Ideal for dense interfaces or compact areas such as cards, side panels, or footnotes. When used inline, it should match the smaller text size to preserve a balanced visual rhythm. E.g. Use x-small size icon when it is paired with small sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4uaoT2KHM6ux4X30BxwGYo/91137cc74414f2f32b869fae59f9625d/Default_-_Small.png\", }, { key: \"size-x-small\", title: \"Size: XSmall\", description: \"Used sparingly in tight spaces like toolbars, metadata, or inline legal text. Should align with surrounding text to avoid disrupting scale and hierarchy. E.g. Use x-small size icon when it is paired with x-small sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/27dAzNJ6Q5XHVKv5ROXq36/ace1f6540b5f363624730be001bf91ce/Default_-_XSmall.png\", }, { key: \"primary\", title: \"Primary\", description: \"A high emphasis link style used for key navigation or calls to action. Visually aligned with the primary button to ensure consistency across components. When an icon is slotted into a link, it automatically inherits the link 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/7wDlLjYvZEOgP8bQ6mfOuY/51b39a09c73f93ee9291e1e053df308a/Primary.png\", }, { key: \"primary-icon-only\", title: \"Primary - IconOnly\", description: \"An icon only version of the primary link. Best used when the icon meaning is immediately clear, such as external links, arrows, or downloads. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5sEr4Bhu2mwobKt6yPO9T7/a248fc0fe630ddd7f837c256a9aac126/Primary_-_IconOnly.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"An icon only version of the primary link. Best used when the icon meaning is immediately clear, such as external links, arrows, or downloads. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1y7LN0FWjqrAQim9y289YN/2a65b13be6f42399404fb5bb68014700/Secondary.png\", }, { key: \"secondary-icon-only\", title: \"Secondary - IconOnly\", description: \"An icon only version of the secondary link. Ideal for contextual actions placed beside content or inside user interface components. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/nWMRYy5KcAqFxnrRdBXJS/d02dc2a67ae81bca02b82645c998fb9b/Secondary_-_IconOnly.png\", }, { key: \"tertiary\", title: \"Tertiary\", description: \"A subtle and low emphasis style often used inline with body text or in subdued areas of the interface. Mirrors the styling of the tertiary button for visual harmony in dense content. When an icon is slotted into a link, it automatically inherits the link 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/ydUs1pJsUgg7JBX7xpIOW/8e8cd367963506e35f39a97a8f41d616/Tertiary.png\", }, { key: \"tertiary-icon-only\", title: \"Tertiary - IconOnly\", description: \"A minimal visual style with just an icon. Best for lightweight or background interactions in compact spaces. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/79wxg2B2u21x1qAKTsFOIM/d8c1665de85c90983bbe50d3762f2298/Tertiary_-_IconOnly.png\", }, { key: \"overlay\", title: \"Overlay\", description: \"Use on layered media or tinted surfaces where link actions need contrast without heavy visual weight. Works well for controls rendered over previews and imagery.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1y7LN0FWjqrAQim9y289YN/2a65b13be6f42399404fb5bb68014700/Secondary.png\", }, { key: \"attention\", title: \"Attention\", description: \"A visually distinct style intended to highlight urgency, important information, or warnings. Styled to match the attention button, typically used in upgrade prompts or legal notices. When an icon is slotted into a link, it automatically inherits the link 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/6grNjw60gY1ShYuexn23oX/b1cd5e10f9a1f5b8e5e3df4bf4780a0a/Attention.png\", }, { key: \"attention-icon-only\", title: \"Attention - IconOnly\", description: \"An icon only variant that draws attention to critical actions or time sensitive content. Uses a small size icon.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5osepffgbQtuUmunLgCDPH/83490dc2ac0ef308a53e16e5b992efc5/Attention_-_IconOnly.png\", }, ], }, compositions: { description: \"\", items: [ { key: \"\", name: \"\", description: \"\", image: \"\", }, ], }, related: { items: [ { name: \"Button\", link: \"https://guides.muibook.com/button\", }, { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"Link vs Button\", description: \"Links and Buttons may look similar, but links are for navigating between pages or sections of your app or site, while buttons are for triggering actions.\", 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: \"Text & Icon Actions\", description: \"\", 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\", }, ], }, { 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\", }, ], }, ], behaviour: { list: [\"\"], image: \"https://images.ctfassets.net/i5uwscj4pkk2/qS1BAkfK7TDpy9rq4cdF1/d2535f48b4d2711f9dba6d056f21e3ec/Link_-_Behaviour.png\", }, writing: { list: [\"\"], }, }, }"
5526
+ "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: [\"\"], }, }, }"
5666
5527
  }
5667
5528
  ],
5668
5529
  "exports": [
@@ -5671,73 +5532,212 @@
5671
5532
  "name": "muiDocs",
5672
5533
  "declaration": {
5673
5534
  "name": "muiDocs",
5674
- "module": "src/components/mui-link/doc.ts"
5535
+ "module": "src/components/mui-input/doc.ts"
5675
5536
  }
5676
5537
  }
5677
5538
  ]
5678
5539
  },
5679
5540
  {
5680
5541
  "kind": "javascript-module",
5681
- "path": "src/components/mui-link/index.ts",
5542
+ "path": "src/components/mui-input/index.ts",
5682
5543
  "declarations": [
5683
5544
  {
5684
5545
  "kind": "class",
5685
5546
  "description": "",
5686
- "name": "MuiLink",
5547
+ "name": "MuiInput",
5687
5548
  "members": [
5549
+ {
5550
+ "kind": "field",
5551
+ "name": "_changeHandler",
5552
+ "type": {
5553
+ "text": "(e: Event) => void | undefined"
5554
+ }
5555
+ },
5688
5556
  {
5689
5557
  "kind": "method",
5690
- "name": "updateSlotState",
5691
- "privacy": "private"
5558
+ "name": "cleanupListeners"
5692
5559
  },
5693
5560
  {
5694
5561
  "kind": "method",
5695
- "name": "render"
5562
+ "name": "setupListener"
5696
5563
  },
5697
5564
  {
5698
5565
  "kind": "method",
5699
- "name": "updateAvatarSizes",
5700
- "return": {
5701
- "type": {
5702
- "text": "void"
5703
- }
5704
- },
5705
- "parameters": [
5706
- {
5707
- "name": "nodes",
5708
- "type": {
5709
- "text": "Node[]"
5710
- }
5711
- }
5712
- ]
5566
+ "name": "updateCharacterCount"
5713
5567
  },
5714
5568
  {
5715
5569
  "kind": "method",
5716
- "name": "updateIconSizes",
5570
+ "name": "updateSlottedButtons",
5717
5571
  "return": {
5718
5572
  "type": {
5719
5573
  "text": "void"
5720
5574
  }
5721
- },
5722
- "parameters": [
5723
- {
5724
- "name": "nodes",
5725
- "type": {
5726
- "text": "Node[]"
5727
- }
5728
- },
5729
- {
5730
- "name": "isIconOnly",
5731
- "type": {
5732
- "text": "boolean"
5733
- }
5734
- }
5735
- ]
5575
+ }
5736
5576
  },
5737
5577
  {
5738
5578
  "kind": "method",
5739
- "name": "updateBadgeSizes",
5740
- "return": {
5579
+ "name": "render"
5580
+ }
5581
+ ],
5582
+ "events": [
5583
+ {
5584
+ "name": "change",
5585
+ "type": {
5586
+ "text": "CustomEvent"
5587
+ }
5588
+ },
5589
+ {
5590
+ "name": "input",
5591
+ "type": {
5592
+ "text": "CustomEvent"
5593
+ }
5594
+ }
5595
+ ],
5596
+ "attributes": [
5597
+ {
5598
+ "name": "type"
5599
+ },
5600
+ {
5601
+ "name": "name"
5602
+ },
5603
+ {
5604
+ "name": "value"
5605
+ },
5606
+ {
5607
+ "name": "placeholder"
5608
+ },
5609
+ {
5610
+ "name": "id"
5611
+ },
5612
+ {
5613
+ "name": "label"
5614
+ },
5615
+ {
5616
+ "name": "disabled"
5617
+ },
5618
+ {
5619
+ "name": "hide-label"
5620
+ },
5621
+ {
5622
+ "name": "variant"
5623
+ },
5624
+ {
5625
+ "name": "optional"
5626
+ },
5627
+ {
5628
+ "name": "max-length"
5629
+ },
5630
+ {
5631
+ "name": "size"
5632
+ },
5633
+ {
5634
+ "name": "slot-layout"
5635
+ }
5636
+ ],
5637
+ "superclass": {
5638
+ "name": "HTMLElement"
5639
+ },
5640
+ "tagName": "mui-input",
5641
+ "customElement": true
5642
+ }
5643
+ ],
5644
+ "exports": [
5645
+ {
5646
+ "kind": "custom-element-definition",
5647
+ "name": "mui-input",
5648
+ "declaration": {
5649
+ "name": "MuiInput",
5650
+ "module": "src/components/mui-input/index.ts"
5651
+ }
5652
+ }
5653
+ ]
5654
+ },
5655
+ {
5656
+ "kind": "javascript-module",
5657
+ "path": "src/components/mui-link/doc.ts",
5658
+ "declarations": [
5659
+ {
5660
+ "kind": "variable",
5661
+ "name": "muiDocs",
5662
+ "type": {
5663
+ "text": "MuiDocs"
5664
+ },
5665
+ "default": "{ Link: { title: \"Link\", description: \"Links are used to navigate between pages or external content. They are visually distinct from surrounding text by using underlines — a familiar and accessible pattern that ensures clarity and consistency.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/7bK1593sNzW75ZoqBupCRj/0420d8ef12472208403efa48d2fe98d6/Link_-_Home_Image.png\", ], figma: [\"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=3-663&t=fSFYVey9aCoE5oQa-1\"], storybook: [\"https://stories.muibook.com/?path=/docs/actions-link--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-link/index.ts\"], website: [\"https://muibook.com/#/link\"], guides: [\"https://guides.muibook.com/link\"], usage: { list: [ \"Use links to navigate to related content or different pages.\", \"Use for navigation only — use buttons for actions like submitting forms or changing data.\", \"Keep link text concise and descriptive. Avoid vague labels like 'Click here.'\", \"Use full sentences or phrases that clearly describe the destination.\", \"Prefer inline links within body text unless a more prominent callout is needed.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/6Rbr0KRWAiNRuPsagpreV7/2adc3626aa45ddc95ddf7d0a508c7917/Link_-_Anatomy.png\", list: [ \"LABEL: Text describing the link / link button action. Use action verbs or phrases to tell the user what will happen next, and follow the link 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 links 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 link.\", \"ICON ONLY: Use when the action is easily understood and space is limited.\", ], }, variants: { items: [ { key: \"size-large\", title: \"Size: Large\", description: \"Used when a link needs to stand out in layouts, such as hero sections or alongside large headings. If used inline, it should match the surrounding text size to maintain visual hierarchy and scale consistency. E.g. Use small size icon when it is paired with large sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/Tbxhps7s88CFzROYc0Lqs/3440df9aefca7cb9de3ce5015a3a4e82/Default_-_Large.png\", }, { key: \"size-medium\", title: \"Size: Medium (Default)\", description: \"The standard size for most link usage. Works well inline with body text or as standalone links within common page layouts. When used inline, it aligns with default body text for consistent reading flow. E.g. Use x-small size icon when it is paired with medium sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3NbinCPLEbtetN63xh18Sy/e0a0e9bbcd11a71faefc6ad1fc0e064d/Default_-_Medium.png\", }, { key: \"size-small\", title: \"Size: Small\", description: \"Ideal for dense interfaces or compact areas such as cards, side panels, or footnotes. When used inline, it should match the smaller text size to preserve a balanced visual rhythm. E.g. Use x-small size icon when it is paired with small sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4uaoT2KHM6ux4X30BxwGYo/91137cc74414f2f32b869fae59f9625d/Default_-_Small.png\", }, { key: \"size-x-small\", title: \"Size: XSmall\", description: \"Used sparingly in tight spaces like toolbars, metadata, or inline legal text. Should align with surrounding text to avoid disrupting scale and hierarchy. E.g. Use x-small size icon when it is paired with x-small sized link.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/27dAzNJ6Q5XHVKv5ROXq36/ace1f6540b5f363624730be001bf91ce/Default_-_XSmall.png\", }, { key: \"primary\", title: \"Primary\", description: \"A high emphasis link style used for key navigation or calls to action. Visually aligned with the primary button to ensure consistency across components. When an icon is slotted into a link, it automatically inherits the link 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/7wDlLjYvZEOgP8bQ6mfOuY/51b39a09c73f93ee9291e1e053df308a/Primary.png\", }, { key: \"primary-icon-only\", title: \"Primary - IconOnly\", description: \"An icon only version of the primary link. Best used when the icon meaning is immediately clear, such as external links, arrows, or downloads. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5sEr4Bhu2mwobKt6yPO9T7/a248fc0fe630ddd7f837c256a9aac126/Primary_-_IconOnly.png\", }, { key: \"secondary\", title: \"Secondary\", description: \"An icon only version of the primary link. Best used when the icon meaning is immediately clear, such as external links, arrows, or downloads. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1y7LN0FWjqrAQim9y289YN/2a65b13be6f42399404fb5bb68014700/Secondary.png\", }, { key: \"secondary-icon-only\", title: \"Secondary - IconOnly\", description: \"An icon only version of the secondary link. Ideal for contextual actions placed beside content or inside user interface components. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/nWMRYy5KcAqFxnrRdBXJS/d02dc2a67ae81bca02b82645c998fb9b/Secondary_-_IconOnly.png\", }, { key: \"tertiary\", title: \"Tertiary\", description: \"A subtle and low emphasis style often used inline with body text or in subdued areas of the interface. Mirrors the styling of the tertiary button for visual harmony in dense content. When an icon is slotted into a link, it automatically inherits the link 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/ydUs1pJsUgg7JBX7xpIOW/8e8cd367963506e35f39a97a8f41d616/Tertiary.png\", }, { key: \"tertiary-icon-only\", title: \"Tertiary - IconOnly\", description: \"A minimal visual style with just an icon. Best for lightweight or background interactions in compact spaces. Uses a small size icon when pairing with other buttons, or medium size icon for standalone actions.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/79wxg2B2u21x1qAKTsFOIM/d8c1665de85c90983bbe50d3762f2298/Tertiary_-_IconOnly.png\", }, { key: \"overlay\", title: \"Overlay\", description: \"Use on layered media or tinted surfaces where link actions need contrast without heavy visual weight. Works well for controls rendered over previews and imagery.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1y7LN0FWjqrAQim9y289YN/2a65b13be6f42399404fb5bb68014700/Secondary.png\", }, { key: \"attention\", title: \"Attention\", description: \"A visually distinct style intended to highlight urgency, important information, or warnings. Styled to match the attention button, typically used in upgrade prompts or legal notices. When an icon is slotted into a link, it automatically inherits the link 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/6grNjw60gY1ShYuexn23oX/b1cd5e10f9a1f5b8e5e3df4bf4780a0a/Attention.png\", }, { key: \"attention-icon-only\", title: \"Attention - IconOnly\", description: \"An icon only variant that draws attention to critical actions or time sensitive content. Uses a small size icon.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/5osepffgbQtuUmunLgCDPH/83490dc2ac0ef308a53e16e5b992efc5/Attention_-_IconOnly.png\", }, ], }, compositions: { description: \"\", items: [ { key: \"\", name: \"\", description: \"\", image: \"\", }, ], }, related: { items: [ { name: \"Button\", link: \"https://guides.muibook.com/button\", }, { name: \"Icons\", link: \"https://guides.muibook.com/icons\", }, ], }, rules: [ { heading: \"Link vs Button\", description: \"Links and Buttons may look similar, but links are for navigating between pages or sections of your app or site, while buttons are for triggering actions.\", 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: \"Text & Icon Actions\", description: \"\", 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\", }, ], }, { 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\", }, ], }, ], behaviour: { list: [\"\"], image: \"https://images.ctfassets.net/i5uwscj4pkk2/qS1BAkfK7TDpy9rq4cdF1/d2535f48b4d2711f9dba6d056f21e3ec/Link_-_Behaviour.png\", }, writing: { list: [\"\"], }, }, }"
5666
+ }
5667
+ ],
5668
+ "exports": [
5669
+ {
5670
+ "kind": "js",
5671
+ "name": "muiDocs",
5672
+ "declaration": {
5673
+ "name": "muiDocs",
5674
+ "module": "src/components/mui-link/doc.ts"
5675
+ }
5676
+ }
5677
+ ]
5678
+ },
5679
+ {
5680
+ "kind": "javascript-module",
5681
+ "path": "src/components/mui-link/index.ts",
5682
+ "declarations": [
5683
+ {
5684
+ "kind": "class",
5685
+ "description": "",
5686
+ "name": "MuiLink",
5687
+ "members": [
5688
+ {
5689
+ "kind": "method",
5690
+ "name": "updateSlotState",
5691
+ "privacy": "private"
5692
+ },
5693
+ {
5694
+ "kind": "method",
5695
+ "name": "render"
5696
+ },
5697
+ {
5698
+ "kind": "method",
5699
+ "name": "updateAvatarSizes",
5700
+ "return": {
5701
+ "type": {
5702
+ "text": "void"
5703
+ }
5704
+ },
5705
+ "parameters": [
5706
+ {
5707
+ "name": "nodes",
5708
+ "type": {
5709
+ "text": "Node[]"
5710
+ }
5711
+ }
5712
+ ]
5713
+ },
5714
+ {
5715
+ "kind": "method",
5716
+ "name": "updateIconSizes",
5717
+ "return": {
5718
+ "type": {
5719
+ "text": "void"
5720
+ }
5721
+ },
5722
+ "parameters": [
5723
+ {
5724
+ "name": "nodes",
5725
+ "type": {
5726
+ "text": "Node[]"
5727
+ }
5728
+ },
5729
+ {
5730
+ "name": "isIconOnly",
5731
+ "type": {
5732
+ "text": "boolean"
5733
+ }
5734
+ }
5735
+ ]
5736
+ },
5737
+ {
5738
+ "kind": "method",
5739
+ "name": "updateBadgeSizes",
5740
+ "return": {
5741
5741
  "type": {
5742
5742
  "text": "void"
5743
5743
  }
@@ -5805,36 +5805,6 @@
5805
5805
  }
5806
5806
  ]
5807
5807
  },
5808
- {
5809
- "kind": "javascript-module",
5810
- "path": "src/components/mui-list/doc.ts",
5811
- "declarations": [
5812
- {
5813
- "kind": "variable",
5814
- "name": "muiDocs",
5815
- "type": {
5816
- "text": "MuiDocs"
5817
- },
5818
- "default": "{ List: { title: \"List\", description: \"Used to display related items in a clear, readable sequence. Lists can be ordered (numbered) to suggest priority or sequence, or unordered (bulleted) for grouped information without hierarchy.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/OSwQtL8kK29OUOG0oLMSJ/0a488efb3f6cf8f6e6faa40e124aa975/List_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8673&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-list--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-list\"], website: [\"https://muibook.com/#/list\"], guides: [\"https://guides.muibook.com/list\"], usage: { list: [ \"Use ordered lists when the order or steps matter (e.g. instructions).\", \"Use unordered lists for grouped or related items without a set order.\", \"Keep items concise and consistent in structure for scanability.\", \"void using lists for complex content — consider a table or grid instead.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, 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: [\"\"], }, }, }"
5819
- }
5820
- ],
5821
- "exports": [
5822
- {
5823
- "kind": "js",
5824
- "name": "muiDocs",
5825
- "declaration": {
5826
- "name": "muiDocs",
5827
- "module": "src/components/mui-list/doc.ts"
5828
- }
5829
- }
5830
- ]
5831
- },
5832
- {
5833
- "kind": "javascript-module",
5834
- "path": "src/components/mui-list/index.ts",
5835
- "declarations": [],
5836
- "exports": []
5837
- },
5838
5808
  {
5839
5809
  "kind": "javascript-module",
5840
5810
  "path": "src/components/mui-loader/doc.ts",
@@ -5905,6 +5875,36 @@
5905
5875
  }
5906
5876
  ]
5907
5877
  },
5878
+ {
5879
+ "kind": "javascript-module",
5880
+ "path": "src/components/mui-list/doc.ts",
5881
+ "declarations": [
5882
+ {
5883
+ "kind": "variable",
5884
+ "name": "muiDocs",
5885
+ "type": {
5886
+ "text": "MuiDocs"
5887
+ },
5888
+ "default": "{ List: { title: \"List\", description: \"Used to display related items in a clear, readable sequence. Lists can be ordered (numbered) to suggest priority or sequence, or unordered (bulleted) for grouped information without hierarchy.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/OSwQtL8kK29OUOG0oLMSJ/0a488efb3f6cf8f6e6faa40e124aa975/List_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8673&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-list--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-list\"], website: [\"https://muibook.com/#/list\"], guides: [\"https://guides.muibook.com/list\"], usage: { list: [ \"Use ordered lists when the order or steps matter (e.g. instructions).\", \"Use unordered lists for grouped or related items without a set order.\", \"Keep items concise and consistent in structure for scanability.\", \"void using lists for complex content — consider a table or grid instead.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, 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: [\"\"], }, }, }"
5889
+ }
5890
+ ],
5891
+ "exports": [
5892
+ {
5893
+ "kind": "js",
5894
+ "name": "muiDocs",
5895
+ "declaration": {
5896
+ "name": "muiDocs",
5897
+ "module": "src/components/mui-list/doc.ts"
5898
+ }
5899
+ }
5900
+ ]
5901
+ },
5902
+ {
5903
+ "kind": "javascript-module",
5904
+ "path": "src/components/mui-list/index.ts",
5905
+ "declarations": [],
5906
+ "exports": []
5907
+ },
5908
5908
  {
5909
5909
  "kind": "javascript-module",
5910
5910
  "path": "src/components/mui-markdown/doc.ts",
@@ -6365,7 +6365,7 @@
6365
6365
  },
6366
6366
  {
6367
6367
  "kind": "javascript-module",
6368
- "path": "src/components/mui-prompt/doc.ts",
6368
+ "path": "src/components/mui-progress/doc.ts",
6369
6369
  "declarations": [
6370
6370
  {
6371
6371
  "kind": "variable",
@@ -6373,7 +6373,7 @@
6373
6373
  "type": {
6374
6374
  "text": "MuiDocs"
6375
6375
  },
6376
- "default": "{ Prompt: { title: \"Prompt\", description: \"Prompt provides a reusable prompt surface with floating actions and Enter-to-submit behavior.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-prompt/index.ts\"], website: [\"https://muibook.com/#/prompt\"], guides: [\"https://guides.muibook.com/input\"], usage: { list: [ \"Use for AI/chat prompt entry surfaces with action controls.\", \"In Muibook stories, use the Interactive Prompt story at the top of the page as the primary end-to-end reference (paste/upload/context/submit).\", \"This component is extracted from composition patterns to standardize prompt behavior across experiences.\", \"Keep prompt as a controlled input in app state: write value via attribute/property and sync from input events.\", \"Use Enter submit for fast send flows; keep Shift+Enter for multiline authoring.\", \"Press Enter to submit and Shift+Enter to add a newline.\", \"Set enter-submit='false' to disable Enter submit behavior.\", \"Use slot='actions' for utility actions (attach, source, tools).\", \"Prompt includes a default submit control in actions-right; override by slotting your own actions-right control when needed.\", \"All utility actions are intended to be slotted so product teams can wire behavior from app state.\", \"A default fan trigger is included out-of-the-box for action fan behavior.\", \"Use slot='actions-right' when you need a custom submit/toggle action instead of the default.\", \"Prompt no longer renders a built-in action divider; slot your own <mui-rule slot='actions'> when needed (for example with inline margin style).\", \"Set loading to show built-in async feedback spinner beside actions-right while requests are in flight.\", \"Use loading-label to provide accessible status text for the spinner.\", \"Fan behavior derives from slotted actions by default; use fan-open when you want the fan open by default.\", \"fan-open normalizes fan behavior in composed trees by enabling fan mode when needed.\", \"Use context-mode='icon|chip' with slotted <mui-prompt-toggle> for app-driven context state.\", \"Fan spread, speed, and amplitude are fixed to system defaults; tune through component tokens/CSS where needed.\", \"Built-in preview dialog handling is enabled for prompt-preview-open events.\", \"Set preview-threshold-chars to control when pasted text is converted into preview attachments.\", \"Set preview-overflow-to-preview='false' to always paste text directly into the textarea.\", \"When internal preview dialog handling is enabled, slotted prompt previews are auto-clickable by default.\", \"Set preview-auto-clickable='false' to keep previews non-clickable unless explicitly configured.\", \"Set preview-loading to force slotted previews into loading state while async metadata resolves.\", \"Set preview-loading='auto' to mirror prompt loading state onto slotted previews.\", \"Use preview-loading-label to provide accessible loading text for preview spinners.\", \"Use error-message for direct prompt-level error feedback rendered below the input.\", \"Set debug to render built-in submit debug telemetry (status + JSON payload) below the prompt.\", \"Use slot='error' to render fully custom error content when product needs bespoke treatment.\", \"Use setError(message) and clearError() for app-driven validation and transport error handling.\", \"Use prompt-paste to ingest user clipboard payloads and convert them into prompt-preview items.\", \"Use prompt-preview-open to react to preview activation and update app-level analytics/state.\", \"For native media previews, use direct .mp4/.mp3 values so the built-in dialog opens with native media controls.\", \"Prefer system/semantic tokens for color-top-* values when theming prompt color surfaces.\", \"For React wrappers, map CustomEvent handlers to props (onSubmit, onPromptPaste, onPromptPreviewOpen, onEscape).\", \"Mark the trigger action with fan-trigger; if omitted, the first action is used.\", \"Prefer this component instead of ad hoc prompt wrappers when the same interaction model is needed.\", ], }, accessibility: { designerList: [ \"Provide clear prompt intent through nearby heading/body context; placeholder alone should not carry all instruction.\", \"Ensure action icons are understandable and consistently positioned (utility actions left, submit/state action right).\", \"Keep status text low-emphasis visually, but persistent enough to communicate send state changes.\", ], engineerList: [ \"Support keyboard parity: Enter submits, Shift+Enter adds newline.\", \"If showing send status, use an aria-live region so updates are announced to assistive tech.\", \"Do not trap focus; users must be able to tab into and out of the prompt and actions naturally.\", \"Ensure a clear placeholder or label context for prompt intent.\", \"Provide aria-label values for icon-only action buttons slotted into actions.\", \"When authoring themes, rely on public --prompt-* tokens and attributes rather than internal prompt CSS variables.\", ], }, anatomy: { image: \"\", list: [\"Prompt surface\", \"Input area\", \"Action slot\"] }, variants: { items: [{ key: \"\", title: \"\", description: \"\", image: \"\" }] }, compositions: { description: \"\", items: [] }, related: { items: [ { name: \"Input\", link: \"https://guides.muibook.com/input\" }, { name: \"Button\", link: \"https://guides.muibook.com/button\" }, ], }, rules: [ { heading: \"Pattern Rule\", description: \"Use Prompt as the shared prompt-surface primitive; keep product-specific flows in compositions.\", doContent: [ { description: \"Reuse this component when Enter submit + floating actions are expected.\", image: \"\" }, ], dontContent: [ { description: \"Do not rebuild the prompt shell in each composition with custom wrappers.\", image: \"\" }, ], }, ], behaviour: { list: [ \"Enter emits a submit event with current value.\", \"Shift+Enter inserts a newline.\", \"Pasting emits prompt-paste with detected payload metadata for consumers to store and render previews.\", \"Short text paste remains in the textarea; long text and binary paste can be converted to preview items based on threshold settings.\", \"Clicking a preview emits prompt-preview-open with normalized preview payload (badge, value, image metadata).\", \"Escape emits escape and closes fan actions when open.\", \"Error feedback supports dismiss and optional expand/collapse for long copy.\", \"Clicking content inside a slotted <mui-prompt-toggle> emits prompt-context-change and switches to context chip mode.\", \"Dismissing content marked with [context-chip] emits prompt-context-dismiss and returns to icon mode.\", \"Actions remain anchored at the prompt edge while text grows.\", \"Action behavior should be equivalent whether triggered by keyboard submit or click.\", \"When loading is set, prompt shows async spinner feedback near submit and blocks additional submits.\", ], }, writing: { list: [\"Use clear placeholder prompts that describe expected user input.\"], }, }, }"
6376
+ "default": "{ Progress: { title: \"Progress\", description: \"A Progress Bar visually represents completion status by filling a bar based on a percentage value. It gives users a clear indication of progress for a given task or process.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2NPcL7tA0zGUWFLShr66fS/23d0050dce8c8379afc6deb8e351d049/Progress_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4161&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-progress--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-progress/index.ts\"], website: [\"https://muibook.com/#/progress\"], guides: [\"https://guides.muibook.com/progress\"], usage: { list: [ \"Show task progress Indicate how much of a task or process has been completed.\", \"Display loading states Represent the progress of a background operation, such as file uploads.\", \"Track step completion Show progress in multi-step workflows or onboarding processes.\", \"Tune visual density and motion with component tokens such as --progress-radius, --progress-syncing-width, and --progress-pending-stripe-size.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/1iPll53Pmtgjh50qYwhsgY/908da9c51dd605895bd6306290fc6bd9/Progress_-_Anatomy.png\", list: [ \"Fill (Indicator) The colored portion inside the track that represents the progress percentage.\", \"Track The background of the progress bar, providing the visual boundary for progress.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"outcome-based-roadmap\", name: \"Outcome-Based Roadmap\", description: \"Example of an Outcome-Based Roadmap page showing objectives organised into Upcoming, Doing, and Finished columns. Progress bars indicate the completion status of each task, providing a clear view of overall progress.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3w5htPtfEz7QMCH9alVcwf/de35725fb4542b891bd695b900195291/Outcomes-Progress-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
6377
6377
  }
6378
6378
  ],
6379
6379
  "exports": [
@@ -6382,42 +6382,106 @@
6382
6382
  "name": "muiDocs",
6383
6383
  "declaration": {
6384
6384
  "name": "muiDocs",
6385
- "module": "src/components/mui-prompt/doc.ts"
6385
+ "module": "src/components/mui-progress/doc.ts"
6386
6386
  }
6387
6387
  }
6388
6388
  ]
6389
6389
  },
6390
6390
  {
6391
6391
  "kind": "javascript-module",
6392
- "path": "src/components/mui-prompt/index.ts",
6392
+ "path": "src/components/mui-progress/index.ts",
6393
6393
  "declarations": [
6394
6394
  {
6395
6395
  "kind": "class",
6396
6396
  "description": "",
6397
- "name": "MuiPrompt",
6397
+ "name": "MuiProgress",
6398
6398
  "members": [
6399
6399
  {
6400
- "kind": "field",
6401
- "name": "triggerEl",
6402
- "type": {
6403
- "text": "HTMLElement | null"
6404
- },
6405
- "privacy": "private",
6406
- "default": "null"
6407
- },
6400
+ "kind": "method",
6401
+ "name": "render"
6402
+ }
6403
+ ],
6404
+ "attributes": [
6408
6405
  {
6409
- "kind": "field",
6410
- "name": "previewShellEl",
6411
- "type": {
6412
- "text": "HTMLElement | null"
6413
- },
6414
- "privacy": "private",
6415
- "default": "null"
6406
+ "name": "progress"
6416
6407
  },
6417
6408
  {
6418
- "kind": "field",
6419
- "name": "previewRowEl",
6420
- "type": {
6409
+ "name": "state"
6410
+ }
6411
+ ],
6412
+ "superclass": {
6413
+ "name": "HTMLElement"
6414
+ },
6415
+ "tagName": "mui-progress",
6416
+ "customElement": true
6417
+ }
6418
+ ],
6419
+ "exports": [
6420
+ {
6421
+ "kind": "custom-element-definition",
6422
+ "name": "mui-progress",
6423
+ "declaration": {
6424
+ "name": "MuiProgress",
6425
+ "module": "src/components/mui-progress/index.ts"
6426
+ }
6427
+ }
6428
+ ]
6429
+ },
6430
+ {
6431
+ "kind": "javascript-module",
6432
+ "path": "src/components/mui-prompt/doc.ts",
6433
+ "declarations": [
6434
+ {
6435
+ "kind": "variable",
6436
+ "name": "muiDocs",
6437
+ "type": {
6438
+ "text": "MuiDocs"
6439
+ },
6440
+ "default": "{ Prompt: { title: \"Prompt\", description: \"Prompt provides a reusable prompt surface with floating actions and Enter-to-submit behavior.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-prompt/index.ts\"], website: [\"https://muibook.com/#/prompt\"], guides: [\"https://guides.muibook.com/input\"], usage: { list: [ \"Use for AI/chat prompt entry surfaces with action controls.\", \"In Muibook stories, use the Interactive Prompt story at the top of the page as the primary end-to-end reference (paste/upload/context/submit).\", \"This component is extracted from composition patterns to standardize prompt behavior across experiences.\", \"Keep prompt as a controlled input in app state: write value via attribute/property and sync from input events.\", \"Use Enter submit for fast send flows; keep Shift+Enter for multiline authoring.\", \"Press Enter to submit and Shift+Enter to add a newline.\", \"Set enter-submit='false' to disable Enter submit behavior.\", \"Use slot='actions' for utility actions (attach, source, tools).\", \"Prompt includes a default submit control in actions-right; override by slotting your own actions-right control when needed.\", \"All utility actions are intended to be slotted so product teams can wire behavior from app state.\", \"A default fan trigger is included out-of-the-box for action fan behavior.\", \"Use slot='actions-right' when you need a custom submit/toggle action instead of the default.\", \"Prompt no longer renders a built-in action divider; slot your own <mui-rule slot='actions'> when needed (for example with inline margin style).\", \"Set loading to show built-in async feedback spinner beside actions-right while requests are in flight.\", \"Use loading-label to provide accessible status text for the spinner.\", \"Fan behavior derives from slotted actions by default; use fan-open when you want the fan open by default.\", \"fan-open normalizes fan behavior in composed trees by enabling fan mode when needed.\", \"Use context-mode='icon|chip' with slotted <mui-prompt-toggle> for app-driven context state.\", \"Fan spread, speed, and amplitude are fixed to system defaults; tune through component tokens/CSS where needed.\", \"Built-in preview dialog handling is enabled for prompt-preview-open events.\", \"Set preview-threshold-chars to control when pasted text is converted into preview attachments.\", \"Set preview-overflow-to-preview='false' to always paste text directly into the textarea.\", \"When internal preview dialog handling is enabled, slotted prompt previews are auto-clickable by default.\", \"Set preview-auto-clickable='false' to keep previews non-clickable unless explicitly configured.\", \"Set preview-loading to force slotted previews into loading state while async metadata resolves.\", \"Set preview-loading='auto' to mirror prompt loading state onto slotted previews.\", \"Use preview-loading-label to provide accessible loading text for preview spinners.\", \"Use error-message for direct prompt-level error feedback rendered below the input.\", \"Set debug to render built-in submit debug telemetry (status + JSON payload) below the prompt.\", \"Use slot='error' to render fully custom error content when product needs bespoke treatment.\", \"Use setError(message) and clearError() for app-driven validation and transport error handling.\", \"Use prompt-paste to ingest user clipboard payloads and convert them into prompt-preview items.\", \"Use prompt-preview-open to react to preview activation and update app-level analytics/state.\", \"For native media previews, use direct .mp4/.mp3 values so the built-in dialog opens with native media controls.\", \"Prefer system/semantic tokens for color-top-* values when theming prompt color surfaces.\", \"For React wrappers, map CustomEvent handlers to props (onSubmit, onPromptPaste, onPromptPreviewOpen, onEscape).\", \"Mark the trigger action with fan-trigger; if omitted, the first action is used.\", \"Prefer this component instead of ad hoc prompt wrappers when the same interaction model is needed.\", ], }, accessibility: { designerList: [ \"Provide clear prompt intent through nearby heading/body context; placeholder alone should not carry all instruction.\", \"Ensure action icons are understandable and consistently positioned (utility actions left, submit/state action right).\", \"Keep status text low-emphasis visually, but persistent enough to communicate send state changes.\", ], engineerList: [ \"Support keyboard parity: Enter submits, Shift+Enter adds newline.\", \"If showing send status, use an aria-live region so updates are announced to assistive tech.\", \"Do not trap focus; users must be able to tab into and out of the prompt and actions naturally.\", \"Ensure a clear placeholder or label context for prompt intent.\", \"Provide aria-label values for icon-only action buttons slotted into actions.\", \"When authoring themes, rely on public --prompt-* tokens and attributes rather than internal prompt CSS variables.\", ], }, anatomy: { image: \"\", list: [\"Prompt surface\", \"Input area\", \"Action slot\"] }, variants: { items: [{ key: \"\", title: \"\", description: \"\", image: \"\" }] }, compositions: { description: \"\", items: [] }, related: { items: [ { name: \"Input\", link: \"https://guides.muibook.com/input\" }, { name: \"Button\", link: \"https://guides.muibook.com/button\" }, ], }, rules: [ { heading: \"Pattern Rule\", description: \"Use Prompt as the shared prompt-surface primitive; keep product-specific flows in compositions.\", doContent: [ { description: \"Reuse this component when Enter submit + floating actions are expected.\", image: \"\" }, ], dontContent: [ { description: \"Do not rebuild the prompt shell in each composition with custom wrappers.\", image: \"\" }, ], }, ], behaviour: { list: [ \"Enter emits a submit event with current value.\", \"Shift+Enter inserts a newline.\", \"Pasting emits prompt-paste with detected payload metadata for consumers to store and render previews.\", \"Short text paste remains in the textarea; long text and binary paste can be converted to preview items based on threshold settings.\", \"Clicking a preview emits prompt-preview-open with normalized preview payload (badge, value, image metadata).\", \"Escape emits escape and closes fan actions when open.\", \"Error feedback supports dismiss and optional expand/collapse for long copy.\", \"Clicking content inside a slotted <mui-prompt-toggle> emits prompt-context-change and switches to context chip mode.\", \"Dismissing content marked with [context-chip] emits prompt-context-dismiss and returns to icon mode.\", \"Actions remain anchored at the prompt edge while text grows.\", \"Action behavior should be equivalent whether triggered by keyboard submit or click.\", \"When loading is set, prompt shows async spinner feedback near submit and blocks additional submits.\", ], }, writing: { list: [\"Use clear placeholder prompts that describe expected user input.\"], }, }, }"
6441
+ }
6442
+ ],
6443
+ "exports": [
6444
+ {
6445
+ "kind": "js",
6446
+ "name": "muiDocs",
6447
+ "declaration": {
6448
+ "name": "muiDocs",
6449
+ "module": "src/components/mui-prompt/doc.ts"
6450
+ }
6451
+ }
6452
+ ]
6453
+ },
6454
+ {
6455
+ "kind": "javascript-module",
6456
+ "path": "src/components/mui-prompt/index.ts",
6457
+ "declarations": [
6458
+ {
6459
+ "kind": "class",
6460
+ "description": "",
6461
+ "name": "MuiPrompt",
6462
+ "members": [
6463
+ {
6464
+ "kind": "field",
6465
+ "name": "triggerEl",
6466
+ "type": {
6467
+ "text": "HTMLElement | null"
6468
+ },
6469
+ "privacy": "private",
6470
+ "default": "null"
6471
+ },
6472
+ {
6473
+ "kind": "field",
6474
+ "name": "previewShellEl",
6475
+ "type": {
6476
+ "text": "HTMLElement | null"
6477
+ },
6478
+ "privacy": "private",
6479
+ "default": "null"
6480
+ },
6481
+ {
6482
+ "kind": "field",
6483
+ "name": "previewRowEl",
6484
+ "type": {
6421
6485
  "text": "HTMLElement | null"
6422
6486
  },
6423
6487
  "privacy": "private",
@@ -7065,70 +7129,6 @@
7065
7129
  }
7066
7130
  ]
7067
7131
  },
7068
- {
7069
- "kind": "javascript-module",
7070
- "path": "src/components/mui-progress/doc.ts",
7071
- "declarations": [
7072
- {
7073
- "kind": "variable",
7074
- "name": "muiDocs",
7075
- "type": {
7076
- "text": "MuiDocs"
7077
- },
7078
- "default": "{ Progress: { title: \"Progress\", description: \"A Progress Bar visually represents completion status by filling a bar based on a percentage value. It gives users a clear indication of progress for a given task or process.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/2NPcL7tA0zGUWFLShr66fS/23d0050dce8c8379afc6deb8e351d049/Progress_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4161&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/inputs-progress--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-progress/index.ts\"], website: [\"https://muibook.com/#/progress\"], guides: [\"https://guides.muibook.com/progress\"], usage: { list: [ \"Show task progress – Indicate how much of a task or process has been completed.\", \"Display loading states – Represent the progress of a background operation, such as file uploads.\", \"Track step completion – Show progress in multi-step workflows or onboarding processes.\", \"Tune visual density and motion with component tokens such as --progress-radius, --progress-syncing-width, and --progress-pending-stripe-size.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/1iPll53Pmtgjh50qYwhsgY/908da9c51dd605895bd6306290fc6bd9/Progress_-_Anatomy.png\", list: [ \"Fill (Indicator) – The colored portion inside the track that represents the progress percentage.\", \"Track – The background of the progress bar, providing the visual boundary for progress.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"outcome-based-roadmap\", name: \"Outcome-Based Roadmap\", description: \"Example of an Outcome-Based Roadmap page showing objectives organised into Upcoming, Doing, and Finished columns. Progress bars indicate the completion status of each task, providing a clear view of overall progress.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3w5htPtfEz7QMCH9alVcwf/de35725fb4542b891bd695b900195291/Outcomes-Progress-Composition.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7079
- }
7080
- ],
7081
- "exports": [
7082
- {
7083
- "kind": "js",
7084
- "name": "muiDocs",
7085
- "declaration": {
7086
- "name": "muiDocs",
7087
- "module": "src/components/mui-progress/doc.ts"
7088
- }
7089
- }
7090
- ]
7091
- },
7092
- {
7093
- "kind": "javascript-module",
7094
- "path": "src/components/mui-progress/index.ts",
7095
- "declarations": [
7096
- {
7097
- "kind": "class",
7098
- "description": "",
7099
- "name": "MuiProgress",
7100
- "members": [
7101
- {
7102
- "kind": "method",
7103
- "name": "render"
7104
- }
7105
- ],
7106
- "attributes": [
7107
- {
7108
- "name": "progress"
7109
- },
7110
- {
7111
- "name": "state"
7112
- }
7113
- ],
7114
- "superclass": {
7115
- "name": "HTMLElement"
7116
- },
7117
- "tagName": "mui-progress",
7118
- "customElement": true
7119
- }
7120
- ],
7121
- "exports": [
7122
- {
7123
- "kind": "custom-element-definition",
7124
- "name": "mui-progress",
7125
- "declaration": {
7126
- "name": "MuiProgress",
7127
- "module": "src/components/mui-progress/index.ts"
7128
- }
7129
- }
7130
- ]
7131
- },
7132
7132
  {
7133
7133
  "kind": "javascript-module",
7134
7134
  "path": "src/components/mui-prompt-message/doc.ts",
@@ -7437,56 +7437,6 @@
7437
7437
  }
7438
7438
  ]
7439
7439
  },
7440
- {
7441
- "kind": "javascript-module",
7442
- "path": "src/components/mui-quote/doc.ts",
7443
- "declarations": [
7444
- {
7445
- "kind": "variable",
7446
- "name": "muiDocs",
7447
- "type": {
7448
- "text": "MuiDocs"
7449
- },
7450
- "default": "{ Quote: { title: \"Quote\", description: \"Used to highlight a piece of text, typically a statement or excerpt, that adds emphasis or authority. Quotes help break up content and draw attention to important or inspirational messages.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/K68wChzSMiLUojTMGoDcY/9de538ad493e36cb14afa388ecadbf47/Quote_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1069-15815&t=BwezUSymTClm00wJ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-quote--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-quote/index.ts\"], website: [\"https://muibook.com/#/quote\"], guides: [\"https://guides.muibook.com/quote\"], usage: { list: [ \"Use to emphasise key statements or citations within content.\", \"Ideal for highlighting testimonials, excerpts, or impactful text.\", \"Keep quotes concise and visually distinct from body text.\", \"Avoid overusing to maintain impact and clarity.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"\", items: [ { key: \"\", name: \"\", description: \"\", image: \"\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7451
- }
7452
- ],
7453
- "exports": [
7454
- {
7455
- "kind": "js",
7456
- "name": "muiDocs",
7457
- "declaration": {
7458
- "name": "muiDocs",
7459
- "module": "src/components/mui-quote/doc.ts"
7460
- }
7461
- }
7462
- ]
7463
- },
7464
- {
7465
- "kind": "javascript-module",
7466
- "path": "src/components/mui-quote/index.ts",
7467
- "declarations": [
7468
- {
7469
- "kind": "class",
7470
- "description": "",
7471
- "name": "MuiQuote",
7472
- "superclass": {
7473
- "name": "HTMLElement"
7474
- },
7475
- "tagName": "mui-quote",
7476
- "customElement": true
7477
- }
7478
- ],
7479
- "exports": [
7480
- {
7481
- "kind": "custom-element-definition",
7482
- "name": "mui-quote",
7483
- "declaration": {
7484
- "name": "MuiQuote",
7485
- "module": "src/components/mui-quote/index.ts"
7486
- }
7487
- }
7488
- ]
7489
- },
7490
7440
  {
7491
7441
  "kind": "javascript-module",
7492
7442
  "path": "src/components/mui-prompt-toggle/index.ts",
@@ -7543,6 +7493,56 @@
7543
7493
  }
7544
7494
  ]
7545
7495
  },
7496
+ {
7497
+ "kind": "javascript-module",
7498
+ "path": "src/components/mui-quote/doc.ts",
7499
+ "declarations": [
7500
+ {
7501
+ "kind": "variable",
7502
+ "name": "muiDocs",
7503
+ "type": {
7504
+ "text": "MuiDocs"
7505
+ },
7506
+ "default": "{ Quote: { title: \"Quote\", description: \"Used to highlight a piece of text, typically a statement or excerpt, that adds emphasis or authority. Quotes help break up content and draw attention to important or inspirational messages.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/K68wChzSMiLUojTMGoDcY/9de538ad493e36cb14afa388ecadbf47/Quote_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=1069-15815&t=BwezUSymTClm00wJ-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-quote--docs\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-quote/index.ts\"], website: [\"https://muibook.com/#/quote\"], guides: [\"https://guides.muibook.com/quote\"], usage: { list: [ \"Use to emphasise key statements or citations within content.\", \"Ideal for highlighting testimonials, excerpts, or impactful text.\", \"Keep quotes concise and visually distinct from body text.\", \"Avoid overusing to maintain impact and clarity.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { image: \"\", list: [\"\"], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"\", items: [ { key: \"\", name: \"\", description: \"\", image: \"\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
7507
+ }
7508
+ ],
7509
+ "exports": [
7510
+ {
7511
+ "kind": "js",
7512
+ "name": "muiDocs",
7513
+ "declaration": {
7514
+ "name": "muiDocs",
7515
+ "module": "src/components/mui-quote/doc.ts"
7516
+ }
7517
+ }
7518
+ ]
7519
+ },
7520
+ {
7521
+ "kind": "javascript-module",
7522
+ "path": "src/components/mui-quote/index.ts",
7523
+ "declarations": [
7524
+ {
7525
+ "kind": "class",
7526
+ "description": "",
7527
+ "name": "MuiQuote",
7528
+ "superclass": {
7529
+ "name": "HTMLElement"
7530
+ },
7531
+ "tagName": "mui-quote",
7532
+ "customElement": true
7533
+ }
7534
+ ],
7535
+ "exports": [
7536
+ {
7537
+ "kind": "custom-element-definition",
7538
+ "name": "mui-quote",
7539
+ "declaration": {
7540
+ "name": "MuiQuote",
7541
+ "module": "src/components/mui-quote/index.ts"
7542
+ }
7543
+ }
7544
+ ]
7545
+ },
7546
7546
  {
7547
7547
  "kind": "javascript-module",
7548
7548
  "path": "src/components/mui-radio/doc.ts",
@@ -8354,7 +8354,7 @@
8354
8354
  "type": {
8355
8355
  "text": "MuiDocs"
8356
8356
  },
8357
- "default": "{ SlideFrame: { title: \"Slide Frame\", description: \"Slide Frame is a composable presentation surface for UI-builder workflows. It supports configurable ratio, variants, radius, image composition, and overflow handling.\", hero: [\"\"], figma: [\"\"], storybook: [\"\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-slide-frame/index.ts\"], website: [\"https://muibook.com/#/slide-frame\"], guides: [\"https://guides.muibook.com/slide-frame\"], usage: { list: [ \"Use as a presentation shell and compose page content with existing components like Stack, Grid, Card, and Media.\", \"Prefer one <mui-slide-section> per page in the default slot for scalable composition.\", \"Use ratio='16:9|4:3|1:1|3:2|9:16' (or any valid W:H string) for presentation formats.\", \"Use title for built-in header text and footer-text for built-in footer copy.\", \"Section counter is built into the footer and updates with active-section.\", \"Use slot='header-after' and slot='footer-after' for trailing actions.\", \"Use slot='header-description' for secondary lines.\", \"Use variant='default|plain' to control frame chrome.\", \"Use radius='default | none | small | medium | large' to align with your layout language.\", \"Use scroll to opt into surface scrolling when content exceeds the frame.\", \"When multiple sections exist, users can navigate with Left/Right arrows.\", \"Use section-add-request to intercept Add Section and inject app-specific section content.\", \"In present mode, press Esc to exit quickly.\", \"Use header/footer slots for frame-level controls, metadata, or actions.\", ], }, accessibility: { designerList: [\"\"], engineerList: [ \"The surface is focusable in present mode and supports keyboard section navigation with Left/Right arrows.\", \"Esc exits present mode.\", \"Use hide-counter when you need to suppress the built-in Section X/Y footer counter.\", \"Expose external controls for next/previous actions when building guided presentation flows.\", ], }, anatomy: { image: \"\", list: [\"Header Slot\", \"Surface\", \"Image Slot\", \"Default Slot Content\", \"Notes Slot\", \"Footer Slot\"], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"Standard frame with ratio and padding control.\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [], }, related: { items: [ { name: \"Stack\", link: \"https://guides.muibook.com/stack\" }, { name: \"Grid\", link: \"https://guides.muibook.com/grid\" }, { name: \"Card\", link: \"https://guides.muibook.com/card\" }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"] }, writing: { list: [\"\"] }, }, }"
8357
+ "default": "{ SlideFrame: { title: \"Slide Frame\", description: \"Slide Frame is a composable presentation surface for UI-builder workflows. It supports configurable ratio, variants, image composition, and overflow handling.\", hero: [\"\"], figma: [\"\"], storybook: [\"\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-slide-frame/index.ts\"], website: [\"https://muibook.com/#/slide-frame\"], guides: [\"https://guides.muibook.com/slide-frame\"], usage: { list: [ \"Use as a presentation shell and compose page content with existing components like Stack, Grid, Card, and Media.\", \"Prefer one <mui-slide-section> per page in the default slot for scalable composition.\", \"Use ratio='16:9|4:3|1:1|3:2|9:16' (or any valid W:H string) for presentation formats.\", \"Use title for built-in header text and footer-text for built-in footer copy.\", \"Section counter is built into the footer and updates with active-section.\", \"Use slot='header-after' and slot='footer-after' for trailing actions.\", \"Use slot='header-description' for secondary lines.\", \"Use variant='default|plain' to control frame chrome.\", \"Use scroll to opt into surface scrolling when content exceeds the frame.\", \"When multiple sections exist, users can navigate with Left/Right arrows.\", \"In present mode, press Esc to exit quickly.\", \"Use header/footer slots for frame-level controls, metadata, or actions.\", ], }, accessibility: { designerList: [\"\"], engineerList: [ \"The surface is focusable in present mode and supports keyboard section navigation with Left/Right arrows.\", \"Esc exits present mode.\", \"Expose external controls for next/previous actions when building guided presentation flows.\", ], }, anatomy: { image: \"\", list: [\"Header Slot\", \"Surface\", \"Image Slot\", \"Default Slot Content\", \"Notes Slot\", \"Footer Slot\"], }, variants: { items: [ { key: \"default\", title: \"Default\", description: \"Standard frame with ratio and padding control.\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [], }, related: { items: [ { name: \"Stack\", link: \"https://guides.muibook.com/stack\" }, { name: \"Grid\", link: \"https://guides.muibook.com/grid\" }, { name: \"Card\", link: \"https://guides.muibook.com/card\" }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"] }, writing: { list: [\"\"] }, }, }"
8358
8358
  }
8359
8359
  ],
8360
8360
  "exports": [
@@ -8570,51 +8570,20 @@
8570
8570
  },
8571
8571
  {
8572
8572
  "kind": "method",
8573
- "name": "createDefaultSection",
8574
- "privacy": "private",
8575
- "parameters": [
8576
- {
8577
- "name": "label",
8578
- "type": {
8579
- "text": "string"
8580
- }
8581
- }
8582
- ]
8583
- },
8584
- {
8585
- "kind": "method",
8586
- "name": "addSection",
8573
+ "name": "toggleNotes",
8587
8574
  "parameters": [
8588
8575
  {
8589
- "name": "content",
8576
+ "name": "force",
8590
8577
  "optional": true,
8591
8578
  "type": {
8592
- "text": "HTMLElement | string"
8579
+ "text": "boolean"
8593
8580
  }
8594
8581
  }
8595
8582
  ]
8596
8583
  },
8597
8584
  {
8598
8585
  "kind": "method",
8599
- "name": "requestAddSection",
8600
- "privacy": "private"
8601
- },
8602
- {
8603
- "kind": "method",
8604
- "name": "toggleNotes",
8605
- "parameters": [
8606
- {
8607
- "name": "force",
8608
- "optional": true,
8609
- "type": {
8610
- "text": "boolean"
8611
- }
8612
- }
8613
- ]
8614
- },
8615
- {
8616
- "kind": "method",
8617
- "name": "resolveRatio",
8586
+ "name": "resolveRatio",
8618
8587
  "privacy": "private"
8619
8588
  },
8620
8589
  {
@@ -8718,12 +8687,6 @@
8718
8687
  "text": "CustomEvent"
8719
8688
  }
8720
8689
  },
8721
- {
8722
- "name": "section-add",
8723
- "type": {
8724
- "text": "CustomEvent"
8725
- }
8726
- },
8727
8690
  {
8728
8691
  "name": "notes-toggle",
8729
8692
  "type": {
@@ -8756,9 +8719,6 @@
8756
8719
  {
8757
8720
  "name": "variant"
8758
8721
  },
8759
- {
8760
- "name": "radius"
8761
- },
8762
8722
  {
8763
8723
  "name": "title"
8764
8724
  },
@@ -8771,12 +8731,6 @@
8771
8731
  {
8772
8732
  "name": "hide-footer"
8773
8733
  },
8774
- {
8775
- "name": "hide-counter"
8776
- },
8777
- {
8778
- "name": "allow-add-section"
8779
- },
8780
8734
  {
8781
8735
  "name": "scroll"
8782
8736
  },
@@ -8928,7 +8882,7 @@
8928
8882
  },
8929
8883
  {
8930
8884
  "kind": "javascript-module",
8931
- "path": "src/components/mui-stepper/doc.ts",
8885
+ "path": "src/components/mui-spinner/doc.ts",
8932
8886
  "declarations": [
8933
8887
  {
8934
8888
  "kind": "variable",
@@ -8936,7 +8890,7 @@
8936
8890
  "type": {
8937
8891
  "text": "MuiDocs"
8938
8892
  },
8939
- "default": "{ Stepper: { title: \"Stepper\", description: \"A Stepper component visually represents a sequence of steps in a process. It helps users understand progress and navigate through multi-step workflows. This component supports both horizontal and vertical orientations.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/423YAEfIeoDzzsK9ClbTkP/485c6c4f637080247caa150afed0ef14/Stepper_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4195&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-stepper--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-stepper\"], website: [\"https://muibook.com/#/stepper\"], guides: [\"https://guides.muibook.com/stepper\"], usage: { list: [ \"Use active-step to control the current step in a multi-step flow.\", \"Use size='x-small|small|medium' to match the density of the surrounding layout.\", \"Use interactive when users should be able to click and keyboard-navigate steps.\", \"Use linear with interactive to limit forward progression to the next available step while still allowing users to move backwards.\", \"Use explicit step states (success, pending, error, disabled) for async and validation workflows.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { description: \"The stepper uses two simple styles: active and inactive. Their meaning changes based on position in the sequence, representing progress through different states.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6Y5iyISdhK7PX8d1cHJxWv/761efb630c924af42ebf8d8bd5fabfb2/Stepper_-_Anatomy.png\", list: [ \"Active / Completed / Success: Indicates the current step or a task that has been successfully finished.\", \"Pending / Error / Disabled: Communicates processing, validation failure, or temporarily unavailable steps.\", \"Upcoming: Represents a step or task that has not yet started.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"review-items-task\", name: \"Review Items Task\", description: \"A permanent drawer remains visible at all times and is typically used for core navigation or tools that support the main content. It doesn’t open or close, and is always part of the current layout or workflow.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/rHTSU9sPUdmwrmGETRLcC/fa444ff8d8a72a28e8f10537324bbca3/drawer-composition-smart-bills.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
8893
+ "default": "{ Spinner: { title: \"Spinner\", description: \"Spinner provides compact loading feedback for short async states.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-spinner/index.ts\"], website: [\"https://muibook.com/#/loader\"], guides: [\"https://guides.muibook.com/loader\"], usage: { list: [ \"Use when content is loading and progress percentage is unavailable.\", \"Use size variants (xx-small to large) to match surrounding density.\", \"Set label for assistive technology context.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"Provide a meaningful label when context is unclear.\"] }, anatomy: { image: \"\", list: [\"Animated ring\", \"Accessible label\"] }, variants: { items: [{ key: \"\", title: \"\", description: \"\", image: \"\" }] }, compositions: { description: \"\", items: [] }, related: { items: [{ name: \"Loader\", link: \"https://guides.muibook.com/loader\" }] }, rules: [{ heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }] }], behaviour: { list: [\"\"] }, writing: { list: [\"\"] }, }, }"
8940
8894
  }
8941
8895
  ],
8942
8896
  "exports": [
@@ -8945,16 +8899,56 @@
8945
8899
  "name": "muiDocs",
8946
8900
  "declaration": {
8947
8901
  "name": "muiDocs",
8948
- "module": "src/components/mui-stepper/doc.ts"
8902
+ "module": "src/components/mui-spinner/doc.ts"
8949
8903
  }
8950
8904
  }
8951
8905
  ]
8952
8906
  },
8953
8907
  {
8954
8908
  "kind": "javascript-module",
8955
- "path": "src/components/mui-stepper/index.ts",
8956
- "declarations": [],
8957
- "exports": []
8909
+ "path": "src/components/mui-spinner/index.ts",
8910
+ "declarations": [
8911
+ {
8912
+ "kind": "class",
8913
+ "description": "",
8914
+ "name": "MuiSpinner",
8915
+ "members": [
8916
+ {
8917
+ "kind": "method",
8918
+ "name": "render"
8919
+ }
8920
+ ],
8921
+ "attributes": [
8922
+ {
8923
+ "name": "size"
8924
+ },
8925
+ {
8926
+ "name": "color"
8927
+ },
8928
+ {
8929
+ "name": "duration"
8930
+ },
8931
+ {
8932
+ "name": "label"
8933
+ }
8934
+ ],
8935
+ "superclass": {
8936
+ "name": "HTMLElement"
8937
+ },
8938
+ "tagName": "mui-spinner",
8939
+ "customElement": true
8940
+ }
8941
+ ],
8942
+ "exports": [
8943
+ {
8944
+ "kind": "custom-element-definition",
8945
+ "name": "mui-spinner",
8946
+ "declaration": {
8947
+ "name": "MuiSpinner",
8948
+ "module": "src/components/mui-spinner/index.ts"
8949
+ }
8950
+ }
8951
+ ]
8958
8952
  },
8959
8953
  {
8960
8954
  "kind": "javascript-module",
@@ -8988,7 +8982,7 @@
8988
8982
  },
8989
8983
  {
8990
8984
  "kind": "javascript-module",
8991
- "path": "src/components/mui-spinner/doc.ts",
8985
+ "path": "src/components/mui-stepper/doc.ts",
8992
8986
  "declarations": [
8993
8987
  {
8994
8988
  "kind": "variable",
@@ -8996,7 +8990,7 @@
8996
8990
  "type": {
8997
8991
  "text": "MuiDocs"
8998
8992
  },
8999
- "default": "{ Spinner: { title: \"Spinner\", description: \"Spinner provides compact loading feedback for short async states.\", hero: [\"\"], figma: [\"\"], storybook: [\"https://stories.muibook.com\"], github: [\"https://github.com/michaeltrilford/muibook/blob/main/src/components/mui-spinner/index.ts\"], website: [\"https://muibook.com/#/loader\"], guides: [\"https://guides.muibook.com/loader\"], usage: { list: [ \"Use when content is loading and progress percentage is unavailable.\", \"Use size variants (xx-small to large) to match surrounding density.\", \"Set label for assistive technology context.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"Provide a meaningful label when context is unclear.\"] }, anatomy: { image: \"\", list: [\"Animated ring\", \"Accessible label\"] }, variants: { items: [{ key: \"\", title: \"\", description: \"\", image: \"\" }] }, compositions: { description: \"\", items: [] }, related: { items: [{ name: \"Loader\", link: \"https://guides.muibook.com/loader\" }] }, rules: [{ heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }] }], behaviour: { list: [\"\"] }, writing: { list: [\"\"] }, }, }"
8993
+ "default": "{ Stepper: { title: \"Stepper\", description: \"A Stepper component visually represents a sequence of steps in a process. It helps users understand progress and navigate through multi-step workflows. This component supports both horizontal and vertical orientations.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/423YAEfIeoDzzsK9ClbTkP/485c6c4f637080247caa150afed0ef14/Stepper_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=948-4195&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-stepper--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-stepper\"], website: [\"https://muibook.com/#/stepper\"], guides: [\"https://guides.muibook.com/stepper\"], usage: { list: [ \"Use active-step to control the current step in a multi-step flow.\", \"Use size='x-small|small|medium' to match the density of the surrounding layout.\", \"Use interactive when users should be able to click and keyboard-navigate steps.\", \"Use linear with interactive to limit forward progression to the next available step while still allowing users to move backwards.\", \"Use explicit step states (success, pending, error, disabled) for async and validation workflows.\", ], }, accessibility: { designerList: [\"\"], engineerList: [\"\"], }, anatomy: { description: \"The stepper uses two simple styles: active and inactive. Their meaning changes based on position in the sequence, representing progress through different states.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6Y5iyISdhK7PX8d1cHJxWv/761efb630c924af42ebf8d8bd5fabfb2/Stepper_-_Anatomy.png\", list: [ \"Active / Completed / Success: Indicates the current step or a task that has been successfully finished.\", \"Pending / Error / Disabled: Communicates processing, validation failure, or temporarily unavailable steps.\", \"Upcoming: Represents a step or task that has not yet started.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"review-items-task\", name: \"Review Items Task\", description: \"A permanent drawer remains visible at all times and is typically used for core navigation or tools that support the main content. It doesn’t open or close, and is always part of the current layout or workflow.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/rHTSU9sPUdmwrmGETRLcC/fa444ff8d8a72a28e8f10537324bbca3/drawer-composition-smart-bills.png\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9000
8994
  }
9001
8995
  ],
9002
8996
  "exports": [
@@ -9005,56 +8999,16 @@
9005
8999
  "name": "muiDocs",
9006
9000
  "declaration": {
9007
9001
  "name": "muiDocs",
9008
- "module": "src/components/mui-spinner/doc.ts"
9002
+ "module": "src/components/mui-stepper/doc.ts"
9009
9003
  }
9010
9004
  }
9011
9005
  ]
9012
9006
  },
9013
9007
  {
9014
9008
  "kind": "javascript-module",
9015
- "path": "src/components/mui-spinner/index.ts",
9016
- "declarations": [
9017
- {
9018
- "kind": "class",
9019
- "description": "",
9020
- "name": "MuiSpinner",
9021
- "members": [
9022
- {
9023
- "kind": "method",
9024
- "name": "render"
9025
- }
9026
- ],
9027
- "attributes": [
9028
- {
9029
- "name": "size"
9030
- },
9031
- {
9032
- "name": "color"
9033
- },
9034
- {
9035
- "name": "duration"
9036
- },
9037
- {
9038
- "name": "label"
9039
- }
9040
- ],
9041
- "superclass": {
9042
- "name": "HTMLElement"
9043
- },
9044
- "tagName": "mui-spinner",
9045
- "customElement": true
9046
- }
9047
- ],
9048
- "exports": [
9049
- {
9050
- "kind": "custom-element-definition",
9051
- "name": "mui-spinner",
9052
- "declaration": {
9053
- "name": "MuiSpinner",
9054
- "module": "src/components/mui-spinner/index.ts"
9055
- }
9056
- }
9057
- ]
9009
+ "path": "src/components/mui-stepper/index.ts",
9010
+ "declarations": [],
9011
+ "exports": []
9058
9012
  },
9059
9013
  {
9060
9014
  "kind": "javascript-module",
@@ -9194,7 +9148,7 @@
9194
9148
  },
9195
9149
  {
9196
9150
  "kind": "javascript-module",
9197
- "path": "src/components/mui-tabs/doc.ts",
9151
+ "path": "src/components/mui-table/doc.ts",
9198
9152
  "declarations": [
9199
9153
  {
9200
9154
  "kind": "variable",
@@ -9202,7 +9156,7 @@
9202
9156
  "type": {
9203
9157
  "text": "MuiDocs"
9204
9158
  },
9205
- "default": "{ Tabs: { title: \"Tabs\", description: \"Allows users to switch between views or content sections by selecting from a group of tabs. Tabs keep related content within a single surface, reducing the need for navigation and maintaining context.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/5EC8Uj4pMaQGe2UcNntYLX/040eb1feec8def04504dfa3729494b52/Tab_bar_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=126-560&t=ZfvVjZFxH7mQ72pi-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-tabbar--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-tabs\"], website: [\"https://muibook.com/#/tab-bar\"], guides: [\"https://guides.muibook.com/tab-bar\"], usage: { list: [ \"Use to organise related content or views at the same level of hierarchy.\", \"Ideal for toggling between sections without navigating away from the page.\", \"Use the size API (x-small, small, medium, large) to align tabs with adjacent buttons.\", \"Use named slots (before/after) to compose icons and badges in tab items.\", \"Use variant='dots' for compact pagination controls such as carousel navigation.\", \"Use variant='ghost' when you want only active-tab emphasis without outer tab bar chrome.\", \"Keep labels short, clear, and consistently styled.\", \"Avoid using when content is unrelated or exceeds a manageable number of tabs.\", ], }, accessibility: { designerList: [ \"Keyboard users can navigate across tabs using the left/right arrow keys, as well as Home and End keys to jump to the first or last tab.\", \"The active tab always shows a clear focus outline and can be navigated to using the keyboard.\", \"Tabs are grouped in a way that assistive technologies can understand, using standard roles and attributes.\", \"The system keeps track of which tab is active behind the scenes, so screen readers and keyboard users always stay in sync.\", ], engineerList: [ \"Left/Right arrows, Home and End keys let keyboard users navigate between tab-items.\", \"aria-selected and tabindex attributes are updated on each tab-item when it becomes active or inactive.\", \"Each active tab-item can receive focus and shows a focus-visible outline.\", \"tab-bar uses role=tablist to group related tab-items and each tab-item uses role=tab within the tab-bar.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/koeu63xbKYOWZgs8i0eev/983e09362714a2dcdcc7262889ba1236/Tabs_-_Anatomy.png\", list: [ \"Active: Indicates the currently selected tab.\", \"Inactive: Indicates a tab that is not selected and is waiting for user interaction.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"wallet\", name: \"Wallet\", description: \"This example shows a wallet view featuring a digital card, transaction and statement tabs. It demonstrates how foundational components like tabs, slats, and buttons can be composed to create flexible, real-world layouts.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6RoGBcahh63o16PAcEsgyX/36f5c8d9bf0e8754a574955b32ee6eda/Tab_Bar_-_Composition.png\", }, { key: \"product-carousel\", name: \"Product Carousel\", description: \"Demonstrates how to add custom compositions and layouts within the carousel panels.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4NRMfGil4AcMUh7FDhYyHz/7c4636822eba6d3ae15e684f50d10fdd/Carousel_-_Composition.png\", }, { key: \"carousel-showcase\", name: \"Carousel Showcase\", description: \"This example from the GuruSuite website demonstrates the carousel used to showcase two of the products on offer.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2TaRRm351HyujF9mT2w1wH/3958f69e939d20618751742130dc5f06/GuruSuite-Carousel-Composition.png\", }, ], }, related: { items: [ { name: \"Carousel\", link: \"https://guides.muibook.com/carousel\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9159
+ "default": "{ Table: { title: \"Table\", description: \"Displays data in a grid layout to support scanability and comparison across rows and columns. Best suited for structured, repeatable content.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/34Yd6uWrfM5Ihv4rdniHYy/9e1698ce2c23d6c74006bf3f2ae93066/Table_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8696&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-table--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-table\"], website: [\"https://muibook.com/#/table\"], guides: [\"https://guides.muibook.com/table\"], usage: { list: [ \"Use for structured content that benefits from a grid format.\", \"Ideal for comparing data across multiple rows and columns.\", \"Supports sorting, filtering, or action buttons if needed.\", \"Avoid for unstructured, visual, or narrative-based content.\", \"Tables should adapt for smaller viewports by switching to the Slat component.\", \"Prioritise key content and simplify structure when transitioning to mobile views.\", ], }, accessibility: { designerList: [ \"mui-table uses role='table'.\", \"mui-row-group uses role='rowgroup'.\", \"mui-row uses role='row'.\", \"mui-cell uses role='cell'.\", \"Follows table semantics for screen reader support.\", ], engineerList: [ \"mui-table uses role='table'.\", \"mui-row-group uses role='rowgroup'.\", \"mui-row uses role='row'.\", \"mui-cell uses role='cell'.\", \"Follows table semantics for screen reader support.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/2KHxAyGbYW7qwySwCLYrbo/0ffc98c3eef07098afaf64bebc6afd4a/Table_-_Anatomy.png\", list: [ \"Heading: The header row of the table accepts headings and other arrangements as needed.\", \"Data: The row contains standard data as well as other arrangements, such as grouped content.\", \"Actions: The main actions for each table row can be included in a dedicated column or slot.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"prop-types-table\", name: \"Prop Types Table\", description: \"Attached is a standard example demonstrating how to use the table to present general data for component prop types.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1JeUHjbeqVNgTvlVZkeHjw/7f652efbea5cc6aa436449905e2ae48e/table_-_composition.png\", }, { key: \"simple-table-dropdown\", name: \"Simple Table w/ Dropdown\", description: \"Example of a simple table with a dropdown action positioned on the far right, following the content. Demonstrates the table used within a card layout, as it might appear on a page or settings view.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3IIRPg0pdQB66NJniCZvlo/2600a8bee4ad1c79a63dc48d3032ee34/table-composition-design-pricing.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\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { 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\", }, ], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9206
9160
  }
9207
9161
  ],
9208
9162
  "exports": [
@@ -9211,20 +9165,20 @@
9211
9165
  "name": "muiDocs",
9212
9166
  "declaration": {
9213
9167
  "name": "muiDocs",
9214
- "module": "src/components/mui-tabs/doc.ts"
9168
+ "module": "src/components/mui-table/doc.ts"
9215
9169
  }
9216
9170
  }
9217
9171
  ]
9218
9172
  },
9219
9173
  {
9220
9174
  "kind": "javascript-module",
9221
- "path": "src/components/mui-tabs/index.ts",
9175
+ "path": "src/components/mui-table/index.ts",
9222
9176
  "declarations": [],
9223
9177
  "exports": []
9224
9178
  },
9225
9179
  {
9226
9180
  "kind": "javascript-module",
9227
- "path": "src/components/mui-table/doc.ts",
9181
+ "path": "src/components/mui-tabs/doc.ts",
9228
9182
  "declarations": [
9229
9183
  {
9230
9184
  "kind": "variable",
@@ -9232,7 +9186,7 @@
9232
9186
  "type": {
9233
9187
  "text": "MuiDocs"
9234
9188
  },
9235
- "default": "{ Table: { title: \"Table\", description: \"Displays data in a grid layout to support scanability and comparison across rows and columns. Best suited for structured, repeatable content.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/34Yd6uWrfM5Ihv4rdniHYy/9e1698ce2c23d6c74006bf3f2ae93066/Table_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=958-8696&t=0ytskb8cxriEmdz2-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/content-table--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-table\"], website: [\"https://muibook.com/#/table\"], guides: [\"https://guides.muibook.com/table\"], usage: { list: [ \"Use for structured content that benefits from a grid format.\", \"Ideal for comparing data across multiple rows and columns.\", \"Supports sorting, filtering, or action buttons if needed.\", \"Avoid for unstructured, visual, or narrative-based content.\", \"Tables should adapt for smaller viewports by switching to the Slat component.\", \"Prioritise key content and simplify structure when transitioning to mobile views.\", ], }, accessibility: { designerList: [ \"mui-table uses role='table'.\", \"mui-row-group uses role='rowgroup'.\", \"mui-row uses role='row'.\", \"mui-cell uses role='cell'.\", \"Follows table semantics for screen reader support.\", ], engineerList: [ \"mui-table uses role='table'.\", \"mui-row-group uses role='rowgroup'.\", \"mui-row uses role='row'.\", \"mui-cell uses role='cell'.\", \"Follows table semantics for screen reader support.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/2KHxAyGbYW7qwySwCLYrbo/0ffc98c3eef07098afaf64bebc6afd4a/Table_-_Anatomy.png\", list: [ \"Heading: The header row of the table accepts headings and other arrangements as needed.\", \"Data: The row contains standard data as well as other arrangements, such as grouped content.\", \"Actions: The main actions for each table row can be included in a dedicated column or slot.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"prop-types-table\", name: \"Prop Types Table\", description: \"Attached is a standard example demonstrating how to use the table to present general data for component prop types.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/1JeUHjbeqVNgTvlVZkeHjw/7f652efbea5cc6aa436449905e2ae48e/table_-_composition.png\", }, { key: \"simple-table-dropdown\", name: \"Simple Table w/ Dropdown\", description: \"Example of a simple table with a dropdown action positioned on the far right, following the content. Demonstrates the table used within a card layout, as it might appear on a page or settings view.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/3IIRPg0pdQB66NJniCZvlo/2600a8bee4ad1c79a63dc48d3032ee34/table-composition-design-pricing.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\", }, ], }, related: { items: [ { name: \"\", link: \"\", }, ], }, rules: [ { 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\", }, ], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9189
+ "default": "{ Tabs: { title: \"Tabs\", description: \"Allows users to switch between views or content sections by selecting from a group of tabs. Tabs keep related content within a single surface, reducing the need for navigation and maintaining context.\", hero: [ \"https://images.ctfassets.net/i5uwscj4pkk2/5EC8Uj4pMaQGe2UcNntYLX/040eb1feec8def04504dfa3729494b52/Tab_bar_-_Home_Image.png\", ], figma: [ \"https://www.figma.com/design/l0mt1lXu97XoHJCEdnrWLp/Mui-Design-System?node-id=126-560&t=ZfvVjZFxH7mQ72pi-1\", ], storybook: [\"https://stories.muibook.com/?path=/docs/navigation-tabbar--docs\"], github: [\"https://github.com/michaeltrilford/muibook/tree/main/src/components/mui-tabs\"], website: [\"https://muibook.com/#/tab-bar\"], guides: [\"https://guides.muibook.com/tab-bar\"], usage: { list: [ \"Use to organise related content or views at the same level of hierarchy.\", \"Ideal for toggling between sections without navigating away from the page.\", \"Use the size API (x-small, small, medium, large) to align tabs with adjacent buttons.\", \"Use named slots (before/after) to compose icons and badges in tab items.\", \"Use variant='dots' for compact pagination controls such as carousel navigation.\", \"Use variant='ghost' when you want only active-tab emphasis without outer tab bar chrome.\", \"Keep labels short, clear, and consistently styled.\", \"Avoid using when content is unrelated or exceeds a manageable number of tabs.\", ], }, accessibility: { designerList: [ \"Keyboard users can navigate across tabs using the left/right arrow keys, as well as Home and End keys to jump to the first or last tab.\", \"The active tab always shows a clear focus outline and can be navigated to using the keyboard.\", \"Tabs are grouped in a way that assistive technologies can understand, using standard roles and attributes.\", \"The system keeps track of which tab is active behind the scenes, so screen readers and keyboard users always stay in sync.\", ], engineerList: [ \"Left/Right arrows, Home and End keys let keyboard users navigate between tab-items.\", \"aria-selected and tabindex attributes are updated on each tab-item when it becomes active or inactive.\", \"Each active tab-item can receive focus and shows a focus-visible outline.\", \"tab-bar uses role=tablist to group related tab-items and each tab-item uses role=tab within the tab-bar.\", ], }, anatomy: { image: \"https://images.ctfassets.net/i5uwscj4pkk2/koeu63xbKYOWZgs8i0eev/983e09362714a2dcdcc7262889ba1236/Tabs_-_Anatomy.png\", list: [ \"Active: Indicates the currently selected tab.\", \"Inactive: Indicates a tab that is not selected and is waiting for user interaction.\", ], }, variants: { items: [ { key: \"\", title: \"\", description: \"\", image: \"\", }, ], }, compositions: { description: \"Showcases actual use cases, demonstrating how the component fits into real-world UI scenarios.\", items: [ { key: \"wallet\", name: \"Wallet\", description: \"This example shows a wallet view featuring a digital card, transaction and statement tabs. It demonstrates how foundational components like tabs, slats, and buttons can be composed to create flexible, real-world layouts.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/6RoGBcahh63o16PAcEsgyX/36f5c8d9bf0e8754a574955b32ee6eda/Tab_Bar_-_Composition.png\", }, { key: \"product-carousel\", name: \"Product Carousel\", description: \"Demonstrates how to add custom compositions and layouts within the carousel panels.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/4NRMfGil4AcMUh7FDhYyHz/7c4636822eba6d3ae15e684f50d10fdd/Carousel_-_Composition.png\", }, { key: \"carousel-showcase\", name: \"Carousel Showcase\", description: \"This example from the GuruSuite website demonstrates the carousel used to showcase two of the products on offer.\", image: \"https://images.ctfassets.net/i5uwscj4pkk2/2TaRRm351HyujF9mT2w1wH/3958f69e939d20618751742130dc5f06/GuruSuite-Carousel-Composition.png\", }, ], }, related: { items: [ { name: \"Carousel\", link: \"https://guides.muibook.com/carousel\", }, ], }, rules: [ { heading: \"\", description: \"\", doContent: [{ description: \"\", image: \"\" }], dontContent: [{ description: \"\", image: \"\" }], }, ], behaviour: { list: [\"\"], }, writing: { list: [\"\"], }, }, }"
9236
9190
  }
9237
9191
  ],
9238
9192
  "exports": [
@@ -9241,14 +9195,14 @@
9241
9195
  "name": "muiDocs",
9242
9196
  "declaration": {
9243
9197
  "name": "muiDocs",
9244
- "module": "src/components/mui-table/doc.ts"
9198
+ "module": "src/components/mui-tabs/doc.ts"
9245
9199
  }
9246
9200
  }
9247
9201
  ]
9248
9202
  },
9249
9203
  {
9250
9204
  "kind": "javascript-module",
9251
- "path": "src/components/mui-table/index.ts",
9205
+ "path": "src/components/mui-tabs/index.ts",
9252
9206
  "declarations": [],
9253
9207
  "exports": []
9254
9208
  },
@@ -9788,48 +9742,6 @@
9788
9742
  }
9789
9743
  ]
9790
9744
  },
9791
- {
9792
- "kind": "javascript-module",
9793
- "path": "src/components/mui-carousel/panel/index.ts",
9794
- "declarations": [
9795
- {
9796
- "kind": "class",
9797
- "description": "",
9798
- "name": "MuiCarouselPanel",
9799
- "members": [
9800
- {
9801
- "kind": "field",
9802
- "name": "item"
9803
- },
9804
- {
9805
- "kind": "field",
9806
- "name": "innerHTML",
9807
- "default": "` <style> :host { display: block; box-sizing: border-box; overflow: hidden; } </style> <slot></slot> `"
9808
- }
9809
- ],
9810
- "attributes": [
9811
- {
9812
- "name": "item"
9813
- }
9814
- ],
9815
- "superclass": {
9816
- "name": "HTMLElement"
9817
- },
9818
- "tagName": "mui-carousel-panel",
9819
- "customElement": true
9820
- }
9821
- ],
9822
- "exports": [
9823
- {
9824
- "kind": "custom-element-definition",
9825
- "name": "mui-carousel-panel",
9826
- "declaration": {
9827
- "name": "MuiCarouselPanel",
9828
- "module": "src/components/mui-carousel/panel/index.ts"
9829
- }
9830
- }
9831
- ]
9832
- },
9833
9745
  {
9834
9746
  "kind": "javascript-module",
9835
9747
  "path": "src/components/mui-carousel/controller/index.ts",
@@ -9964,6 +9876,48 @@
9964
9876
  }
9965
9877
  ]
9966
9878
  },
9879
+ {
9880
+ "kind": "javascript-module",
9881
+ "path": "src/components/mui-carousel/panel/index.ts",
9882
+ "declarations": [
9883
+ {
9884
+ "kind": "class",
9885
+ "description": "",
9886
+ "name": "MuiCarouselPanel",
9887
+ "members": [
9888
+ {
9889
+ "kind": "field",
9890
+ "name": "item"
9891
+ },
9892
+ {
9893
+ "kind": "field",
9894
+ "name": "innerHTML",
9895
+ "default": "` <style> :host { display: block; box-sizing: border-box; overflow: hidden; } </style> <slot></slot> `"
9896
+ }
9897
+ ],
9898
+ "attributes": [
9899
+ {
9900
+ "name": "item"
9901
+ }
9902
+ ],
9903
+ "superclass": {
9904
+ "name": "HTMLElement"
9905
+ },
9906
+ "tagName": "mui-carousel-panel",
9907
+ "customElement": true
9908
+ }
9909
+ ],
9910
+ "exports": [
9911
+ {
9912
+ "kind": "custom-element-definition",
9913
+ "name": "mui-carousel-panel",
9914
+ "declaration": {
9915
+ "name": "MuiCarouselPanel",
9916
+ "module": "src/components/mui-carousel/panel/index.ts"
9917
+ }
9918
+ }
9919
+ ]
9920
+ },
9967
9921
  {
9968
9922
  "kind": "javascript-module",
9969
9923
  "path": "src/components/mui-list/item/index.ts",
@@ -10169,203 +10123,30 @@
10169
10123
  },
10170
10124
  {
10171
10125
  "kind": "javascript-module",
10172
- "path": "src/components/mui-stepper/stepper/index.ts",
10126
+ "path": "src/components/mui-stack/hstack/index.ts",
10173
10127
  "declarations": [
10174
10128
  {
10175
10129
  "kind": "class",
10176
10130
  "description": "",
10177
- "name": "MuiStepper",
10131
+ "name": "MuiHStack",
10178
10132
  "members": [
10179
10133
  {
10180
10134
  "kind": "field",
10181
- "name": "onKeyDown",
10182
- "privacy": "private"
10135
+ "name": "space",
10136
+ "type": {
10137
+ "text": "string"
10138
+ },
10139
+ "privacy": "private",
10140
+ "default": "`var(--space-500)`"
10183
10141
  },
10184
10142
  {
10185
10143
  "kind": "field",
10186
- "name": "steps",
10144
+ "name": "alignX",
10145
+ "type": {
10146
+ "text": "string"
10147
+ },
10187
10148
  "privacy": "private",
10188
- "readonly": true
10189
- },
10190
- {
10191
- "kind": "field",
10192
- "name": "activeStepIndex",
10193
- "privacy": "private",
10194
- "readonly": true
10195
- },
10196
- {
10197
- "kind": "method",
10198
- "name": "emitStepChange",
10199
- "privacy": "private",
10200
- "parameters": [
10201
- {
10202
- "name": "previousIndex",
10203
- "type": {
10204
- "text": "number"
10205
- }
10206
- },
10207
- {
10208
- "name": "nextIndex",
10209
- "type": {
10210
- "text": "number"
10211
- }
10212
- },
10213
- {
10214
- "name": "source",
10215
- "type": {
10216
- "text": "\"click\" | \"keyboard\" | \"api\""
10217
- }
10218
- }
10219
- ]
10220
- },
10221
- {
10222
- "kind": "method",
10223
- "name": "setActiveStep",
10224
- "privacy": "private",
10225
- "parameters": [
10226
- {
10227
- "name": "index",
10228
- "type": {
10229
- "text": "number"
10230
- }
10231
- },
10232
- {
10233
- "name": "source",
10234
- "type": {
10235
- "text": "\"click\" | \"keyboard\" | \"api\""
10236
- }
10237
- }
10238
- ]
10239
- },
10240
- {
10241
- "kind": "method",
10242
- "name": "resolveStepState",
10243
- "privacy": "private",
10244
- "return": {
10245
- "type": {
10246
- "text": "string"
10247
- }
10248
- },
10249
- "parameters": [
10250
- {
10251
- "name": "step",
10252
- "type": {
10253
- "text": "HTMLElement"
10254
- }
10255
- },
10256
- {
10257
- "name": "index",
10258
- "type": {
10259
- "text": "number"
10260
- }
10261
- },
10262
- {
10263
- "name": "activeIndex",
10264
- "type": {
10265
- "text": "number"
10266
- }
10267
- }
10268
- ]
10269
- },
10270
- {
10271
- "kind": "method",
10272
- "name": "canActivateStep",
10273
- "privacy": "private",
10274
- "parameters": [
10275
- {
10276
- "name": "targetIndex",
10277
- "type": {
10278
- "text": "number"
10279
- }
10280
- },
10281
- {
10282
- "name": "activeIndex",
10283
- "type": {
10284
- "text": "number"
10285
- }
10286
- },
10287
- {
10288
- "name": "steps",
10289
- "type": {
10290
- "text": "HTMLElement[]"
10291
- }
10292
- }
10293
- ]
10294
- },
10295
- {
10296
- "kind": "method",
10297
- "name": "render"
10298
- }
10299
- ],
10300
- "events": [
10301
- {
10302
- "name": "step-change",
10303
- "type": {
10304
- "text": "CustomEvent"
10305
- }
10306
- }
10307
- ],
10308
- "attributes": [
10309
- {
10310
- "name": "direction"
10311
- },
10312
- {
10313
- "name": "active-step"
10314
- },
10315
- {
10316
- "name": "linear"
10317
- },
10318
- {
10319
- "name": "interactive"
10320
- },
10321
- {
10322
- "name": "size"
10323
- }
10324
- ],
10325
- "superclass": {
10326
- "name": "HTMLElement"
10327
- },
10328
- "tagName": "mui-stepper",
10329
- "customElement": true
10330
- }
10331
- ],
10332
- "exports": [
10333
- {
10334
- "kind": "custom-element-definition",
10335
- "name": "mui-stepper",
10336
- "declaration": {
10337
- "name": "MuiStepper",
10338
- "module": "src/components/mui-stepper/stepper/index.ts"
10339
- }
10340
- }
10341
- ]
10342
- },
10343
- {
10344
- "kind": "javascript-module",
10345
- "path": "src/components/mui-stack/vstack/index.ts",
10346
- "declarations": [
10347
- {
10348
- "kind": "class",
10349
- "description": "",
10350
- "name": "MuiVStack",
10351
- "members": [
10352
- {
10353
- "kind": "field",
10354
- "name": "space",
10355
- "type": {
10356
- "text": "string"
10357
- },
10358
- "privacy": "private",
10359
- "default": "`var(--space-500)`"
10360
- },
10361
- {
10362
- "kind": "field",
10363
- "name": "alignX",
10364
- "type": {
10365
- "text": "string"
10366
- },
10367
- "privacy": "private",
10368
- "default": "`normal`"
10149
+ "default": "`flex-start`"
10369
10150
  },
10370
10151
  {
10371
10152
  "kind": "field",
@@ -10374,7 +10155,7 @@
10374
10155
  "text": "string"
10375
10156
  },
10376
10157
  "privacy": "private",
10377
- "default": "`normal`"
10158
+ "default": "`flex-start`"
10378
10159
  },
10379
10160
  {
10380
10161
  "kind": "field",
@@ -10383,7 +10164,7 @@
10383
10164
  "text": "string"
10384
10165
  },
10385
10166
  "privacy": "private",
10386
- "default": "` :host { display: block; } slot { display: grid; gap: var(--space); justify-items: var(--alignX); align-items: var(--alignY); } `"
10167
+ "default": "` :host { display: block; } slot { display: flex; gap: var(--space); align-items: var(--alignY); justify-content: var(--alignX); } `"
10387
10168
  },
10388
10169
  {
10389
10170
  "kind": "method",
@@ -10400,38 +10181,38 @@
10400
10181
  "name": "space"
10401
10182
  },
10402
10183
  {
10403
- "name": "alignx"
10184
+ "name": "aligny"
10404
10185
  },
10405
10186
  {
10406
- "name": "aligny"
10187
+ "name": "alignx"
10407
10188
  }
10408
10189
  ],
10409
10190
  "superclass": {
10410
10191
  "name": "HTMLElement"
10411
10192
  },
10412
- "tagName": "mui-v-stack",
10193
+ "tagName": "mui-h-stack",
10413
10194
  "customElement": true
10414
10195
  }
10415
10196
  ],
10416
10197
  "exports": [
10417
10198
  {
10418
10199
  "kind": "custom-element-definition",
10419
- "name": "mui-v-stack",
10200
+ "name": "mui-h-stack",
10420
10201
  "declaration": {
10421
- "name": "MuiVStack",
10422
- "module": "src/components/mui-stack/vstack/index.ts"
10202
+ "name": "MuiHStack",
10203
+ "module": "src/components/mui-stack/hstack/index.ts"
10423
10204
  }
10424
10205
  }
10425
10206
  ]
10426
10207
  },
10427
10208
  {
10428
10209
  "kind": "javascript-module",
10429
- "path": "src/components/mui-stack/hstack/index.ts",
10210
+ "path": "src/components/mui-stack/vstack/index.ts",
10430
10211
  "declarations": [
10431
10212
  {
10432
10213
  "kind": "class",
10433
10214
  "description": "",
10434
- "name": "MuiHStack",
10215
+ "name": "MuiVStack",
10435
10216
  "members": [
10436
10217
  {
10437
10218
  "kind": "field",
@@ -10449,7 +10230,7 @@
10449
10230
  "text": "string"
10450
10231
  },
10451
10232
  "privacy": "private",
10452
- "default": "`flex-start`"
10233
+ "default": "`normal`"
10453
10234
  },
10454
10235
  {
10455
10236
  "kind": "field",
@@ -10458,7 +10239,7 @@
10458
10239
  "text": "string"
10459
10240
  },
10460
10241
  "privacy": "private",
10461
- "default": "`flex-start`"
10242
+ "default": "`normal`"
10462
10243
  },
10463
10244
  {
10464
10245
  "kind": "field",
@@ -10467,7 +10248,7 @@
10467
10248
  "text": "string"
10468
10249
  },
10469
10250
  "privacy": "private",
10470
- "default": "` :host { display: block; } slot { display: flex; gap: var(--space); align-items: var(--alignY); justify-content: var(--alignX); } `"
10251
+ "default": "` :host { display: block; } slot { display: grid; gap: var(--space); justify-items: var(--alignX); align-items: var(--alignY); } `"
10471
10252
  },
10472
10253
  {
10473
10254
  "kind": "method",
@@ -10484,26 +10265,26 @@
10484
10265
  "name": "space"
10485
10266
  },
10486
10267
  {
10487
- "name": "aligny"
10268
+ "name": "alignx"
10488
10269
  },
10489
10270
  {
10490
- "name": "alignx"
10271
+ "name": "aligny"
10491
10272
  }
10492
10273
  ],
10493
10274
  "superclass": {
10494
10275
  "name": "HTMLElement"
10495
10276
  },
10496
- "tagName": "mui-h-stack",
10277
+ "tagName": "mui-v-stack",
10497
10278
  "customElement": true
10498
10279
  }
10499
10280
  ],
10500
10281
  "exports": [
10501
10282
  {
10502
10283
  "kind": "custom-element-definition",
10503
- "name": "mui-h-stack",
10284
+ "name": "mui-v-stack",
10504
10285
  "declaration": {
10505
- "name": "MuiHStack",
10506
- "module": "src/components/mui-stack/hstack/index.ts"
10286
+ "name": "MuiVStack",
10287
+ "module": "src/components/mui-stack/vstack/index.ts"
10507
10288
  }
10508
10289
  }
10509
10290
  ]
@@ -10562,175 +10343,331 @@
10562
10343
  },
10563
10344
  {
10564
10345
  "kind": "javascript-module",
10565
- "path": "src/components/mui-tabs/controller/index.ts",
10346
+ "path": "src/components/mui-stepper/stepper/index.ts",
10566
10347
  "declarations": [
10567
10348
  {
10568
10349
  "kind": "class",
10569
10350
  "description": "",
10570
- "name": "MuiTabController",
10351
+ "name": "MuiStepper",
10571
10352
  "members": [
10572
10353
  {
10573
- "kind": "method",
10574
- "name": "initializePanels",
10354
+ "kind": "field",
10355
+ "name": "onKeyDown",
10356
+ "privacy": "private"
10357
+ },
10358
+ {
10359
+ "kind": "field",
10360
+ "name": "steps",
10575
10361
  "privacy": "private",
10576
- "return": {
10577
- "type": {
10578
- "text": "void"
10579
- }
10580
- }
10362
+ "readonly": true
10363
+ },
10364
+ {
10365
+ "kind": "field",
10366
+ "name": "activeStepIndex",
10367
+ "privacy": "private",
10368
+ "readonly": true
10581
10369
  },
10582
10370
  {
10583
10371
  "kind": "method",
10584
- "name": "handleTabChange",
10585
- "return": {
10586
- "type": {
10587
- "text": "void"
10588
- }
10589
- },
10372
+ "name": "emitStepChange",
10373
+ "privacy": "private",
10590
10374
  "parameters": [
10591
10375
  {
10592
- "name": "event",
10376
+ "name": "previousIndex",
10593
10377
  "type": {
10594
- "text": "Event"
10378
+ "text": "number"
10595
10379
  }
10596
- }
10597
- ]
10598
- },
10599
- {
10380
+ },
10381
+ {
10382
+ "name": "nextIndex",
10383
+ "type": {
10384
+ "text": "number"
10385
+ }
10386
+ },
10387
+ {
10388
+ "name": "source",
10389
+ "type": {
10390
+ "text": "\"click\" | \"keyboard\" | \"api\""
10391
+ }
10392
+ }
10393
+ ]
10394
+ },
10395
+ {
10600
10396
  "kind": "method",
10601
- "name": "updatePanels",
10397
+ "name": "setActiveStep",
10398
+ "privacy": "private",
10399
+ "parameters": [
10400
+ {
10401
+ "name": "index",
10402
+ "type": {
10403
+ "text": "number"
10404
+ }
10405
+ },
10406
+ {
10407
+ "name": "source",
10408
+ "type": {
10409
+ "text": "\"click\" | \"keyboard\" | \"api\""
10410
+ }
10411
+ }
10412
+ ]
10413
+ },
10414
+ {
10415
+ "kind": "method",
10416
+ "name": "resolveStepState",
10417
+ "privacy": "private",
10602
10418
  "return": {
10603
10419
  "type": {
10604
- "text": "void"
10420
+ "text": "string"
10605
10421
  }
10606
10422
  },
10607
10423
  "parameters": [
10608
10424
  {
10609
- "name": "activeId",
10425
+ "name": "step",
10610
10426
  "type": {
10611
- "text": "string"
10427
+ "text": "HTMLElement"
10428
+ }
10429
+ },
10430
+ {
10431
+ "name": "index",
10432
+ "type": {
10433
+ "text": "number"
10434
+ }
10435
+ },
10436
+ {
10437
+ "name": "activeIndex",
10438
+ "type": {
10439
+ "text": "number"
10440
+ }
10441
+ }
10442
+ ]
10443
+ },
10444
+ {
10445
+ "kind": "method",
10446
+ "name": "canActivateStep",
10447
+ "privacy": "private",
10448
+ "parameters": [
10449
+ {
10450
+ "name": "targetIndex",
10451
+ "type": {
10452
+ "text": "number"
10453
+ }
10454
+ },
10455
+ {
10456
+ "name": "activeIndex",
10457
+ "type": {
10458
+ "text": "number"
10459
+ }
10460
+ },
10461
+ {
10462
+ "name": "steps",
10463
+ "type": {
10464
+ "text": "HTMLElement[]"
10612
10465
  }
10613
10466
  }
10614
10467
  ]
10468
+ },
10469
+ {
10470
+ "kind": "method",
10471
+ "name": "render"
10472
+ }
10473
+ ],
10474
+ "events": [
10475
+ {
10476
+ "name": "step-change",
10477
+ "type": {
10478
+ "text": "CustomEvent"
10479
+ }
10480
+ }
10481
+ ],
10482
+ "attributes": [
10483
+ {
10484
+ "name": "direction"
10485
+ },
10486
+ {
10487
+ "name": "active-step"
10488
+ },
10489
+ {
10490
+ "name": "linear"
10491
+ },
10492
+ {
10493
+ "name": "interactive"
10494
+ },
10495
+ {
10496
+ "name": "size"
10615
10497
  }
10616
10498
  ],
10617
10499
  "superclass": {
10618
10500
  "name": "HTMLElement"
10619
10501
  },
10620
- "tagName": "mui-tab-controller",
10502
+ "tagName": "mui-stepper",
10621
10503
  "customElement": true
10622
10504
  }
10623
10505
  ],
10624
10506
  "exports": [
10625
10507
  {
10626
10508
  "kind": "custom-element-definition",
10627
- "name": "mui-tab-controller",
10509
+ "name": "mui-stepper",
10628
10510
  "declaration": {
10629
- "name": "MuiTabController",
10630
- "module": "src/components/mui-tabs/controller/index.ts"
10511
+ "name": "MuiStepper",
10512
+ "module": "src/components/mui-stepper/stepper/index.ts"
10631
10513
  }
10632
10514
  }
10633
10515
  ]
10634
10516
  },
10635
10517
  {
10636
10518
  "kind": "javascript-module",
10637
- "path": "src/components/mui-tabs/tab-bar/index.ts",
10519
+ "path": "src/components/mui-table/cell/index.ts",
10638
10520
  "declarations": [
10639
10521
  {
10640
10522
  "kind": "class",
10641
10523
  "description": "",
10642
- "name": "MuiTabBar",
10524
+ "name": "MuiCell",
10643
10525
  "members": [
10644
10526
  {
10645
- "kind": "field",
10646
- "name": "_resizeTimeout",
10647
- "type": {
10648
- "text": "number | null"
10649
- },
10650
- "privacy": "private",
10651
- "default": "null"
10652
- },
10653
- {
10654
- "kind": "field",
10655
- "name": "_activeTab",
10656
- "type": {
10657
- "text": "HTMLElement | null"
10658
- },
10659
- "privacy": "private",
10660
- "default": "null"
10661
- },
10662
- {
10663
- "kind": "field",
10664
- "name": "_observedTab",
10665
- "type": {
10666
- "text": "HTMLElement | null"
10667
- },
10668
- "privacy": "private",
10669
- "default": "null"
10670
- },
10671
- {
10672
- "kind": "field",
10673
- "name": "_hasInitialized",
10674
- "type": {
10675
- "text": "boolean"
10676
- },
10677
- "privacy": "private",
10678
- "default": "false"
10679
- },
10527
+ "kind": "method",
10528
+ "name": "render"
10529
+ }
10530
+ ],
10531
+ "attributes": [
10680
10532
  {
10681
- "kind": "field",
10682
- "name": "_animationSpeed",
10683
- "type": {
10684
- "text": "number"
10685
- },
10686
- "privacy": "private",
10687
- "default": "200"
10688
- },
10533
+ "name": "align-y"
10534
+ }
10535
+ ],
10536
+ "superclass": {
10537
+ "name": "HTMLElement"
10538
+ },
10539
+ "tagName": "mui-cell",
10540
+ "customElement": true
10541
+ }
10542
+ ],
10543
+ "exports": [
10544
+ {
10545
+ "kind": "custom-element-definition",
10546
+ "name": "mui-cell",
10547
+ "declaration": {
10548
+ "name": "MuiCell",
10549
+ "module": "src/components/mui-table/cell/index.ts"
10550
+ }
10551
+ }
10552
+ ]
10553
+ },
10554
+ {
10555
+ "kind": "javascript-module",
10556
+ "path": "src/components/mui-table/row/index.ts",
10557
+ "declarations": [
10558
+ {
10559
+ "kind": "class",
10560
+ "description": "",
10561
+ "name": "MuiRow",
10562
+ "members": [
10689
10563
  {
10690
- "kind": "field",
10691
- "name": "_resizeObserver",
10692
- "type": {
10693
- "text": "ResizeObserver"
10694
- },
10695
- "privacy": "private",
10696
- "default": "new ResizeObserver(() => { if (this._activeTab) { this._updateHighlight(this._activeTab); } })"
10564
+ "kind": "method",
10565
+ "name": "syncContextAttributes",
10566
+ "privacy": "private"
10697
10567
  },
10698
10568
  {
10699
10569
  "kind": "method",
10700
- "name": "_applySizeToChildren",
10701
- "privacy": "private",
10702
- "parameters": [
10703
- {
10704
- "name": "childrenParam",
10705
- "optional": true,
10706
- "type": {
10707
- "text": "HTMLElement[]"
10708
- }
10709
- }
10710
- ]
10711
- },
10570
+ "name": "render",
10571
+ "privacy": "private"
10572
+ }
10573
+ ],
10574
+ "attributes": [
10575
+ {
10576
+ "name": "columns"
10577
+ }
10578
+ ],
10579
+ "superclass": {
10580
+ "name": "HTMLElement"
10581
+ },
10582
+ "tagName": "mui-row",
10583
+ "customElement": true
10584
+ }
10585
+ ],
10586
+ "exports": [
10587
+ {
10588
+ "kind": "custom-element-definition",
10589
+ "name": "mui-row",
10590
+ "declaration": {
10591
+ "name": "MuiRow",
10592
+ "module": "src/components/mui-table/row/index.ts"
10593
+ }
10594
+ }
10595
+ ]
10596
+ },
10597
+ {
10598
+ "kind": "javascript-module",
10599
+ "path": "src/components/mui-table/row-group/index.ts",
10600
+ "declarations": [
10601
+ {
10602
+ "kind": "class",
10603
+ "description": "",
10604
+ "name": "MuiRowGroup",
10605
+ "superclass": {
10606
+ "name": "HTMLElement"
10607
+ },
10608
+ "tagName": "mui-row-group",
10609
+ "customElement": true
10610
+ }
10611
+ ],
10612
+ "exports": [
10613
+ {
10614
+ "kind": "custom-element-definition",
10615
+ "name": "mui-row-group",
10616
+ "declaration": {
10617
+ "name": "MuiRowGroup",
10618
+ "module": "src/components/mui-table/row-group/index.ts"
10619
+ }
10620
+ }
10621
+ ]
10622
+ },
10623
+ {
10624
+ "kind": "javascript-module",
10625
+ "path": "src/components/mui-table/table/index.ts",
10626
+ "declarations": [
10627
+ {
10628
+ "kind": "class",
10629
+ "description": "",
10630
+ "name": "MuiTable",
10631
+ "superclass": {
10632
+ "name": "HTMLElement"
10633
+ },
10634
+ "tagName": "mui-table",
10635
+ "customElement": true
10636
+ }
10637
+ ],
10638
+ "exports": [
10639
+ {
10640
+ "kind": "custom-element-definition",
10641
+ "name": "mui-table",
10642
+ "declaration": {
10643
+ "name": "MuiTable",
10644
+ "module": "src/components/mui-table/table/index.ts"
10645
+ }
10646
+ }
10647
+ ]
10648
+ },
10649
+ {
10650
+ "kind": "javascript-module",
10651
+ "path": "src/components/mui-tabs/controller/index.ts",
10652
+ "declarations": [
10653
+ {
10654
+ "kind": "class",
10655
+ "description": "",
10656
+ "name": "MuiTabController",
10657
+ "members": [
10712
10658
  {
10713
10659
  "kind": "method",
10714
- "name": "_applyVariantToChildren",
10660
+ "name": "initializePanels",
10715
10661
  "privacy": "private",
10716
- "parameters": [
10717
- {
10718
- "name": "childrenParam",
10719
- "optional": true,
10720
- "type": {
10721
- "text": "HTMLElement[]"
10722
- }
10662
+ "return": {
10663
+ "type": {
10664
+ "text": "void"
10723
10665
  }
10724
- ]
10725
- },
10726
- {
10727
- "kind": "method",
10728
- "name": "_handleResize"
10666
+ }
10729
10667
  },
10730
10668
  {
10731
10669
  "kind": "method",
10732
- "name": "_updateHighlight",
10733
- "privacy": "private",
10670
+ "name": "handleTabChange",
10734
10671
  "return": {
10735
10672
  "type": {
10736
10673
  "text": "void"
@@ -10738,56 +10675,45 @@
10738
10675
  },
10739
10676
  "parameters": [
10740
10677
  {
10741
- "name": "el",
10678
+ "name": "event",
10742
10679
  "type": {
10743
- "text": "HTMLElement"
10680
+ "text": "Event"
10744
10681
  }
10745
10682
  }
10746
10683
  ]
10747
10684
  },
10748
10685
  {
10749
10686
  "kind": "method",
10750
- "name": "setActiveTab",
10687
+ "name": "updatePanels",
10688
+ "return": {
10689
+ "type": {
10690
+ "text": "void"
10691
+ }
10692
+ },
10751
10693
  "parameters": [
10752
10694
  {
10753
- "name": "el",
10695
+ "name": "activeId",
10754
10696
  "type": {
10755
- "text": "HTMLElement"
10697
+ "text": "string"
10756
10698
  }
10757
10699
  }
10758
10700
  ]
10759
10701
  }
10760
10702
  ],
10761
- "events": [
10762
- {
10763
- "name": "tab-change",
10764
- "type": {
10765
- "text": "CustomEvent"
10766
- }
10767
- }
10768
- ],
10769
- "attributes": [
10770
- {
10771
- "name": "size"
10772
- },
10773
- {
10774
- "name": "variant"
10775
- }
10776
- ],
10777
10703
  "superclass": {
10778
10704
  "name": "HTMLElement"
10779
10705
  },
10780
- "tagName": "mui-tab-bar",
10706
+ "tagName": "mui-tab-controller",
10781
10707
  "customElement": true
10782
10708
  }
10783
10709
  ],
10784
10710
  "exports": [
10785
10711
  {
10786
10712
  "kind": "custom-element-definition",
10787
- "name": "mui-tab-bar",
10713
+ "name": "mui-tab-controller",
10788
10714
  "declaration": {
10789
- "name": "MuiTabBar",
10790
- "module": "src/components/mui-tabs/tab-bar/index.ts"
10715
+ "name": "MuiTabController",
10716
+ "module": "src/components/mui-tabs/controller/index.ts"
10791
10717
  }
10792
10718
  }
10793
10719
  ]
@@ -10944,132 +10870,160 @@
10944
10870
  },
10945
10871
  {
10946
10872
  "kind": "javascript-module",
10947
- "path": "src/components/mui-table/row/index.ts",
10873
+ "path": "src/components/mui-tabs/tab-bar/index.ts",
10948
10874
  "declarations": [
10949
10875
  {
10950
10876
  "kind": "class",
10951
10877
  "description": "",
10952
- "name": "MuiRow",
10878
+ "name": "MuiTabBar",
10953
10879
  "members": [
10880
+ {
10881
+ "kind": "field",
10882
+ "name": "_resizeTimeout",
10883
+ "type": {
10884
+ "text": "number | null"
10885
+ },
10886
+ "privacy": "private",
10887
+ "default": "null"
10888
+ },
10889
+ {
10890
+ "kind": "field",
10891
+ "name": "_activeTab",
10892
+ "type": {
10893
+ "text": "HTMLElement | null"
10894
+ },
10895
+ "privacy": "private",
10896
+ "default": "null"
10897
+ },
10898
+ {
10899
+ "kind": "field",
10900
+ "name": "_observedTab",
10901
+ "type": {
10902
+ "text": "HTMLElement | null"
10903
+ },
10904
+ "privacy": "private",
10905
+ "default": "null"
10906
+ },
10907
+ {
10908
+ "kind": "field",
10909
+ "name": "_hasInitialized",
10910
+ "type": {
10911
+ "text": "boolean"
10912
+ },
10913
+ "privacy": "private",
10914
+ "default": "false"
10915
+ },
10916
+ {
10917
+ "kind": "field",
10918
+ "name": "_animationSpeed",
10919
+ "type": {
10920
+ "text": "number"
10921
+ },
10922
+ "privacy": "private",
10923
+ "default": "200"
10924
+ },
10925
+ {
10926
+ "kind": "field",
10927
+ "name": "_resizeObserver",
10928
+ "type": {
10929
+ "text": "ResizeObserver"
10930
+ },
10931
+ "privacy": "private",
10932
+ "default": "new ResizeObserver(() => { if (this._activeTab) { this._updateHighlight(this._activeTab); } })"
10933
+ },
10954
10934
  {
10955
10935
  "kind": "method",
10956
- "name": "syncContextAttributes",
10957
- "privacy": "private"
10936
+ "name": "_applySizeToChildren",
10937
+ "privacy": "private",
10938
+ "parameters": [
10939
+ {
10940
+ "name": "childrenParam",
10941
+ "optional": true,
10942
+ "type": {
10943
+ "text": "HTMLElement[]"
10944
+ }
10945
+ }
10946
+ ]
10958
10947
  },
10959
10948
  {
10960
10949
  "kind": "method",
10961
- "name": "render",
10962
- "privacy": "private"
10963
- }
10964
- ],
10965
- "attributes": [
10950
+ "name": "_applyVariantToChildren",
10951
+ "privacy": "private",
10952
+ "parameters": [
10953
+ {
10954
+ "name": "childrenParam",
10955
+ "optional": true,
10956
+ "type": {
10957
+ "text": "HTMLElement[]"
10958
+ }
10959
+ }
10960
+ ]
10961
+ },
10966
10962
  {
10967
- "name": "columns"
10963
+ "kind": "method",
10964
+ "name": "_handleResize"
10965
+ },
10966
+ {
10967
+ "kind": "method",
10968
+ "name": "_updateHighlight",
10969
+ "privacy": "private",
10970
+ "return": {
10971
+ "type": {
10972
+ "text": "void"
10973
+ }
10974
+ },
10975
+ "parameters": [
10976
+ {
10977
+ "name": "el",
10978
+ "type": {
10979
+ "text": "HTMLElement"
10980
+ }
10981
+ }
10982
+ ]
10983
+ },
10984
+ {
10985
+ "kind": "method",
10986
+ "name": "setActiveTab",
10987
+ "parameters": [
10988
+ {
10989
+ "name": "el",
10990
+ "type": {
10991
+ "text": "HTMLElement"
10992
+ }
10993
+ }
10994
+ ]
10968
10995
  }
10969
10996
  ],
10970
- "superclass": {
10971
- "name": "HTMLElement"
10972
- },
10973
- "tagName": "mui-row",
10974
- "customElement": true
10975
- }
10976
- ],
10977
- "exports": [
10978
- {
10979
- "kind": "custom-element-definition",
10980
- "name": "mui-row",
10981
- "declaration": {
10982
- "name": "MuiRow",
10983
- "module": "src/components/mui-table/row/index.ts"
10984
- }
10985
- }
10986
- ]
10987
- },
10988
- {
10989
- "kind": "javascript-module",
10990
- "path": "src/components/mui-table/cell/index.ts",
10991
- "declarations": [
10992
- {
10993
- "kind": "class",
10994
- "description": "",
10995
- "name": "MuiCell",
10996
- "members": [
10997
+ "events": [
10997
10998
  {
10998
- "kind": "method",
10999
- "name": "render"
10999
+ "name": "tab-change",
11000
+ "type": {
11001
+ "text": "CustomEvent"
11002
+ }
11000
11003
  }
11001
11004
  ],
11002
11005
  "attributes": [
11003
11006
  {
11004
- "name": "align-y"
11007
+ "name": "size"
11008
+ },
11009
+ {
11010
+ "name": "variant"
11005
11011
  }
11006
11012
  ],
11007
11013
  "superclass": {
11008
11014
  "name": "HTMLElement"
11009
11015
  },
11010
- "tagName": "mui-cell",
11011
- "customElement": true
11012
- }
11013
- ],
11014
- "exports": [
11015
- {
11016
- "kind": "custom-element-definition",
11017
- "name": "mui-cell",
11018
- "declaration": {
11019
- "name": "MuiCell",
11020
- "module": "src/components/mui-table/cell/index.ts"
11021
- }
11022
- }
11023
- ]
11024
- },
11025
- {
11026
- "kind": "javascript-module",
11027
- "path": "src/components/mui-table/row-group/index.ts",
11028
- "declarations": [
11029
- {
11030
- "kind": "class",
11031
- "description": "",
11032
- "name": "MuiRowGroup",
11033
- "superclass": {
11034
- "name": "HTMLElement"
11035
- },
11036
- "tagName": "mui-row-group",
11037
- "customElement": true
11038
- }
11039
- ],
11040
- "exports": [
11041
- {
11042
- "kind": "custom-element-definition",
11043
- "name": "mui-row-group",
11044
- "declaration": {
11045
- "name": "MuiRowGroup",
11046
- "module": "src/components/mui-table/row-group/index.ts"
11047
- }
11048
- }
11049
- ]
11050
- },
11051
- {
11052
- "kind": "javascript-module",
11053
- "path": "src/components/mui-table/table/index.ts",
11054
- "declarations": [
11055
- {
11056
- "kind": "class",
11057
- "description": "",
11058
- "name": "MuiTable",
11059
- "superclass": {
11060
- "name": "HTMLElement"
11061
- },
11062
- "tagName": "mui-table",
11016
+ "tagName": "mui-tab-bar",
11063
11017
  "customElement": true
11064
11018
  }
11065
11019
  ],
11066
11020
  "exports": [
11067
11021
  {
11068
11022
  "kind": "custom-element-definition",
11069
- "name": "mui-table",
11023
+ "name": "mui-tab-bar",
11070
11024
  "declaration": {
11071
- "name": "MuiTable",
11072
- "module": "src/components/mui-table/table/index.ts"
11025
+ "name": "MuiTabBar",
11026
+ "module": "src/components/mui-tabs/tab-bar/index.ts"
11073
11027
  }
11074
11028
  }
11075
11029
  ]