@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,248 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Dialog } from "@base-ui/react/dialog";
|
|
3
|
+
import { Drawer } from "@base-ui/react/drawer";
|
|
4
|
+
import { useState, useCallback, useMemo, useRef, createContext, useContext } from "react";
|
|
5
|
+
import { XCloseIcon } from "../../icons/generated/x-close.js";
|
|
6
|
+
import { cn } from "../../lib/cn.js";
|
|
7
|
+
import { useMediaQuery, DESKTOP_MEDIA_QUERY } from "./use-media-query.js";
|
|
8
|
+
import { useMediCoreLabels } from "../../provider/medicore-provider.js";
|
|
9
|
+
import { IconButton } from "../icon-button/icon-button.js";
|
|
10
|
+
const ModalContext = createContext(null);
|
|
11
|
+
function useModalContext(part) {
|
|
12
|
+
const context = useContext(ModalContext);
|
|
13
|
+
if (context === null) {
|
|
14
|
+
throw new Error(`MediCore: <${part}> must be used inside <Modal>.`);
|
|
15
|
+
}
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
function Modal({
|
|
19
|
+
layout,
|
|
20
|
+
open: openProp,
|
|
21
|
+
defaultOpen = false,
|
|
22
|
+
onOpenChange,
|
|
23
|
+
children,
|
|
24
|
+
...props
|
|
25
|
+
}) {
|
|
26
|
+
const isDesktop = useMediaQuery(DESKTOP_MEDIA_QUERY);
|
|
27
|
+
const resolvedLayout = layout ?? (isDesktop ? "center" : "sheet");
|
|
28
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
|
|
29
|
+
const open = openProp ?? uncontrolledOpen;
|
|
30
|
+
const isControlled = openProp !== void 0;
|
|
31
|
+
const handleOpenChange = useCallback(
|
|
32
|
+
(nextOpen, eventDetails) => {
|
|
33
|
+
onOpenChange?.(nextOpen, eventDetails);
|
|
34
|
+
if (!isControlled && !eventDetails.isCanceled) {
|
|
35
|
+
setUncontrolledOpen(nextOpen);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
[isControlled, onOpenChange]
|
|
39
|
+
);
|
|
40
|
+
const context = useMemo(() => ({ layout: resolvedLayout }), [resolvedLayout]);
|
|
41
|
+
return /* @__PURE__ */ jsx(ModalContext.Provider, { value: context, children: resolvedLayout === "sheet" ? /* @__PURE__ */ jsx(Drawer.Root, { open, onOpenChange: handleOpenChange, ...props, children }) : /* @__PURE__ */ jsx(Dialog.Root, { open, onOpenChange: handleOpenChange, ...props, children }) });
|
|
42
|
+
}
|
|
43
|
+
function ModalTrigger(props) {
|
|
44
|
+
return /* @__PURE__ */ jsx(Dialog.Trigger, { "data-slot": "modal-trigger", ...props });
|
|
45
|
+
}
|
|
46
|
+
function ModalClose(props) {
|
|
47
|
+
return /* @__PURE__ */ jsx(Dialog.Close, { "data-slot": "modal-close", ...props });
|
|
48
|
+
}
|
|
49
|
+
const backdropBase = "fixed inset-0 z-50 min-h-dvh bg-scrim-image transition-opacity duration-200 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none supports-[-webkit-touch-callout:none]:absolute";
|
|
50
|
+
function ModalContent({
|
|
51
|
+
className,
|
|
52
|
+
children,
|
|
53
|
+
initialFocus,
|
|
54
|
+
ref,
|
|
55
|
+
...props
|
|
56
|
+
}) {
|
|
57
|
+
const { layout } = useModalContext("ModalContent");
|
|
58
|
+
const popupRef = useRef(null);
|
|
59
|
+
const setPopupRef = useCallback(
|
|
60
|
+
(node) => {
|
|
61
|
+
popupRef.current = node;
|
|
62
|
+
if (typeof ref === "function") {
|
|
63
|
+
ref(node);
|
|
64
|
+
} else if (ref) {
|
|
65
|
+
ref.current = node;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[ref]
|
|
69
|
+
);
|
|
70
|
+
if (layout === "sheet") {
|
|
71
|
+
return /* @__PURE__ */ jsxs(Drawer.Portal, { children: [
|
|
72
|
+
/* @__PURE__ */ jsx(
|
|
73
|
+
Drawer.Backdrop,
|
|
74
|
+
{
|
|
75
|
+
"data-slot": "modal-backdrop",
|
|
76
|
+
className: cn(
|
|
77
|
+
backdropBase,
|
|
78
|
+
"opacity-[calc(1-var(--drawer-swipe-progress,0))] data-swiping:duration-0"
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ jsx(
|
|
83
|
+
Drawer.Viewport,
|
|
84
|
+
{
|
|
85
|
+
"data-slot": "modal-viewport",
|
|
86
|
+
className: "fixed inset-0 z-50 flex items-end justify-center",
|
|
87
|
+
children: /* @__PURE__ */ jsxs(
|
|
88
|
+
Drawer.Popup,
|
|
89
|
+
{
|
|
90
|
+
ref: setPopupRef,
|
|
91
|
+
"data-slot": "modal-content",
|
|
92
|
+
"data-layout": "sheet",
|
|
93
|
+
initialFocus: initialFocus ?? popupRef,
|
|
94
|
+
className: cn(
|
|
95
|
+
"flex max-h-[90dvh] w-full flex-col gap-4 overflow-y-auto overscroll-contain",
|
|
96
|
+
"rounded-t-xl bg-background px-6 pt-3 pb-8 text-text-primary shadow-xl outline-hidden",
|
|
97
|
+
"[transform:translateY(var(--drawer-swipe-movement-y,0px))] transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]",
|
|
98
|
+
"data-starting-style:[transform:translateY(100%)] data-ending-style:[transform:translateY(100%)]",
|
|
99
|
+
"data-ending-style:duration-[calc(var(--drawer-swipe-strength,1)*400ms)] data-swiping:select-none",
|
|
100
|
+
"motion-reduce:transition-none",
|
|
101
|
+
className
|
|
102
|
+
),
|
|
103
|
+
...props,
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
"div",
|
|
107
|
+
{
|
|
108
|
+
"aria-hidden": "true",
|
|
109
|
+
"data-slot": "modal-handle",
|
|
110
|
+
className: "mx-auto h-1 w-9 shrink-0 rounded-full bg-border"
|
|
111
|
+
}
|
|
112
|
+
),
|
|
113
|
+
/* @__PURE__ */ jsx(Drawer.Content, { className: "flex flex-col gap-4", children })
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
}
|
|
118
|
+
)
|
|
119
|
+
] });
|
|
120
|
+
}
|
|
121
|
+
return /* @__PURE__ */ jsxs(Dialog.Portal, { children: [
|
|
122
|
+
/* @__PURE__ */ jsx(Dialog.Backdrop, { "data-slot": "modal-backdrop", className: backdropBase }),
|
|
123
|
+
/* @__PURE__ */ jsx(
|
|
124
|
+
Dialog.Viewport,
|
|
125
|
+
{
|
|
126
|
+
"data-slot": "modal-viewport",
|
|
127
|
+
className: "fixed inset-0 z-50 flex items-center justify-center p-6",
|
|
128
|
+
children: /* @__PURE__ */ jsx(
|
|
129
|
+
Dialog.Popup,
|
|
130
|
+
{
|
|
131
|
+
ref: setPopupRef,
|
|
132
|
+
"data-slot": "modal-content",
|
|
133
|
+
"data-layout": "center",
|
|
134
|
+
initialFocus: initialFocus ?? popupRef,
|
|
135
|
+
className: cn(
|
|
136
|
+
"flex max-h-full w-120 max-w-full flex-col gap-4 overflow-y-auto overscroll-contain",
|
|
137
|
+
"rounded-xl bg-background p-6 text-text-primary shadow-xl outline-hidden",
|
|
138
|
+
"transition-[opacity,scale] duration-200 ease-out",
|
|
139
|
+
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0",
|
|
140
|
+
"motion-reduce:transition-none",
|
|
141
|
+
className
|
|
142
|
+
),
|
|
143
|
+
...props,
|
|
144
|
+
children
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
] });
|
|
150
|
+
}
|
|
151
|
+
function ModalHeader({
|
|
152
|
+
closeButton = true,
|
|
153
|
+
className,
|
|
154
|
+
children,
|
|
155
|
+
...props
|
|
156
|
+
}) {
|
|
157
|
+
const { layout } = useModalContext("ModalHeader");
|
|
158
|
+
const labels = useMediCoreLabels();
|
|
159
|
+
return /* @__PURE__ */ jsxs(
|
|
160
|
+
"div",
|
|
161
|
+
{
|
|
162
|
+
"data-slot": "modal-header",
|
|
163
|
+
className: cn("flex items-start gap-3", className),
|
|
164
|
+
...props,
|
|
165
|
+
children: [
|
|
166
|
+
children,
|
|
167
|
+
closeButton && layout === "center" && /* @__PURE__ */ jsx(
|
|
168
|
+
Dialog.Close,
|
|
169
|
+
{
|
|
170
|
+
render: /* @__PURE__ */ jsx(
|
|
171
|
+
IconButton,
|
|
172
|
+
{
|
|
173
|
+
variant: "ghost",
|
|
174
|
+
icon: /* @__PURE__ */ jsx(XCloseIcon, {}),
|
|
175
|
+
"aria-label": labels.close
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
]
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
function ModalTitle({
|
|
185
|
+
className,
|
|
186
|
+
...props
|
|
187
|
+
}) {
|
|
188
|
+
return /* @__PURE__ */ jsx(
|
|
189
|
+
Dialog.Title,
|
|
190
|
+
{
|
|
191
|
+
"data-slot": "modal-title",
|
|
192
|
+
className: cn(
|
|
193
|
+
"min-w-0 flex-1 text-heading-h3 text-text-primary",
|
|
194
|
+
className
|
|
195
|
+
),
|
|
196
|
+
...props
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
function ModalBody({
|
|
201
|
+
className,
|
|
202
|
+
...props
|
|
203
|
+
}) {
|
|
204
|
+
return /* @__PURE__ */ jsx(
|
|
205
|
+
Dialog.Description,
|
|
206
|
+
{
|
|
207
|
+
"data-slot": "modal-body",
|
|
208
|
+
className: cn("text-body-default text-text-secondary", className),
|
|
209
|
+
...props
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
function ModalFooter({
|
|
214
|
+
primaryAction,
|
|
215
|
+
secondaryAction,
|
|
216
|
+
className,
|
|
217
|
+
...props
|
|
218
|
+
}) {
|
|
219
|
+
const { layout } = useModalContext("ModalFooter");
|
|
220
|
+
const isSheet = layout === "sheet";
|
|
221
|
+
return /* @__PURE__ */ jsxs(
|
|
222
|
+
"div",
|
|
223
|
+
{
|
|
224
|
+
"data-slot": "modal-footer",
|
|
225
|
+
className: cn(
|
|
226
|
+
"flex gap-2",
|
|
227
|
+
isSheet ? "flex-col *:w-full" : "flex-row flex-wrap justify-end",
|
|
228
|
+
className
|
|
229
|
+
),
|
|
230
|
+
...props,
|
|
231
|
+
children: [
|
|
232
|
+
isSheet ? primaryAction : secondaryAction,
|
|
233
|
+
isSheet ? secondaryAction : primaryAction
|
|
234
|
+
]
|
|
235
|
+
}
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
export {
|
|
239
|
+
Modal,
|
|
240
|
+
ModalBody,
|
|
241
|
+
ModalClose,
|
|
242
|
+
ModalContent,
|
|
243
|
+
ModalFooter,
|
|
244
|
+
ModalHeader,
|
|
245
|
+
ModalTitle,
|
|
246
|
+
ModalTrigger
|
|
247
|
+
};
|
|
248
|
+
//# sourceMappingURL=modal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../src/components/modal/modal.tsx"],"sourcesContent":["import { Dialog } from \"@base-ui/react/dialog\";\nimport { Drawer } from \"@base-ui/react/drawer\";\nimport {\n type ComponentProps,\n type CSSProperties,\n createContext,\n type ReactNode,\n type Ref,\n type RefObject,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { XCloseIcon } from \"../../icons\";\nimport { cn } from \"../../lib/cn\";\nimport { useMediCoreLabels } from \"../../provider\";\nimport { IconButton } from \"../icon-button\";\nimport { DESKTOP_MEDIA_QUERY, useMediaQuery } from \"./use-media-query\";\n\nexport type ModalLayout = \"center\" | \"sheet\";\n\nexport type ModalChangeEventDetails =\n | Dialog.Root.ChangeEventDetails\n | Drawer.Root.ChangeEventDetails;\n\nexport interface ModalActions {\n /** Closes the modal as if the person had dismissed it. */\n close: () => void;\n /** Unmounts the popup after an externally controlled closing animation. */\n unmount: () => void;\n}\n\ninterface ModalContextValue {\n layout: ModalLayout;\n}\n\nconst ModalContext = createContext<ModalContextValue | null>(null);\n\nfunction useModalContext(part: string): ModalContextValue {\n const context = useContext(ModalContext);\n if (context === null) {\n throw new Error(`MediCore: <${part}> must be used inside <Modal>.`);\n }\n return context;\n}\n\nexport interface ModalProps {\n /**\n * `center` is the 480px dialog, `sheet` the bottom sheet. Leave it unset and it\n * follows the screen: sheet below `md`, centered dialog from `md` up.\n */\n layout?: ModalLayout;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean, eventDetails: ModalChangeEventDetails) => void;\n /** Called after the open/close animation finishes. */\n onOpenChangeComplete?: (open: boolean) => void;\n /** Keeps the modal open when the person clicks or taps outside it. */\n disablePointerDismissal?: boolean;\n /** Imperative `close()` / `unmount()`. */\n actionsRef?: RefObject<ModalActions | null>;\n children?: ReactNode;\n}\n\n/**\n * Confirmation and interruption dialog. One component, two layouts with the same\n * content: a centered dialog on desktop and a bottom sheet on mobile.\n *\n * - `center`: close X in the header, actions in a row aligned right.\n * - `sheet`: drag handle and no X (it closes by swiping down or tapping outside),\n * actions stacked full width with the primary on top.\n *\n * Focus moves into the dialog when it opens, Tab stays inside, Escape closes it\n * and focus returns to the element that opened it.\n *\n * There is no destructive Modal: what is destructive is the action, so pass a\n * `destructive` Button as the primary action (or use `ConfirmModal`).\n */\nexport function Modal({\n layout,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n children,\n ...props\n}: ModalProps): React.JSX.Element {\n const isDesktop = useMediaQuery(DESKTOP_MEDIA_QUERY);\n const resolvedLayout: ModalLayout =\n layout ?? (isDesktop ? \"center\" : \"sheet\");\n\n // The open state lives here (not in Base UI) so the modal stays open when the\n // screen crosses the breakpoint and the Dialog root is swapped for the Drawer one.\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const open = openProp ?? uncontrolledOpen;\n const isControlled = openProp !== undefined;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, eventDetails: ModalChangeEventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (!isControlled && !eventDetails.isCanceled) {\n setUncontrolledOpen(nextOpen);\n }\n },\n [isControlled, onOpenChange],\n );\n\n const context = useMemo(() => ({ layout: resolvedLayout }), [resolvedLayout]);\n\n return (\n <ModalContext.Provider value={context}>\n {resolvedLayout === \"sheet\" ? (\n <Drawer.Root open={open} onOpenChange={handleOpenChange} {...props}>\n {children}\n </Drawer.Root>\n ) : (\n <Dialog.Root open={open} onOpenChange={handleOpenChange} {...props}>\n {children}\n </Dialog.Root>\n )}\n </ModalContext.Provider>\n );\n}\n\nexport interface ModalTriggerProps extends Dialog.Trigger.Props {}\n\n/**\n * The element that opens the modal. Unstyled: pass the look with\n * `render={<Button variant=\"…\" />}`.\n */\nexport function ModalTrigger(props: ModalTriggerProps): React.JSX.Element {\n // Drawer.Trigger is Dialog.Trigger, so the same part works for both layouts.\n return <Dialog.Trigger data-slot=\"modal-trigger\" {...props} />;\n}\n\nexport interface ModalCloseProps extends Dialog.Close.Props {}\n\n/** Closes the modal. Use it for the \"Cancelar\" action: `render={<Button variant=\"secondary\" />}`. */\nexport function ModalClose(props: ModalCloseProps): React.JSX.Element {\n return <Dialog.Close data-slot=\"modal-close\" {...props} />;\n}\n\nconst backdropBase =\n \"fixed inset-0 z-50 min-h-dvh bg-scrim-image transition-opacity duration-200 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none supports-[-webkit-touch-callout:none]:absolute\";\n\nexport interface ModalContentProps\n extends Omit<Dialog.Popup.Props, \"className\" | \"style\" | \"render\" | \"ref\"> {\n className?: string;\n style?: CSSProperties;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * The dialog itself, with the scrim behind it. Children go in a column with 16px\n * between them: `ModalHeader`, then `ModalBody` (or your own content, sized to\n * the popup width) and `ModalFooter`.\n *\n * On open, focus goes to the dialog itself so screen readers announce its title and\n * message, and a destructive primary action is never focused by default. Pass\n * `initialFocus` to focus a field instead (e.g. in a form).\n */\nexport function ModalContent({\n className,\n children,\n initialFocus,\n ref,\n ...props\n}: ModalContentProps): React.JSX.Element {\n const { layout } = useModalContext(\"ModalContent\");\n const popupRef = useRef<HTMLDivElement | null>(null);\n\n const setPopupRef = useCallback(\n (node: HTMLDivElement | null) => {\n popupRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n },\n [ref],\n );\n\n if (layout === \"sheet\") {\n return (\n <Drawer.Portal>\n <Drawer.Backdrop\n data-slot=\"modal-backdrop\"\n className={cn(\n backdropBase,\n \"opacity-[calc(1-var(--drawer-swipe-progress,0))] data-swiping:duration-0\",\n )}\n />\n <Drawer.Viewport\n data-slot=\"modal-viewport\"\n className=\"fixed inset-0 z-50 flex items-end justify-center\"\n >\n <Drawer.Popup\n ref={setPopupRef}\n data-slot=\"modal-content\"\n data-layout=\"sheet\"\n initialFocus={initialFocus ?? popupRef}\n className={cn(\n \"flex max-h-[90dvh] w-full flex-col gap-4 overflow-y-auto overscroll-contain\",\n \"rounded-t-xl bg-background px-6 pt-3 pb-8 text-text-primary shadow-xl outline-hidden\",\n \"[transform:translateY(var(--drawer-swipe-movement-y,0px))] transition-transform duration-500 ease-[cubic-bezier(0.32,0.72,0,1)]\",\n \"data-starting-style:[transform:translateY(100%)] data-ending-style:[transform:translateY(100%)]\",\n \"data-ending-style:duration-[calc(var(--drawer-swipe-strength,1)*400ms)] data-swiping:select-none\",\n \"motion-reduce:transition-none\",\n className,\n )}\n {...props}\n >\n <div\n aria-hidden=\"true\"\n data-slot=\"modal-handle\"\n className=\"mx-auto h-1 w-9 shrink-0 rounded-full bg-border\"\n />\n <Drawer.Content className=\"flex flex-col gap-4\">\n {children}\n </Drawer.Content>\n </Drawer.Popup>\n </Drawer.Viewport>\n </Drawer.Portal>\n );\n }\n\n return (\n <Dialog.Portal>\n <Dialog.Backdrop data-slot=\"modal-backdrop\" className={backdropBase} />\n <Dialog.Viewport\n data-slot=\"modal-viewport\"\n className=\"fixed inset-0 z-50 flex items-center justify-center p-6\"\n >\n <Dialog.Popup\n ref={setPopupRef}\n data-slot=\"modal-content\"\n data-layout=\"center\"\n initialFocus={initialFocus ?? popupRef}\n className={cn(\n \"flex max-h-full w-120 max-w-full flex-col gap-4 overflow-y-auto overscroll-contain\",\n \"rounded-xl bg-background p-6 text-text-primary shadow-xl outline-hidden\",\n \"transition-[opacity,scale] duration-200 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 {...props}\n >\n {children}\n </Dialog.Popup>\n </Dialog.Viewport>\n </Dialog.Portal>\n );\n}\n\nexport interface ModalHeaderProps extends ComponentProps<\"div\"> {\n /**\n * Shows the close X (default). Only in the `center` layout: the sheet never has one,\n * it closes by swiping or tapping outside.\n */\n closeButton?: boolean;\n}\n\n/** Title row. Put a `ModalTitle` inside; the close X is added for you. */\nexport function ModalHeader({\n closeButton = true,\n className,\n children,\n ...props\n}: ModalHeaderProps): React.JSX.Element {\n const { layout } = useModalContext(\"ModalHeader\");\n const labels = useMediCoreLabels();\n\n return (\n <div\n data-slot=\"modal-header\"\n className={cn(\"flex items-start gap-3\", className)}\n {...props}\n >\n {children}\n {closeButton && layout === \"center\" && (\n <Dialog.Close\n render={\n <IconButton\n variant=\"ghost\"\n icon={<XCloseIcon />}\n aria-label={labels.close}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport interface ModalTitleProps extends Omit<Dialog.Title.Props, \"className\"> {\n className?: string;\n}\n\n/** Names the dialog (it becomes its accessible name). Renders an `<h2>`. */\nexport function ModalTitle({\n className,\n ...props\n}: ModalTitleProps): React.JSX.Element {\n return (\n <Dialog.Title\n data-slot=\"modal-title\"\n className={cn(\n \"min-w-0 flex-1 text-heading-h3 text-text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport interface ModalBodyProps\n extends Omit<Dialog.Description.Props, \"className\"> {\n className?: string;\n}\n\n/**\n * The default content: the dialog's message, announced as its description.\n * For your own content (a form, a list) put it directly inside `ModalContent`\n * instead of `ModalBody`.\n */\nexport function ModalBody({\n className,\n ...props\n}: ModalBodyProps): React.JSX.Element {\n return (\n <Dialog.Description\n data-slot=\"modal-body\"\n className={cn(\"text-body-default text-text-secondary\", className)}\n {...props}\n />\n );\n}\n\nexport interface ModalFooterProps\n extends Omit<ComponentProps<\"div\">, \"children\"> {\n /** The main action, usually a `Button` (`variant=\"destructive\"` for a destructive confirmation). */\n primaryAction: ReactNode;\n /** Usually `<ModalClose render={<Button variant=\"secondary\" />}>Cancelar</ModalClose>`. */\n secondaryAction?: ReactNode;\n}\n\n/**\n * The actions. `center`: in a row aligned right, secondary first. `sheet`: stacked\n * full width with the primary on top, away from the resting thumb.\n */\nexport function ModalFooter({\n primaryAction,\n secondaryAction,\n className,\n ...props\n}: ModalFooterProps): React.JSX.Element {\n const { layout } = useModalContext(\"ModalFooter\");\n const isSheet = layout === \"sheet\";\n\n return (\n <div\n data-slot=\"modal-footer\"\n className={cn(\n \"flex gap-2\",\n isSheet ? \"flex-col *:w-full\" : \"flex-row flex-wrap justify-end\",\n className,\n )}\n {...props}\n >\n {isSheet ? primaryAction : secondaryAction}\n {isSheet ? secondaryAction : primaryAction}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAuCA,MAAM,eAAe,cAAwC,IAAI;AAEjE,SAAS,gBAAgB,MAAiC;AACxD,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,YAAY,MAAM;AACpB,UAAM,IAAI,MAAM,cAAc,IAAI,gCAAgC;AAAA,EACpE;AACA,SAAO;AACT;AAkCO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA,MAAM;AAAA,EACN,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAkC;AAChC,QAAM,YAAY,cAAc,mBAAmB;AACnD,QAAM,iBACJ,WAAW,YAAY,WAAW;AAIpC,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,WAAW;AACpE,QAAM,OAAO,YAAY;AACzB,QAAM,eAAe,aAAa;AAElC,QAAM,mBAAmB;AAAA,IACvB,CAAC,UAAmB,iBAA0C;AAC5D,qBAAe,UAAU,YAAY;AACrC,UAAI,CAAC,gBAAgB,CAAC,aAAa,YAAY;AAC7C,4BAAoB,QAAQ;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,CAAC,cAAc,YAAY;AAAA,EAAA;AAG7B,QAAM,UAAU,QAAQ,OAAO,EAAE,QAAQ,mBAAmB,CAAC,cAAc,CAAC;AAE5E,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,SAC3B,UAAA,mBAAmB,UAClB,oBAAC,OAAO,MAAP,EAAY,MAAY,cAAc,kBAAmB,GAAG,OAC1D,SAAA,CACH,IAEA,oBAAC,OAAO,MAAP,EAAY,MAAY,cAAc,kBAAmB,GAAG,OAC1D,UACH,EAAA,CAEJ;AAEJ;AAQO,SAAS,aAAa,OAA6C;AAExE,6BAAQ,OAAO,SAAP,EAAe,aAAU,iBAAiB,GAAG,OAAO;AAC9D;AAKO,SAAS,WAAW,OAA2C;AACpE,6BAAQ,OAAO,OAAP,EAAa,aAAU,eAAe,GAAG,OAAO;AAC1D;AAEA,MAAM,eACJ;AAkBK,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyC;AACvC,QAAM,EAAE,OAAA,IAAW,gBAAgB,cAAc;AACjD,QAAM,WAAW,OAA8B,IAAI;AAEnD,QAAM,cAAc;AAAA,IAClB,CAAC,SAAgC;AAC/B,eAAS,UAAU;AACnB,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,IAAI;AAAA,MACV,WAAW,KAAK;AACd,YAAI,UAAU;AAAA,MAChB;AAAA,IACF;AAAA,IACA,CAAC,GAAG;AAAA,EAAA;AAGN,MAAI,WAAW,SAAS;AACtB,WACE,qBAAC,OAAO,QAAP,EACC,UAAA;AAAA,MAAA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,aAAU;AAAA,UACV,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,MAEF;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA;AAAA,YAAC,OAAO;AAAA,YAAP;AAAA,cACC,KAAK;AAAA,cACL,aAAU;AAAA,cACV,eAAY;AAAA,cACZ,cAAc,gBAAgB;AAAA,cAC9B,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,cAED,GAAG;AAAA,cAEJ,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,eAAY;AAAA,oBACZ,aAAU;AAAA,oBACV,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,oCAEX,OAAO,SAAP,EAAe,WAAU,uBACvB,SAAA,CACH;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SACE,qBAAC,OAAO,QAAP,EACC,UAAA;AAAA,IAAA,oBAAC,OAAO,UAAP,EAAgB,aAAU,kBAAiB,WAAW,cAAc;AAAA,IACrE;AAAA,MAAC,OAAO;AAAA,MAAP;AAAA,QACC,aAAU;AAAA,QACV,WAAU;AAAA,QAEV,UAAA;AAAA,UAAC,OAAO;AAAA,UAAP;AAAA,YACC,KAAK;AAAA,YACL,aAAU;AAAA,YACV,eAAY;AAAA,YACZ,cAAc,gBAAgB;AAAA,YAC9B,WAAW;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAED,GAAG;AAAA,YAEH;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAWO,SAAS,YAAY;AAAA,EAC1B,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,OAAA,IAAW,gBAAgB,aAAa;AAChD,QAAM,SAAS,kBAAA;AAEf,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,0BAA0B,SAAS;AAAA,MAChD,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA;AAAA,QACA,eAAe,WAAW,YACzB;AAAA,UAAC,OAAO;AAAA,UAAP;AAAA,YACC,QACE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,0BAAO,YAAA,EAAW;AAAA,gBAClB,cAAY,OAAO;AAAA,cAAA;AAAA,YAAA;AAAA,UACrB;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;AAOO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,GAAG;AACL,GAAuC;AACrC,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAYO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,yCAAyC,SAAS;AAAA,MAC/D,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;AAcO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAwC;AACtC,QAAM,EAAE,OAAA,IAAW,gBAAgB,aAAa;AAChD,QAAM,UAAU,WAAW;AAE3B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA,UAAU,sBAAsB;AAAA,QAChC;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,UAAU,gBAAgB;AAAA,QAC1B,UAAU,kBAAkB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnC;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Tailwind's `md` breakpoint: from here up overlays switch to their desktop layout. */
|
|
2
|
+
export declare const DESKTOP_MEDIA_QUERY = "(min-width: 48rem)";
|
|
3
|
+
/**
|
|
4
|
+
* Tracks a CSS media query. On the server (and in the first hydration pass) it
|
|
5
|
+
* reports `false`, so overlays start in their mobile layout.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useMediaQuery(query: string): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
+
const DESKTOP_MEDIA_QUERY = "(min-width: 48rem)";
|
|
3
|
+
function useMediaQuery(query) {
|
|
4
|
+
const subscribe = useCallback(
|
|
5
|
+
(onChange) => {
|
|
6
|
+
const list = window.matchMedia(query);
|
|
7
|
+
list.addEventListener("change", onChange);
|
|
8
|
+
return () => list.removeEventListener("change", onChange);
|
|
9
|
+
},
|
|
10
|
+
[query]
|
|
11
|
+
);
|
|
12
|
+
return useSyncExternalStore(
|
|
13
|
+
subscribe,
|
|
14
|
+
() => window.matchMedia(query).matches,
|
|
15
|
+
() => false
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
DESKTOP_MEDIA_QUERY,
|
|
20
|
+
useMediaQuery
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=use-media-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-media-query.js","sources":["../../../src/components/modal/use-media-query.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from \"react\";\n\n/** Tailwind's `md` breakpoint: from here up overlays switch to their desktop layout. */\nexport const DESKTOP_MEDIA_QUERY = \"(min-width: 48rem)\";\n\n/**\n * Tracks a CSS media query. On the server (and in the first hydration pass) it\n * reports `false`, so overlays start in their mobile layout.\n */\nexport function useMediaQuery(query: string): boolean {\n const subscribe = useCallback(\n (onChange: () => void) => {\n const list = window.matchMedia(query);\n list.addEventListener(\"change\", onChange);\n return () => list.removeEventListener(\"change\", onChange);\n },\n [query],\n );\n\n return useSyncExternalStore(\n subscribe,\n () => window.matchMedia(query).matches,\n () => false,\n );\n}\n"],"names":[],"mappings":";AAGO,MAAM,sBAAsB;AAM5B,SAAS,cAAc,OAAwB;AACpD,QAAM,YAAY;AAAA,IAChB,CAAC,aAAyB;AACxB,YAAM,OAAO,OAAO,WAAW,KAAK;AACpC,WAAK,iBAAiB,UAAU,QAAQ;AACxC,aAAO,MAAM,KAAK,oBAAoB,UAAU,QAAQ;AAAA,IAC1D;AAAA,IACA,CAAC,KAAK;AAAA,EAAA;AAGR,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO,WAAW,KAAK,EAAE;AAAA,IAC/B,MAAM;AAAA,EAAA;AAEV;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NavItem, type NavItemProps, type NavItemState, navItemVariants, } from "./nav-item";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
export declare const navItemVariants: (props?: ({
|
|
4
|
+
collapsed?: boolean | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export interface NavItemState extends Record<string, unknown> {
|
|
7
|
+
active: boolean;
|
|
8
|
+
collapsed: boolean;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
loading: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface NavItemProps extends Omit<useRender.ComponentProps<"a", NavItemState>, "className" | "children"> {
|
|
13
|
+
/** A MediCore icon (`<Home02Icon />`). It is sized to 20 by the item. */
|
|
14
|
+
icon: ReactNode;
|
|
15
|
+
/** The section name ("Inicio"). Always required: it stays in the DOM when collapsed. */
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* The section on screen: `aria-current="page"`, brand pill and rail. Leave it out if
|
|
19
|
+
* the router link already sets `aria-current="page"` (TanStack Router's `<Link>`
|
|
20
|
+
* does): the styles follow the attribute, not the prop.
|
|
21
|
+
*/
|
|
22
|
+
active?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Figma "Show Label" off: icon only, 40×40. The label becomes screen-reader text and
|
|
25
|
+
* shows in a tooltip on hover and keyboard focus.
|
|
26
|
+
*/
|
|
27
|
+
collapsed?: boolean;
|
|
28
|
+
/** Section not available: `aria-disabled`, out of the tab order, ignores clicks. */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The section is loading after a click: the icon turns into a spinner, the label
|
|
32
|
+
* stays and further clicks are ignored (without it people click twice).
|
|
33
|
+
*/
|
|
34
|
+
loading?: boolean;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Navigation item: icon + label. The atom of `SidebarItem` (and any other nav bar).
|
|
39
|
+
* Renders an `<a>`; pass the router's link with `render`:
|
|
40
|
+
*
|
|
41
|
+
* ```tsx
|
|
42
|
+
* <NavItem icon={<Home02Icon />} render={<Link to="/" activeOptions={{ exact: true }} />}>
|
|
43
|
+
* Inicio
|
|
44
|
+
* </NavItem>
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* - The active item is not told apart by colour alone (brand-subtle on surface is
|
|
48
|
+
* 1.22:1): it carries a 3px rail on the left. Mark it with `active` or let the
|
|
49
|
+
* router set `aria-current="page"`.
|
|
50
|
+
* - Collapsed (icon only) keeps the label in the DOM as its accessible name and adds a
|
|
51
|
+
* tooltip with it.
|
|
52
|
+
* - Hover and focus are CSS: the focus ring is inside the item and adds to the hover.
|
|
53
|
+
*/
|
|
54
|
+
export declare function NavItem({ icon, children, active, collapsed, disabled, loading, className, render, ...props }: NavItemProps): React.JSX.Element;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
|
+
import { Tooltip } from "@base-ui/react/tooltip";
|
|
4
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
import { cn } from "../../lib/cn.js";
|
|
7
|
+
import { Spinner } from "../spinner/spinner.js";
|
|
8
|
+
const navItemVariants = cva(
|
|
9
|
+
[
|
|
10
|
+
"group/nav-item relative flex min-w-0 cursor-pointer select-none items-center gap-2.5 rounded-md p-2.5",
|
|
11
|
+
"text-body-small text-text-secondary no-underline transition-colors",
|
|
12
|
+
"[&_svg]:size-icon-md [&_svg]:shrink-0",
|
|
13
|
+
// Inside the item, not around it: in navigation there is no room outside. It is
|
|
14
|
+
// added on top of hover, so with the keyboard it shows even without the mouse.
|
|
15
|
+
"focus-ring focus-visible:-outline-offset-2",
|
|
16
|
+
// Figma says hover = `surface`, but every nav bar already sits on `surface`, where
|
|
17
|
+
// it would be invisible: the next step up keeps the hover visible.
|
|
18
|
+
"not-aria-disabled:not-aria-busy:not-aria-[current=page]:hover:bg-surface-raised",
|
|
19
|
+
"not-aria-disabled:not-aria-busy:not-aria-[current=page]:hover:text-text-primary",
|
|
20
|
+
// Active: brand-subtle pill + brand text + the 3px rail (the non-colour cue).
|
|
21
|
+
"aria-[current=page]:bg-brand-subtle aria-[current=page]:text-text-brand",
|
|
22
|
+
"aria-disabled:cursor-not-allowed aria-disabled:text-text-disabled",
|
|
23
|
+
"aria-busy:cursor-progress aria-busy:text-text-secondary"
|
|
24
|
+
],
|
|
25
|
+
{
|
|
26
|
+
variants: {
|
|
27
|
+
collapsed: {
|
|
28
|
+
true: "size-10 shrink-0 justify-center",
|
|
29
|
+
false: "w-full"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: {
|
|
33
|
+
collapsed: false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
const preventNavigation = (event) => {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
event.preventBaseUIHandler();
|
|
40
|
+
};
|
|
41
|
+
function NavItem({
|
|
42
|
+
icon,
|
|
43
|
+
children,
|
|
44
|
+
active = false,
|
|
45
|
+
collapsed = false,
|
|
46
|
+
disabled = false,
|
|
47
|
+
loading = false,
|
|
48
|
+
className,
|
|
49
|
+
render,
|
|
50
|
+
...props
|
|
51
|
+
}) {
|
|
52
|
+
const state = { active, collapsed, disabled, loading };
|
|
53
|
+
const ownProps = {
|
|
54
|
+
"data-slot": "nav-item",
|
|
55
|
+
className: cn(navItemVariants({ collapsed }), className),
|
|
56
|
+
"aria-current": active ? "page" : void 0,
|
|
57
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
"span",
|
|
60
|
+
{
|
|
61
|
+
"aria-hidden": true,
|
|
62
|
+
"data-slot": "nav-item-rail",
|
|
63
|
+
className: "absolute inset-y-0 left-0 hidden w-0.75 rounded-xs bg-text-brand group-aria-[current=page]/nav-item:block"
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
loading ? /* @__PURE__ */ jsx(Spinner, { size: 20, label: null }) : icon,
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
"data-slot": "nav-item-label",
|
|
71
|
+
className: collapsed ? "sr-only" : "min-w-0 flex-1",
|
|
72
|
+
children
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] })
|
|
76
|
+
};
|
|
77
|
+
const blockedProps = disabled ? {
|
|
78
|
+
"aria-disabled": true,
|
|
79
|
+
tabIndex: -1,
|
|
80
|
+
onClick: preventNavigation
|
|
81
|
+
} : loading ? { "aria-busy": true, onClick: preventNavigation } : {};
|
|
82
|
+
const element = useRender({
|
|
83
|
+
defaultTagName: "a",
|
|
84
|
+
render,
|
|
85
|
+
state,
|
|
86
|
+
props: mergeProps(ownProps, props, blockedProps)
|
|
87
|
+
});
|
|
88
|
+
if (!collapsed) {
|
|
89
|
+
return element;
|
|
90
|
+
}
|
|
91
|
+
return /* @__PURE__ */ jsxs(Tooltip.Root, { disabled, children: [
|
|
92
|
+
/* @__PURE__ */ jsx(Tooltip.Trigger, { render: element }),
|
|
93
|
+
/* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, { side: "right", sideOffset: 8, className: "z-70", children: /* @__PURE__ */ jsxs(
|
|
94
|
+
Tooltip.Popup,
|
|
95
|
+
{
|
|
96
|
+
"data-slot": "nav-item-tooltip",
|
|
97
|
+
className: cn(
|
|
98
|
+
"max-w-60 rounded-md bg-surface-inverse px-2 py-1.5 text-label-small text-text-inverse",
|
|
99
|
+
"origin-(--transform-origin) transition-[opacity,scale] duration-150 ease-out",
|
|
100
|
+
"data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:opacity-0",
|
|
101
|
+
"data-instant:transition-none motion-reduce:transition-none"
|
|
102
|
+
),
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ jsx(
|
|
105
|
+
Tooltip.Arrow,
|
|
106
|
+
{
|
|
107
|
+
className: cn(
|
|
108
|
+
"h-2.5 w-1.5 bg-surface-inverse",
|
|
109
|
+
"data-[side=right]:right-full data-[side=right]:[clip-path:polygon(100%_0,100%_100%,0_50%)]",
|
|
110
|
+
"data-[side=left]:left-full data-[side=left]:[clip-path:polygon(0_0,100%_50%,0_100%)]"
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
children
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
) }) })
|
|
118
|
+
] });
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
NavItem,
|
|
122
|
+
navItemVariants
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=nav-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav-item.js","sources":["../../../src/components/nav-item/nav-item.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\nimport type { BaseUIEvent } from \"@base-ui/react/types\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva } from \"class-variance-authority\";\nimport type { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Spinner } from \"../spinner\";\n\nexport const navItemVariants = cva(\n [\n \"group/nav-item relative flex min-w-0 cursor-pointer select-none items-center gap-2.5 rounded-md p-2.5\",\n \"text-body-small text-text-secondary no-underline transition-colors\",\n \"[&_svg]:size-icon-md [&_svg]:shrink-0\",\n // Inside the item, not around it: in navigation there is no room outside. It is\n // added on top of hover, so with the keyboard it shows even without the mouse.\n \"focus-ring focus-visible:-outline-offset-2\",\n // Figma says hover = `surface`, but every nav bar already sits on `surface`, where\n // it would be invisible: the next step up keeps the hover visible.\n \"not-aria-disabled:not-aria-busy:not-aria-[current=page]:hover:bg-surface-raised\",\n \"not-aria-disabled:not-aria-busy:not-aria-[current=page]:hover:text-text-primary\",\n // Active: brand-subtle pill + brand text + the 3px rail (the non-colour cue).\n \"aria-[current=page]:bg-brand-subtle aria-[current=page]:text-text-brand\",\n \"aria-disabled:cursor-not-allowed aria-disabled:text-text-disabled\",\n \"aria-busy:cursor-progress aria-busy:text-text-secondary\",\n ],\n {\n variants: {\n collapsed: {\n true: \"size-10 shrink-0 justify-center\",\n false: \"w-full\",\n },\n },\n defaultVariants: {\n collapsed: false,\n },\n },\n);\n\nexport interface NavItemState extends Record<string, unknown> {\n active: boolean;\n collapsed: boolean;\n disabled: boolean;\n loading: boolean;\n}\n\nexport interface NavItemProps\n extends Omit<\n useRender.ComponentProps<\"a\", NavItemState>,\n \"className\" | \"children\"\n > {\n /** A MediCore icon (`<Home02Icon />`). It is sized to 20 by the item. */\n icon: ReactNode;\n /** The section name (\"Inicio\"). Always required: it stays in the DOM when collapsed. */\n children: ReactNode;\n /**\n * The section on screen: `aria-current=\"page\"`, brand pill and rail. Leave it out if\n * the router link already sets `aria-current=\"page\"` (TanStack Router's `<Link>`\n * does): the styles follow the attribute, not the prop.\n */\n active?: boolean;\n /**\n * Figma \"Show Label\" off: icon only, 40×40. The label becomes screen-reader text and\n * shows in a tooltip on hover and keyboard focus.\n */\n collapsed?: boolean;\n /** Section not available: `aria-disabled`, out of the tab order, ignores clicks. */\n disabled?: boolean;\n /**\n * The section is loading after a click: the icon turns into a spinner, the label\n * stays and further clicks are ignored (without it people click twice).\n */\n loading?: boolean;\n className?: string;\n}\n\n// Cancels the navigation and skips the handlers passed in `props`.\nconst preventNavigation = (\n event: BaseUIEvent<MouseEvent<HTMLAnchorElement>>,\n): void => {\n event.preventDefault();\n event.preventBaseUIHandler();\n};\n\n/**\n * Navigation item: icon + label. The atom of `SidebarItem` (and any other nav bar).\n * Renders an `<a>`; pass the router's link with `render`:\n *\n * ```tsx\n * <NavItem icon={<Home02Icon />} render={<Link to=\"/\" activeOptions={{ exact: true }} />}>\n * Inicio\n * </NavItem>\n * ```\n *\n * - The active item is not told apart by colour alone (brand-subtle on surface is\n * 1.22:1): it carries a 3px rail on the left. Mark it with `active` or let the\n * router set `aria-current=\"page\"`.\n * - Collapsed (icon only) keeps the label in the DOM as its accessible name and adds a\n * tooltip with it.\n * - Hover and focus are CSS: the focus ring is inside the item and adds to the hover.\n */\nexport function NavItem({\n icon,\n children,\n active = false,\n collapsed = false,\n disabled = false,\n loading = false,\n className,\n render,\n ...props\n}: NavItemProps): React.JSX.Element {\n const state: NavItemState = { active, collapsed, disabled, loading };\n\n const ownProps: useRender.ElementProps<\"a\"> & { \"data-slot\": string } = {\n \"data-slot\": \"nav-item\",\n className: cn(navItemVariants({ collapsed }), className),\n \"aria-current\": active ? \"page\" : undefined,\n children: (\n <>\n <span\n aria-hidden\n data-slot=\"nav-item-rail\"\n className=\"absolute inset-y-0 left-0 hidden w-0.75 rounded-xs bg-text-brand group-aria-[current=page]/nav-item:block\"\n />\n {loading ? <Spinner size={20} label={null} /> : icon}\n <span\n data-slot=\"nav-item-label\"\n className={collapsed ? \"sr-only\" : \"min-w-0 flex-1\"}\n >\n {children}\n </span>\n </>\n ),\n };\n\n // Last, so they win over whatever came in `props`.\n const blockedProps: useRender.ElementProps<\"a\"> = disabled\n ? {\n \"aria-disabled\": true,\n tabIndex: -1,\n onClick: preventNavigation,\n }\n : loading\n ? { \"aria-busy\": true, onClick: preventNavigation }\n : {};\n\n const element = useRender({\n defaultTagName: \"a\",\n render,\n state,\n props: mergeProps<\"a\">(ownProps, props, blockedProps),\n });\n\n if (!collapsed) {\n return element;\n }\n\n // Same look as MediCore's `Tooltip`, but to the right (it only opens top/bottom) and\n // without `aria-describedby`: the label is already the link's name, and describing\n // it with the same words would make screen readers say it twice.\n return (\n <Tooltip.Root disabled={disabled}>\n <Tooltip.Trigger render={element} />\n <Tooltip.Portal>\n <Tooltip.Positioner side=\"right\" sideOffset={8} className=\"z-70\">\n <Tooltip.Popup\n data-slot=\"nav-item-tooltip\"\n className={cn(\n \"max-w-60 rounded-md bg-surface-inverse px-2 py-1.5 text-label-small text-text-inverse\",\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:opacity-0\",\n \"data-instant:transition-none motion-reduce:transition-none\",\n )}\n >\n <Tooltip.Arrow\n className={cn(\n \"h-2.5 w-1.5 bg-surface-inverse\",\n \"data-[side=right]:right-full data-[side=right]:[clip-path:polygon(100%_0,100%_100%,0_50%)]\",\n \"data-[side=left]:left-full data-[side=left]:[clip-path:polygon(0_0,100%_50%,0_100%)]\",\n )}\n />\n {children}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAUO,MAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA;AAAA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,WAAW;AAAA,IAAA;AAAA,EACb;AAEJ;AAwCA,MAAM,oBAAoB,CACxB,UACS;AACT,QAAM,eAAA;AACN,QAAM,qBAAA;AACR;AAmBO,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoC;AAClC,QAAM,QAAsB,EAAE,QAAQ,WAAW,UAAU,QAAA;AAE3D,QAAM,WAAkE;AAAA,IACtE,aAAa;AAAA,IACb,WAAW,GAAG,gBAAgB,EAAE,UAAA,CAAW,GAAG,SAAS;AAAA,IACvD,gBAAgB,SAAS,SAAS;AAAA,IAClC,UACE,qBAAA,UAAA,EACE,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAW;AAAA,UACX,aAAU;AAAA,UACV,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAEX,UAAU,oBAAC,SAAA,EAAQ,MAAM,IAAI,OAAO,MAAM,IAAK;AAAA,MAChD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAU;AAAA,UACV,WAAW,YAAY,YAAY;AAAA,UAElC;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,EAAA,CACF;AAAA,EAAA;AAKJ,QAAM,eAA4C,WAC9C;AAAA,IACE,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,SAAS;AAAA,EAAA,IAEX,UACE,EAAE,aAAa,MAAM,SAAS,kBAAA,IAC9B,CAAA;AAEN,QAAM,UAAU,UAAU;AAAA,IACxB,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,OAAO,WAAgB,UAAU,OAAO,YAAY;AAAA,EAAA,CACrD;AAED,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAKA,SACE,qBAAC,QAAQ,MAAR,EAAa,UACZ,UAAA;AAAA,IAAA,oBAAC,QAAQ,SAAR,EAAgB,QAAQ,QAAA,CAAS;AAAA,IAClC,oBAAC,QAAQ,QAAR,EACC,UAAA,oBAAC,QAAQ,YAAR,EAAmB,MAAK,SAAQ,YAAY,GAAG,WAAU,QACxD,UAAA;AAAA,MAAC,QAAQ;AAAA,MAAR;AAAA,QACC,aAAU;AAAA,QACV,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA;AAAA,YAAC,QAAQ;AAAA,YAAR;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAED;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEL,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { OTPInput, type OTPInputProps } from "./otp-input";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Input as BaseInput } from "@base-ui/react/input";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
export interface OTPInputProps extends Omit<BaseInput.Props, "className" | "value" | "defaultValue" | "onValueChange" | "type" | "size" | "maxLength" | "pattern"> {
|
|
4
|
+
/** Number of digits. The Figma spec is 6 (WhatsApp / SMS code). */
|
|
5
|
+
length?: number;
|
|
6
|
+
/** The code typed so far (digits only). Use when controlled. */
|
|
7
|
+
value?: string;
|
|
8
|
+
defaultValue?: string;
|
|
9
|
+
onValueChange?: (value: string) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Called when the last digit is typed or a full code is pasted. Check the code here
|
|
12
|
+
* and set `validating`: there is no submit button.
|
|
13
|
+
*/
|
|
14
|
+
onComplete?: (value: string) => void;
|
|
15
|
+
/** State=Validating: spinner + message, and the code can't be edited meanwhile. */
|
|
16
|
+
validating?: boolean;
|
|
17
|
+
/** Text next to the spinner: "Comprobando el código…". Defaults to "Cargando". */
|
|
18
|
+
validatingLabel?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* State=Error: every cell in red and this message under them. Say what to do: "El
|
|
21
|
+
* código no es correcto. Revisa el mensaje o pide uno nuevo."
|
|
22
|
+
*/
|
|
23
|
+
error?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Verification code sent by WhatsApp or SMS. Drawn as six cells but it is ONE input
|
|
28
|
+
* (`inputmode="numeric" autocomplete="one-time-code"`), laid transparently over the
|
|
29
|
+
* cells: the phone offers the code from the message in one tap, paste works, and a
|
|
30
|
+
* screen reader announces a single field ("Código de verificación"), not six.
|
|
31
|
+
*
|
|
32
|
+
* Base UI's OTPField renders one input per cell, which is exactly what the spec rules
|
|
33
|
+
* out, so this is a plain input driving the cells.
|
|
34
|
+
*
|
|
35
|
+
* - The code is checked on its own when complete (`onComplete` → `validating`).
|
|
36
|
+
* - The message under the cells (validating / error) is `aria-live="polite"`.
|
|
37
|
+
* - The accessible name defaults to "Código de verificación"; the heading above the
|
|
38
|
+
* cells ("Escribe el código") is not a label.
|
|
39
|
+
*/
|
|
40
|
+
export declare function OTPInput({ length, value, defaultValue, onValueChange, onComplete, validating, validatingLabel, error, disabled, readOnly, className, onFocus, onBlur, onChange, onPaste, onSelect, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, ...props }: OTPInputProps): React.JSX.Element;
|