// Copyright (C) 2023 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

@import "theme";

.pf-empty-state {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  margin: 10px;
  user-select: none;

  & > i {
    margin: auto;
    font-size: 5em; // Size of the icon is relative to the font size.
    color: $pf-minimal-foreground;
    margin-bottom: 10px;
  }

  .pf-empty-state-header {
    margin-bottom: 10px;
    color: $pf-minimal-foreground;
    text-align: center;

    // Limit width to the size of the container and use no wrap & elipsis to
    // stop the size getting out of control.
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .pf-empty-state-detail {
    margin: auto;
  }
}
