← Files DataARCHIVED FILE

templates/data-app/base/src/components/DataAppLoadingContent.jsx

1.35 KB · Sep 30, 2026 · 23:19 UTC

↓ Download file

import React from "react";

import { ComponentSkeleton } from "../charting/ChartState.jsx";

/** The shared page body skeleton, without a second top bar or page landmark. */
export function DataAppLoadingContent({ status = "Loading Data app…" }) {
  return <div className="dashboard-shell-loading-content">
    <span className="visually-hidden" role="status" aria-label={status}>{status}</span>
    <div className="dashboard-shell-loading-heading" aria-hidden="true">
      <div className="dashboard-shell-loading-line is-title" />
      <div className="dashboard-shell-loading-line is-description" />
    </div>
    <div className="dashboard-shell-loading-metrics" aria-hidden="true">
      {Array.from({ length: 4 }, (_, index) => (
        <div className="dashboard-shell-loading-card" key={index}>
          <div className="dashboard-shell-loading-line is-label" />
          <div className="dashboard-shell-loading-line is-value" />
          <div className="dashboard-shell-loading-line is-caption" />
        </div>
      ))}
    </div>
    <div className="dashboard-shell-loading-charts" aria-hidden="true">
      {["line", "bar"].map(type => (
        <div className="dashboard-shell-loading-card" key={type}>
          <div className="dashboard-shell-loading-line is-label" />
          <ComponentSkeleton chart={{ type }} />
        </div>
      ))}
    </div>
  </div>;
}

SHA-256: bcfec0818ea0c90f75697f35a0f8e5d3b649314ad9daaadaabfecb945d6a3483