@maz-ui/mcp 5.0.1-beta.0 → 5.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -228
- package/bin/maz-ui-mcp.mjs +2 -5
- package/dist/cli.d.mts +7 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.mjs +16 -0
- package/dist/index.d.mts +345 -0
- package/dist/index.d.ts +345 -0
- package/dist/index.mjs +16 -0
- package/dist/shared/mcp.DseFuKdl.mjs +2968 -0
- package/docs/README.md +207 -0
- package/docs/agents/agents-md.md +52 -0
- package/docs/agents/claude-rule.md +52 -0
- package/docs/components/maz-accordion.md +78 -0
- package/docs/{src/components → components}/maz-alert.md +31 -164
- package/docs/components/maz-animated-counter.md +87 -0
- package/docs/components/maz-animated-element.md +46 -0
- package/docs/components/maz-animated-text.md +53 -0
- package/docs/components/maz-avatar.md +193 -0
- package/docs/components/maz-backdrop.md +178 -0
- package/docs/{src/components → components}/maz-badge.md +26 -67
- package/docs/components/maz-bottom-sheet.md +257 -0
- package/docs/{src/components → components}/maz-btn-group.md +27 -189
- package/docs/{src/components → components}/maz-btn.md +62 -245
- package/docs/components/maz-card-spotlight.md +84 -0
- package/docs/{src/components → components}/maz-card.md +67 -192
- package/docs/components/maz-carousel.md +153 -0
- package/docs/{src/components → components}/maz-chart.md +17 -161
- package/docs/components/maz-checkbox.md +138 -0
- package/docs/components/maz-checklist.md +251 -0
- package/docs/components/maz-circular-progress-bar.md +109 -0
- package/docs/{src/components → components}/maz-code-highlight.md +15 -93
- package/docs/components/maz-container.md +241 -0
- package/docs/{src/components → components}/maz-date-picker.md +85 -454
- package/docs/components/maz-dialog-confirm.md +215 -0
- package/docs/components/maz-dialog.md +143 -0
- package/docs/components/maz-drawer.md +107 -0
- package/docs/components/maz-dropdown.md +419 -0
- package/docs/{src/components → components}/maz-dropzone.md +80 -221
- package/docs/components/maz-expand-animation.md +82 -0
- package/docs/components/maz-fullscreen-loader.md +58 -0
- package/docs/components/maz-gallery.md +79 -0
- package/docs/{src/components → components}/maz-icon.md +32 -83
- package/docs/components/maz-input-code.md +73 -0
- package/docs/components/maz-input-number.md +79 -0
- package/docs/components/maz-input-phone-number.md +536 -0
- package/docs/components/maz-input-price.md +68 -0
- package/docs/components/maz-input-tags.md +112 -0
- package/docs/{src/components → components}/maz-input.md +74 -221
- package/docs/components/maz-lazy-img.md +113 -0
- package/docs/components/maz-link.md +146 -0
- package/docs/components/maz-loading-bar.md +38 -0
- package/docs/{src/components → components}/maz-markdown-editor.md +72 -125
- package/docs/components/maz-pagination.md +82 -0
- package/docs/components/maz-popover.md +794 -0
- package/docs/{src/components → components}/maz-pull-to-refresh.md +59 -45
- package/docs/components/maz-radio-buttons.md +313 -0
- package/docs/components/maz-radio.md +119 -0
- package/docs/{src/components → components}/maz-read-more.md +31 -122
- package/docs/components/maz-reading-progress-bar.md +96 -0
- package/docs/{src/components → components}/maz-select-country.md +80 -340
- package/docs/{src/components → components}/maz-select.md +76 -206
- package/docs/components/maz-sidebar-content.md +25 -0
- package/docs/components/maz-sidebar-footer.md +25 -0
- package/docs/components/maz-sidebar-group.md +27 -0
- package/docs/components/maz-sidebar-header.md +25 -0
- package/docs/components/maz-sidebar-menu-button.md +41 -0
- package/docs/components/maz-sidebar-menu-item.md +25 -0
- package/docs/components/maz-sidebar-menu-sub.md +32 -0
- package/docs/components/maz-sidebar-menu.md +25 -0
- package/docs/components/maz-sidebar-separator.md +21 -0
- package/docs/components/maz-sidebar-trigger.md +25 -0
- package/docs/{src/components → components}/maz-sidebar.md +117 -329
- package/docs/{src/components → components}/maz-skeleton.md +27 -156
- package/docs/{src/components → components}/maz-slider.md +33 -66
- package/docs/components/maz-spinner.md +84 -0
- package/docs/{src/components → components}/maz-stepper.md +48 -185
- package/docs/components/maz-switch.md +86 -0
- package/docs/components/maz-table-cell.md +27 -0
- package/docs/components/maz-table-row.md +28 -0
- package/docs/components/maz-table-title.md +27 -0
- package/docs/components/maz-table-virtualizer.md +31 -0
- package/docs/components/maz-table.md +426 -0
- package/docs/components/maz-tabs-bar.md +43 -0
- package/docs/components/maz-tabs-content-item.md +27 -0
- package/docs/components/maz-tabs-content.md +27 -0
- package/docs/{src/components → components}/maz-tabs.md +89 -126
- package/docs/components/maz-textarea.md +255 -0
- package/docs/components/maz-ticker.md +427 -0
- package/docs/components/maz-timeline.md +304 -0
- package/docs/components/maz-ui-provider.md +26 -0
- package/docs/{src/components → components}/maz-window-mockup.md +38 -105
- package/docs/composables/use-aos.md +41 -0
- package/docs/composables/use-breakpoints.md +42 -0
- package/docs/composables/use-dialog.md +58 -0
- package/docs/{src/composables → composables}/use-display-names.md +12 -59
- package/docs/{src/composables → composables}/use-drag.md +14 -68
- package/docs/{src/composables → composables}/use-form-validator.md +22 -696
- package/docs/{src/composables → composables}/use-idle-timeout.md +13 -97
- package/docs/{src/composables → composables}/use-pull-to-refresh.md +14 -7
- package/docs/{src/composables → composables}/use-reading-time.md +20 -56
- package/docs/composables/use-string-matching.md +41 -0
- package/docs/{src/composables → composables}/use-swipe.md +14 -81
- package/docs/{src/composables → composables}/use-timer.md +12 -38
- package/docs/composables/use-toast.md +50 -0
- package/docs/{src/composables → composables}/use-user-visibility.md +14 -56
- package/docs/composables/use-wait.md +50 -0
- package/docs/composables/use-window-size.md +25 -0
- package/docs/{src/directives → directives}/click-outside.md +13 -99
- package/docs/{src/directives → directives}/fullscreen-img.md +10 -28
- package/docs/{src/directives → directives}/lazy-img.md +14 -49
- package/docs/{src/directives → directives}/tooltip.md +12 -217
- package/docs/{src/directives → directives}/zoom-img.md +11 -38
- package/docs/{src/ecosystem → ecosystem}/eslint-config.md +37 -29
- package/docs/ecosystem/icons/icon-set.md +25 -0
- package/docs/{src/ecosystem → ecosystem}/icons/index.md +21 -15
- package/docs/ecosystem/mcp.md +165 -0
- package/docs/{src/ecosystem → ecosystem}/node/exec-promise.md +12 -6
- package/docs/ecosystem/node/index.md +53 -0
- package/docs/{src/ecosystem → ecosystem}/node/logger.md +12 -6
- package/docs/{src/ecosystem → ecosystem}/node/print-banner.md +12 -4
- package/docs/ecosystem/node/setup-agents.md +102 -0
- package/docs/{src/ecosystem → ecosystem}/nuxt.md +50 -19
- package/docs/{src/ecosystem → ecosystem}/stylelint-config.md +33 -25
- package/docs/{src/ecosystem → ecosystem}/themes.md +72 -235
- package/docs/{src/ecosystem → ecosystem}/translations.md +25 -23
- package/docs/ecosystem/utils/camel-case.md +37 -0
- package/docs/ecosystem/utils/capitalize.md +37 -0
- package/docs/{src/ecosystem → ecosystem}/utils/check-availability.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/cookie.md +18 -12
- package/docs/ecosystem/utils/country-code-to-unicode-flag.md +128 -0
- package/docs/{src/ecosystem → ecosystem}/utils/currency.md +12 -26
- package/docs/{src/ecosystem → ecosystem}/utils/date.md +10 -24
- package/docs/ecosystem/utils/debounce-callback.md +44 -0
- package/docs/{src/ecosystem → ecosystem}/utils/debounce-id.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/debounce.md +14 -8
- package/docs/ecosystem/utils/fetch-locale-ip.md +39 -0
- package/docs/{src/ecosystem → ecosystem}/utils/format-json.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/format-phone-number.md +12 -6
- package/docs/ecosystem/utils/get-browser-locale.md +35 -0
- package/docs/ecosystem/utils/get-country-flag-url.md +67 -0
- package/docs/{src/ecosystem → ecosystem}/utils/get-error-message.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/idle-timeout.md +15 -9
- package/docs/{src/ecosystem → ecosystem}/utils/index.md +10 -13
- package/docs/{src/ecosystem → ecosystem}/utils/is-client.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/is-equal.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/is-ios.md +12 -6
- package/docs/ecosystem/utils/is-server.md +37 -0
- package/docs/ecosystem/utils/is-standalone-mode.md +49 -0
- package/docs/{src/ecosystem → ecosystem}/utils/kebab-case.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/normalize-string.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/number.md +10 -24
- package/docs/{src/ecosystem → ecosystem}/utils/pascal-case.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/prevent-ios-input-zoom.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/script-loader.md +16 -8
- package/docs/{src/ecosystem → ecosystem}/utils/sleep.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/snake-case.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/swipe-handler.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/textarea-autogrow.md +12 -6
- package/docs/{src/ecosystem → ecosystem}/utils/throttle-id.md +13 -7
- package/docs/{src/ecosystem → ecosystem}/utils/throttle.md +14 -8
- package/docs/ecosystem/utils/truthy-filter.md +37 -0
- package/docs/{src/ecosystem → ecosystem}/utils/types/deep-key-of.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/types/deep-partial.md +10 -4
- package/docs/ecosystem/utils/types/deep-required.md +45 -0
- package/docs/ecosystem/utils/types/flatten-object-keys.md +50 -0
- package/docs/{src/ecosystem → ecosystem}/utils/types/generic-instance-type.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/types/infer-maybe-ref.md +10 -4
- package/docs/ecosystem/utils/upper-first.md +38 -0
- package/docs/{src/ecosystem → ecosystem}/utils/user-visibility.md +12 -6
- package/docs/guide/ai-agents.md +239 -0
- package/docs/{src/guide → guide}/browser-support.md +22 -15
- package/docs/{src/guide → guide}/getting-started.md +34 -139
- package/docs/{src/guide → guide}/global-defaults.md +12 -11
- package/docs/{src/guide → guide}/maz-ui-provider.md +17 -16
- package/docs/{src/guide → guide}/migration-v5.md +95 -88
- package/docs/{src/guide → guide}/resolvers.md +33 -100
- package/docs/guide/tailwind.md +507 -0
- package/docs/{src/guide → guide}/vue.md +33 -39
- package/docs/manifest.json +1 -0
- package/docs/{src/plugins → plugins}/aos.md +20 -55
- package/docs/{src/plugins → plugins}/dialog.md +14 -161
- package/docs/plugins/toast.md +221 -0
- package/docs/plugins/wait.md +78 -0
- package/docs/reference/icons.md +46 -0
- package/docs/reference/tailwind-tokens.md +191 -0
- package/docs/rules.md +59 -0
- package/package.json +86 -22
- package/dist/mcp.d.mts +0 -153
- package/dist/mcp.d.ts +0 -153
- package/dist/mcp.mjs +0 -1511
- package/docs/generated-docs/maz-accordion.doc.md +0 -21
- package/docs/generated-docs/maz-alert.doc.md +0 -20
- package/docs/generated-docs/maz-animated-counter.doc.md +0 -17
- package/docs/generated-docs/maz-animated-element.doc.md +0 -14
- package/docs/generated-docs/maz-animated-text.doc.md +0 -17
- package/docs/generated-docs/maz-avatar.doc.md +0 -45
- package/docs/generated-docs/maz-backdrop.doc.md +0 -55
- package/docs/generated-docs/maz-badge.doc.md +0 -16
- package/docs/generated-docs/maz-bottom-sheet.doc.md +0 -24
- package/docs/generated-docs/maz-btn-group.doc.md +0 -20
- package/docs/generated-docs/maz-btn.doc.md +0 -33
- package/docs/generated-docs/maz-card-spotlight.doc.md +0 -16
- package/docs/generated-docs/maz-card.doc.md +0 -39
- package/docs/generated-docs/maz-carousel.doc.md +0 -17
- package/docs/generated-docs/maz-chart.doc.md +0 -10
- package/docs/generated-docs/maz-checkbox.doc.md +0 -33
- package/docs/generated-docs/maz-checklist.doc.md +0 -30
- package/docs/generated-docs/maz-circular-progress-bar.doc.md +0 -27
- package/docs/generated-docs/maz-code-highlight.doc.md +0 -11
- package/docs/generated-docs/maz-container.doc.md +0 -26
- package/docs/generated-docs/maz-date-picker.doc.md +0 -56
- package/docs/generated-docs/maz-dialog-confirm.doc.md +0 -24
- package/docs/generated-docs/maz-dialog.doc.md +0 -22
- package/docs/generated-docs/maz-drawer.doc.md +0 -25
- package/docs/generated-docs/maz-dropdown.doc.md +0 -45
- package/docs/generated-docs/maz-dropzone.doc.md +0 -82
- package/docs/generated-docs/maz-expand-animation.doc.md +0 -12
- package/docs/generated-docs/maz-fullscreen-loader.doc.md +0 -13
- package/docs/generated-docs/maz-gallery.doc.md +0 -17
- package/docs/generated-docs/maz-icon.doc.md +0 -16
- package/docs/generated-docs/maz-input-code.doc.md +0 -25
- package/docs/generated-docs/maz-input-number.doc.md +0 -33
- package/docs/generated-docs/maz-input-phone-number.doc.md +0 -62
- package/docs/generated-docs/maz-input-price.doc.md +0 -26
- package/docs/generated-docs/maz-input-tags.doc.md +0 -24
- package/docs/generated-docs/maz-input.doc.md +0 -54
- package/docs/generated-docs/maz-lazy-img.doc.md +0 -49
- package/docs/generated-docs/maz-link.doc.md +0 -31
- package/docs/generated-docs/maz-loading-bar.doc.md +0 -6
- package/docs/generated-docs/maz-markdown-editor.doc.md +0 -65
- package/docs/generated-docs/maz-pagination.doc.md +0 -21
- package/docs/generated-docs/maz-popover.doc.md +0 -79
- package/docs/generated-docs/maz-pull-to-refresh.doc.md +0 -50
- package/docs/generated-docs/maz-radio-buttons.doc.md +0 -34
- package/docs/generated-docs/maz-radio.doc.md +0 -33
- package/docs/generated-docs/maz-read-more.doc.md +0 -18
- package/docs/generated-docs/maz-reading-progress-bar.doc.md +0 -18
- package/docs/generated-docs/maz-select-country.doc.md +0 -45
- package/docs/generated-docs/maz-select.doc.md +0 -32
- package/docs/generated-docs/maz-sidebar-content.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-footer.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-group.doc.md +0 -11
- package/docs/generated-docs/maz-sidebar-header.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-menu-button.doc.md +0 -27
- package/docs/generated-docs/maz-sidebar-menu-item.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-menu-sub.doc.md +0 -16
- package/docs/generated-docs/maz-sidebar-menu.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-separator.doc.md +0 -0
- package/docs/generated-docs/maz-sidebar-trigger.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar.doc.md +0 -36
- package/docs/generated-docs/maz-skeleton.doc.md +0 -12
- package/docs/generated-docs/maz-slider.doc.md +0 -20
- package/docs/generated-docs/maz-spinner.doc.md +0 -6
- package/docs/generated-docs/maz-stepper.doc.md +0 -30
- package/docs/generated-docs/maz-switch.doc.md +0 -31
- package/docs/generated-docs/maz-table-cell.doc.md +0 -5
- package/docs/generated-docs/maz-table-row.doc.md +0 -12
- package/docs/generated-docs/maz-table-title.doc.md +0 -5
- package/docs/generated-docs/maz-table-virtualizer.doc.md +0 -20
- package/docs/generated-docs/maz-table.doc.md +0 -72
- package/docs/generated-docs/maz-tabs-bar.doc.md +0 -29
- package/docs/generated-docs/maz-tabs-content-item.doc.md +0 -11
- package/docs/generated-docs/maz-tabs-content.doc.md +0 -5
- package/docs/generated-docs/maz-tabs.doc.md +0 -20
- package/docs/generated-docs/maz-textarea.doc.md +0 -46
- package/docs/generated-docs/maz-ticker.doc.md +0 -25
- package/docs/generated-docs/maz-timeline.doc.md +0 -32
- package/docs/generated-docs/maz-ui-provider.doc.md +0 -12
- package/docs/generated-docs/maz-window-mockup.doc.md +0 -23
- package/docs/src/blog/v4.md +0 -276
- package/docs/src/blog/v5.md +0 -184
- package/docs/src/changelog.md +0 -7
- package/docs/src/components/index.md +0 -8
- package/docs/src/components/maz-accordion.md +0 -80
- package/docs/src/components/maz-animated-counter.md +0 -124
- package/docs/src/components/maz-animated-element.md +0 -36
- package/docs/src/components/maz-animated-text.md +0 -36
- package/docs/src/components/maz-avatar.md +0 -227
- package/docs/src/components/maz-backdrop.md +0 -250
- package/docs/src/components/maz-bottom-sheet.md +0 -533
- package/docs/src/components/maz-card-spotlight.md +0 -163
- package/docs/src/components/maz-carousel.md +0 -231
- package/docs/src/components/maz-checkbox.md +0 -168
- package/docs/src/components/maz-checklist.md +0 -414
- package/docs/src/components/maz-circular-progress-bar.md +0 -145
- package/docs/src/components/maz-container.md +0 -363
- package/docs/src/components/maz-dialog-confirm.md +0 -240
- package/docs/src/components/maz-dialog.md +0 -164
- package/docs/src/components/maz-drawer.md +0 -181
- package/docs/src/components/maz-dropdown.md +0 -691
- package/docs/src/components/maz-expand-animation.md +0 -99
- package/docs/src/components/maz-fullscreen-loader.md +0 -58
- package/docs/src/components/maz-gallery.md +0 -85
- package/docs/src/components/maz-input-code.md +0 -61
- package/docs/src/components/maz-input-number.md +0 -81
- package/docs/src/components/maz-input-phone-number.md +0 -942
- package/docs/src/components/maz-input-price.md +0 -67
- package/docs/src/components/maz-input-tags.md +0 -114
- package/docs/src/components/maz-lazy-img.md +0 -88
- package/docs/src/components/maz-link.md +0 -178
- package/docs/src/components/maz-loading-bar.md +0 -26
- package/docs/src/components/maz-pagination.md +0 -79
- package/docs/src/components/maz-popover.md +0 -1416
- package/docs/src/components/maz-radio-buttons.md +0 -462
- package/docs/src/components/maz-radio.md +0 -142
- package/docs/src/components/maz-reading-progress-bar.md +0 -74
- package/docs/src/components/maz-spinner.md +0 -93
- package/docs/src/components/maz-switch.md +0 -92
- package/docs/src/components/maz-table.md +0 -732
- package/docs/src/components/maz-textarea.md +0 -400
- package/docs/src/components/maz-ticker.md +0 -692
- package/docs/src/components/maz-timeline.md +0 -478
- package/docs/src/composables/use-aos.md +0 -34
- package/docs/src/composables/use-breakpoints.md +0 -35
- package/docs/src/composables/use-dialog.md +0 -88
- package/docs/src/composables/use-string-matching.md +0 -63
- package/docs/src/composables/use-toast.md +0 -71
- package/docs/src/composables/use-wait.md +0 -62
- package/docs/src/composables/use-window-size.md +0 -18
- package/docs/src/ecosystem/icons/icon-set.md +0 -123
- package/docs/src/ecosystem/mcp.md +0 -210
- package/docs/src/ecosystem/node/index.md +0 -53
- package/docs/src/ecosystem/utils/camel-case.md +0 -31
- package/docs/src/ecosystem/utils/capitalize.md +0 -50
- package/docs/src/ecosystem/utils/country-code-to-unicode-flag.md +0 -213
- package/docs/src/ecosystem/utils/debounce-callback.md +0 -38
- package/docs/src/ecosystem/utils/fetch-locale-ip.md +0 -33
- package/docs/src/ecosystem/utils/get-browser-locale.md +0 -29
- package/docs/src/ecosystem/utils/get-country-flag-url.md +0 -156
- package/docs/src/ecosystem/utils/is-server.md +0 -31
- package/docs/src/ecosystem/utils/is-standalone-mode.md +0 -43
- package/docs/src/ecosystem/utils/truthy-filter.md +0 -31
- package/docs/src/ecosystem/utils/types/deep-required.md +0 -39
- package/docs/src/ecosystem/utils/types/flatten-object-keys.md +0 -44
- package/docs/src/ecosystem/utils/upper-first.md +0 -32
- package/docs/src/guide/cli.md +0 -144
- package/docs/src/guide/migration-v4.md +0 -925
- package/docs/src/guide/tailwind.md +0 -158
- package/docs/src/index.md +0 -603
- package/docs/src/made-with-maz-ui.md +0 -58
- package/docs/src/plugins/toast.md +0 -349
- package/docs/src/plugins/wait.md +0 -109
- package/docs/src/theme-editor.md +0 -21
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "MazBottomSheet"
|
|
3
|
+
description: "MazBottomSheet is a standalone component like a simple dialog but anchored at the bottom of the screen. Full-width on mobile and constrained/centered on desktop, with a header (icon, title, close button), a footer and many replaceable slots. Useful for mobile UX."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/components/maz-bottom-sheet"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# MazBottomSheet
|
|
9
|
+
|
|
10
|
+
> MazBottomSheet is a standalone component like a simple dialog but anchored at the bottom of the screen. Full-width on mobile and constrained/centered on desktop, with a header (icon, title, close button), a footer and many replaceable slots. Useful for mobile UX.
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import MazBottomSheet from 'maz-ui/components/MazBottomSheet'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/components/maz-bottom-sheet
|
|
16
|
+
|
|
17
|
+
> Before use it, you should install the MazUi plugin in your project, follow instructions in [Getting Started](../guide/getting-started.md)
|
|
18
|
+
|
|
19
|
+
**Tip:**
|
|
20
|
+
|
|
21
|
+
This component uses the `<Teleport to="body">` with [MazBackdrop](./maz-backdrop.md), so you can implement this component anywhere and it inherits all its props (`persistent`, `closeOnEscape`, etc.)
|
|
22
|
+
|
|
23
|
+
## Basic usage
|
|
24
|
+
|
|
25
|
+
The sheet has a header (with the `title` and a close button) and an optional `footer` slot. It opens full-width on mobile and is constrained/centered on desktop (see Max width).
|
|
26
|
+
|
|
27
|
+
```vue
|
|
28
|
+
<script setup>
|
|
29
|
+
import MazBottomSheet from 'maz-ui/components/MazBottomSheet'
|
|
30
|
+
import { ref } from 'vue'
|
|
31
|
+
|
|
32
|
+
const basicOpened = ref(false)
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<MazBtn @click="basicOpened = true">
|
|
37
|
+
Open Bottom Sheet
|
|
38
|
+
</MazBtn>
|
|
39
|
+
|
|
40
|
+
<MazBottomSheet v-model="basicOpened" title="Bottom Sheet Title">
|
|
41
|
+
<p>Your content goes here.</p>
|
|
42
|
+
|
|
43
|
+
<template #footer="{ close }">
|
|
44
|
+
<MazBtn color="transparent" @click="close">
|
|
45
|
+
Cancel
|
|
46
|
+
</MazBtn>
|
|
47
|
+
<MazBtn @click="close">
|
|
48
|
+
Confirm
|
|
49
|
+
</MazBtn>
|
|
50
|
+
</template>
|
|
51
|
+
</MazBottomSheet>
|
|
52
|
+
</template>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Swipe to close (iOS-like)
|
|
56
|
+
|
|
57
|
+
By default a drag handle (grab bar) is shown at the top of the sheet, and you can **close the sheet by dragging that handle down** - the sheet follows your pointer and either dismisses (past the threshold) or snaps back. This works with both touch and mouse.
|
|
58
|
+
|
|
59
|
+
Disable it with `:swipe-to-close="false"` (the handle is then hidden too), or replace the handle with the `#handle` slot. A `persistent` sheet never dismisses on swipe: it snaps back instead.
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<!-- enabled by default -->
|
|
63
|
+
<MazBottomSheet v-model="swipeOpened" title="Drag me down">
|
|
64
|
+
<p>Grab the bar at the top and drag down to close.</p>
|
|
65
|
+
</MazBottomSheet>
|
|
66
|
+
|
|
67
|
+
<!-- disable the handle and the gesture -->
|
|
68
|
+
<MazBottomSheet v-model="swipeOpened" :swipe-to-close="false" title="No swipe" />
|
|
69
|
+
|
|
70
|
+
<!-- custom handle -->
|
|
71
|
+
<MazBottomSheet v-model="swipeOpened" title="Custom handle">
|
|
72
|
+
<template #handle>
|
|
73
|
+
<span class="h-1.5 w-12 rounded-full bg-primary" />
|
|
74
|
+
</template>
|
|
75
|
+
</MazBottomSheet>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Header with an icon
|
|
79
|
+
|
|
80
|
+
Pass an `icon` (an icon value or a full `MazIconProps` object) to display it on the left of the title.
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<MazBottomSheet v-model="iconOpened" title="Notifications" icon="/bell.svg">
|
|
84
|
+
<p>You have 3 new notifications.</p>
|
|
85
|
+
|
|
86
|
+
<template #footer="{ close }">
|
|
87
|
+
<MazBtn @click="close">Mark all as read</MazBtn>
|
|
88
|
+
</template>
|
|
89
|
+
</MazBottomSheet>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Replaceable slots
|
|
93
|
+
|
|
94
|
+
Everything in the header is replaceable: use `#icon` and `#title` to customize parts of the default header, or `#header` to replace the whole header (you get the `close` function as a binding).
|
|
95
|
+
|
|
96
|
+
```html
|
|
97
|
+
<MazBottomSheet v-model="slotsOpened">
|
|
98
|
+
<template #icon>
|
|
99
|
+
<MazAvatar src="/avatar.jpg" size="sm" />
|
|
100
|
+
</template>
|
|
101
|
+
|
|
102
|
+
<template #title>
|
|
103
|
+
<span class="text-primary">Custom title</span>
|
|
104
|
+
</template>
|
|
105
|
+
|
|
106
|
+
<p>The icon and the title slots are fully replaceable.</p>
|
|
107
|
+
</MazBottomSheet>
|
|
108
|
+
|
|
109
|
+
<!-- or replace the whole header -->
|
|
110
|
+
<MazBottomSheet v-model="slotsOpened">
|
|
111
|
+
<template #header="{ close }">
|
|
112
|
+
<div class="flex items-center justify-between p-4">
|
|
113
|
+
<strong>My header</strong>
|
|
114
|
+
<MazBtn size="sm" color="transparent" @click="close">Close</MazBtn>
|
|
115
|
+
</div>
|
|
116
|
+
</template>
|
|
117
|
+
</MazBottomSheet>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Max width
|
|
121
|
+
|
|
122
|
+
On mobile the sheet is always **full-width**. From the tablet breakpoint and up, it is **constrained** to `max-width` and centered horizontally. The default `max-width` is `35rem`; pass the `max-width` prop (a `MazSizeUnit`) to override it.
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<MazBottomSheet v-model="wideOpened" title="Wide sheet" max-width="60rem">
|
|
126
|
+
<p>This sheet is constrained to 60rem on desktop and full-width on mobile.</p>
|
|
127
|
+
</MazBottomSheet>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Without header
|
|
131
|
+
|
|
132
|
+
Hide the whole header with `hide-header`, or only the close button with `hide-close-button`.
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<MazBottomSheet v-model="noHeaderOpened" hide-header>
|
|
136
|
+
<div class="flex flex-col gap-3 text-center">
|
|
137
|
+
<p>No header here, you control the whole layout.</p>
|
|
138
|
+
<MazBtn @click="noHeaderOpened = false">Got it</MazBtn>
|
|
139
|
+
</div>
|
|
140
|
+
</MazBottomSheet>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Persistent
|
|
144
|
+
|
|
145
|
+
A `persistent` sheet cannot be closed by clicking outside or pressing escape, and the close button is removed. Provide your own action to close it.
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<MazBottomSheet v-model="persistentOpened" title="Action required" persistent>
|
|
149
|
+
<p>You must confirm before closing this sheet.</p>
|
|
150
|
+
|
|
151
|
+
<template #footer>
|
|
152
|
+
<MazBtn @click="persistentOpened = false">I understand</MazBtn>
|
|
153
|
+
</template>
|
|
154
|
+
</MazBottomSheet>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Full example
|
|
158
|
+
|
|
159
|
+
```vue
|
|
160
|
+
<script setup>
|
|
161
|
+
import MazBottomSheet from 'maz-ui/components/MazBottomSheet'
|
|
162
|
+
import { reactive, ref } from 'vue'
|
|
163
|
+
|
|
164
|
+
const isProductOpen = ref(false)
|
|
165
|
+
const quantity = ref(1)
|
|
166
|
+
const selectedOptions = reactive({ size: '', color: '' })
|
|
167
|
+
|
|
168
|
+
function openProductOptions() {
|
|
169
|
+
isProductOpen.value = true
|
|
170
|
+
}
|
|
171
|
+
</script>
|
|
172
|
+
|
|
173
|
+
<template>
|
|
174
|
+
<MazBtn color="primary" @click="openProductOptions">
|
|
175
|
+
Customize Options
|
|
176
|
+
</MazBtn>
|
|
177
|
+
|
|
178
|
+
<MazBottomSheet v-model="isProductOpen" title="Customize Your Shoes" icon="/cog.svg" :padding="false">
|
|
179
|
+
<div class="space-y-6 p-6">
|
|
180
|
+
<h4 class="mb-3 text-lg font-semibold">
|
|
181
|
+
Select Size
|
|
182
|
+
</h4>
|
|
183
|
+
<div class="grid grid-cols-4 gap-2">
|
|
184
|
+
<MazBtn
|
|
185
|
+
v-for="size in sizes"
|
|
186
|
+
:key="size"
|
|
187
|
+
:color="selectedOptions.size === size ? 'primary' : 'secondary'"
|
|
188
|
+
size="sm"
|
|
189
|
+
@click="selectedOptions.size = size"
|
|
190
|
+
>
|
|
191
|
+
{{ size }}
|
|
192
|
+
</MazBtn>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<template #footer="{ close }">
|
|
197
|
+
<MazBtn color="transparent" @click="close">
|
|
198
|
+
Cancel
|
|
199
|
+
</MazBtn>
|
|
200
|
+
<MazBtn color="primary" @click="addToCart">
|
|
201
|
+
Add to Cart (${{ (129.99 * quantity).toFixed(2) }})
|
|
202
|
+
</MazBtn>
|
|
203
|
+
</template>
|
|
204
|
+
</MazBottomSheet>
|
|
205
|
+
</template>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Accessibility
|
|
209
|
+
|
|
210
|
+
The bottom sheet is a modal `dialog` labelled by its `title` and described by its content. The focus is trapped inside while it is open, Esc closes it, and the rest of the page is `inert` (except the toasts and the live regions).
|
|
211
|
+
|
|
212
|
+
## MazBottomSheet API
|
|
213
|
+
|
|
214
|
+
`import MazBottomSheet from 'maz-ui/components/MazBottomSheet'`
|
|
215
|
+
|
|
216
|
+
### Props
|
|
217
|
+
|
|
218
|
+
- `model-value` (`boolean`, `v-model`): Modal's model value.
|
|
219
|
+
- `title` (`string`): Title of the bottom sheet in the header.
|
|
220
|
+
- `icon` (`any`): Icon displayed on the left of the header. Accepts an icon value or a full `MazIconProps` object.
|
|
221
|
+
- `max-width` (`` `${number}rem` | `${number}px` | `${number}em` | `${number}vw` | `${number}vh` | `${number}vmin` | `${number}vmax` | `${number}%` | `${number}ch` | `${number}cm` | `${number}mm` | `${number}in` | `${number}ex` | `${number}pc` | `${number... ``, default: `"40rem"`): Bottom sheet's max-width, applied from the tablet breakpoint and up (full-width below).
|
|
222
|
+
- `hide-close-button` (`boolean`, default: `false`): Remove the close button in the header.
|
|
223
|
+
- `hide-header` (`boolean`, default: `false`): Remove the whole header.
|
|
224
|
+
- `padding` (`boolean`, default: `true`): Add the padding on the content area.
|
|
225
|
+
- `persistent` (`boolean`): Persistent bottom sheet (not closable by clicking outside and remove close button) Persistent dialog (not closable by clicking outside and remove close button).
|
|
226
|
+
- `swipe-to-close` (`boolean`, default: `true`): Show the drag handle at the top and allow closing the sheet by swiping it down (iOS-like). The swipe never closes a `persistent` sheet (it snaps back instead).
|
|
227
|
+
- `teleport-selector` (`string`): Teleport selector.
|
|
228
|
+
- `before-close` (`(() => void | Promise<void>)`): Function called before modal is close.
|
|
229
|
+
- `close-on-escape` (`boolean`, default: `true`): Prevent close on escape key.
|
|
230
|
+
- `transition-name` (`string`): Transition name.
|
|
231
|
+
- `backdrop-class` (`ClassValue`): Backdrop class.
|
|
232
|
+
- `backdrop-content-class` (`ClassValue`): Backdrop content class.
|
|
233
|
+
- `content-padding` (`boolean`): Add padding to the content.
|
|
234
|
+
- `justify` (`"none" | "center" | "end" | "start" | "space-between" | "space-around"`): Justify content.
|
|
235
|
+
- `align` (`"none" | "center" | "end" | "start"`): Align content.
|
|
236
|
+
- `variant` (`"bottom-sheet" | "dialog" | "drawer"`): Variant.
|
|
237
|
+
- `aria-labelledby` (`string`): ID for aria-labelledby.
|
|
238
|
+
- `aria-describedby` (`string`): ID for aria-describedby.
|
|
239
|
+
|
|
240
|
+
### Events
|
|
241
|
+
|
|
242
|
+
- `@update:model-value` (payload: `value: boolean`): Emitted when the model value is updated
|
|
243
|
+
- `@open` (payload: `value?: void | undefined`): Emitted when the component is opened
|
|
244
|
+
- `@close` (payload: `value?: void | undefined`): Emitted when the component is closed
|
|
245
|
+
|
|
246
|
+
### Slots
|
|
247
|
+
|
|
248
|
+
- `#handle`: Drag handle (grab bar) displayed at the top when `swipeToClose` is enabled
|
|
249
|
+
- `#header`: Header slot Bindings: `close: () => void` (close function).
|
|
250
|
+
- `#icon`: Icon slot in the header
|
|
251
|
+
- `#title`: Title slot in the header
|
|
252
|
+
- `#default`: Default content Bindings: `close: () => void` (close function).
|
|
253
|
+
- `#footer`: Footer slot Bindings: `close: () => void` (close function).
|
|
254
|
+
|
|
255
|
+
### Exposed (template ref)
|
|
256
|
+
|
|
257
|
+
- `close`: Close the bottom sheet
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: MazBtnGroup
|
|
3
|
-
description: MazBtnGroup is a component to group multiple MazBtn buttons together with seamless styling. Supports props-based or slot-based rendering with customizable orientation, size, and color.
|
|
2
|
+
title: "MazBtnGroup"
|
|
3
|
+
description: "MazBtnGroup is a component to group multiple MazBtn buttons together with seamless styling. Supports props-based or slot-based rendering with customizable orientation, size, and color."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/components/maz-btn-group"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# MazBtnGroup
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> MazBtnGroup is a component to group multiple MazBtn buttons together with seamless styling. Supports props-based or slot-based rendering with customizable orientation, size, and color.
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import MazBtnGroup from 'maz-ui/components/MazBtnGroup'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/components/maz-btn-group
|
|
16
|
+
|
|
17
|
+
> Before use it, you should install the MazUi plugin in your project, follow instructions in [Getting Started](../guide/getting-started.md)
|
|
11
18
|
|
|
12
19
|
## Basic usage with items
|
|
13
20
|
|
|
14
21
|
Use the `items` prop to quickly create a button group from an array of button configurations.
|
|
15
22
|
|
|
16
|
-
<ComponentDemo>
|
|
17
|
-
<MazBtnGroup :items="basicItems" />
|
|
18
|
-
|
|
19
|
-
<template #code>
|
|
20
|
-
|
|
21
23
|
```vue
|
|
22
24
|
<template>
|
|
23
25
|
<MazBtnGroup :items="items" />
|
|
@@ -35,22 +37,10 @@ const items: MazButtonGroupOption[] = [
|
|
|
35
37
|
</script>
|
|
36
38
|
```
|
|
37
39
|
|
|
38
|
-
</template>
|
|
39
|
-
</ComponentDemo>
|
|
40
|
-
|
|
41
40
|
## Slot-based usage
|
|
42
41
|
|
|
43
42
|
Use the default slot to pass `MazBtn` components directly for full control over each button.
|
|
44
43
|
|
|
45
|
-
<ComponentDemo>
|
|
46
|
-
<MazBtnGroup>
|
|
47
|
-
<MazBtn>Edit</MazBtn>
|
|
48
|
-
<MazBtn :active="true">Save</MazBtn>
|
|
49
|
-
<MazBtn>Delete</MazBtn>
|
|
50
|
-
</MazBtnGroup>
|
|
51
|
-
|
|
52
|
-
<template #code>
|
|
53
|
-
|
|
54
44
|
```vue
|
|
55
45
|
<template>
|
|
56
46
|
<MazBtnGroup>
|
|
@@ -66,27 +56,10 @@ import MazBtn from 'maz-ui/components/MazBtn'
|
|
|
66
56
|
</script>
|
|
67
57
|
```
|
|
68
58
|
|
|
69
|
-
</template>
|
|
70
|
-
</ComponentDemo>
|
|
71
|
-
|
|
72
59
|
## Orientation
|
|
73
60
|
|
|
74
61
|
Use the `orientation` prop to arrange buttons horizontally (`row`) or vertically (`col`).
|
|
75
62
|
|
|
76
|
-
<ComponentDemo>
|
|
77
|
-
<div class="maz:flex maz:gap-8 maz:flex-wrap">
|
|
78
|
-
<div>
|
|
79
|
-
<p class="maz:mb-2 maz:text-muted">Row (default)</p>
|
|
80
|
-
<MazBtnGroup :items="basicItems" orientation="row" />
|
|
81
|
-
</div>
|
|
82
|
-
<div>
|
|
83
|
-
<p class="maz:mb-2 maz:text-muted">Column</p>
|
|
84
|
-
<MazBtnGroup :items="basicItems" orientation="col" />
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
<template #code>
|
|
89
|
-
|
|
90
63
|
```vue
|
|
91
64
|
<template>
|
|
92
65
|
<MazBtnGroup :items="items" orientation="row" />
|
|
@@ -94,20 +67,10 @@ Use the `orientation` prop to arrange buttons horizontally (`row`) or vertically
|
|
|
94
67
|
</template>
|
|
95
68
|
```
|
|
96
69
|
|
|
97
|
-
</template>
|
|
98
|
-
</ComponentDemo>
|
|
99
|
-
|
|
100
70
|
## Sizes
|
|
101
71
|
|
|
102
72
|
Use the `size` prop to apply a size to all buttons in the group.
|
|
103
73
|
|
|
104
|
-
<ComponentDemo>
|
|
105
|
-
<div class="maz:flex maz:flex-col maz:gap-4 maz:items-start">
|
|
106
|
-
<MazBtnGroup v-for="size in sizes" :key="size" :items="basicItems" :size="size" />
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<template #code>
|
|
110
|
-
|
|
111
74
|
```vue
|
|
112
75
|
<template>
|
|
113
76
|
<MazBtnGroup :items="items" size="mini" />
|
|
@@ -119,20 +82,10 @@ Use the `size` prop to apply a size to all buttons in the group.
|
|
|
119
82
|
</template>
|
|
120
83
|
```
|
|
121
84
|
|
|
122
|
-
</template>
|
|
123
|
-
</ComponentDemo>
|
|
124
|
-
|
|
125
85
|
## Colors
|
|
126
86
|
|
|
127
87
|
Use the `color` prop to apply a color to all buttons in the group.
|
|
128
88
|
|
|
129
|
-
<ComponentDemo>
|
|
130
|
-
<div class="maz:flex maz:flex-col maz:gap-4 maz:items-start">
|
|
131
|
-
<MazBtnGroup v-for="color in colors" :key="color" :items="basicItems" :color="color" />
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
<template #code>
|
|
135
|
-
|
|
136
89
|
```vue
|
|
137
90
|
<template>
|
|
138
91
|
<MazBtnGroup :items="items" color="primary" />
|
|
@@ -144,22 +97,12 @@ Use the `color` prop to apply a color to all buttons in the group.
|
|
|
144
97
|
</template>
|
|
145
98
|
```
|
|
146
99
|
|
|
147
|
-
</template>
|
|
148
|
-
</ComponentDemo>
|
|
149
|
-
|
|
150
100
|
## Button variants
|
|
151
101
|
|
|
152
102
|
Use the `outlined` or `pastel` properties on individual buttons or apply different variants to buttons in the group.
|
|
153
103
|
|
|
154
104
|
### Outlined
|
|
155
105
|
|
|
156
|
-
<br />
|
|
157
|
-
|
|
158
|
-
<ComponentDemo>
|
|
159
|
-
<MazBtnGroup :items="outlinedItems" />
|
|
160
|
-
|
|
161
|
-
<template #code>
|
|
162
|
-
|
|
163
106
|
```vue
|
|
164
107
|
<template>
|
|
165
108
|
<MazBtnGroup :items="items" />
|
|
@@ -177,18 +120,8 @@ const items: MazButtonGroupOption[] = [
|
|
|
177
120
|
</script>
|
|
178
121
|
```
|
|
179
122
|
|
|
180
|
-
</template>
|
|
181
|
-
</ComponentDemo>
|
|
182
|
-
|
|
183
123
|
### Pastel
|
|
184
124
|
|
|
185
|
-
<br />
|
|
186
|
-
|
|
187
|
-
<ComponentDemo>
|
|
188
|
-
<MazBtnGroup :items="pastelItems" />
|
|
189
|
-
|
|
190
|
-
<template #code>
|
|
191
|
-
|
|
192
125
|
```vue
|
|
193
126
|
<template>
|
|
194
127
|
<MazBtnGroup :items="items" />
|
|
@@ -206,29 +139,8 @@ const items: MazButtonGroupOption[] = [
|
|
|
206
139
|
</script>
|
|
207
140
|
```
|
|
208
141
|
|
|
209
|
-
</template>
|
|
210
|
-
</ComponentDemo>
|
|
211
|
-
|
|
212
142
|
### Slot-based variants
|
|
213
143
|
|
|
214
|
-
<br />
|
|
215
|
-
|
|
216
|
-
<ComponentDemo>
|
|
217
|
-
<div class="maz:flex maz:flex-col maz:gap-4 maz:items-start">
|
|
218
|
-
<MazBtnGroup>
|
|
219
|
-
<MazBtn outlined>Edit</MazBtn>
|
|
220
|
-
<MazBtn outlined>Save</MazBtn>
|
|
221
|
-
<MazBtn outlined>Delete</MazBtn>
|
|
222
|
-
</MazBtnGroup>
|
|
223
|
-
<MazBtnGroup>
|
|
224
|
-
<MazBtn pastel>Edit</MazBtn>
|
|
225
|
-
<MazBtn pastel>Save</MazBtn>
|
|
226
|
-
<MazBtn pastel>Delete</MazBtn>
|
|
227
|
-
</MazBtnGroup>
|
|
228
|
-
</div>
|
|
229
|
-
|
|
230
|
-
<template #code>
|
|
231
|
-
|
|
232
144
|
```vue
|
|
233
145
|
<template>
|
|
234
146
|
<MazBtnGroup>
|
|
@@ -245,18 +157,10 @@ const items: MazButtonGroupOption[] = [
|
|
|
245
157
|
</template>
|
|
246
158
|
```
|
|
247
159
|
|
|
248
|
-
</template>
|
|
249
|
-
</ComponentDemo>
|
|
250
|
-
|
|
251
160
|
## Click handlers
|
|
252
161
|
|
|
253
162
|
Add click handlers to buttons using the `onClick` property in items.
|
|
254
163
|
|
|
255
|
-
<ComponentDemo>
|
|
256
|
-
<MazBtnGroup :items="clickableItems" />
|
|
257
|
-
|
|
258
|
-
<template #code>
|
|
259
|
-
|
|
260
164
|
```vue
|
|
261
165
|
<template>
|
|
262
166
|
<MazBtnGroup :items="items" />
|
|
@@ -273,21 +177,10 @@ const items: MazButtonGroupOption[] = [
|
|
|
273
177
|
</script>
|
|
274
178
|
```
|
|
275
179
|
|
|
276
|
-
</template>
|
|
277
|
-
</ComponentDemo>
|
|
278
|
-
|
|
279
180
|
## With icons
|
|
280
181
|
|
|
281
182
|
Use the `startIcon` or `endIcon` properties to add icons to buttons.
|
|
282
183
|
|
|
283
|
-
<ComponentDemo>
|
|
284
|
-
<MazBtnGroup :items="iconItems" />
|
|
285
|
-
<br />
|
|
286
|
-
<br />
|
|
287
|
-
<MazBtnGroup :items="iconOnlyItems" />
|
|
288
|
-
|
|
289
|
-
<template #code>
|
|
290
|
-
|
|
291
184
|
```vue
|
|
292
185
|
<template>
|
|
293
186
|
<MazBtnGroup :items="items" />
|
|
@@ -312,18 +205,10 @@ const iconOnlyItems: MazButtonGroupOption[] = [
|
|
|
312
205
|
</script>
|
|
313
206
|
```
|
|
314
207
|
|
|
315
|
-
</template>
|
|
316
|
-
</ComponentDemo>
|
|
317
|
-
|
|
318
208
|
## With links
|
|
319
209
|
|
|
320
210
|
Use the `href` or `to` properties to create link buttons.
|
|
321
211
|
|
|
322
|
-
<ComponentDemo>
|
|
323
|
-
<MazBtnGroup :items="linkItems" />
|
|
324
|
-
|
|
325
|
-
<template #code>
|
|
326
|
-
|
|
327
212
|
```vue
|
|
328
213
|
<template>
|
|
329
214
|
<MazBtnGroup :items="items" />
|
|
@@ -340,18 +225,10 @@ const items: MazButtonGroupOption[] = [
|
|
|
340
225
|
</script>
|
|
341
226
|
```
|
|
342
227
|
|
|
343
|
-
</template>
|
|
344
|
-
</ComponentDemo>
|
|
345
|
-
|
|
346
228
|
## Mixed button styles
|
|
347
229
|
|
|
348
230
|
Combine different button styles within the same group.
|
|
349
231
|
|
|
350
|
-
<ComponentDemo>
|
|
351
|
-
<MazBtnGroup :items="mixedItems" />
|
|
352
|
-
|
|
353
|
-
<template #code>
|
|
354
|
-
|
|
355
232
|
```vue
|
|
356
233
|
<template>
|
|
357
234
|
<MazBtnGroup :items="items" />
|
|
@@ -370,9 +247,6 @@ const items: MazButtonGroupOption[] = [
|
|
|
370
247
|
</script>
|
|
371
248
|
```
|
|
372
249
|
|
|
373
|
-
</template>
|
|
374
|
-
</ComponentDemo>
|
|
375
|
-
|
|
376
250
|
## Types
|
|
377
251
|
|
|
378
252
|
### MazButtonGroupOption
|
|
@@ -421,59 +295,23 @@ interface MazButtonGroupProps {
|
|
|
421
295
|
}
|
|
422
296
|
```
|
|
423
297
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
<script lang="ts" setup>
|
|
427
|
-
import type { MazButtonGroupOption } from 'maz-ui/components/MazBtnGroup'
|
|
428
|
-
import { MazArrowLeft } from '@maz-ui/icons/raw/MazArrowLeft'
|
|
429
|
-
import { MazArrowRight } from '@maz-ui/icons/raw/MazArrowRight'
|
|
430
|
-
import { MazBars3 } from '@maz-ui/icons/raw/MazBars3'
|
|
431
|
-
import { MazSquares2x2 } from '@maz-ui/icons/raw/MazSquares2x2'
|
|
432
|
-
|
|
433
|
-
const sizes = ['mini', 'xs', 'sm', 'md', 'lg', 'xl'] as const
|
|
434
|
-
const colors = ['primary', 'secondary', 'info', 'success', 'warning', 'destructive'] as const
|
|
435
|
-
|
|
436
|
-
const basicItems: MazButtonGroupOption[] = [
|
|
437
|
-
{ text: 'Day' },
|
|
438
|
-
{ text: 'Week', active: true },
|
|
439
|
-
{ text: 'Month' },
|
|
440
|
-
]
|
|
441
|
-
|
|
442
|
-
const outlinedItems: MazButtonGroupOption[] = [
|
|
443
|
-
{ text: 'Day', outlined: true },
|
|
444
|
-
{ text: 'Week', outlined: true, active: true },
|
|
445
|
-
{ text: 'Month', outlined: true },
|
|
446
|
-
]
|
|
298
|
+
## MazBtnGroup API
|
|
447
299
|
|
|
448
|
-
|
|
449
|
-
{ text: 'Day', pastel: true },
|
|
450
|
-
{ text: 'Week', pastel: true },
|
|
451
|
-
{ text: 'Month', pastel: true },
|
|
452
|
-
]
|
|
300
|
+
`import MazBtnGroup from 'maz-ui/components/MazBtnGroup'`
|
|
453
301
|
|
|
454
|
-
|
|
455
|
-
{ text: 'Alert', onClick: () => alert('Clicked Alert!') },
|
|
456
|
-
{ text: 'Console', onClick: () => console.log('Clicked Console!') },
|
|
457
|
-
]
|
|
302
|
+
### Props
|
|
458
303
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
304
|
+
- `items` (`MazButtonGroupOption[]`): The items for the button group (optional when using slot-based approach).
|
|
305
|
+
- `orientation` (`"row" | "col"`, default: `"row"`): The orientation of the button group.
|
|
306
|
+
- `size` (`"xs" | "sm" | "md" | "lg" | "xl" | "mini"`, default: `'md'`): The size of all buttons (only applies to props-based buttons).
|
|
307
|
+
- `color` (`"primary" | "secondary" | "accent" | "info" | "success" | "warning" | "destructive" | "contrast" | "transparent"`, default: `"primary"`): The color of all buttons (only applies to props-based buttons).
|
|
308
|
+
- `rounded-size` (`MazRoundedSize`, default: `'lg'`): The rounded size of the buttons.
|
|
309
|
+
- `outlined` (`boolean`, default: `false`): The outlined state of the buttons.
|
|
310
|
+
- `pastel` (`boolean`, default: `false`): The pastel state of the buttons.
|
|
311
|
+
- `loading` (`boolean`, default: `false`): The loading state of the buttons.
|
|
312
|
+
- `disabled` (`boolean`, default: `false`): The disabled state of the buttons.
|
|
467
313
|
|
|
468
|
-
|
|
469
|
-
{ text: 'External Link', href: 'https://maz-ui.com' },
|
|
470
|
-
{ text: 'Router Link', to: { path: '/components/maz-btn' } },
|
|
471
|
-
]
|
|
314
|
+
### Slots
|
|
472
315
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
{ text: 'Success', color: 'success' },
|
|
476
|
-
{ text: 'Warning', color: 'warning', outlined: true },
|
|
477
|
-
{ text: 'Destructive', color: 'destructive', pastel: true },
|
|
478
|
-
]
|
|
479
|
-
</script>
|
|
316
|
+
- `#default`: Slot for passing MazBtn components directly
|
|
317
|
+
- `#button-{index}`: One slot per `index`: `#button-<index>`.
|