aai agency logo
OG Components Docs

Asset Detail Card

Detail panel shown when clicking an asset on the map. Auto-generates sections from the asset's properties. Includes a production chart when time series data is available.

Preview

This card is auto-generated from a sample well's properties. No configuration needed.

<AssetDetailCard
  asset={sampleWell}
  onClose={() => {}}
/>

Installation

bash
pnpm add @aai-agency/og-components

The detail card is built into the Map component via the showDetailCard prop. It can also be used standalone.

Usage

tsx
import { AssetDetailCard } from "@aai-agency/og-components";

// The card auto-generates sections from whatever
// properties exist on the asset. No configuration needed.
export function WellDetail({ asset, onClose }) {
  return (
    <AssetDetailCard
      asset={asset}
      onClose={onClose}
    />
  );
}

Custom Sections

tsx
// Pass custom sections for explicit control:
<AssetDetailCard
  asset={asset}
  sections={[
    {
      id: "reservoir",
      title: "Reservoir Data",
      fields: [
        { key: "properties.porosity", label: "Porosity", format: "percentage" },
        { key: "properties.netPay", label: "Net Pay", format: "number", unit: "ft" },
      ],
    },
  ]}
  onClose={onClose}
/>

Props

PropTypeDefaultDescription
assetAsset | null-The asset to display. Pass null to hide the card.
onClose() => void-Callback when the close button is clicked.
sectionsAssetDetailSection[]-Custom sections to display. Auto-generated from asset data if omitted.
typeConfigsMap<string, AssetTypeConfig>-Per-type display configuration for labels and colors.
renderHeader(asset: Asset) => ReactNode-Custom header renderer.
renderBody(asset: Asset) => ReactNode-Custom body renderer (replaces all default content).
renderSection(section, asset) => ReactNode-Custom renderer for individual sections.
onBack() => void-Shows a back arrow when provided. Used for navigation from selection summary.
mobileBreakpointnumber768Width threshold for mobile drawer vs desktop panel.