/** * Modal Component * Preview modals, confirmation dialogs */ @use '../variables' as *; @use '../mixins' as *; // Modal backdrop .mpr-modal-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: $es-z-modal; opacity: 0; transition: opacity $es-transition-normal; &.show { opacity: 1; } } // Modal container .mpr-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.95); z-index: $es-z-modal + 1; width: 90%; max-width: 600px; max-height: 90vh; background: $es-white; border-radius: $es-radius-xl; box-shadow: $es-shadow-xl; opacity: 0; transition: all $es-transition-normal; overflow: hidden; display: flex; flex-direction: column; &.show { opacity: 1; transform: translate(-50%, -50%) scale(1); } &.modal-sm { max-width: 400px; } &.modal-lg { max-width: 800px; } &.modal-xl { max-width: 1000px; } &.modal-fullscreen { width: 95%; max-width: none; height: 90vh; max-height: none; } } // Modal header .mpr-modal-header { display: flex; align-items: center; justify-content: space-between; gap: $es-spacing-md; padding: $es-spacing-md $es-spacing-lg; background: $es-bg-header; border-bottom: 1px solid $es-border-color; flex-shrink: 0; } .mpr-modal-title { font-size: $es-font-size-base; font-weight: $es-font-weight-semibold; color: $es-text-primary; margin: 0; } .mpr-modal-close { @include button-reset; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; color: $es-text-muted; border-radius: $es-radius-md; transition: all $es-transition-fast; &:hover { background: $es-slate-200; color: $es-text-secondary; } i { font-size: $es-font-size-lg; } } // Modal body .mpr-modal-body { flex: 1; overflow-y: auto; padding: $es-spacing-lg; @include custom-scrollbar; } // Modal footer .mpr-modal-footer { display: flex; align-items: center; justify-content: flex-end; gap: $es-spacing-sm; padding: $es-spacing-md $es-spacing-lg; background: $es-bg-header; border-top: 1px solid $es-border-color; flex-shrink: 0; } .mpr-modal-btn { @include button-reset; display: inline-flex; align-items: center; justify-content: center; gap: $es-spacing-xs; padding: $es-spacing-sm $es-spacing-md; font-size: $es-font-size-sm; font-weight: $es-font-weight-medium; border-radius: $es-radius-md; transition: all $es-transition-fast; &.btn-secondary { color: $es-text-secondary; background: $es-slate-100; &:hover { background: $es-slate-200; } } &.btn-primary { color: $es-white; background: $es-primary; &:hover { background: $es-primary-hover; } } &.btn-danger { color: $es-white; background: $es-danger; &:hover { background: darken($es-danger, 10%); } } &:disabled { opacity: 0.5; cursor: not-allowed; } } // Preview popover styles moved to _list-preview.scss .popover-header { display: flex; align-items: center; justify-content: space-between; gap: $es-spacing-sm; padding: $es-spacing-sm $es-spacing-md; background: $es-bg-header; border-bottom: 1px solid $es-border-color; border-radius: $es-radius-lg $es-radius-lg 0 0; } .popover-title { font-size: $es-font-size-sm; font-weight: $es-font-weight-semibold; color: $es-text-primary; } .popover-close { @include button-reset; display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; color: $es-text-muted; border-radius: $es-radius-sm; transition: all $es-transition-fast; &:hover { background: $es-slate-200; color: $es-text-secondary; } } .popover-body { max-height: 300px; overflow-y: auto; padding: $es-spacing-sm; @include custom-scrollbar; } .popover-footer { display: flex; align-items: center; justify-content: space-between; gap: $es-spacing-sm; padding: $es-spacing-sm $es-spacing-md; background: $es-bg-header; border-top: 1px solid $es-border-color; border-radius: 0 0 $es-radius-lg $es-radius-lg; } .popover-info { font-size: $es-font-size-xs; color: $es-text-muted; } .popover-load-more { @include button-reset; display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.5rem; font-size: $es-font-size-xs; font-weight: $es-font-weight-medium; color: $es-primary; border-radius: $es-radius-sm; transition: all $es-transition-fast; &:hover { background: $es-primary-light; } } // Popover arrow .popover-arrow { position: absolute; width: 12px; height: 12px; background: $es-white; border: 1px solid $es-border-color; transform: rotate(45deg); &.arrow-top { top: -7px; left: 50%; margin-left: -6px; border-right: none; border-bottom: none; } &.arrow-bottom { bottom: -7px; left: 50%; margin-left: -6px; border-left: none; border-top: none; } }