@mediquo/medicore 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -0
- package/dist/components/advisor-contact/advisor-contact.d.ts +39 -0
- package/dist/components/advisor-contact/advisor-contact.js +94 -0
- package/dist/components/advisor-contact/advisor-contact.js.map +1 -0
- package/dist/components/advisor-contact/index.d.ts +1 -0
- package/dist/components/announcement/announcement-dialog.d.ts +39 -0
- package/dist/components/announcement/announcement-dialog.js +107 -0
- package/dist/components/announcement/announcement-dialog.js.map +1 -0
- package/dist/components/announcement/announcement-illustration.d.ts +9 -0
- package/dist/components/announcement/announcement-illustration.js +58 -0
- package/dist/components/announcement/announcement-illustration.js.map +1 -0
- package/dist/components/announcement/index.d.ts +2 -0
- package/dist/components/app-shell/app-shell.d.ts +74 -0
- package/dist/components/app-shell/app-shell.js +208 -0
- package/dist/components/app-shell/app-shell.js.map +1 -0
- package/dist/components/app-shell/index.d.ts +1 -0
- package/dist/components/appointment-row/appointment-row.d.ts +59 -0
- package/dist/components/appointment-row/appointment-row.js +160 -0
- package/dist/components/appointment-row/appointment-row.js.map +1 -0
- package/dist/components/appointment-row/index.d.ts +1 -0
- package/dist/components/auth-panel/auth-panel.d.ts +20 -0
- package/dist/components/auth-panel/auth-panel.js +36 -0
- package/dist/components/auth-panel/auth-panel.js.map +1 -0
- package/dist/components/auth-panel/index.d.ts +1 -0
- package/dist/components/availability-column/availability-column.d.ts +28 -0
- package/dist/components/availability-column/availability-column.js +57 -0
- package/dist/components/availability-column/availability-column.js.map +1 -0
- package/dist/components/availability-column/index.d.ts +1 -0
- package/dist/components/availability-row/availability-row.d.ts +36 -0
- package/dist/components/availability-row/availability-row.js +60 -0
- package/dist/components/availability-row/availability-row.js.map +1 -0
- package/dist/components/availability-row/index.d.ts +1 -0
- package/dist/components/avatar/avatar.d.ts +57 -0
- package/dist/components/avatar/avatar.js +115 -0
- package/dist/components/avatar/avatar.js.map +1 -0
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/badge/badge.d.ts +20 -0
- package/dist/components/badge/badge.js +42 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/banner/banner.d.ts +32 -0
- package/dist/components/banner/banner.js +93 -0
- package/dist/components/banner/banner.js.map +1 -0
- package/dist/components/banner/index.d.ts +1 -0
- package/dist/components/bottom-bar/bottom-bar.d.ts +41 -0
- package/dist/components/bottom-bar/bottom-bar.js +76 -0
- package/dist/components/bottom-bar/bottom-bar.js.map +1 -0
- package/dist/components/bottom-bar/index.d.ts +1 -0
- package/dist/components/brand-mark/brand-mark.d.ts +22 -0
- package/dist/components/brand-mark/brand-mark.js +72 -0
- package/dist/components/brand-mark/brand-mark.js.map +1 -0
- package/dist/components/brand-mark/index.d.ts +1 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +36 -0
- package/dist/components/breadcrumb/breadcrumb.js +70 -0
- package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/breadcrumb/index.d.ts +1 -0
- package/dist/components/button/button.d.ts +29 -0
- package/dist/components/button/button.js +104 -0
- package/dist/components/button/button.js.map +1 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/card/card.d.ts +84 -0
- package/dist/components/card/card.js +157 -0
- package/dist/components/card/card.js.map +1 -0
- package/dist/components/card/index.d.ts +1 -0
- package/dist/components/card-appointment/card-appointment.d.ts +58 -0
- package/dist/components/card-appointment/card-appointment.js +136 -0
- package/dist/components/card-appointment/card-appointment.js.map +1 -0
- package/dist/components/card-appointment/index.d.ts +1 -0
- package/dist/components/card-article/card-article.d.ts +28 -0
- package/dist/components/card-article/card-article.js +46 -0
- package/dist/components/card-article/card-article.js.map +1 -0
- package/dist/components/card-article/index.d.ts +1 -0
- package/dist/components/card-professional/card-professional.d.ts +56 -0
- package/dist/components/card-professional/card-professional.js +77 -0
- package/dist/components/card-professional/card-professional.js.map +1 -0
- package/dist/components/card-professional/index.d.ts +1 -0
- package/dist/components/card-professional-mini/card-professional-mini.d.ts +22 -0
- package/dist/components/card-professional-mini/card-professional-mini.js +37 -0
- package/dist/components/card-professional-mini/card-professional-mini.js.map +1 -0
- package/dist/components/card-professional-mini/index.d.ts +1 -0
- package/dist/components/card-program/card-program.d.ts +45 -0
- package/dist/components/card-program/card-program.js +142 -0
- package/dist/components/card-program/card-program.js.map +1 -0
- package/dist/components/card-program/index.d.ts +1 -0
- package/dist/components/card-service-option/card-service-option.d.ts +33 -0
- package/dist/components/card-service-option/card-service-option.js +49 -0
- package/dist/components/card-service-option/card-service-option.js.map +1 -0
- package/dist/components/card-service-option/index.d.ts +1 -0
- package/dist/components/card-testimonial/card-testimonial.d.ts +17 -0
- package/dist/components/card-testimonial/card-testimonial.js +36 -0
- package/dist/components/card-testimonial/card-testimonial.js.map +1 -0
- package/dist/components/card-testimonial/index.d.ts +1 -0
- package/dist/components/chat/chat-attachment.d.ts +34 -0
- package/dist/components/chat/chat-attachment.js +90 -0
- package/dist/components/chat/chat-attachment.js.map +1 -0
- package/dist/components/chat/chat-bubble.d.ts +49 -0
- package/dist/components/chat/chat-bubble.js +102 -0
- package/dist/components/chat/chat-bubble.js.map +1 -0
- package/dist/components/chat/chat-composer.d.ts +40 -0
- package/dist/components/chat/chat-composer.js +114 -0
- package/dist/components/chat/chat-composer.js.map +1 -0
- package/dist/components/chat/chat-conversation-row.d.ts +42 -0
- package/dist/components/chat/chat-conversation-row.js +104 -0
- package/dist/components/chat/chat-conversation-row.js.map +1 -0
- package/dist/components/chat/chat-date-separator.d.ts +15 -0
- package/dist/components/chat/chat-date-separator.js +29 -0
- package/dist/components/chat/chat-date-separator.js.map +1 -0
- package/dist/components/chat/chat-delivery-status.d.ts +21 -0
- package/dist/components/chat/chat-delivery-status.js +43 -0
- package/dist/components/chat/chat-delivery-status.js.map +1 -0
- package/dist/components/chat/chat-launcher.d.ts +24 -0
- package/dist/components/chat/chat-launcher.js +52 -0
- package/dist/components/chat/chat-launcher.js.map +1 -0
- package/dist/components/chat/chat-message-list.d.ts +13 -0
- package/dist/components/chat/chat-message-list.js +23 -0
- package/dist/components/chat/chat-message-list.js.map +1 -0
- package/dist/components/chat/chat-room-header.d.ts +33 -0
- package/dist/components/chat/chat-room-header.js +53 -0
- package/dist/components/chat/chat-room-header.js.map +1 -0
- package/dist/components/chat/chat-typing-indicator.d.ts +20 -0
- package/dist/components/chat/chat-typing-indicator.js +61 -0
- package/dist/components/chat/chat-typing-indicator.js.map +1 -0
- package/dist/components/chat/index.d.ts +10 -0
- package/dist/components/checkbox/checkbox-field.d.ts +25 -0
- package/dist/components/checkbox/checkbox-field.js +62 -0
- package/dist/components/checkbox/checkbox-field.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +28 -0
- package/dist/components/checkbox/checkbox.js +62 -0
- package/dist/components/checkbox/checkbox.js.map +1 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/chip/chip.d.ts +60 -0
- package/dist/components/chip/chip.js +101 -0
- package/dist/components/chip/chip.js.map +1 -0
- package/dist/components/chip/index.d.ts +1 -0
- package/dist/components/date-badge/date-badge.d.ts +15 -0
- package/dist/components/date-badge/date-badge.js +35 -0
- package/dist/components/date-badge/date-badge.js.map +1 -0
- package/dist/components/date-badge/index.d.ts +1 -0
- package/dist/components/day-cell/day-cell.d.ts +45 -0
- package/dist/components/day-cell/day-cell.js +124 -0
- package/dist/components/day-cell/day-cell.js.map +1 -0
- package/dist/components/day-cell/index.d.ts +1 -0
- package/dist/components/divider/divider.d.ts +23 -0
- package/dist/components/divider/divider.js +49 -0
- package/dist/components/divider/divider.js.map +1 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/empty-state/empty-state.d.ts +53 -0
- package/dist/components/empty-state/empty-state.js +57 -0
- package/dist/components/empty-state/empty-state.js.map +1 -0
- package/dist/components/empty-state/index.d.ts +1 -0
- package/dist/components/field/field-context.d.ts +19 -0
- package/dist/components/field/field-context.js +10 -0
- package/dist/components/field/field-context.js.map +1 -0
- package/dist/components/field/field.d.ts +47 -0
- package/dist/components/field/field.js +116 -0
- package/dist/components/field/field.js.map +1 -0
- package/dist/components/field/index.d.ts +1 -0
- package/dist/components/footer/footer.d.ts +29 -0
- package/dist/components/footer/footer.js +88 -0
- package/dist/components/footer/footer.js.map +1 -0
- package/dist/components/footer/index.d.ts +1 -0
- package/dist/components/health-record/health-record.d.ts +88 -0
- package/dist/components/health-record/health-record.js +255 -0
- package/dist/components/health-record/health-record.js.map +1 -0
- package/dist/components/health-record/index.d.ts +1 -0
- package/dist/components/hero-greeting/hero-greeting.d.ts +17 -0
- package/dist/components/hero-greeting/hero-greeting.js +29 -0
- package/dist/components/hero-greeting/hero-greeting.js.map +1 -0
- package/dist/components/hero-greeting/index.d.ts +1 -0
- package/dist/components/icon-button/icon-button.d.ts +37 -0
- package/dist/components/icon-button/icon-button.js +64 -0
- package/dist/components/icon-button/icon-button.js.map +1 -0
- package/dist/components/icon-button/index.d.ts +1 -0
- package/dist/components/icon-container/icon-container.d.ts +29 -0
- package/dist/components/icon-container/icon-container.js +49 -0
- package/dist/components/icon-container/icon-container.js.map +1 -0
- package/dist/components/icon-container/index.d.ts +1 -0
- package/dist/components/included-item/included-item.d.ts +10 -0
- package/dist/components/included-item/included-item.js +37 -0
- package/dist/components/included-item/included-item.js.map +1 -0
- package/dist/components/included-item/index.d.ts +1 -0
- package/dist/components/input/control-styles.d.ts +34 -0
- package/dist/components/input/control-styles.js +36 -0
- package/dist/components/input/control-styles.js.map +1 -0
- package/dist/components/input/index.d.ts +1 -0
- package/dist/components/input/input.d.ts +35 -0
- package/dist/components/input/input.js +123 -0
- package/dist/components/input/input.js.map +1 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/link.d.ts +52 -0
- package/dist/components/link/link.js +94 -0
- package/dist/components/link/link.js.map +1 -0
- package/dist/components/list-row/index.d.ts +1 -0
- package/dist/components/list-row/list-row.d.ts +47 -0
- package/dist/components/list-row/list-row.js +71 -0
- package/dist/components/list-row/list-row.js.map +1 -0
- package/dist/components/logo/index.d.ts +1 -0
- package/dist/components/logo/logo.d.ts +13 -0
- package/dist/components/logo/logo.js +48 -0
- package/dist/components/logo/logo.js.map +1 -0
- package/dist/components/menu/index.d.ts +1 -0
- package/dist/components/menu/menu.d.ts +79 -0
- package/dist/components/menu/menu.js +250 -0
- package/dist/components/menu/menu.js.map +1 -0
- package/dist/components/mobile-header/index.d.ts +1 -0
- package/dist/components/mobile-header/mobile-header.d.ts +49 -0
- package/dist/components/mobile-header/mobile-header.js +84 -0
- package/dist/components/mobile-header/mobile-header.js.map +1 -0
- package/dist/components/modal/confirm-modal.d.ts +32 -0
- package/dist/components/modal/confirm-modal.js +78 -0
- package/dist/components/modal/confirm-modal.js.map +1 -0
- package/dist/components/modal/index.d.ts +2 -0
- package/dist/components/modal/modal.d.ts +103 -0
- package/dist/components/modal/modal.js +248 -0
- package/dist/components/modal/modal.js.map +1 -0
- package/dist/components/modal/use-media-query.d.ts +7 -0
- package/dist/components/modal/use-media-query.js +22 -0
- package/dist/components/modal/use-media-query.js.map +1 -0
- package/dist/components/nav-item/index.d.ts +1 -0
- package/dist/components/nav-item/nav-item.d.ts +54 -0
- package/dist/components/nav-item/nav-item.js +124 -0
- package/dist/components/nav-item/nav-item.js.map +1 -0
- package/dist/components/otp-input/index.d.ts +1 -0
- package/dist/components/otp-input/otp-input.d.ts +40 -0
- package/dist/components/otp-input/otp-input.js +152 -0
- package/dist/components/otp-input/otp-input.js.map +1 -0
- package/dist/components/page-header/index.d.ts +1 -0
- package/dist/components/page-header/page-header.d.ts +24 -0
- package/dist/components/page-header/page-header.js +41 -0
- package/dist/components/page-header/page-header.js.map +1 -0
- package/dist/components/phone-input/index.d.ts +1 -0
- package/dist/components/phone-input/phone-input.d.ts +46 -0
- package/dist/components/phone-input/phone-input.js +219 -0
- package/dist/components/phone-input/phone-input.js.map +1 -0
- package/dist/components/promo-app/index.d.ts +1 -0
- package/dist/components/promo-app/promo-app.d.ts +29 -0
- package/dist/components/promo-app/promo-app.js +51 -0
- package/dist/components/promo-app/promo-app.js.map +1 -0
- package/dist/components/radio/field-item-label.d.ts +13 -0
- package/dist/components/radio/field-item-label.js +29 -0
- package/dist/components/radio/field-item-label.js.map +1 -0
- package/dist/components/radio/index.d.ts +1 -0
- package/dist/components/radio/radio.d.ts +38 -0
- package/dist/components/radio/radio.js +90 -0
- package/dist/components/radio/radio.js.map +1 -0
- package/dist/components/radio/use-field-group-label.d.ts +7 -0
- package/dist/components/radio/use-field-group-label.js +16 -0
- package/dist/components/radio/use-field-group-label.js.map +1 -0
- package/dist/components/rating/index.d.ts +1 -0
- package/dist/components/rating/rating.d.ts +23 -0
- package/dist/components/rating/rating.js +93 -0
- package/dist/components/rating/rating.js.map +1 -0
- package/dist/components/section-header/index.d.ts +1 -0
- package/dist/components/section-header/section-header.d.ts +37 -0
- package/dist/components/section-header/section-header.js +60 -0
- package/dist/components/section-header/section-header.js.map +1 -0
- package/dist/components/segmented-control/index.d.ts +1 -0
- package/dist/components/segmented-control/segmented-control.d.ts +34 -0
- package/dist/components/segmented-control/segmented-control.js +51 -0
- package/dist/components/segmented-control/segmented-control.js.map +1 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/native-select.d.ts +30 -0
- package/dist/components/select/native-select.js +83 -0
- package/dist/components/select/native-select.js.map +1 -0
- package/dist/components/select/select.d.ts +49 -0
- package/dist/components/select/select.js +125 -0
- package/dist/components/select/select.js.map +1 -0
- package/dist/components/selection-card/index.d.ts +1 -0
- package/dist/components/selection-card/selection-card.d.ts +31 -0
- package/dist/components/selection-card/selection-card.js +90 -0
- package/dist/components/selection-card/selection-card.js.map +1 -0
- package/dist/components/severity-indicator/index.d.ts +1 -0
- package/dist/components/severity-indicator/severity-indicator.d.ts +18 -0
- package/dist/components/severity-indicator/severity-indicator.js +64 -0
- package/dist/components/severity-indicator/severity-indicator.js.map +1 -0
- package/dist/components/severity-scale/index.d.ts +1 -0
- package/dist/components/severity-scale/severity-scale.d.ts +17 -0
- package/dist/components/severity-scale/severity-scale.js +22 -0
- package/dist/components/severity-scale/severity-scale.js.map +1 -0
- package/dist/components/sidebar/index.d.ts +1 -0
- package/dist/components/sidebar/sidebar.d.ts +99 -0
- package/dist/components/sidebar/sidebar.js +228 -0
- package/dist/components/sidebar/sidebar.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton/skeleton.d.ts +33 -0
- package/dist/components/skeleton/skeleton.js +47 -0
- package/dist/components/skeleton/skeleton.js.map +1 -0
- package/dist/components/social-button/index.d.ts +1 -0
- package/dist/components/social-button/social-button.d.ts +29 -0
- package/dist/components/social-button/social-button.js +53 -0
- package/dist/components/social-button/social-button.js.map +1 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/spinner.d.ts +20 -0
- package/dist/components/spinner/spinner.js +54 -0
- package/dist/components/spinner/spinner.js.map +1 -0
- package/dist/components/stat-tile/index.d.ts +1 -0
- package/dist/components/stat-tile/stat-tile.d.ts +15 -0
- package/dist/components/stat-tile/stat-tile.js +28 -0
- package/dist/components/stat-tile/stat-tile.js.map +1 -0
- package/dist/components/step-indicator/index.d.ts +1 -0
- package/dist/components/step-indicator/step-indicator.d.ts +17 -0
- package/dist/components/step-indicator/step-indicator.js +35 -0
- package/dist/components/step-indicator/step-indicator.js.map +1 -0
- package/dist/components/store-badge/index.d.ts +1 -0
- package/dist/components/store-badge/store-badge.d.ts +22 -0
- package/dist/components/store-badge/store-badge.js +40 -0
- package/dist/components/store-badge/store-badge.js.map +1 -0
- package/dist/components/switch/index.d.ts +1 -0
- package/dist/components/switch/switch.d.ts +23 -0
- package/dist/components/switch/switch.js +67 -0
- package/dist/components/switch/switch.js.map +1 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/table.d.ts +85 -0
- package/dist/components/table/table.js +175 -0
- package/dist/components/table/table.js.map +1 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs/tabs.d.ts +58 -0
- package/dist/components/tabs/tabs.js +89 -0
- package/dist/components/tabs/tabs.js.map +1 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/textarea.d.ts +25 -0
- package/dist/components/textarea/textarea.js +79 -0
- package/dist/components/textarea/textarea.js.map +1 -0
- package/dist/components/time-slot/index.d.ts +1 -0
- package/dist/components/time-slot/time-slot.d.ts +50 -0
- package/dist/components/time-slot/time-slot.js +75 -0
- package/dist/components/time-slot/time-slot.js.map +1 -0
- package/dist/components/toast/index.d.ts +1 -0
- package/dist/components/toast/toast.d.ts +60 -0
- package/dist/components/toast/toast.js +159 -0
- package/dist/components/toast/toast.js.map +1 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/tooltip.d.ts +40 -0
- package/dist/components/tooltip/tooltip.js +110 -0
- package/dist/components/tooltip/tooltip.js.map +1 -0
- package/dist/components/video/index.d.ts +4 -0
- package/dist/components/video/video-control-button.d.ts +33 -0
- package/dist/components/video/video-control-button.js +119 -0
- package/dist/components/video/video-control-button.js.map +1 -0
- package/dist/components/video/video-label.d.ts +14 -0
- package/dist/components/video/video-label.js +25 -0
- package/dist/components/video/video-label.js.map +1 -0
- package/dist/components/video/video-stage.d.ts +39 -0
- package/dist/components/video/video-stage.js +96 -0
- package/dist/components/video/video-stage.js.map +1 -0
- package/dist/components/video/video-tile.d.ts +37 -0
- package/dist/components/video/video-tile.js +61 -0
- package/dist/components/video/video-tile.js.map +1 -0
- package/dist/icons/create-icon.d.ts +18 -0
- package/dist/icons/create-icon.js +46 -0
- package/dist/icons/create-icon.js.map +1 -0
- package/dist/icons/generated/activity-heart.d.ts +1 -0
- package/dist/icons/generated/activity-heart.js +10 -0
- package/dist/icons/generated/activity-heart.js.map +1 -0
- package/dist/icons/generated/activity.d.ts +1 -0
- package/dist/icons/generated/activity.js +10 -0
- package/dist/icons/generated/activity.js.map +1 -0
- package/dist/icons/generated/alert-circle.d.ts +1 -0
- package/dist/icons/generated/alert-circle.js +10 -0
- package/dist/icons/generated/alert-circle.js.map +1 -0
- package/dist/icons/generated/alert-triangle.d.ts +1 -0
- package/dist/icons/generated/alert-triangle.js +10 -0
- package/dist/icons/generated/alert-triangle.js.map +1 -0
- package/dist/icons/generated/allergy-peanut.d.ts +1 -0
- package/dist/icons/generated/allergy-peanut.js +16 -0
- package/dist/icons/generated/allergy-peanut.js.map +1 -0
- package/dist/icons/generated/annotation-alert.d.ts +1 -0
- package/dist/icons/generated/annotation-alert.js +10 -0
- package/dist/icons/generated/annotation-alert.js.map +1 -0
- package/dist/icons/generated/annotation-check.d.ts +1 -0
- package/dist/icons/generated/annotation-check.js +10 -0
- package/dist/icons/generated/annotation-check.js.map +1 -0
- package/dist/icons/generated/annotation-info.d.ts +1 -0
- package/dist/icons/generated/annotation-info.js +10 -0
- package/dist/icons/generated/annotation-info.js.map +1 -0
- package/dist/icons/generated/annotation-question.d.ts +1 -0
- package/dist/icons/generated/annotation-question.js +10 -0
- package/dist/icons/generated/annotation-question.js.map +1 -0
- package/dist/icons/generated/annotation.d.ts +1 -0
- package/dist/icons/generated/annotation.js +10 -0
- package/dist/icons/generated/annotation.js.map +1 -0
- package/dist/icons/generated/arrow-circle-down.d.ts +1 -0
- package/dist/icons/generated/arrow-circle-down.js +10 -0
- package/dist/icons/generated/arrow-circle-down.js.map +1 -0
- package/dist/icons/generated/arrow-circle-left.d.ts +1 -0
- package/dist/icons/generated/arrow-circle-left.js +10 -0
- package/dist/icons/generated/arrow-circle-left.js.map +1 -0
- package/dist/icons/generated/arrow-circle-right.d.ts +1 -0
- package/dist/icons/generated/arrow-circle-right.js +10 -0
- package/dist/icons/generated/arrow-circle-right.js.map +1 -0
- package/dist/icons/generated/arrow-circle-up.d.ts +1 -0
- package/dist/icons/generated/arrow-circle-up.js +10 -0
- package/dist/icons/generated/arrow-circle-up.js.map +1 -0
- package/dist/icons/generated/arrow-narrow-down.d.ts +1 -0
- package/dist/icons/generated/arrow-narrow-down.js +10 -0
- package/dist/icons/generated/arrow-narrow-down.js.map +1 -0
- package/dist/icons/generated/arrow-narrow-left.d.ts +1 -0
- package/dist/icons/generated/arrow-narrow-left.js +10 -0
- package/dist/icons/generated/arrow-narrow-left.js.map +1 -0
- package/dist/icons/generated/arrow-narrow-right.d.ts +1 -0
- package/dist/icons/generated/arrow-narrow-right.js +10 -0
- package/dist/icons/generated/arrow-narrow-right.js.map +1 -0
- package/dist/icons/generated/arrow-narrow-up.d.ts +1 -0
- package/dist/icons/generated/arrow-narrow-up.js +10 -0
- package/dist/icons/generated/arrow-narrow-up.js.map +1 -0
- package/dist/icons/generated/arrow-right.d.ts +1 -0
- package/dist/icons/generated/arrow-right.js +10 -0
- package/dist/icons/generated/arrow-right.js.map +1 -0
- package/dist/icons/generated/bar-chart-01.d.ts +1 -0
- package/dist/icons/generated/bar-chart-01.js +10 -0
- package/dist/icons/generated/bar-chart-01.js.map +1 -0
- package/dist/icons/generated/bar-chart-02.d.ts +1 -0
- package/dist/icons/generated/bar-chart-02.js +10 -0
- package/dist/icons/generated/bar-chart-02.js.map +1 -0
- package/dist/icons/generated/bar-chart-03.d.ts +1 -0
- package/dist/icons/generated/bar-chart-03.js +10 -0
- package/dist/icons/generated/bar-chart-03.js.map +1 -0
- package/dist/icons/generated/bell-01.d.ts +1 -0
- package/dist/icons/generated/bell-01.js +10 -0
- package/dist/icons/generated/bell-01.js.map +1 -0
- package/dist/icons/generated/bell-02.d.ts +1 -0
- package/dist/icons/generated/bell-02.js +10 -0
- package/dist/icons/generated/bell-02.js.map +1 -0
- package/dist/icons/generated/bookmark.d.ts +1 -0
- package/dist/icons/generated/bookmark.js +10 -0
- package/dist/icons/generated/bookmark.js.map +1 -0
- package/dist/icons/generated/broken-heart.d.ts +1 -0
- package/dist/icons/generated/broken-heart.js +10 -0
- package/dist/icons/generated/broken-heart.js.map +1 -0
- package/dist/icons/generated/calendar-chat.d.ts +1 -0
- package/dist/icons/generated/calendar-chat.js +13 -0
- package/dist/icons/generated/calendar-chat.js.map +1 -0
- package/dist/icons/generated/calendar-check-01.d.ts +1 -0
- package/dist/icons/generated/calendar-check-01.js +10 -0
- package/dist/icons/generated/calendar-check-01.js.map +1 -0
- package/dist/icons/generated/calendar-check-02.d.ts +1 -0
- package/dist/icons/generated/calendar-check-02.js +10 -0
- package/dist/icons/generated/calendar-check-02.js.map +1 -0
- package/dist/icons/generated/calendar-heart-01.d.ts +1 -0
- package/dist/icons/generated/calendar-heart-01.js +10 -0
- package/dist/icons/generated/calendar-heart-01.js.map +1 -0
- package/dist/icons/generated/calendar-minus-01.d.ts +1 -0
- package/dist/icons/generated/calendar-minus-01.js +10 -0
- package/dist/icons/generated/calendar-minus-01.js.map +1 -0
- package/dist/icons/generated/calendar-minus-02.d.ts +1 -0
- package/dist/icons/generated/calendar-minus-02.js +10 -0
- package/dist/icons/generated/calendar-minus-02.js.map +1 -0
- package/dist/icons/generated/calendar-plus-01.d.ts +1 -0
- package/dist/icons/generated/calendar-plus-01.js +10 -0
- package/dist/icons/generated/calendar-plus-01.js.map +1 -0
- package/dist/icons/generated/calendar-plus-02.d.ts +1 -0
- package/dist/icons/generated/calendar-plus-02.js +10 -0
- package/dist/icons/generated/calendar-plus-02.js.map +1 -0
- package/dist/icons/generated/calendar.d.ts +1 -0
- package/dist/icons/generated/calendar.js +10 -0
- package/dist/icons/generated/calendar.js.map +1 -0
- package/dist/icons/generated/camera-01.d.ts +1 -0
- package/dist/icons/generated/camera-01.js +13 -0
- package/dist/icons/generated/camera-01.js.map +1 -0
- package/dist/icons/generated/camera-off.d.ts +1 -0
- package/dist/icons/generated/camera-off.js +10 -0
- package/dist/icons/generated/camera-off.js.map +1 -0
- package/dist/icons/generated/certificate-02.d.ts +1 -0
- package/dist/icons/generated/certificate-02.js +10 -0
- package/dist/icons/generated/certificate-02.js.map +1 -0
- package/dist/icons/generated/check-circle.d.ts +1 -0
- package/dist/icons/generated/check-circle.js +10 -0
- package/dist/icons/generated/check-circle.js.map +1 -0
- package/dist/icons/generated/check-heart.d.ts +1 -0
- package/dist/icons/generated/check-heart.js +10 -0
- package/dist/icons/generated/check-heart.js.map +1 -0
- package/dist/icons/generated/check-square.d.ts +1 -0
- package/dist/icons/generated/check-square.js +10 -0
- package/dist/icons/generated/check-square.js.map +1 -0
- package/dist/icons/generated/check-verified-02.d.ts +1 -0
- package/dist/icons/generated/check-verified-02.js +10 -0
- package/dist/icons/generated/check-verified-02.js.map +1 -0
- package/dist/icons/generated/check.d.ts +1 -0
- package/dist/icons/generated/check.js +7 -0
- package/dist/icons/generated/check.js.map +1 -0
- package/dist/icons/generated/chevron-down.d.ts +1 -0
- package/dist/icons/generated/chevron-down.js +10 -0
- package/dist/icons/generated/chevron-down.js.map +1 -0
- package/dist/icons/generated/chevron-left.d.ts +1 -0
- package/dist/icons/generated/chevron-left.js +10 -0
- package/dist/icons/generated/chevron-left.js.map +1 -0
- package/dist/icons/generated/chevron-right.d.ts +1 -0
- package/dist/icons/generated/chevron-right.js +10 -0
- package/dist/icons/generated/chevron-right.js.map +1 -0
- package/dist/icons/generated/chevron-up.d.ts +1 -0
- package/dist/icons/generated/chevron-up.js +10 -0
- package/dist/icons/generated/chevron-up.js.map +1 -0
- package/dist/icons/generated/clipboard-check.d.ts +1 -0
- package/dist/icons/generated/clipboard-check.js +10 -0
- package/dist/icons/generated/clipboard-check.js.map +1 -0
- package/dist/icons/generated/clock.d.ts +1 -0
- package/dist/icons/generated/clock.js +10 -0
- package/dist/icons/generated/clock.js.map +1 -0
- package/dist/icons/generated/copy-01.d.ts +1 -0
- package/dist/icons/generated/copy-01.js +10 -0
- package/dist/icons/generated/copy-01.js.map +1 -0
- package/dist/icons/generated/credit-card-01.d.ts +1 -0
- package/dist/icons/generated/credit-card-01.js +10 -0
- package/dist/icons/generated/credit-card-01.js.map +1 -0
- package/dist/icons/generated/credit-card-02.d.ts +1 -0
- package/dist/icons/generated/credit-card-02.js +10 -0
- package/dist/icons/generated/credit-card-02.js.map +1 -0
- package/dist/icons/generated/credit-card-check.d.ts +1 -0
- package/dist/icons/generated/credit-card-check.js +10 -0
- package/dist/icons/generated/credit-card-check.js.map +1 -0
- package/dist/icons/generated/currency-euro.d.ts +1 -0
- package/dist/icons/generated/currency-euro.js +10 -0
- package/dist/icons/generated/currency-euro.js.map +1 -0
- package/dist/icons/generated/dots-horizontal.d.ts +1 -0
- package/dist/icons/generated/dots-horizontal.js +14 -0
- package/dist/icons/generated/dots-horizontal.js.map +1 -0
- package/dist/icons/generated/dots-vertical.d.ts +1 -0
- package/dist/icons/generated/dots-vertical.js +14 -0
- package/dist/icons/generated/dots-vertical.js.map +1 -0
- package/dist/icons/generated/download-02.d.ts +1 -0
- package/dist/icons/generated/download-02.js +10 -0
- package/dist/icons/generated/download-02.js.map +1 -0
- package/dist/icons/generated/download-cloud-01.d.ts +1 -0
- package/dist/icons/generated/download-cloud-01.js +10 -0
- package/dist/icons/generated/download-cloud-01.js.map +1 -0
- package/dist/icons/generated/edit-01.d.ts +1 -0
- package/dist/icons/generated/edit-01.js +10 -0
- package/dist/icons/generated/edit-01.js.map +1 -0
- package/dist/icons/generated/edit-05.d.ts +1 -0
- package/dist/icons/generated/edit-05.js +10 -0
- package/dist/icons/generated/edit-05.js.map +1 -0
- package/dist/icons/generated/eye-off.d.ts +1 -0
- package/dist/icons/generated/eye-off.js +10 -0
- package/dist/icons/generated/eye-off.js.map +1 -0
- package/dist/icons/generated/eye.d.ts +1 -0
- package/dist/icons/generated/eye.js +13 -0
- package/dist/icons/generated/eye.js.map +1 -0
- package/dist/icons/generated/face-content.d.ts +1 -0
- package/dist/icons/generated/face-content.js +10 -0
- package/dist/icons/generated/face-content.js.map +1 -0
- package/dist/icons/generated/face-frown.d.ts +1 -0
- package/dist/icons/generated/face-frown.js +10 -0
- package/dist/icons/generated/face-frown.js.map +1 -0
- package/dist/icons/generated/face-happy.d.ts +1 -0
- package/dist/icons/generated/face-happy.js +10 -0
- package/dist/icons/generated/face-happy.js.map +1 -0
- package/dist/icons/generated/face-id.d.ts +1 -0
- package/dist/icons/generated/face-id.js +10 -0
- package/dist/icons/generated/face-id.js.map +1 -0
- package/dist/icons/generated/female.d.ts +1 -0
- package/dist/icons/generated/female.js +10 -0
- package/dist/icons/generated/female.js.map +1 -0
- package/dist/icons/generated/file-06.d.ts +1 -0
- package/dist/icons/generated/file-06.js +10 -0
- package/dist/icons/generated/file-06.js.map +1 -0
- package/dist/icons/generated/file-lock-02.d.ts +1 -0
- package/dist/icons/generated/file-lock-02.js +10 -0
- package/dist/icons/generated/file-lock-02.js.map +1 -0
- package/dist/icons/generated/filter-funnel-01.d.ts +1 -0
- package/dist/icons/generated/filter-funnel-01.js +10 -0
- package/dist/icons/generated/filter-funnel-01.js.map +1 -0
- package/dist/icons/generated/filter-lines.d.ts +1 -0
- package/dist/icons/generated/filter-lines.js +10 -0
- package/dist/icons/generated/filter-lines.js.map +1 -0
- package/dist/icons/generated/fingerprint-01.d.ts +1 -0
- package/dist/icons/generated/fingerprint-01.js +10 -0
- package/dist/icons/generated/fingerprint-01.js.map +1 -0
- package/dist/icons/generated/fingerprint-04.d.ts +1 -0
- package/dist/icons/generated/fingerprint-04.js +10 -0
- package/dist/icons/generated/fingerprint-04.js.map +1 -0
- package/dist/icons/generated/flag-01.d.ts +1 -0
- package/dist/icons/generated/flag-01.js +10 -0
- package/dist/icons/generated/flag-01.js.map +1 -0
- package/dist/icons/generated/flash-off.d.ts +1 -0
- package/dist/icons/generated/flash-off.js +10 -0
- package/dist/icons/generated/flash-off.js.map +1 -0
- package/dist/icons/generated/flash.d.ts +1 -0
- package/dist/icons/generated/flash.js +10 -0
- package/dist/icons/generated/flash.js.map +1 -0
- package/dist/icons/generated/flip-backward.d.ts +1 -0
- package/dist/icons/generated/flip-backward.js +10 -0
- package/dist/icons/generated/flip-backward.js.map +1 -0
- package/dist/icons/generated/globe-01.d.ts +1 -0
- package/dist/icons/generated/globe-01.js +10 -0
- package/dist/icons/generated/globe-01.js.map +1 -0
- package/dist/icons/generated/globe-04.d.ts +1 -0
- package/dist/icons/generated/globe-04.js +10 -0
- package/dist/icons/generated/globe-04.js.map +1 -0
- package/dist/icons/generated/heart.d.ts +1 -0
- package/dist/icons/generated/heart.js +17 -0
- package/dist/icons/generated/heart.js.map +1 -0
- package/dist/icons/generated/help-circle.d.ts +1 -0
- package/dist/icons/generated/help-circle.js +10 -0
- package/dist/icons/generated/help-circle.js.map +1 -0
- package/dist/icons/generated/help-square.d.ts +1 -0
- package/dist/icons/generated/help-square.js +10 -0
- package/dist/icons/generated/help-square.js.map +1 -0
- package/dist/icons/generated/home-02.d.ts +1 -0
- package/dist/icons/generated/home-02.js +10 -0
- package/dist/icons/generated/home-02.js.map +1 -0
- package/dist/icons/generated/hourglass-01.d.ts +1 -0
- package/dist/icons/generated/hourglass-01.js +10 -0
- package/dist/icons/generated/hourglass-01.js.map +1 -0
- package/dist/icons/generated/image-01.d.ts +1 -0
- package/dist/icons/generated/image-01.js +10 -0
- package/dist/icons/generated/image-01.js.map +1 -0
- package/dist/icons/generated/image-03.d.ts +1 -0
- package/dist/icons/generated/image-03.js +10 -0
- package/dist/icons/generated/image-03.js.map +1 -0
- package/dist/icons/generated/image-check.d.ts +1 -0
- package/dist/icons/generated/image-check.js +10 -0
- package/dist/icons/generated/image-check.js.map +1 -0
- package/dist/icons/generated/image-plus.d.ts +1 -0
- package/dist/icons/generated/image-plus.js +10 -0
- package/dist/icons/generated/image-plus.js.map +1 -0
- package/dist/icons/generated/inbox-01.d.ts +1 -0
- package/dist/icons/generated/inbox-01.js +10 -0
- package/dist/icons/generated/inbox-01.js.map +1 -0
- package/dist/icons/generated/info-circle.d.ts +1 -0
- package/dist/icons/generated/info-circle.js +10 -0
- package/dist/icons/generated/info-circle.js.map +1 -0
- package/dist/icons/generated/info-square.d.ts +1 -0
- package/dist/icons/generated/info-square.js +10 -0
- package/dist/icons/generated/info-square.js.map +1 -0
- package/dist/icons/generated/key-02.d.ts +1 -0
- package/dist/icons/generated/key-02.js +10 -0
- package/dist/icons/generated/key-02.js.map +1 -0
- package/dist/icons/generated/link-01.d.ts +1 -0
- package/dist/icons/generated/link-01.js +10 -0
- package/dist/icons/generated/link-01.js.map +1 -0
- package/dist/icons/generated/link-03.d.ts +1 -0
- package/dist/icons/generated/link-03.js +10 -0
- package/dist/icons/generated/link-03.js.map +1 -0
- package/dist/icons/generated/link-broken-01.d.ts +1 -0
- package/dist/icons/generated/link-broken-01.js +10 -0
- package/dist/icons/generated/link-broken-01.js.map +1 -0
- package/dist/icons/generated/link-external-01.d.ts +1 -0
- package/dist/icons/generated/link-external-01.js +10 -0
- package/dist/icons/generated/link-external-01.js.map +1 -0
- package/dist/icons/generated/loading-01.d.ts +1 -0
- package/dist/icons/generated/loading-01.js +10 -0
- package/dist/icons/generated/loading-01.js.map +1 -0
- package/dist/icons/generated/lock-01.d.ts +1 -0
- package/dist/icons/generated/lock-01.js +10 -0
- package/dist/icons/generated/lock-01.js.map +1 -0
- package/dist/icons/generated/lock-03.d.ts +1 -0
- package/dist/icons/generated/lock-03.js +10 -0
- package/dist/icons/generated/lock-03.js.map +1 -0
- package/dist/icons/generated/lock-unlocked-01.d.ts +1 -0
- package/dist/icons/generated/lock-unlocked-01.js +10 -0
- package/dist/icons/generated/lock-unlocked-01.js.map +1 -0
- package/dist/icons/generated/log-in-01.d.ts +1 -0
- package/dist/icons/generated/log-in-01.js +10 -0
- package/dist/icons/generated/log-in-01.js.map +1 -0
- package/dist/icons/generated/log-out-01.d.ts +1 -0
- package/dist/icons/generated/log-out-01.js +10 -0
- package/dist/icons/generated/log-out-01.js.map +1 -0
- package/dist/icons/generated/mail-01.d.ts +1 -0
- package/dist/icons/generated/mail-01.js +10 -0
- package/dist/icons/generated/mail-01.js.map +1 -0
- package/dist/icons/generated/mail-02.d.ts +1 -0
- package/dist/icons/generated/mail-02.js +10 -0
- package/dist/icons/generated/mail-02.js.map +1 -0
- package/dist/icons/generated/male.d.ts +1 -0
- package/dist/icons/generated/male.js +10 -0
- package/dist/icons/generated/male.js.map +1 -0
- package/dist/icons/generated/marker-pin-01.d.ts +1 -0
- package/dist/icons/generated/marker-pin-01.js +13 -0
- package/dist/icons/generated/marker-pin-01.js.map +1 -0
- package/dist/icons/generated/medical-circle.d.ts +1 -0
- package/dist/icons/generated/medical-circle.js +13 -0
- package/dist/icons/generated/medical-circle.js.map +1 -0
- package/dist/icons/generated/medical-cross.d.ts +1 -0
- package/dist/icons/generated/medical-cross.js +10 -0
- package/dist/icons/generated/medical-cross.js.map +1 -0
- package/dist/icons/generated/medical-square.d.ts +1 -0
- package/dist/icons/generated/medical-square.js +13 -0
- package/dist/icons/generated/medical-square.js.map +1 -0
- package/dist/icons/generated/menu-01.d.ts +1 -0
- package/dist/icons/generated/menu-01.js +10 -0
- package/dist/icons/generated/menu-01.js.map +1 -0
- package/dist/icons/generated/message-alert-square.d.ts +1 -0
- package/dist/icons/generated/message-alert-square.js +10 -0
- package/dist/icons/generated/message-alert-square.js.map +1 -0
- package/dist/icons/generated/message-check-square.d.ts +1 -0
- package/dist/icons/generated/message-check-square.js +10 -0
- package/dist/icons/generated/message-check-square.js.map +1 -0
- package/dist/icons/generated/message-notification-square.d.ts +1 -0
- package/dist/icons/generated/message-notification-square.js +10 -0
- package/dist/icons/generated/message-notification-square.js.map +1 -0
- package/dist/icons/generated/message-plus-square.d.ts +1 -0
- package/dist/icons/generated/message-plus-square.js +10 -0
- package/dist/icons/generated/message-plus-square.js.map +1 -0
- package/dist/icons/generated/message-question-square.d.ts +1 -0
- package/dist/icons/generated/message-question-square.js +10 -0
- package/dist/icons/generated/message-question-square.js.map +1 -0
- package/dist/icons/generated/message-smile-square.d.ts +1 -0
- package/dist/icons/generated/message-smile-square.js +10 -0
- package/dist/icons/generated/message-smile-square.js.map +1 -0
- package/dist/icons/generated/message-x-square.d.ts +1 -0
- package/dist/icons/generated/message-x-square.js +10 -0
- package/dist/icons/generated/message-x-square.js.map +1 -0
- package/dist/icons/generated/message.d.ts +1 -0
- package/dist/icons/generated/message.js +10 -0
- package/dist/icons/generated/message.js.map +1 -0
- package/dist/icons/generated/microphone-01.d.ts +1 -0
- package/dist/icons/generated/microphone-01.js +10 -0
- package/dist/icons/generated/microphone-01.js.map +1 -0
- package/dist/icons/generated/microphone-off-01.d.ts +1 -0
- package/dist/icons/generated/microphone-off-01.js +10 -0
- package/dist/icons/generated/microphone-off-01.js.map +1 -0
- package/dist/icons/generated/microscope.d.ts +1 -0
- package/dist/icons/generated/microscope.js +10 -0
- package/dist/icons/generated/microscope.js.map +1 -0
- package/dist/icons/generated/minus.d.ts +1 -0
- package/dist/icons/generated/minus.js +7 -0
- package/dist/icons/generated/minus.js.map +1 -0
- package/dist/icons/generated/paperclip.d.ts +1 -0
- package/dist/icons/generated/paperclip.js +10 -0
- package/dist/icons/generated/paperclip.js.map +1 -0
- package/dist/icons/generated/passport.d.ts +1 -0
- package/dist/icons/generated/passport.js +10 -0
- package/dist/icons/generated/passport.js.map +1 -0
- package/dist/icons/generated/pause-circle.d.ts +1 -0
- package/dist/icons/generated/pause-circle.js +10 -0
- package/dist/icons/generated/pause-circle.js.map +1 -0
- package/dist/icons/generated/phone-02.d.ts +1 -0
- package/dist/icons/generated/phone-02.js +10 -0
- package/dist/icons/generated/phone-02.js.map +1 -0
- package/dist/icons/generated/phone.d.ts +1 -0
- package/dist/icons/generated/phone.js +10 -0
- package/dist/icons/generated/phone.js.map +1 -0
- package/dist/icons/generated/pill.d.ts +1 -0
- package/dist/icons/generated/pill.js +10 -0
- package/dist/icons/generated/pill.js.map +1 -0
- package/dist/icons/generated/pin-01.d.ts +1 -0
- package/dist/icons/generated/pin-01.js +10 -0
- package/dist/icons/generated/pin-01.js.map +1 -0
- package/dist/icons/generated/pin-02.d.ts +1 -0
- package/dist/icons/generated/pin-02.js +10 -0
- package/dist/icons/generated/pin-02.js.map +1 -0
- package/dist/icons/generated/play.d.ts +1 -0
- package/dist/icons/generated/play.js +10 -0
- package/dist/icons/generated/play.js.map +1 -0
- package/dist/icons/generated/plus-circle.d.ts +1 -0
- package/dist/icons/generated/plus-circle.js +10 -0
- package/dist/icons/generated/plus-circle.js.map +1 -0
- package/dist/icons/generated/plus-square.d.ts +1 -0
- package/dist/icons/generated/plus-square.js +10 -0
- package/dist/icons/generated/plus-square.js.map +1 -0
- package/dist/icons/generated/plus.d.ts +1 -0
- package/dist/icons/generated/plus.js +7 -0
- package/dist/icons/generated/plus.js.map +1 -0
- package/dist/icons/generated/prescription.d.ts +1 -0
- package/dist/icons/generated/prescription.js +10 -0
- package/dist/icons/generated/prescription.js.map +1 -0
- package/dist/icons/generated/receipt-check.d.ts +1 -0
- package/dist/icons/generated/receipt-check.js +10 -0
- package/dist/icons/generated/receipt-check.js.map +1 -0
- package/dist/icons/generated/receipt.d.ts +1 -0
- package/dist/icons/generated/receipt.js +10 -0
- package/dist/icons/generated/receipt.js.map +1 -0
- package/dist/icons/generated/refresh-ccw-01.d.ts +1 -0
- package/dist/icons/generated/refresh-ccw-01.js +10 -0
- package/dist/icons/generated/refresh-ccw-01.js.map +1 -0
- package/dist/icons/generated/refresh-ccw-02.d.ts +1 -0
- package/dist/icons/generated/refresh-ccw-02.js +10 -0
- package/dist/icons/generated/refresh-ccw-02.js.map +1 -0
- package/dist/icons/generated/reverse-left.d.ts +1 -0
- package/dist/icons/generated/reverse-left.js +10 -0
- package/dist/icons/generated/reverse-left.js.map +1 -0
- package/dist/icons/generated/scan.d.ts +1 -0
- package/dist/icons/generated/scan.js +10 -0
- package/dist/icons/generated/scan.js.map +1 -0
- package/dist/icons/generated/search-lg.d.ts +1 -0
- package/dist/icons/generated/search-lg.js +10 -0
- package/dist/icons/generated/search-lg.js.map +1 -0
- package/dist/icons/generated/search-md.d.ts +1 -0
- package/dist/icons/generated/search-md.js +10 -0
- package/dist/icons/generated/search-md.js.map +1 -0
- package/dist/icons/generated/search-sm.d.ts +1 -0
- package/dist/icons/generated/search-sm.js +10 -0
- package/dist/icons/generated/search-sm.js.map +1 -0
- package/dist/icons/generated/send-01.d.ts +1 -0
- package/dist/icons/generated/send-01.js +10 -0
- package/dist/icons/generated/send-01.js.map +1 -0
- package/dist/icons/generated/settings-02.d.ts +1 -0
- package/dist/icons/generated/settings-02.js +13 -0
- package/dist/icons/generated/settings-02.js.map +1 -0
- package/dist/icons/generated/settings-04.d.ts +1 -0
- package/dist/icons/generated/settings-04.js +10 -0
- package/dist/icons/generated/settings-04.js.map +1 -0
- package/dist/icons/generated/share-01.d.ts +1 -0
- package/dist/icons/generated/share-01.js +10 -0
- package/dist/icons/generated/share-01.js.map +1 -0
- package/dist/icons/generated/share-03.d.ts +1 -0
- package/dist/icons/generated/share-03.js +10 -0
- package/dist/icons/generated/share-03.js.map +1 -0
- package/dist/icons/generated/share-06.d.ts +1 -0
- package/dist/icons/generated/share-06.js +10 -0
- package/dist/icons/generated/share-06.js.map +1 -0
- package/dist/icons/generated/share-07.d.ts +1 -0
- package/dist/icons/generated/share-07.js +10 -0
- package/dist/icons/generated/share-07.js.map +1 -0
- package/dist/icons/generated/shield-tick.d.ts +1 -0
- package/dist/icons/generated/shield-tick.js +10 -0
- package/dist/icons/generated/shield-tick.js.map +1 -0
- package/dist/icons/generated/slash-circle-01.d.ts +1 -0
- package/dist/icons/generated/slash-circle-01.js +10 -0
- package/dist/icons/generated/slash-circle-01.js.map +1 -0
- package/dist/icons/generated/star-01.d.ts +1 -0
- package/dist/icons/generated/star-01.js +10 -0
- package/dist/icons/generated/star-01.js.map +1 -0
- package/dist/icons/generated/star-04.d.ts +1 -0
- package/dist/icons/generated/star-04.js +10 -0
- package/dist/icons/generated/star-04.js.map +1 -0
- package/dist/icons/generated/star-06.d.ts +1 -0
- package/dist/icons/generated/star-06.js +10 -0
- package/dist/icons/generated/star-06.js.map +1 -0
- package/dist/icons/generated/stethoscope-doctor.d.ts +1 -0
- package/dist/icons/generated/stethoscope-doctor.js +14 -0
- package/dist/icons/generated/stethoscope-doctor.js.map +1 -0
- package/dist/icons/generated/tag-01.d.ts +1 -0
- package/dist/icons/generated/tag-01.js +10 -0
- package/dist/icons/generated/tag-01.js.map +1 -0
- package/dist/icons/generated/thumbs-down.d.ts +1 -0
- package/dist/icons/generated/thumbs-down.js +10 -0
- package/dist/icons/generated/thumbs-down.js.map +1 -0
- package/dist/icons/generated/thumbs-up.d.ts +1 -0
- package/dist/icons/generated/thumbs-up.js +10 -0
- package/dist/icons/generated/thumbs-up.js.map +1 -0
- package/dist/icons/generated/trash-01.d.ts +1 -0
- package/dist/icons/generated/trash-01.js +10 -0
- package/dist/icons/generated/trash-01.js.map +1 -0
- package/dist/icons/generated/trash-02.d.ts +1 -0
- package/dist/icons/generated/trash-02.js +10 -0
- package/dist/icons/generated/trash-02.js.map +1 -0
- package/dist/icons/generated/upload-01.d.ts +1 -0
- package/dist/icons/generated/upload-01.js +10 -0
- package/dist/icons/generated/upload-01.js.map +1 -0
- package/dist/icons/generated/user-01.d.ts +1 -0
- package/dist/icons/generated/user-01.js +10 -0
- package/dist/icons/generated/user-01.js.map +1 -0
- package/dist/icons/generated/user-03.d.ts +1 -0
- package/dist/icons/generated/user-03.js +10 -0
- package/dist/icons/generated/user-03.js.map +1 -0
- package/dist/icons/generated/user-check-01.d.ts +1 -0
- package/dist/icons/generated/user-check-01.js +10 -0
- package/dist/icons/generated/user-check-01.js.map +1 -0
- package/dist/icons/generated/user-check-02.d.ts +1 -0
- package/dist/icons/generated/user-check-02.js +10 -0
- package/dist/icons/generated/user-check-02.js.map +1 -0
- package/dist/icons/generated/user-edit.d.ts +1 -0
- package/dist/icons/generated/user-edit.js +10 -0
- package/dist/icons/generated/user-edit.js.map +1 -0
- package/dist/icons/generated/user-plus-01.d.ts +1 -0
- package/dist/icons/generated/user-plus-01.js +10 -0
- package/dist/icons/generated/user-plus-01.js.map +1 -0
- package/dist/icons/generated/user-square.d.ts +1 -0
- package/dist/icons/generated/user-square.js +10 -0
- package/dist/icons/generated/user-square.js.map +1 -0
- package/dist/icons/generated/users-02.d.ts +1 -0
- package/dist/icons/generated/users-02.js +10 -0
- package/dist/icons/generated/users-02.js.map +1 -0
- package/dist/icons/generated/video-recorder-off.d.ts +1 -0
- package/dist/icons/generated/video-recorder-off.js +10 -0
- package/dist/icons/generated/video-recorder-off.js.map +1 -0
- package/dist/icons/generated/video-recorder.d.ts +1 -0
- package/dist/icons/generated/video-recorder.js +13 -0
- package/dist/icons/generated/video-recorder.js.map +1 -0
- package/dist/icons/generated/virus.d.ts +1 -0
- package/dist/icons/generated/virus.js +10 -0
- package/dist/icons/generated/virus.js.map +1 -0
- package/dist/icons/generated/weight.d.ts +1 -0
- package/dist/icons/generated/weight.js +15 -0
- package/dist/icons/generated/weight.js.map +1 -0
- package/dist/icons/generated/x-close.d.ts +1 -0
- package/dist/icons/generated/x-close.js +10 -0
- package/dist/icons/generated/x-close.js.map +1 -0
- package/dist/icons/generated/x.d.ts +1 -0
- package/dist/icons/generated/x.js +7 -0
- package/dist/icons/generated/x.js.map +1 -0
- package/dist/icons/generated/zap.d.ts +1 -0
- package/dist/icons/generated/zap.js +10 -0
- package/dist/icons/generated/zap.js.map +1 -0
- package/dist/icons/index.d.ts +182 -0
- package/dist/icons/index.js +542 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.js +263 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cn.d.ts +2 -0
- package/dist/lib/cn.js +51 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/labels.d.ts +97 -0
- package/dist/provider/labels.js +99 -0
- package/dist/provider/labels.js.map +1 -0
- package/dist/provider/medicore-provider.d.ts +10 -0
- package/dist/provider/medicore-provider.js +19 -0
- package/dist/provider/medicore-provider.js.map +1 -0
- package/dist/styles/primitives.css +59 -0
- package/dist/styles/theme.css +15 -0
- package/dist/styles/tokens.css +253 -0
- package/dist/styles/typography.css +115 -0
- package/dist/styles/utilities.css +37 -0
- package/package.json +80 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Menu as Menu$1 } from "@base-ui/react/menu";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { createContext, useContext } from "react";
|
|
5
|
+
import { DotsHorizontalIcon } from "../../icons/generated/dots-horizontal.js";
|
|
6
|
+
import { cn } from "../../lib/cn.js";
|
|
7
|
+
import { Modal, ModalContent, ModalClose, ModalTrigger } from "../modal/modal.js";
|
|
8
|
+
import { useMediaQuery, DESKTOP_MEDIA_QUERY } from "../modal/use-media-query.js";
|
|
9
|
+
import { useMediCoreLabels } from "../../provider/medicore-provider.js";
|
|
10
|
+
import { Divider } from "../divider/divider.js";
|
|
11
|
+
import { IconButton } from "../icon-button/icon-button.js";
|
|
12
|
+
const MenuLayoutContext = createContext(null);
|
|
13
|
+
function useMenuLayout(part) {
|
|
14
|
+
const layout = useContext(MenuLayoutContext);
|
|
15
|
+
if (layout === null) {
|
|
16
|
+
throw new Error(`MediCore: <${part}> must be used inside <Menu>.`);
|
|
17
|
+
}
|
|
18
|
+
return layout;
|
|
19
|
+
}
|
|
20
|
+
function Menu({
|
|
21
|
+
layout,
|
|
22
|
+
open,
|
|
23
|
+
defaultOpen,
|
|
24
|
+
onOpenChange,
|
|
25
|
+
disabled,
|
|
26
|
+
children
|
|
27
|
+
}) {
|
|
28
|
+
const isDesktop = useMediaQuery(DESKTOP_MEDIA_QUERY);
|
|
29
|
+
const resolvedLayout = layout ?? (isDesktop ? "popover" : "sheet");
|
|
30
|
+
return /* @__PURE__ */ jsx(MenuLayoutContext.Provider, { value: resolvedLayout, children: resolvedLayout === "sheet" ? /* @__PURE__ */ jsx(
|
|
31
|
+
Modal,
|
|
32
|
+
{
|
|
33
|
+
layout: "sheet",
|
|
34
|
+
open,
|
|
35
|
+
defaultOpen,
|
|
36
|
+
onOpenChange,
|
|
37
|
+
children
|
|
38
|
+
}
|
|
39
|
+
) : /* @__PURE__ */ jsx(
|
|
40
|
+
Menu$1.Root,
|
|
41
|
+
{
|
|
42
|
+
open,
|
|
43
|
+
defaultOpen,
|
|
44
|
+
onOpenChange,
|
|
45
|
+
disabled,
|
|
46
|
+
children
|
|
47
|
+
}
|
|
48
|
+
) });
|
|
49
|
+
}
|
|
50
|
+
function MenuTrigger({
|
|
51
|
+
render,
|
|
52
|
+
children,
|
|
53
|
+
"aria-label": ariaLabel,
|
|
54
|
+
...props
|
|
55
|
+
}) {
|
|
56
|
+
const layout = useMenuLayout("MenuTrigger");
|
|
57
|
+
const labels = useMediCoreLabels();
|
|
58
|
+
const Trigger = layout === "sheet" ? ModalTrigger : Menu$1.Trigger;
|
|
59
|
+
if (render === void 0 && children === void 0) {
|
|
60
|
+
return /* @__PURE__ */ jsx(
|
|
61
|
+
Trigger,
|
|
62
|
+
{
|
|
63
|
+
"data-slot": "menu-trigger",
|
|
64
|
+
render: /* @__PURE__ */ jsx(
|
|
65
|
+
IconButton,
|
|
66
|
+
{
|
|
67
|
+
variant: "ghost",
|
|
68
|
+
icon: /* @__PURE__ */ jsx(DotsHorizontalIcon, {}),
|
|
69
|
+
"aria-label": ariaLabel ?? labels.moreOptions
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
...props
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return /* @__PURE__ */ jsx(
|
|
77
|
+
Trigger,
|
|
78
|
+
{
|
|
79
|
+
"data-slot": "menu-trigger",
|
|
80
|
+
"aria-label": ariaLabel,
|
|
81
|
+
render,
|
|
82
|
+
...props,
|
|
83
|
+
children
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
function MenuContent({
|
|
88
|
+
children,
|
|
89
|
+
className,
|
|
90
|
+
side = "bottom",
|
|
91
|
+
align = "end",
|
|
92
|
+
label
|
|
93
|
+
}) {
|
|
94
|
+
const layout = useMenuLayout("MenuContent");
|
|
95
|
+
const labels = useMediCoreLabels();
|
|
96
|
+
if (layout === "sheet") {
|
|
97
|
+
return /* @__PURE__ */ jsx(ModalContent, { "aria-label": label ?? labels.moreOptions, children: /* @__PURE__ */ jsx(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
"data-slot": "menu-content",
|
|
101
|
+
className: cn("-mx-3 flex flex-col", className),
|
|
102
|
+
children
|
|
103
|
+
}
|
|
104
|
+
) });
|
|
105
|
+
}
|
|
106
|
+
return /* @__PURE__ */ jsx(Menu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
107
|
+
Menu$1.Positioner,
|
|
108
|
+
{
|
|
109
|
+
side,
|
|
110
|
+
align,
|
|
111
|
+
sideOffset: 4,
|
|
112
|
+
className: "z-50 outline-hidden",
|
|
113
|
+
children: /* @__PURE__ */ jsx(
|
|
114
|
+
Menu$1.Popup,
|
|
115
|
+
{
|
|
116
|
+
"data-slot": "menu-content",
|
|
117
|
+
className: cn(
|
|
118
|
+
// The shadow separates it from the content below; the border, where the
|
|
119
|
+
// shadow doesn't show (dark backgrounds, poor screens).
|
|
120
|
+
"flex w-60 flex-col rounded-lg border border-border-subtle bg-background p-1 shadow-md outline-hidden",
|
|
121
|
+
"origin-(--transform-origin) transition-[opacity,scale] duration-150 ease-out",
|
|
122
|
+
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
123
|
+
"motion-reduce:transition-none",
|
|
124
|
+
className
|
|
125
|
+
),
|
|
126
|
+
children
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
) });
|
|
131
|
+
}
|
|
132
|
+
const menuItemVariants = cva(
|
|
133
|
+
[
|
|
134
|
+
"flex w-full shrink-0 cursor-pointer select-none items-center gap-3 rounded-md px-3 text-left text-label-default",
|
|
135
|
+
"outline-hidden focus-visible:outline-2 focus-visible:outline-border-focus focus-visible:outline-solid focus-visible:-outline-offset-2",
|
|
136
|
+
"[&_svg]:size-icon-md [&_svg]:shrink-0",
|
|
137
|
+
"data-disabled:cursor-not-allowed data-disabled:text-text-disabled disabled:cursor-not-allowed disabled:text-text-disabled"
|
|
138
|
+
],
|
|
139
|
+
{
|
|
140
|
+
variants: {
|
|
141
|
+
type: {
|
|
142
|
+
default: "text-text-primary",
|
|
143
|
+
destructive: "text-text-error"
|
|
144
|
+
},
|
|
145
|
+
layout: {
|
|
146
|
+
popover: "h-control-md",
|
|
147
|
+
sheet: "h-12"
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
// Base UI marks the pointer/keyboard position with data-highlighted in the popover;
|
|
151
|
+
// the sheet's rows are plain buttons, so they use :hover.
|
|
152
|
+
compoundVariants: [
|
|
153
|
+
{
|
|
154
|
+
type: "default",
|
|
155
|
+
layout: "popover",
|
|
156
|
+
className: "not-data-disabled:data-highlighted:bg-surface"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: "destructive",
|
|
160
|
+
layout: "popover",
|
|
161
|
+
className: "not-data-disabled:data-highlighted:bg-error-subtle"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: "default",
|
|
165
|
+
layout: "sheet",
|
|
166
|
+
className: "enabled:hover:bg-surface"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: "destructive",
|
|
170
|
+
layout: "sheet",
|
|
171
|
+
className: "enabled:hover:bg-error-subtle"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
defaultVariants: {
|
|
175
|
+
type: "default",
|
|
176
|
+
layout: "popover"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
function MenuItem({
|
|
181
|
+
children,
|
|
182
|
+
icon,
|
|
183
|
+
type = "default",
|
|
184
|
+
disabled = false,
|
|
185
|
+
onClick,
|
|
186
|
+
closeOnClick = true,
|
|
187
|
+
className
|
|
188
|
+
}) {
|
|
189
|
+
const layout = useMenuLayout("MenuItem");
|
|
190
|
+
const classes = cn(menuItemVariants({ type, layout }), className);
|
|
191
|
+
if (layout === "sheet") {
|
|
192
|
+
return /* @__PURE__ */ jsxs(
|
|
193
|
+
ModalClose,
|
|
194
|
+
{
|
|
195
|
+
"data-slot": "menu-item",
|
|
196
|
+
"data-type": type,
|
|
197
|
+
disabled,
|
|
198
|
+
className: classes,
|
|
199
|
+
onClick: (event) => {
|
|
200
|
+
onClick?.(event);
|
|
201
|
+
if (!closeOnClick) {
|
|
202
|
+
event.preventBaseUIHandler();
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
children: [
|
|
206
|
+
icon,
|
|
207
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children })
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
return /* @__PURE__ */ jsxs(
|
|
213
|
+
Menu$1.Item,
|
|
214
|
+
{
|
|
215
|
+
"data-slot": "menu-item",
|
|
216
|
+
"data-type": type,
|
|
217
|
+
disabled,
|
|
218
|
+
closeOnClick,
|
|
219
|
+
onClick,
|
|
220
|
+
className: classes,
|
|
221
|
+
children: [
|
|
222
|
+
icon,
|
|
223
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children })
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
function MenuSeparator({
|
|
229
|
+
className
|
|
230
|
+
}) {
|
|
231
|
+
const layout = useMenuLayout("MenuSeparator");
|
|
232
|
+
if (layout === "sheet") {
|
|
233
|
+
return /* @__PURE__ */ jsx(Divider, { className: cn("my-1", className) });
|
|
234
|
+
}
|
|
235
|
+
return /* @__PURE__ */ jsx(
|
|
236
|
+
Menu$1.Separator,
|
|
237
|
+
{
|
|
238
|
+
"data-slot": "menu-separator",
|
|
239
|
+
className: cn("my-1 h-px shrink-0 bg-border-subtle", className)
|
|
240
|
+
}
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
export {
|
|
244
|
+
Menu,
|
|
245
|
+
MenuContent,
|
|
246
|
+
MenuItem,
|
|
247
|
+
MenuSeparator,
|
|
248
|
+
MenuTrigger
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sources":["../../../src/components/menu/menu.tsx"],"sourcesContent":["import { Menu as BaseMenu } from \"@base-ui/react/menu\";\nimport { cva } from \"class-variance-authority\";\nimport {\n type CSSProperties,\n createContext,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n useContext,\n} from \"react\";\n\nimport { DotsHorizontalIcon } from \"../../icons\";\nimport { cn } from \"../../lib/cn\";\nimport { useMediCoreLabels } from \"../../provider\";\nimport { Divider } from \"../divider\";\nimport { IconButton } from \"../icon-button\";\nimport {\n Modal,\n type ModalChangeEventDetails,\n ModalClose,\n ModalContent,\n ModalTrigger,\n} from \"../modal/modal\";\nimport { DESKTOP_MEDIA_QUERY, useMediaQuery } from \"../modal/use-media-query\";\n\n/**\n * `popover`: the floating 240px menu next to the trigger. `sheet`: a bottom sheet\n * (`Modal layout=\"sheet\"`) with the same options in 48px rows.\n */\nexport type MenuLayout = \"popover\" | \"sheet\";\n\nexport type MenuChangeEventDetails =\n | BaseMenu.Root.ChangeEventDetails\n | ModalChangeEventDetails;\n\nconst MenuLayoutContext = createContext<MenuLayout | null>(null);\n\nfunction useMenuLayout(part: string): MenuLayout {\n const layout = useContext(MenuLayoutContext);\n if (layout === null) {\n throw new Error(`MediCore: <${part}> must be used inside <Menu>.`);\n }\n return layout;\n}\n\nexport interface MenuProps {\n /**\n * Leave it unset and it follows the screen: a sheet below `md` (a 240px menu next\n * to the thumb covers what the person is looking at) and a popover from `md` up.\n */\n layout?: MenuLayout;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, eventDetails: MenuChangeEventDetails) => void;\n /** Disables the whole menu (popover only). */\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Contextual menu: what the \"⋯\" of a Card, an appointment or the chat header opens.\n * It is where everything that isn't the block's single primary action lives.\n *\n * Up to four options and, if there is one, the destructive option LAST, after a\n * `MenuSeparator` — never in the middle, where a thumb going down the list would\n * cross \"Cancelar cita\" on its way to \"Compartir\". If you need more than five, those\n * things deserve their own screen.\n *\n * Keyboard: arrow keys move between options, Enter picks, Escape closes and focus\n * returns to the trigger.\n */\nexport function Menu({\n layout,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n children,\n}: MenuProps): React.JSX.Element {\n const isDesktop = useMediaQuery(DESKTOP_MEDIA_QUERY);\n const resolvedLayout: MenuLayout =\n layout ?? (isDesktop ? \"popover\" : \"sheet\");\n\n return (\n <MenuLayoutContext.Provider value={resolvedLayout}>\n {resolvedLayout === \"sheet\" ? (\n <Modal\n layout=\"sheet\"\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n {children}\n </Modal>\n ) : (\n <BaseMenu.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disabled={disabled}\n >\n {children}\n </BaseMenu.Root>\n )}\n </MenuLayoutContext.Provider>\n );\n}\n\nexport interface MenuTriggerProps\n extends Omit<\n BaseMenu.Trigger.Props,\n | \"className\"\n | \"style\"\n | \"render\"\n | \"handle\"\n | \"payload\"\n | \"openOnHover\"\n | \"delay\"\n | \"closeDelay\"\n > {\n className?: string;\n style?: CSSProperties;\n /** Your own trigger element. Without `render` and `children` you get the \"⋯\" button. */\n render?: ReactElement;\n}\n\n/**\n * Opens the menu. With no `children` or `render` it is the \"⋯\" ghost icon button,\n * named with the MediCore `moreOptions` label — pass `aria-label` to be more\n * specific (\"Opciones de la cita\").\n */\nexport function MenuTrigger({\n render,\n children,\n \"aria-label\": ariaLabel,\n ...props\n}: MenuTriggerProps): React.JSX.Element {\n const layout = useMenuLayout(\"MenuTrigger\");\n const labels = useMediCoreLabels();\n const Trigger = layout === \"sheet\" ? ModalTrigger : BaseMenu.Trigger;\n\n if (render === undefined && children === undefined) {\n return (\n <Trigger\n data-slot=\"menu-trigger\"\n render={\n <IconButton\n variant=\"ghost\"\n icon={<DotsHorizontalIcon />}\n aria-label={ariaLabel ?? labels.moreOptions}\n />\n }\n {...props}\n />\n );\n }\n\n return (\n <Trigger\n data-slot=\"menu-trigger\"\n aria-label={ariaLabel}\n render={render}\n {...props}\n >\n {children}\n </Trigger>\n );\n}\n\nexport interface MenuContentProps {\n children?: ReactNode;\n className?: string;\n /** Popover only: which side of the trigger it opens on. Flips when there is no room. */\n side?: \"top\" | \"bottom\";\n /** Popover only. `end` by default: the \"⋯\" usually sits at the right edge. */\n align?: \"start\" | \"center\" | \"end\";\n /** Sheet only: accessible name of the sheet. Defaults to the `moreOptions` label. */\n label?: string;\n}\n\n/** The list of options. 240px popover with `shadow-md` and a border, or a bottom sheet. */\nexport function MenuContent({\n children,\n className,\n side = \"bottom\",\n align = \"end\",\n label,\n}: MenuContentProps): React.JSX.Element {\n const layout = useMenuLayout(\"MenuContent\");\n const labels = useMediCoreLabels();\n\n if (layout === \"sheet\") {\n return (\n <ModalContent aria-label={label ?? labels.moreOptions}>\n <div\n data-slot=\"menu-content\"\n className={cn(\"-mx-3 flex flex-col\", className)}\n >\n {children}\n </div>\n </ModalContent>\n );\n }\n\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner\n side={side}\n align={align}\n sideOffset={4}\n className=\"z-50 outline-hidden\"\n >\n <BaseMenu.Popup\n data-slot=\"menu-content\"\n className={cn(\n // The shadow separates it from the content below; the border, where the\n // shadow doesn't show (dark backgrounds, poor screens).\n \"flex w-60 flex-col rounded-lg border border-border-subtle bg-background p-1 shadow-md outline-hidden\",\n \"origin-(--transform-origin) transition-[opacity,scale] duration-150 ease-out\",\n \"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n \"motion-reduce:transition-none\",\n className,\n )}\n >\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\nconst menuItemVariants = cva(\n [\n \"flex w-full shrink-0 cursor-pointer select-none items-center gap-3 rounded-md px-3 text-left text-label-default\",\n \"outline-hidden focus-visible:outline-2 focus-visible:outline-border-focus focus-visible:outline-solid focus-visible:-outline-offset-2\",\n \"[&_svg]:size-icon-md [&_svg]:shrink-0\",\n \"data-disabled:cursor-not-allowed data-disabled:text-text-disabled disabled:cursor-not-allowed disabled:text-text-disabled\",\n ],\n {\n variants: {\n type: {\n default: \"text-text-primary\",\n destructive: \"text-text-error\",\n },\n layout: {\n popover: \"h-control-md\",\n sheet: \"h-12\",\n },\n },\n // Base UI marks the pointer/keyboard position with data-highlighted in the popover;\n // the sheet's rows are plain buttons, so they use :hover.\n compoundVariants: [\n {\n type: \"default\",\n layout: \"popover\",\n className: \"not-data-disabled:data-highlighted:bg-surface\",\n },\n {\n type: \"destructive\",\n layout: \"popover\",\n className: \"not-data-disabled:data-highlighted:bg-error-subtle\",\n },\n {\n type: \"default\",\n layout: \"sheet\",\n className: \"enabled:hover:bg-surface\",\n },\n {\n type: \"destructive\",\n layout: \"sheet\",\n className: \"enabled:hover:bg-error-subtle\",\n },\n ],\n defaultVariants: {\n type: \"default\",\n layout: \"popover\",\n },\n },\n);\n\nexport interface MenuItemProps {\n /** The option's label. */\n children: ReactNode;\n /** 20px icon before the label. */\n icon?: ReactNode;\n /** `destructive` goes in text-error and always last, after a `MenuSeparator`. */\n type?: \"default\" | \"destructive\";\n disabled?: boolean;\n onClick?: (event: MouseEvent<HTMLElement>) => void;\n /** Closes the menu after the click (default). */\n closeOnClick?: boolean;\n className?: string;\n}\n\n/** One option. 40px tall in the popover (48 in the sheet) so neighbours aren't tapped by mistake. */\nexport function MenuItem({\n children,\n icon,\n type = \"default\",\n disabled = false,\n onClick,\n closeOnClick = true,\n className,\n}: MenuItemProps): React.JSX.Element {\n const layout = useMenuLayout(\"MenuItem\");\n const classes = cn(menuItemVariants({ type, layout }), className);\n\n if (layout === \"sheet\") {\n return (\n <ModalClose\n data-slot=\"menu-item\"\n data-type={type}\n disabled={disabled}\n className={classes}\n onClick={(event) => {\n onClick?.(event);\n if (!closeOnClick) {\n event.preventBaseUIHandler();\n }\n }}\n >\n {icon}\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n </ModalClose>\n );\n }\n\n return (\n <BaseMenu.Item\n data-slot=\"menu-item\"\n data-type={type}\n disabled={disabled}\n closeOnClick={closeOnClick}\n onClick={onClick}\n className={classes}\n >\n {icon}\n <span className=\"min-w-0 flex-1 truncate\">{children}</span>\n </BaseMenu.Item>\n );\n}\n\nexport interface MenuSeparatorProps {\n className?: string;\n}\n\n/** The line before the destructive option. */\nexport function MenuSeparator({\n className,\n}: MenuSeparatorProps): React.JSX.Element {\n const layout = useMenuLayout(\"MenuSeparator\");\n\n if (layout === \"sheet\") {\n return <Divider className={cn(\"my-1\", className)} />;\n }\n\n return (\n <BaseMenu.Separator\n data-slot=\"menu-separator\"\n className={cn(\"my-1 h-px shrink-0 bg-border-subtle\", className)}\n />\n );\n}\n"],"names":["BaseMenu"],"mappings":";;;;;;;;;;;AAmCA,MAAM,oBAAoB,cAAiC,IAAI;AAE/D,SAAS,cAAc,MAA0B;AAC/C,QAAM,SAAS,WAAW,iBAAiB;AAC3C,MAAI,WAAW,MAAM;AACnB,UAAM,IAAI,MAAM,cAAc,IAAI,+BAA+B;AAAA,EACnE;AACA,SAAO;AACT;AA4BO,SAAS,KAAK;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,YAAY,cAAc,mBAAmB;AACnD,QAAM,iBACJ,WAAW,YAAY,YAAY;AAErC,6BACG,kBAAkB,UAAlB,EAA2B,OAAO,gBAChC,6BAAmB,UAClB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA,IAGH;AAAA,IAACA,OAAS;AAAA,IAAT;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA,GAGP;AAEJ;AAyBO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAwC;AACtC,QAAM,SAAS,cAAc,aAAa;AAC1C,QAAM,SAAS,kBAAA;AACf,QAAM,UAAU,WAAW,UAAU,eAAeA,OAAS;AAE7D,MAAI,WAAW,UAAa,aAAa,QAAW;AAClD,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAU;AAAA,QACV,QACE;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,0BAAO,oBAAA,EAAmB;AAAA,YAC1B,cAAY,aAAa,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGnC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,cAAY;AAAA,MACZ;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;AAcO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AACF,GAAwC;AACtC,QAAM,SAAS,cAAc,aAAa;AAC1C,QAAM,SAAS,kBAAA;AAEf,MAAI,WAAW,SAAS;AACtB,WACE,oBAAC,cAAA,EAAa,cAAY,SAAS,OAAO,aACxC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAU;AAAA,QACV,WAAW,GAAG,uBAAuB,SAAS;AAAA,QAE7C;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,EAEJ;AAEA,SACE,oBAACA,OAAS,QAAT,EACC,UAAA;AAAA,IAACA,OAAS;AAAA,IAAT;AAAA,MACC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAA;AAAA,QAACA,OAAS;AAAA,QAAT;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA;AAAA;AAAA,YAGT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAGD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA,GAEJ;AAEJ;AAEA,MAAM,mBAAmB;AAAA,EACvB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,aAAa;AAAA,MAAA;AAAA,MAEf,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA;AAAA;AAAA,IAIF,kBAAkB;AAAA,MAChB;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;AAiBO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA,eAAe;AAAA,EACf;AACF,GAAqC;AACnC,QAAM,SAAS,cAAc,UAAU;AACvC,QAAM,UAAU,GAAG,iBAAiB,EAAE,MAAM,OAAA,CAAQ,GAAG,SAAS;AAEhE,MAAI,WAAW,SAAS;AACtB,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAU;AAAA,QACV,aAAW;AAAA,QACX;AAAA,QACA,WAAW;AAAA,QACX,SAAS,CAAC,UAAU;AAClB,oBAAU,KAAK;AACf,cAAI,CAAC,cAAc;AACjB,kBAAM,qBAAA;AAAA,UACR;AAAA,QACF;AAAA,QAEC,UAAA;AAAA,UAAA;AAAA,UACD,oBAAC,QAAA,EAAK,WAAU,2BAA2B,SAAA,CAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAG1D;AAEA,SACE;AAAA,IAACA,OAAS;AAAA,IAAT;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MAEV,UAAA;AAAA,QAAA;AAAA,QACD,oBAAC,QAAA,EAAK,WAAU,2BAA2B,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1D;AAOO,SAAS,cAAc;AAAA,EAC5B;AACF,GAA0C;AACxC,QAAM,SAAS,cAAc,eAAe;AAE5C,MAAI,WAAW,SAAS;AACtB,+BAAQ,SAAA,EAAQ,WAAW,GAAG,QAAQ,SAAS,GAAG;AAAA,EACpD;AAEA,SACE;AAAA,IAACA,OAAS;AAAA,IAAT;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,uCAAuC,SAAS;AAAA,IAAA;AAAA,EAAA;AAGpE;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { MobileHeader, MobileHeaderAction, type MobileHeaderActionProps, MobileHeaderBack, type MobileHeaderBackProps, type MobileHeaderProps, } from "./mobile-header";
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import { type IconButtonProps } from "../icon-button";
|
|
3
|
+
export interface MobileHeaderProps extends Omit<ComponentProps<"header">, "title"> {
|
|
4
|
+
/** The screen's name. One line: it truncates with an ellipsis instead of wrapping. */
|
|
5
|
+
title: ReactNode;
|
|
6
|
+
/**
|
|
7
|
+
* Left slot. On a second-level screen, `<MobileHeaderBack />` (the way back); on a
|
|
8
|
+
* root screen, the button that opens the menu (`AppShellMenuButton`). Leave it out
|
|
9
|
+
* only on a root screen without a menu.
|
|
10
|
+
*/
|
|
11
|
+
leading?: ReactNode;
|
|
12
|
+
/** Right slot: one `MobileHeaderAction` (e.g. "Más opciones" opening a `Menu`). */
|
|
13
|
+
trailing?: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* The title is the page's `<h1>` on mobile, the counterpart of `PageHeader` on
|
|
16
|
+
* desktop (each one only shows at its own width). Use `"p"` if the screen already
|
|
17
|
+
* has its own `<h1>` in the content.
|
|
18
|
+
*/
|
|
19
|
+
titleAs?: "h1" | "h2" | "p";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Mobile header: 56px, title filling the space between two optional icon buttons.
|
|
23
|
+
* `AppShell` keeps it stuck to the top below the desktop breakpoint and adds the
|
|
24
|
+
* `safe-area-inset-top` of phones with a notch.
|
|
25
|
+
*
|
|
26
|
+
* Every screen needs a way out: a second-level screen ALWAYS gets a back button in
|
|
27
|
+
* `leading` — `<MobileHeaderBack render={<Link to=".." />} />` — which looks
|
|
28
|
+
* different from the menu one on purpose, so people can tell "back" from "menu".
|
|
29
|
+
*/
|
|
30
|
+
export declare function MobileHeader({ title, leading, trailing, titleAs: Title, className, ...props }: MobileHeaderProps): React.JSX.Element;
|
|
31
|
+
export interface MobileHeaderActionProps extends Omit<IconButtonProps, "variant" | "size"> {
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* An icon button for the header's slots: IconButton `ghost` `small` (36px drawn, 44px
|
|
35
|
+
* hit area), with the hover one step above the header's `surface`. `aria-label` is
|
|
36
|
+
* required. With `render={<Link />}` it becomes a link on its own.
|
|
37
|
+
*/
|
|
38
|
+
export declare function MobileHeaderAction({ className, render, nativeButton, role, ...props }: MobileHeaderActionProps): React.JSX.Element;
|
|
39
|
+
export interface MobileHeaderBackProps extends Omit<MobileHeaderActionProps, "icon" | "aria-label"> {
|
|
40
|
+
/** Defaults to the `back` label ("Volver"). */
|
|
41
|
+
"aria-label"?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The way back of a second-level screen: `arrow-narrow-left`, named "Volver".
|
|
45
|
+
* Give it the parent route — `render={<Link to="/programas" />}` — rather than
|
|
46
|
+
* `history.back()`: someone who arrived from a shared link has no history to go
|
|
47
|
+
* back to.
|
|
48
|
+
*/
|
|
49
|
+
export declare function MobileHeaderBack({ "aria-label": ariaLabel, ...props }: MobileHeaderBackProps): React.JSX.Element;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowNarrowLeftIcon } from "../../icons/generated/arrow-narrow-left.js";
|
|
3
|
+
import { cn } from "../../lib/cn.js";
|
|
4
|
+
import { IconButton } from "../icon-button/icon-button.js";
|
|
5
|
+
import { useMediCoreLabels } from "../../provider/medicore-provider.js";
|
|
6
|
+
function MobileHeader({
|
|
7
|
+
title,
|
|
8
|
+
leading,
|
|
9
|
+
trailing,
|
|
10
|
+
titleAs: Title = "h1",
|
|
11
|
+
className,
|
|
12
|
+
...props
|
|
13
|
+
}) {
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
"header",
|
|
16
|
+
{
|
|
17
|
+
"data-slot": "mobile-header",
|
|
18
|
+
className: cn(
|
|
19
|
+
"border-border border-b bg-surface pt-[env(safe-area-inset-top)]",
|
|
20
|
+
className
|
|
21
|
+
),
|
|
22
|
+
...props,
|
|
23
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex h-14 items-center gap-2 px-2", children: [
|
|
24
|
+
leading,
|
|
25
|
+
/* @__PURE__ */ jsx(
|
|
26
|
+
Title,
|
|
27
|
+
{
|
|
28
|
+
"data-slot": "mobile-header-title",
|
|
29
|
+
className: cn(
|
|
30
|
+
"min-w-0 flex-1 truncate text-heading-h3 text-text-primary",
|
|
31
|
+
!leading && "ps-2",
|
|
32
|
+
!trailing && "pe-2"
|
|
33
|
+
),
|
|
34
|
+
children: title
|
|
35
|
+
}
|
|
36
|
+
),
|
|
37
|
+
trailing
|
|
38
|
+
] })
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function MobileHeaderAction({
|
|
43
|
+
className,
|
|
44
|
+
render,
|
|
45
|
+
nativeButton,
|
|
46
|
+
role,
|
|
47
|
+
...props
|
|
48
|
+
}) {
|
|
49
|
+
const isLink = render !== void 0;
|
|
50
|
+
return /* @__PURE__ */ jsx(
|
|
51
|
+
IconButton,
|
|
52
|
+
{
|
|
53
|
+
"data-slot": "mobile-header-action",
|
|
54
|
+
variant: "ghost",
|
|
55
|
+
size: "small",
|
|
56
|
+
render,
|
|
57
|
+
nativeButton: nativeButton ?? !isLink,
|
|
58
|
+
role,
|
|
59
|
+
className: cn("not-data-disabled:hover:bg-surface-raised", className),
|
|
60
|
+
...props
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
function MobileHeaderBack({
|
|
65
|
+
"aria-label": ariaLabel,
|
|
66
|
+
...props
|
|
67
|
+
}) {
|
|
68
|
+
const labels = useMediCoreLabels();
|
|
69
|
+
return /* @__PURE__ */ jsx(
|
|
70
|
+
MobileHeaderAction,
|
|
71
|
+
{
|
|
72
|
+
"data-slot": "mobile-header-back",
|
|
73
|
+
icon: /* @__PURE__ */ jsx(ArrowNarrowLeftIcon, {}),
|
|
74
|
+
"aria-label": ariaLabel ?? labels.back,
|
|
75
|
+
...props
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
export {
|
|
80
|
+
MobileHeader,
|
|
81
|
+
MobileHeaderAction,
|
|
82
|
+
MobileHeaderBack
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=mobile-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-header.js","sources":["../../../src/components/mobile-header/mobile-header.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from \"react\";\n\nimport { ArrowNarrowLeftIcon } from \"../../icons\";\nimport { cn } from \"../../lib/cn\";\nimport { useMediCoreLabels } from \"../../provider\";\nimport { IconButton, type IconButtonProps } from \"../icon-button\";\n\nexport interface MobileHeaderProps\n extends Omit<ComponentProps<\"header\">, \"title\"> {\n /** The screen's name. One line: it truncates with an ellipsis instead of wrapping. */\n title: ReactNode;\n /**\n * Left slot. On a second-level screen, `<MobileHeaderBack />` (the way back); on a\n * root screen, the button that opens the menu (`AppShellMenuButton`). Leave it out\n * only on a root screen without a menu.\n */\n leading?: ReactNode;\n /** Right slot: one `MobileHeaderAction` (e.g. \"Más opciones\" opening a `Menu`). */\n trailing?: ReactNode;\n /**\n * The title is the page's `<h1>` on mobile, the counterpart of `PageHeader` on\n * desktop (each one only shows at its own width). Use `\"p\"` if the screen already\n * has its own `<h1>` in the content.\n */\n titleAs?: \"h1\" | \"h2\" | \"p\";\n}\n\n/**\n * Mobile header: 56px, title filling the space between two optional icon buttons.\n * `AppShell` keeps it stuck to the top below the desktop breakpoint and adds the\n * `safe-area-inset-top` of phones with a notch.\n *\n * Every screen needs a way out: a second-level screen ALWAYS gets a back button in\n * `leading` — `<MobileHeaderBack render={<Link to=\"..\" />} />` — which looks\n * different from the menu one on purpose, so people can tell \"back\" from \"menu\".\n */\nexport function MobileHeader({\n title,\n leading,\n trailing,\n titleAs: Title = \"h1\",\n className,\n ...props\n}: MobileHeaderProps): React.JSX.Element {\n return (\n <header\n data-slot=\"mobile-header\"\n className={cn(\n \"border-border border-b bg-surface pt-[env(safe-area-inset-top)]\",\n className,\n )}\n {...props}\n >\n <div className=\"flex h-14 items-center gap-2 px-2\">\n {leading}\n {/* Without a button on a side, the title lines up with the 16px page gutter. */}\n <Title\n data-slot=\"mobile-header-title\"\n className={cn(\n \"min-w-0 flex-1 truncate text-heading-h3 text-text-primary\",\n !leading && \"ps-2\",\n !trailing && \"pe-2\",\n )}\n >\n {title}\n </Title>\n {trailing}\n </div>\n </header>\n );\n}\n\nexport interface MobileHeaderActionProps\n extends Omit<IconButtonProps, \"variant\" | \"size\"> {}\n\n/**\n * An icon button for the header's slots: IconButton `ghost` `small` (36px drawn, 44px\n * hit area), with the hover one step above the header's `surface`. `aria-label` is\n * required. With `render={<Link />}` it becomes a link on its own.\n */\nexport function MobileHeaderAction({\n className,\n render,\n nativeButton,\n role,\n ...props\n}: MobileHeaderActionProps): React.JSX.Element {\n const isLink = render !== undefined;\n\n return (\n <IconButton\n data-slot=\"mobile-header-action\"\n variant=\"ghost\"\n size=\"small\"\n render={render}\n nativeButton={nativeButton ?? !isLink}\n // Always passed, even when undefined: Base UI puts role=\"button\" on non-native\n // buttons, and a router link that navigates must stay a link.\n role={role}\n className={cn(\"not-data-disabled:hover:bg-surface-raised\", className)}\n {...props}\n />\n );\n}\n\nexport interface MobileHeaderBackProps\n extends Omit<MobileHeaderActionProps, \"icon\" | \"aria-label\"> {\n /** Defaults to the `back` label (\"Volver\"). */\n \"aria-label\"?: string;\n}\n\n/**\n * The way back of a second-level screen: `arrow-narrow-left`, named \"Volver\".\n * Give it the parent route — `render={<Link to=\"/programas\" />}` — rather than\n * `history.back()`: someone who arrived from a shared link has no history to go\n * back to.\n */\nexport function MobileHeaderBack({\n \"aria-label\": ariaLabel,\n ...props\n}: MobileHeaderBackProps): React.JSX.Element {\n const labels = useMediCoreLabels();\n\n return (\n <MobileHeaderAction\n data-slot=\"mobile-header-back\"\n icon={<ArrowNarrowLeftIcon />}\n aria-label={ariaLabel ?? labels.back}\n {...props}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAoCO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,QAAQ;AAAA,EACjB;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEJ,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,QAAA;AAAA,QAED;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAW;AAAA,cACT;AAAA,cACA,CAAC,WAAW;AAAA,cACZ,CAAC,YAAY;AAAA,YAAA;AAAA,YAGd,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF;AAAA,MAAA,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;AAUO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+C;AAC7C,QAAM,SAAS,WAAW;AAE1B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,SAAQ;AAAA,MACR,MAAK;AAAA,MACL;AAAA,MACA,cAAc,gBAAgB,CAAC;AAAA,MAG/B;AAAA,MACA,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAcO,SAAS,iBAAiB;AAAA,EAC/B,cAAc;AAAA,EACd,GAAG;AACL,GAA6C;AAC3C,QAAM,SAAS,kBAAA;AAEf,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,0BAAO,qBAAA,EAAoB;AAAA,MAC3B,cAAY,aAAa,OAAO;AAAA,MAC/B,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { type ModalChangeEventDetails, type ModalLayout } from "./modal";
|
|
3
|
+
export interface ConfirmModalProps {
|
|
4
|
+
/** The element that opens it, e.g. `<Button variant="destructive">Eliminar</Button>`. Omit it when controlled. */
|
|
5
|
+
trigger?: ReactElement;
|
|
6
|
+
/** A question about the action: "¿Eliminar Penicilina de tus alergias?". */
|
|
7
|
+
title: ReactNode;
|
|
8
|
+
/** What happens if the person confirms, and whether it can be undone. */
|
|
9
|
+
message?: ReactNode;
|
|
10
|
+
/** Names the action ("Eliminar alergia"), never a bare "Aceptar" or "Sí". */
|
|
11
|
+
confirmLabel: ReactNode;
|
|
12
|
+
/** Defaults to the MediCore `close` label. */
|
|
13
|
+
cancelLabel?: ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* Runs on confirm. If it returns a promise, the confirm button shows a spinner and
|
|
16
|
+
* the modal closes when it resolves; if it rejects, the modal stays open so the
|
|
17
|
+
* screen can explain what failed.
|
|
18
|
+
*/
|
|
19
|
+
onConfirm: () => unknown;
|
|
20
|
+
/** The confirm button goes in `destructive` red. */
|
|
21
|
+
destructive?: boolean;
|
|
22
|
+
layout?: ModalLayout;
|
|
23
|
+
open?: boolean;
|
|
24
|
+
defaultOpen?: boolean;
|
|
25
|
+
onOpenChange?: (open: boolean, eventDetails: ModalChangeEventDetails) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Ready-made confirmation: title, message, cancel and confirm. For irreversible
|
|
29
|
+
* actions (cancel an appointment, delete data) confirm here first, then show the
|
|
30
|
+
* result in a persistent state — not only in a Toast.
|
|
31
|
+
*/
|
|
32
|
+
export declare function ConfirmModal({ trigger, title, message, confirmLabel, cancelLabel, onConfirm, destructive, ...modalProps }: ConfirmModalProps): React.JSX.Element;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
|
+
import { Modal, ModalTrigger, ModalContent, ModalHeader, ModalTitle, ModalBody, ModalFooter, ModalClose } from "./modal.js";
|
|
4
|
+
import { useMediCoreLabels } from "../../provider/medicore-provider.js";
|
|
5
|
+
import { Button } from "../button/button.js";
|
|
6
|
+
function isPromiseLike(value) {
|
|
7
|
+
return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
|
|
8
|
+
}
|
|
9
|
+
function ConfirmModal({
|
|
10
|
+
trigger,
|
|
11
|
+
title,
|
|
12
|
+
message,
|
|
13
|
+
confirmLabel,
|
|
14
|
+
cancelLabel,
|
|
15
|
+
onConfirm,
|
|
16
|
+
destructive = false,
|
|
17
|
+
...modalProps
|
|
18
|
+
}) {
|
|
19
|
+
const labels = useMediCoreLabels();
|
|
20
|
+
const actionsRef = useRef(null);
|
|
21
|
+
const [pending, setPending] = useState(false);
|
|
22
|
+
const handleConfirm = async () => {
|
|
23
|
+
const result = onConfirm();
|
|
24
|
+
if (!isPromiseLike(result)) {
|
|
25
|
+
actionsRef.current?.close();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
setPending(true);
|
|
29
|
+
try {
|
|
30
|
+
await result;
|
|
31
|
+
actionsRef.current?.close();
|
|
32
|
+
} catch {
|
|
33
|
+
} finally {
|
|
34
|
+
setPending(false);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return /* @__PURE__ */ jsxs(
|
|
38
|
+
Modal,
|
|
39
|
+
{
|
|
40
|
+
actionsRef,
|
|
41
|
+
disablePointerDismissal: pending,
|
|
42
|
+
...modalProps,
|
|
43
|
+
children: [
|
|
44
|
+
trigger && /* @__PURE__ */ jsx(ModalTrigger, { render: trigger }),
|
|
45
|
+
/* @__PURE__ */ jsxs(ModalContent, { children: [
|
|
46
|
+
/* @__PURE__ */ jsx(ModalHeader, { children: /* @__PURE__ */ jsx(ModalTitle, { children: title }) }),
|
|
47
|
+
message && /* @__PURE__ */ jsx(ModalBody, { children: message }),
|
|
48
|
+
/* @__PURE__ */ jsx(
|
|
49
|
+
ModalFooter,
|
|
50
|
+
{
|
|
51
|
+
primaryAction: /* @__PURE__ */ jsx(
|
|
52
|
+
Button,
|
|
53
|
+
{
|
|
54
|
+
variant: destructive ? "destructive" : "primary",
|
|
55
|
+
loading: pending,
|
|
56
|
+
onClick: handleConfirm,
|
|
57
|
+
children: confirmLabel
|
|
58
|
+
}
|
|
59
|
+
),
|
|
60
|
+
secondaryAction: /* @__PURE__ */ jsx(
|
|
61
|
+
ModalClose,
|
|
62
|
+
{
|
|
63
|
+
disabled: pending,
|
|
64
|
+
render: /* @__PURE__ */ jsx(Button, { variant: "secondary" }),
|
|
65
|
+
children: cancelLabel ?? labels.close
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] })
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
ConfirmModal
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=confirm-modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confirm-modal.js","sources":["../../../src/components/modal/confirm-modal.tsx"],"sourcesContent":["import { type ReactElement, type ReactNode, useRef, useState } from \"react\";\n\nimport { useMediCoreLabels } from \"../../provider\";\nimport { Button } from \"../button\";\nimport {\n Modal,\n type ModalActions,\n ModalBody,\n type ModalChangeEventDetails,\n ModalClose,\n ModalContent,\n ModalFooter,\n ModalHeader,\n type ModalLayout,\n ModalTitle,\n ModalTrigger,\n} from \"./modal\";\n\nexport interface ConfirmModalProps {\n /** The element that opens it, e.g. `<Button variant=\"destructive\">Eliminar</Button>`. Omit it when controlled. */\n trigger?: ReactElement;\n /** A question about the action: \"¿Eliminar Penicilina de tus alergias?\". */\n title: ReactNode;\n /** What happens if the person confirms, and whether it can be undone. */\n message?: ReactNode;\n /** Names the action (\"Eliminar alergia\"), never a bare \"Aceptar\" or \"Sí\". */\n confirmLabel: ReactNode;\n /** Defaults to the MediCore `close` label. */\n cancelLabel?: ReactNode;\n /**\n * Runs on confirm. If it returns a promise, the confirm button shows a spinner and\n * the modal closes when it resolves; if it rejects, the modal stays open so the\n * screen can explain what failed.\n */\n onConfirm: () => unknown;\n /** The confirm button goes in `destructive` red. */\n destructive?: boolean;\n layout?: ModalLayout;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, eventDetails: ModalChangeEventDetails) => void;\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"then\" in value &&\n typeof value.then === \"function\"\n );\n}\n\n/**\n * Ready-made confirmation: title, message, cancel and confirm. For irreversible\n * actions (cancel an appointment, delete data) confirm here first, then show the\n * result in a persistent state — not only in a Toast.\n */\nexport function ConfirmModal({\n trigger,\n title,\n message,\n confirmLabel,\n cancelLabel,\n onConfirm,\n destructive = false,\n ...modalProps\n}: ConfirmModalProps): React.JSX.Element {\n const labels = useMediCoreLabels();\n const actionsRef = useRef<ModalActions | null>(null);\n const [pending, setPending] = useState(false);\n\n const handleConfirm = async (): Promise<void> => {\n const result = onConfirm();\n if (!isPromiseLike(result)) {\n actionsRef.current?.close();\n return;\n }\n setPending(true);\n try {\n await result;\n actionsRef.current?.close();\n } catch {\n // Stays open: the caller shows what went wrong.\n } finally {\n setPending(false);\n }\n };\n\n return (\n <Modal\n actionsRef={actionsRef}\n disablePointerDismissal={pending}\n {...modalProps}\n >\n {trigger && <ModalTrigger render={trigger} />}\n <ModalContent>\n <ModalHeader>\n <ModalTitle>{title}</ModalTitle>\n </ModalHeader>\n {message && <ModalBody>{message}</ModalBody>}\n <ModalFooter\n primaryAction={\n <Button\n variant={destructive ? \"destructive\" : \"primary\"}\n loading={pending}\n onClick={handleConfirm}\n >\n {confirmLabel}\n </Button>\n }\n secondaryAction={\n <ModalClose\n disabled={pending}\n render={<Button variant=\"secondary\" />}\n >\n {cancelLabel ?? labels.close}\n </ModalClose>\n }\n />\n </ModalContent>\n </Modal>\n );\n}\n"],"names":[],"mappings":";;;;;AA2CA,SAAS,cAAc,OAA+C;AACpE,SACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,OAAO,MAAM,SAAS;AAE1B;AAOO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,GAAG;AACL,GAAyC;AACvC,QAAM,SAAS,kBAAA;AACf,QAAM,aAAa,OAA4B,IAAI;AACnD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,QAAM,gBAAgB,YAA2B;AAC/C,UAAM,SAAS,UAAA;AACf,QAAI,CAAC,cAAc,MAAM,GAAG;AAC1B,iBAAW,SAAS,MAAA;AACpB;AAAA,IACF;AACA,eAAW,IAAI;AACf,QAAI;AACF,YAAM;AACN,iBAAW,SAAS,MAAA;AAAA,IACtB,QAAQ;AAAA,IAER,UAAA;AACE,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,yBAAyB;AAAA,MACxB,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,WAAW,oBAAC,cAAA,EAAa,QAAQ,QAAA,CAAS;AAAA,6BAC1C,cAAA,EACC,UAAA;AAAA,UAAA,oBAAC,aAAA,EACC,UAAA,oBAAC,YAAA,EAAY,UAAA,MAAA,CAAM,GACrB;AAAA,UACC,WAAW,oBAAC,WAAA,EAAW,UAAA,QAAA,CAAQ;AAAA,UAChC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,eACE;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS,cAAc,gBAAgB;AAAA,kBACvC,SAAS;AAAA,kBACT,SAAS;AAAA,kBAER,UAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGL,iBACE;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAU;AAAA,kBACV,QAAQ,oBAAC,QAAA,EAAO,SAAQ,YAAA,CAAY;AAAA,kBAEnC,yBAAe,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YACzB;AAAA,UAAA;AAAA,QAEJ,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { ConfirmModal, type ConfirmModalProps } from "./confirm-modal";
|
|
2
|
+
export { Modal, type ModalActions, ModalBody, type ModalBodyProps, type ModalChangeEventDetails, ModalClose, type ModalCloseProps, ModalContent, type ModalContentProps, ModalFooter, type ModalFooterProps, ModalHeader, type ModalHeaderProps, type ModalLayout, type ModalProps, ModalTitle, type ModalTitleProps, ModalTrigger, type ModalTriggerProps, } from "./modal";
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Dialog } from "@base-ui/react/dialog";
|
|
2
|
+
import { Drawer } from "@base-ui/react/drawer";
|
|
3
|
+
import { type ComponentProps, type CSSProperties, type ReactNode, type Ref, type RefObject } from "react";
|
|
4
|
+
export type ModalLayout = "center" | "sheet";
|
|
5
|
+
export type ModalChangeEventDetails = Dialog.Root.ChangeEventDetails | Drawer.Root.ChangeEventDetails;
|
|
6
|
+
export interface ModalActions {
|
|
7
|
+
/** Closes the modal as if the person had dismissed it. */
|
|
8
|
+
close: () => void;
|
|
9
|
+
/** Unmounts the popup after an externally controlled closing animation. */
|
|
10
|
+
unmount: () => void;
|
|
11
|
+
}
|
|
12
|
+
export interface ModalProps {
|
|
13
|
+
/**
|
|
14
|
+
* `center` is the 480px dialog, `sheet` the bottom sheet. Leave it unset and it
|
|
15
|
+
* follows the screen: sheet below `md`, centered dialog from `md` up.
|
|
16
|
+
*/
|
|
17
|
+
layout?: ModalLayout;
|
|
18
|
+
open?: boolean;
|
|
19
|
+
defaultOpen?: boolean;
|
|
20
|
+
onOpenChange?: (open: boolean, eventDetails: ModalChangeEventDetails) => void;
|
|
21
|
+
/** Called after the open/close animation finishes. */
|
|
22
|
+
onOpenChangeComplete?: (open: boolean) => void;
|
|
23
|
+
/** Keeps the modal open when the person clicks or taps outside it. */
|
|
24
|
+
disablePointerDismissal?: boolean;
|
|
25
|
+
/** Imperative `close()` / `unmount()`. */
|
|
26
|
+
actionsRef?: RefObject<ModalActions | null>;
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Confirmation and interruption dialog. One component, two layouts with the same
|
|
31
|
+
* content: a centered dialog on desktop and a bottom sheet on mobile.
|
|
32
|
+
*
|
|
33
|
+
* - `center`: close X in the header, actions in a row aligned right.
|
|
34
|
+
* - `sheet`: drag handle and no X (it closes by swiping down or tapping outside),
|
|
35
|
+
* actions stacked full width with the primary on top.
|
|
36
|
+
*
|
|
37
|
+
* Focus moves into the dialog when it opens, Tab stays inside, Escape closes it
|
|
38
|
+
* and focus returns to the element that opened it.
|
|
39
|
+
*
|
|
40
|
+
* There is no destructive Modal: what is destructive is the action, so pass a
|
|
41
|
+
* `destructive` Button as the primary action (or use `ConfirmModal`).
|
|
42
|
+
*/
|
|
43
|
+
export declare function Modal({ layout, open: openProp, defaultOpen, onOpenChange, children, ...props }: ModalProps): React.JSX.Element;
|
|
44
|
+
export interface ModalTriggerProps extends Dialog.Trigger.Props {
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The element that opens the modal. Unstyled: pass the look with
|
|
48
|
+
* `render={<Button variant="…" />}`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function ModalTrigger(props: ModalTriggerProps): React.JSX.Element;
|
|
51
|
+
export interface ModalCloseProps extends Dialog.Close.Props {
|
|
52
|
+
}
|
|
53
|
+
/** Closes the modal. Use it for the "Cancelar" action: `render={<Button variant="secondary" />}`. */
|
|
54
|
+
export declare function ModalClose(props: ModalCloseProps): React.JSX.Element;
|
|
55
|
+
export interface ModalContentProps extends Omit<Dialog.Popup.Props, "className" | "style" | "render" | "ref"> {
|
|
56
|
+
className?: string;
|
|
57
|
+
style?: CSSProperties;
|
|
58
|
+
ref?: Ref<HTMLDivElement>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The dialog itself, with the scrim behind it. Children go in a column with 16px
|
|
62
|
+
* between them: `ModalHeader`, then `ModalBody` (or your own content, sized to
|
|
63
|
+
* the popup width) and `ModalFooter`.
|
|
64
|
+
*
|
|
65
|
+
* On open, focus goes to the dialog itself so screen readers announce its title and
|
|
66
|
+
* message, and a destructive primary action is never focused by default. Pass
|
|
67
|
+
* `initialFocus` to focus a field instead (e.g. in a form).
|
|
68
|
+
*/
|
|
69
|
+
export declare function ModalContent({ className, children, initialFocus, ref, ...props }: ModalContentProps): React.JSX.Element;
|
|
70
|
+
export interface ModalHeaderProps extends ComponentProps<"div"> {
|
|
71
|
+
/**
|
|
72
|
+
* Shows the close X (default). Only in the `center` layout: the sheet never has one,
|
|
73
|
+
* it closes by swiping or tapping outside.
|
|
74
|
+
*/
|
|
75
|
+
closeButton?: boolean;
|
|
76
|
+
}
|
|
77
|
+
/** Title row. Put a `ModalTitle` inside; the close X is added for you. */
|
|
78
|
+
export declare function ModalHeader({ closeButton, className, children, ...props }: ModalHeaderProps): React.JSX.Element;
|
|
79
|
+
export interface ModalTitleProps extends Omit<Dialog.Title.Props, "className"> {
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
/** Names the dialog (it becomes its accessible name). Renders an `<h2>`. */
|
|
83
|
+
export declare function ModalTitle({ className, ...props }: ModalTitleProps): React.JSX.Element;
|
|
84
|
+
export interface ModalBodyProps extends Omit<Dialog.Description.Props, "className"> {
|
|
85
|
+
className?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The default content: the dialog's message, announced as its description.
|
|
89
|
+
* For your own content (a form, a list) put it directly inside `ModalContent`
|
|
90
|
+
* instead of `ModalBody`.
|
|
91
|
+
*/
|
|
92
|
+
export declare function ModalBody({ className, ...props }: ModalBodyProps): React.JSX.Element;
|
|
93
|
+
export interface ModalFooterProps extends Omit<ComponentProps<"div">, "children"> {
|
|
94
|
+
/** The main action, usually a `Button` (`variant="destructive"` for a destructive confirmation). */
|
|
95
|
+
primaryAction: ReactNode;
|
|
96
|
+
/** Usually `<ModalClose render={<Button variant="secondary" />}>Cancelar</ModalClose>`. */
|
|
97
|
+
secondaryAction?: ReactNode;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The actions. `center`: in a row aligned right, secondary first. `sheet`: stacked
|
|
101
|
+
* full width with the primary on top, away from the resting thumb.
|
|
102
|
+
*/
|
|
103
|
+
export declare function ModalFooter({ primaryAction, secondaryAction, className, ...props }: ModalFooterProps): React.JSX.Element;
|