@texturehq/edges 2.4.6 → 2.4.8

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.
@@ -2117,6 +2117,139 @@ declare const TextLink: ({ href, children, className, external, title, variant,
2117
2117
  /** Grouping for an entity. Lets surfaces section grid elements and devices
2118
2118
  * apart from core platform objects. */
2119
2119
  type EntityCategory = "platform" | "grid" | "device";
2120
+ /**
2121
+ * The base page composition an entity renders with. Thirty in-scope entities
2122
+ * share these five compositions — the per-entity variation is which blocks
2123
+ * appear (driven by this config), not per-entity page code.
2124
+ *
2125
+ * - `device` — Battery, EV Charger, Inverter, Thermostat, EV, Water Heater.
2126
+ * Leads with `entity.now` (live state + headline metrics).
2127
+ * - `platform` — Site, Customer. No `Now` block.
2128
+ * - `grid-energized` — energized grid equipment (Transformer, Recloser, Meter…).
2129
+ * - `grid-line` — lines & structures (overhead/underground spans, support structures).
2130
+ *
2131
+ * Matches the design's coverage matrix (DESIGN-REFERENCE.md §2). Every entry in
2132
+ * `ENTITY_CONFIG` carries an archetype, even the 12 that have no detail page —
2133
+ * the archetype is the composition it *would* use; `detailPage` gates whether a
2134
+ * page is actually reachable.
2135
+ */
2136
+ type EntityArchetype = "device" | "platform" | "grid-energized" | "grid-line";
2137
+ /**
2138
+ * A serializable `FieldFormat`. `entity.now` and every block that consumes a
2139
+ * config must be JSON-serializable (the core block contract forbids functions
2140
+ * in props), so the function-carrying `custom` format variant is excluded here
2141
+ * at the type level — a metric can never smuggle a `formatter` into the registry.
2142
+ */
2143
+ type SerializableFieldFormat = Exclude<FieldFormat, {
2144
+ type: "custom";
2145
+ }>;
2146
+ /**
2147
+ * Where a headline metric's value comes from — its provenance. A pure-data
2148
+ * discriminated union (no functions), so the whole registry stays
2149
+ * JSON-serializable. Added in MR-07: MR-06's `HeadlineMetric` could only express
2150
+ * a dot-path into a resolved *device* snapshot; grid metrics are either static
2151
+ * nameplate (a JSONB `elementData` key) or a derived telemetry rollup, and
2152
+ * authoring those against a bare `path` would misrepresent how they are fetched.
2153
+ *
2154
+ * - `state` — device snapshot, resolved from a dot-path (the MR-06 shape).
2155
+ * e.g. `state.gridPower`. This is what every device/meter row uses.
2156
+ * - `metadata` — a static nameplate value read from `GridElement.elementData`
2157
+ * (JSONB). The `key` is the JSONB key, *not* a dot-path.
2158
+ * - `derived` — an asynchronous telemetry rollup with hours-to-a-day latency
2159
+ * (e.g. transformer loading: SUM of downstream meter `kwh_usage`
2160
+ * ÷ PF ÷ `ratedKva`, a 0–1 ratio the cell scales ×100). Consumers
2161
+ * MUST treat this as async/loading and never block the card on it.
2162
+ *
2163
+ * No grid row uses `metadata`/`derived` yet — the design's grid metric proposal
2164
+ * is still "For review" (see MR-07). The type is extended now so those rows can
2165
+ * be authored honestly once design signs off; only `state` rows exist today.
2166
+ */
2167
+ type MetricSource = {
2168
+ kind: "state";
2169
+ path: string;
2170
+ } | {
2171
+ kind: "metadata";
2172
+ key: string;
2173
+ } | {
2174
+ kind: "derived";
2175
+ rollup: "transformer-loading";
2176
+ window: "15m" | "1h" | "1d";
2177
+ };
2178
+ /**
2179
+ * One headline metric shown by `entity.now`. A serializable declaration only —
2180
+ * `source` says where the value comes from (see `MetricSource`), `label` is a
2181
+ * translation key, `format` says how to render the value, and `icon` is a
2182
+ * registry key (never a component). No functions: the host resolves the source
2183
+ * and format at render.
2184
+ *
2185
+ * The shape is the serializable subset of `device-config`'s `FieldConfig`
2186
+ * (`id`/`label`/`source`/`format`/`icon`) — `showWhen`/`resolver`/`custom`
2187
+ * formatters are intentionally dropped. MR-07 replaced the bare `path` with a
2188
+ * `source` discriminator; a `state` source carries the former dot-path as
2189
+ * `source.path`, so no device row changed meaning.
2190
+ */
2191
+ interface HeadlineMetric {
2192
+ /** Stable identifier for the metric (unique within an entity). */
2193
+ id: string;
2194
+ /** Translation key for the display label. */
2195
+ label: string;
2196
+ /** Where the value comes from (device snapshot, nameplate, or rollup). */
2197
+ source: MetricSource;
2198
+ /** How to render the value. Serializable formats only. */
2199
+ format: SerializableFieldFormat;
2200
+ /** Optional icon registry key. */
2201
+ icon?: IconName;
2202
+ }
2203
+ /**
2204
+ * A serializable rule for deriving a display state from resolved entity data.
2205
+ * Mirrors `device-config`'s `StateRule` but drops the optional `resolver`
2206
+ * function so the registry stays JSON-serializable. `mapping` maps a raw field
2207
+ * value to a display-state token; `fallback` is used when the field is
2208
+ * missing/unmapped.
2209
+ */
2210
+ interface EntityStateRule {
2211
+ /** Dot-path to the source field in the resolved entity data. */
2212
+ fieldPath: string;
2213
+ /** Raw-value → display-state-token map. */
2214
+ mapping: Record<string, string>;
2215
+ /** State token to use when the field is missing or unmapped. */
2216
+ fallback: string;
2217
+ /** Optional translation key for the state's display label. */
2218
+ label?: string;
2219
+ }
2220
+ /**
2221
+ * The render format for a static grid property. This is the serializable subset
2222
+ * of `@texturehq/grid-element-config`'s `MetadataFieldConfig["format"]` — the
2223
+ * same shape, kept structurally identical so the two stay in sync when stat-list
2224
+ * rows are transcribed. Deliberately *not* `SerializableFieldFormat`: nameplate
2225
+ * ratings carry units the edges `FieldFormat` unit enums don't admit (e.g. a
2226
+ * transformer's `kVA`, a capacitor's `kVar`), so `unit` is a free string here.
2227
+ */
2228
+ interface GridStatFieldFormat {
2229
+ type: "voltage" | "power" | "distance" | "text" | "number";
2230
+ unit?: string;
2231
+ decimals?: number;
2232
+ }
2233
+ /**
2234
+ * One row in a grid entity's static-properties (`data.stat-list`) block. A
2235
+ * serializable declaration transcribed from `grid-element-config.metadataFields`
2236
+ * (MR-07 step 2): `key` is the `GridElement.elementData` JSONB key, `label` is
2237
+ * the display label, `format` says how to render it. The source config's
2238
+ * `showWhen` predicate is intentionally dropped — a stat-list row is data only,
2239
+ * and per-instance visibility is a render-time concern, not registry state.
2240
+ *
2241
+ * This is nameplate, not "now": static properties (kVA rating, conductor type,
2242
+ * meter number, length) belong here, never in `fields.headlineMetrics`, which is
2243
+ * the live block. See MR-07 "'has data' ≠ 'belongs in entity.now'".
2244
+ */
2245
+ interface GridStatField {
2246
+ /** JSONB key in `GridElement.elementData`. */
2247
+ key: string;
2248
+ /** Display label (translation key or plain text). */
2249
+ label: string;
2250
+ /** How to render the value. Optional — plain text when omitted. */
2251
+ format?: GridStatFieldFormat;
2252
+ }
2120
2253
  interface EntityConfig {
2121
2254
  /** Phosphor icon name. The canonical (resting / default) glyph. For switchable
2122
2255
  * elements this mirrors `states.closed.icon` (or the base glyph when the
@@ -2145,6 +2278,53 @@ interface EntityConfig {
2145
2278
  open: EntityStateVariant;
2146
2279
  closed: EntityStateVariant;
2147
2280
  };
2281
+ /**
2282
+ * The base page composition this entity renders with. Required on all 42
2283
+ * entries — the archetype is the composition an entity *would* use even when
2284
+ * `detailPage` is false.
2285
+ */
2286
+ archetype: EntityArchetype;
2287
+ /**
2288
+ * Whether this entity has a reachable detail page. 30 of 42 are `true`; the
2289
+ * registry is the single answer to "does this entity have a page?".
2290
+ */
2291
+ detailPage: boolean;
2292
+ /**
2293
+ * `entity.now` field config. Present only for entities that show a `Now`
2294
+ * block (devices with a `device-config` source, plus Meter). Absent means
2295
+ * `entity.now` declines to render — grid elements omit this until the design's
2296
+ * (currently "For review") metric proposal is approved, and Site/Customer
2297
+ * omit it because their composition has no `Now` block.
2298
+ */
2299
+ fields?: {
2300
+ /**
2301
+ * The 2–4 headline metrics `entity.now` shows. The cell count adapts across
2302
+ * that range; the bound is enforced by the conformance test, not just docs.
2303
+ */
2304
+ headlineMetrics: HeadlineMetric[];
2305
+ };
2306
+ /**
2307
+ * State rules for `entity.now`'s status chips. `primaryState` drives the
2308
+ * pulsing primary chip; `secondaryState` (battery/inverter: charge + grid)
2309
+ * renders a second chip with no pulse.
2310
+ */
2311
+ stateRules?: {
2312
+ primaryState: EntityStateRule;
2313
+ secondaryState?: EntityStateRule;
2314
+ };
2315
+ /**
2316
+ * Static-properties block config (MR-07 step 2). Feeds the `data.stat-list`
2317
+ * block — nameplate/GIS attributes that are *properties*, not *now*. Present
2318
+ * on grid entities (transcribed from `grid-element-config.metadataFields` via
2319
+ * `GRID_ELEMENT_TYPE_BY_ENTITY`); absent on devices and platform objects,
2320
+ * which surface their data through other blocks. This is the genuinely
2321
+ * unblocked, data-backed grid path — distinct from the design-gated live
2322
+ * `fields`/`stateRules` above.
2323
+ */
2324
+ properties?: {
2325
+ /** The static property rows shown by the `data.stat-list` block. */
2326
+ statList: GridStatField[];
2327
+ };
2148
2328
  }
2149
2329
  /** One open/closed state's presentation: an optional glyph override and/or a
2150
2330
  * status color. Omitting `icon` means "use the entity's base icon, recolored". */
@@ -2200,10 +2380,282 @@ declare const ENTITY_CATEGORY_CONFIG: {
2200
2380
  readonly order: 2;
2201
2381
  };
2202
2382
  };
2383
+ /** The coarse element-type axis (mirrors `@texturehq/grid-element-config`'s
2384
+ * `GridElementType`; kept in sync by transcription). */
2385
+ type GridElementSourceType = "CAPACITOR" | "CONSUMER" | "GENERATOR" | "MOTOR" | "NODE" | "OVERCURRENT_DEVICE" | "OVERHEAD_LINE" | "REGULATOR" | "SOURCE" | "SWITCH" | "TRANSFORMER" | "UNDERGROUND_LINE";
2386
+ /**
2387
+ * JSONB keys that are ABSENT or PII-zeroed in prod (MR-07 coverage table). No
2388
+ * grid stat-list row (or headline metric) may reference one of these — enforced
2389
+ * by the conformance test, not just documented.
2390
+ */
2391
+ declare const ABSENT_GRID_FIELDS: readonly ["energized", "customerName", "gs_max_continuous_current"];
2392
+ /**
2393
+ * Static property rows per `GridElementType`, transcribed from
2394
+ * `grid-element-config/src/configs/*.config.ts` `metadataFields`. Serializable:
2395
+ * no `showWhen`, no functions. Referenced by grid entities' `properties.statList`.
2396
+ */
2397
+ declare const GRID_STAT_LIST: {
2398
+ readonly TRANSFORMER: [{
2399
+ readonly key: "primaryRatedVoltage";
2400
+ readonly label: "Primary Voltage";
2401
+ readonly format: {
2402
+ readonly type: "voltage";
2403
+ readonly unit: "V";
2404
+ readonly decimals: 0;
2405
+ };
2406
+ }, {
2407
+ readonly key: "ratedOutputVoltage";
2408
+ readonly label: "Output Voltage";
2409
+ readonly format: {
2410
+ readonly type: "voltage";
2411
+ readonly unit: "V";
2412
+ readonly decimals: 0;
2413
+ };
2414
+ }, {
2415
+ readonly key: "tranKvaA";
2416
+ readonly label: "Rating Phase A";
2417
+ readonly format: {
2418
+ readonly type: "power";
2419
+ readonly unit: "kVA";
2420
+ readonly decimals: 1;
2421
+ };
2422
+ }, {
2423
+ readonly key: "tranKvaB";
2424
+ readonly label: "Rating Phase B";
2425
+ readonly format: {
2426
+ readonly type: "power";
2427
+ readonly unit: "kVA";
2428
+ readonly decimals: 1;
2429
+ };
2430
+ }, {
2431
+ readonly key: "tranKvaC";
2432
+ readonly label: "Rating Phase C";
2433
+ readonly format: {
2434
+ readonly type: "power";
2435
+ readonly unit: "kVA";
2436
+ readonly decimals: 1;
2437
+ };
2438
+ }];
2439
+ readonly CONSUMER: [{
2440
+ readonly key: "meterNumber";
2441
+ readonly label: "Meter Number";
2442
+ readonly format: {
2443
+ readonly type: "text";
2444
+ };
2445
+ }];
2446
+ readonly SOURCE: [{
2447
+ readonly key: "busVoltage";
2448
+ readonly label: "Bus Voltage";
2449
+ readonly format: {
2450
+ readonly type: "voltage";
2451
+ readonly unit: "V";
2452
+ readonly decimals: 0;
2453
+ };
2454
+ }, {
2455
+ readonly key: "nominalVoltage";
2456
+ readonly label: "Nominal Voltage";
2457
+ readonly format: {
2458
+ readonly type: "voltage";
2459
+ readonly unit: "V";
2460
+ readonly decimals: 0;
2461
+ };
2462
+ }, {
2463
+ readonly key: "substationNumber";
2464
+ readonly label: "Substation Number";
2465
+ readonly format: {
2466
+ readonly type: "text";
2467
+ };
2468
+ }];
2469
+ readonly SWITCH: [{
2470
+ readonly key: "switchId";
2471
+ readonly label: "Switch ID";
2472
+ readonly format: {
2473
+ readonly type: "text";
2474
+ };
2475
+ }, {
2476
+ readonly key: "ratedCurrent";
2477
+ readonly label: "Rated Current";
2478
+ readonly format: {
2479
+ readonly type: "number";
2480
+ readonly unit: "A";
2481
+ readonly decimals: 0;
2482
+ };
2483
+ }, {
2484
+ readonly key: "normalState";
2485
+ readonly label: "Normal State";
2486
+ readonly format: {
2487
+ readonly type: "text";
2488
+ };
2489
+ }];
2490
+ readonly CAPACITOR: [{
2491
+ readonly key: "unitSizeKvar";
2492
+ readonly label: "Capacity";
2493
+ readonly format: {
2494
+ readonly type: "power";
2495
+ readonly unit: "kVar";
2496
+ readonly decimals: 1;
2497
+ };
2498
+ }, {
2499
+ readonly key: "nominalVoltage";
2500
+ readonly label: "Nominal Voltage";
2501
+ readonly format: {
2502
+ readonly type: "voltage";
2503
+ readonly unit: "V";
2504
+ readonly decimals: 0;
2505
+ };
2506
+ }];
2507
+ readonly OVERCURRENT_DEVICE: [{
2508
+ readonly key: "ratedCurrent";
2509
+ readonly label: "Rated Current";
2510
+ readonly format: {
2511
+ readonly type: "number";
2512
+ readonly unit: "A";
2513
+ readonly decimals: 0;
2514
+ };
2515
+ }, {
2516
+ readonly key: "deviceType";
2517
+ readonly label: "Device Type";
2518
+ readonly format: {
2519
+ readonly type: "text";
2520
+ };
2521
+ }];
2522
+ readonly REGULATOR: [{
2523
+ readonly key: "outputVoltagePhA";
2524
+ readonly label: "Output Voltage Phase A";
2525
+ readonly format: {
2526
+ readonly type: "voltage";
2527
+ readonly unit: "V";
2528
+ readonly decimals: 0;
2529
+ };
2530
+ }, {
2531
+ readonly key: "outputVoltagePhB";
2532
+ readonly label: "Output Voltage Phase B";
2533
+ readonly format: {
2534
+ readonly type: "voltage";
2535
+ readonly unit: "V";
2536
+ readonly decimals: 0;
2537
+ };
2538
+ }, {
2539
+ readonly key: "outputVoltagePhC";
2540
+ readonly label: "Output Voltage Phase C";
2541
+ readonly format: {
2542
+ readonly type: "voltage";
2543
+ readonly unit: "V";
2544
+ readonly decimals: 0;
2545
+ };
2546
+ }, {
2547
+ readonly key: "ratedPower";
2548
+ readonly label: "Rated Power";
2549
+ readonly format: {
2550
+ readonly type: "power";
2551
+ readonly unit: "kVA";
2552
+ readonly decimals: 1;
2553
+ };
2554
+ }];
2555
+ readonly OVERHEAD_LINE: [{
2556
+ readonly key: "impedanceLength";
2557
+ readonly label: "Length";
2558
+ readonly format: {
2559
+ readonly type: "distance";
2560
+ readonly unit: "ft";
2561
+ readonly decimals: 0;
2562
+ };
2563
+ }, {
2564
+ readonly key: "conductorDescPhA";
2565
+ readonly label: "Conductor Phase A";
2566
+ readonly format: {
2567
+ readonly type: "text";
2568
+ };
2569
+ }, {
2570
+ readonly key: "conductorDescPhB";
2571
+ readonly label: "Conductor Phase B";
2572
+ readonly format: {
2573
+ readonly type: "text";
2574
+ };
2575
+ }, {
2576
+ readonly key: "conductorDescPhC";
2577
+ readonly label: "Conductor Phase C";
2578
+ readonly format: {
2579
+ readonly type: "text";
2580
+ };
2581
+ }];
2582
+ readonly UNDERGROUND_LINE: [{
2583
+ readonly key: "impedanceLength";
2584
+ readonly label: "Length";
2585
+ readonly format: {
2586
+ readonly type: "distance";
2587
+ readonly unit: "ft";
2588
+ readonly decimals: 0;
2589
+ };
2590
+ }, {
2591
+ readonly key: "conductorDescPhA";
2592
+ readonly label: "Conductor Phase A";
2593
+ readonly format: {
2594
+ readonly type: "text";
2595
+ };
2596
+ }, {
2597
+ readonly key: "conductorDescPhB";
2598
+ readonly label: "Conductor Phase B";
2599
+ readonly format: {
2600
+ readonly type: "text";
2601
+ };
2602
+ }, {
2603
+ readonly key: "conductorDescPhC";
2604
+ readonly label: "Conductor Phase C";
2605
+ readonly format: {
2606
+ readonly type: "text";
2607
+ };
2608
+ }];
2609
+ readonly NODE: [{
2610
+ readonly key: "nominalVoltage";
2611
+ readonly label: "Nominal Voltage";
2612
+ readonly format: {
2613
+ readonly type: "voltage";
2614
+ readonly unit: "V";
2615
+ readonly decimals: 0;
2616
+ };
2617
+ }];
2618
+ readonly GENERATOR: [{
2619
+ readonly key: "ratedPower";
2620
+ readonly label: "Rated Power";
2621
+ readonly format: {
2622
+ readonly type: "power";
2623
+ readonly unit: "kW";
2624
+ readonly decimals: 1;
2625
+ };
2626
+ }, {
2627
+ readonly key: "outputVoltage";
2628
+ readonly label: "Output Voltage";
2629
+ readonly format: {
2630
+ readonly type: "voltage";
2631
+ readonly unit: "V";
2632
+ readonly decimals: 0;
2633
+ };
2634
+ }];
2635
+ readonly MOTOR: [{
2636
+ readonly key: "ratedPower";
2637
+ readonly label: "Rated Power";
2638
+ readonly format: {
2639
+ readonly type: "power";
2640
+ readonly unit: "kW";
2641
+ readonly decimals: 1;
2642
+ };
2643
+ }, {
2644
+ readonly key: "voltage";
2645
+ readonly label: "Voltage";
2646
+ readonly format: {
2647
+ readonly type: "voltage";
2648
+ readonly unit: "V";
2649
+ readonly decimals: 0;
2650
+ };
2651
+ }];
2652
+ };
2203
2653
  declare const ENTITY_CONFIG: {
2204
2654
  readonly app: {
2205
2655
  readonly icon: "AppWindow";
2206
2656
  readonly category: "platform";
2657
+ readonly archetype: "platform";
2658
+ readonly detailPage: false;
2207
2659
  readonly label: {
2208
2660
  readonly singular: "App";
2209
2661
  readonly plural: "Apps";
@@ -2213,6 +2665,8 @@ declare const ENTITY_CONFIG: {
2213
2665
  readonly site: {
2214
2666
  readonly icon: "MapPin";
2215
2667
  readonly category: "platform";
2668
+ readonly archetype: "platform";
2669
+ readonly detailPage: true;
2216
2670
  readonly label: {
2217
2671
  readonly singular: "Site";
2218
2672
  readonly plural: "Sites";
@@ -2222,6 +2676,8 @@ declare const ENTITY_CONFIG: {
2222
2676
  readonly device: {
2223
2677
  readonly icon: "ShareNetwork";
2224
2678
  readonly category: "platform";
2679
+ readonly archetype: "platform";
2680
+ readonly detailPage: false;
2225
2681
  readonly label: {
2226
2682
  readonly singular: "Device";
2227
2683
  readonly plural: "Devices";
@@ -2231,6 +2687,8 @@ declare const ENTITY_CONFIG: {
2231
2687
  readonly customer: {
2232
2688
  readonly icon: "Users";
2233
2689
  readonly category: "platform";
2690
+ readonly archetype: "platform";
2691
+ readonly detailPage: true;
2234
2692
  readonly label: {
2235
2693
  readonly singular: "Customer";
2236
2694
  readonly plural: "Customers";
@@ -2240,6 +2698,8 @@ declare const ENTITY_CONFIG: {
2240
2698
  readonly contact: {
2241
2699
  readonly icon: "Users";
2242
2700
  readonly category: "platform";
2701
+ readonly archetype: "platform";
2702
+ readonly detailPage: false;
2243
2703
  readonly label: {
2244
2704
  readonly singular: "Contact";
2245
2705
  readonly plural: "Contacts";
@@ -2249,6 +2709,8 @@ declare const ENTITY_CONFIG: {
2249
2709
  readonly program: {
2250
2710
  readonly icon: "ClipboardText";
2251
2711
  readonly category: "platform";
2712
+ readonly archetype: "platform";
2713
+ readonly detailPage: false;
2252
2714
  readonly label: {
2253
2715
  readonly singular: "Program";
2254
2716
  readonly plural: "Programs";
@@ -2258,6 +2720,8 @@ declare const ENTITY_CONFIG: {
2258
2720
  readonly workflow: {
2259
2721
  readonly icon: "FlowArrow";
2260
2722
  readonly category: "platform";
2723
+ readonly archetype: "platform";
2724
+ readonly detailPage: false;
2261
2725
  readonly label: {
2262
2726
  readonly singular: "Workflow";
2263
2727
  readonly plural: "Workflows";
@@ -2267,6 +2731,8 @@ declare const ENTITY_CONFIG: {
2267
2731
  readonly collection: {
2268
2732
  readonly icon: "Stack";
2269
2733
  readonly category: "platform";
2734
+ readonly archetype: "platform";
2735
+ readonly detailPage: false;
2270
2736
  readonly label: {
2271
2737
  readonly singular: "Collection";
2272
2738
  readonly plural: "Collections";
@@ -2276,6 +2742,8 @@ declare const ENTITY_CONFIG: {
2276
2742
  readonly board: {
2277
2743
  readonly icon: "SquaresFour";
2278
2744
  readonly category: "platform";
2745
+ readonly archetype: "platform";
2746
+ readonly detailPage: false;
2279
2747
  readonly label: {
2280
2748
  readonly singular: "Board";
2281
2749
  readonly plural: "Boards";
@@ -2285,6 +2753,8 @@ declare const ENTITY_CONFIG: {
2285
2753
  readonly report: {
2286
2754
  readonly icon: "ChartLine";
2287
2755
  readonly category: "platform";
2756
+ readonly archetype: "platform";
2757
+ readonly detailPage: false;
2288
2758
  readonly label: {
2289
2759
  readonly singular: "Report";
2290
2760
  readonly plural: "Reports";
@@ -2294,6 +2764,8 @@ declare const ENTITY_CONFIG: {
2294
2764
  readonly event: {
2295
2765
  readonly icon: "ClockCounterClockwise";
2296
2766
  readonly category: "platform";
2767
+ readonly archetype: "platform";
2768
+ readonly detailPage: false;
2297
2769
  readonly label: {
2298
2770
  readonly singular: "Event";
2299
2771
  readonly plural: "Events";
@@ -2303,6 +2775,8 @@ declare const ENTITY_CONFIG: {
2303
2775
  readonly alert: {
2304
2776
  readonly icon: "Warning";
2305
2777
  readonly category: "platform";
2778
+ readonly archetype: "platform";
2779
+ readonly detailPage: false;
2306
2780
  readonly label: {
2307
2781
  readonly singular: "Alert";
2308
2782
  readonly plural: "Alerts";
@@ -2312,6 +2786,8 @@ declare const ENTITY_CONFIG: {
2312
2786
  readonly monitor: {
2313
2787
  readonly icon: "Pulse";
2314
2788
  readonly category: "platform";
2789
+ readonly archetype: "platform";
2790
+ readonly detailPage: false;
2315
2791
  readonly label: {
2316
2792
  readonly singular: "Monitor";
2317
2793
  readonly plural: "Monitors";
@@ -2321,6 +2797,8 @@ declare const ENTITY_CONFIG: {
2321
2797
  readonly command: {
2322
2798
  readonly icon: "Play";
2323
2799
  readonly category: "platform";
2800
+ readonly archetype: "platform";
2801
+ readonly detailPage: false;
2324
2802
  readonly label: {
2325
2803
  readonly singular: "Command";
2326
2804
  readonly plural: "Commands";
@@ -2330,6 +2808,33 @@ declare const ENTITY_CONFIG: {
2330
2808
  readonly source: {
2331
2809
  readonly icon: "TextureSource";
2332
2810
  readonly category: "grid";
2811
+ readonly archetype: "grid-energized";
2812
+ readonly detailPage: true;
2813
+ readonly properties: {
2814
+ readonly statList: [{
2815
+ readonly key: "busVoltage";
2816
+ readonly label: "Bus Voltage";
2817
+ readonly format: {
2818
+ readonly type: "voltage";
2819
+ readonly unit: "V";
2820
+ readonly decimals: 0;
2821
+ };
2822
+ }, {
2823
+ readonly key: "nominalVoltage";
2824
+ readonly label: "Nominal Voltage";
2825
+ readonly format: {
2826
+ readonly type: "voltage";
2827
+ readonly unit: "V";
2828
+ readonly decimals: 0;
2829
+ };
2830
+ }, {
2831
+ readonly key: "substationNumber";
2832
+ readonly label: "Substation Number";
2833
+ readonly format: {
2834
+ readonly type: "text";
2835
+ };
2836
+ }];
2837
+ };
2333
2838
  readonly label: {
2334
2839
  readonly singular: "Source";
2335
2840
  readonly plural: "Sources";
@@ -2339,6 +2844,33 @@ declare const ENTITY_CONFIG: {
2339
2844
  readonly substation: {
2340
2845
  readonly icon: "TextureSource";
2341
2846
  readonly category: "grid";
2847
+ readonly archetype: "grid-energized";
2848
+ readonly detailPage: true;
2849
+ readonly properties: {
2850
+ readonly statList: [{
2851
+ readonly key: "busVoltage";
2852
+ readonly label: "Bus Voltage";
2853
+ readonly format: {
2854
+ readonly type: "voltage";
2855
+ readonly unit: "V";
2856
+ readonly decimals: 0;
2857
+ };
2858
+ }, {
2859
+ readonly key: "nominalVoltage";
2860
+ readonly label: "Nominal Voltage";
2861
+ readonly format: {
2862
+ readonly type: "voltage";
2863
+ readonly unit: "V";
2864
+ readonly decimals: 0;
2865
+ };
2866
+ }, {
2867
+ readonly key: "substationNumber";
2868
+ readonly label: "Substation Number";
2869
+ readonly format: {
2870
+ readonly type: "text";
2871
+ };
2872
+ }];
2873
+ };
2342
2874
  readonly label: {
2343
2875
  readonly singular: "Substation";
2344
2876
  readonly plural: "Substations";
@@ -2348,6 +2880,27 @@ declare const ENTITY_CONFIG: {
2348
2880
  readonly capacitor: {
2349
2881
  readonly icon: "TextureCapacitor";
2350
2882
  readonly category: "grid";
2883
+ readonly archetype: "grid-energized";
2884
+ readonly detailPage: true;
2885
+ readonly properties: {
2886
+ readonly statList: [{
2887
+ readonly key: "unitSizeKvar";
2888
+ readonly label: "Capacity";
2889
+ readonly format: {
2890
+ readonly type: "power";
2891
+ readonly unit: "kVar";
2892
+ readonly decimals: 1;
2893
+ };
2894
+ }, {
2895
+ readonly key: "nominalVoltage";
2896
+ readonly label: "Nominal Voltage";
2897
+ readonly format: {
2898
+ readonly type: "voltage";
2899
+ readonly unit: "V";
2900
+ readonly decimals: 0;
2901
+ };
2902
+ }];
2903
+ };
2351
2904
  readonly label: {
2352
2905
  readonly singular: "Capacitor";
2353
2906
  readonly plural: "Capacitors";
@@ -2357,6 +2910,31 @@ declare const ENTITY_CONFIG: {
2357
2910
  readonly switch: {
2358
2911
  readonly icon: "TextureSwitchClosed";
2359
2912
  readonly category: "grid";
2913
+ readonly archetype: "grid-energized";
2914
+ readonly detailPage: true;
2915
+ readonly properties: {
2916
+ readonly statList: [{
2917
+ readonly key: "switchId";
2918
+ readonly label: "Switch ID";
2919
+ readonly format: {
2920
+ readonly type: "text";
2921
+ };
2922
+ }, {
2923
+ readonly key: "ratedCurrent";
2924
+ readonly label: "Rated Current";
2925
+ readonly format: {
2926
+ readonly type: "number";
2927
+ readonly unit: "A";
2928
+ readonly decimals: 0;
2929
+ };
2930
+ }, {
2931
+ readonly key: "normalState";
2932
+ readonly label: "Normal State";
2933
+ readonly format: {
2934
+ readonly type: "text";
2935
+ };
2936
+ }];
2937
+ };
2360
2938
  readonly label: {
2361
2939
  readonly singular: "Switch";
2362
2940
  readonly plural: "Switches";
@@ -2376,6 +2954,31 @@ declare const ENTITY_CONFIG: {
2376
2954
  readonly sectionalizer: {
2377
2955
  readonly icon: "TextureSectionalizerClosed";
2378
2956
  readonly category: "grid";
2957
+ readonly archetype: "grid-energized";
2958
+ readonly detailPage: true;
2959
+ readonly properties: {
2960
+ readonly statList: [{
2961
+ readonly key: "switchId";
2962
+ readonly label: "Switch ID";
2963
+ readonly format: {
2964
+ readonly type: "text";
2965
+ };
2966
+ }, {
2967
+ readonly key: "ratedCurrent";
2968
+ readonly label: "Rated Current";
2969
+ readonly format: {
2970
+ readonly type: "number";
2971
+ readonly unit: "A";
2972
+ readonly decimals: 0;
2973
+ };
2974
+ }, {
2975
+ readonly key: "normalState";
2976
+ readonly label: "Normal State";
2977
+ readonly format: {
2978
+ readonly type: "text";
2979
+ };
2980
+ }];
2981
+ };
2379
2982
  readonly label: {
2380
2983
  readonly singular: "Sectionalizer";
2381
2984
  readonly plural: "Sectionalizers";
@@ -2395,6 +2998,19 @@ declare const ENTITY_CONFIG: {
2395
2998
  readonly relay: {
2396
2999
  readonly icon: "Cpu";
2397
3000
  readonly category: "grid";
3001
+ readonly archetype: "grid-energized";
3002
+ readonly detailPage: true;
3003
+ readonly properties: {
3004
+ readonly statList: [{
3005
+ readonly key: "nominalVoltage";
3006
+ readonly label: "Nominal Voltage";
3007
+ readonly format: {
3008
+ readonly type: "voltage";
3009
+ readonly unit: "V";
3010
+ readonly decimals: 0;
3011
+ };
3012
+ }];
3013
+ };
2398
3014
  readonly label: {
2399
3015
  readonly singular: "Relay";
2400
3016
  readonly plural: "Relays";
@@ -2404,6 +3020,51 @@ declare const ENTITY_CONFIG: {
2404
3020
  readonly transformer: {
2405
3021
  readonly icon: "TextureTransformer";
2406
3022
  readonly category: "grid";
3023
+ readonly archetype: "grid-energized";
3024
+ readonly detailPage: true;
3025
+ readonly properties: {
3026
+ readonly statList: [{
3027
+ readonly key: "primaryRatedVoltage";
3028
+ readonly label: "Primary Voltage";
3029
+ readonly format: {
3030
+ readonly type: "voltage";
3031
+ readonly unit: "V";
3032
+ readonly decimals: 0;
3033
+ };
3034
+ }, {
3035
+ readonly key: "ratedOutputVoltage";
3036
+ readonly label: "Output Voltage";
3037
+ readonly format: {
3038
+ readonly type: "voltage";
3039
+ readonly unit: "V";
3040
+ readonly decimals: 0;
3041
+ };
3042
+ }, {
3043
+ readonly key: "tranKvaA";
3044
+ readonly label: "Rating Phase A";
3045
+ readonly format: {
3046
+ readonly type: "power";
3047
+ readonly unit: "kVA";
3048
+ readonly decimals: 1;
3049
+ };
3050
+ }, {
3051
+ readonly key: "tranKvaB";
3052
+ readonly label: "Rating Phase B";
3053
+ readonly format: {
3054
+ readonly type: "power";
3055
+ readonly unit: "kVA";
3056
+ readonly decimals: 1;
3057
+ };
3058
+ }, {
3059
+ readonly key: "tranKvaC";
3060
+ readonly label: "Rating Phase C";
3061
+ readonly format: {
3062
+ readonly type: "power";
3063
+ readonly unit: "kVA";
3064
+ readonly decimals: 1;
3065
+ };
3066
+ }];
3067
+ };
2407
3068
  readonly label: {
2408
3069
  readonly singular: "Transformer";
2409
3070
  readonly plural: "Transformers";
@@ -2413,15 +3074,66 @@ declare const ENTITY_CONFIG: {
2413
3074
  readonly meter: {
2414
3075
  readonly icon: "Gauge";
2415
3076
  readonly category: "grid";
3077
+ readonly archetype: "grid-energized";
3078
+ readonly detailPage: true;
3079
+ readonly properties: {
3080
+ readonly statList: [{
3081
+ readonly key: "meterNumber";
3082
+ readonly label: "Meter Number";
3083
+ readonly format: {
3084
+ readonly type: "text";
3085
+ };
3086
+ }];
3087
+ };
2416
3088
  readonly label: {
2417
3089
  readonly singular: "Meter";
2418
3090
  readonly plural: "Meters";
2419
3091
  };
2420
3092
  readonly description: "Revenue meter at the point of consumption";
3093
+ readonly fields: {
3094
+ readonly headlineMetrics: [{
3095
+ readonly id: "power";
3096
+ readonly label: "device.meter.fields.power";
3097
+ readonly source: {
3098
+ readonly kind: "state";
3099
+ readonly path: "state.phaseARealPower";
3100
+ };
3101
+ readonly format: {
3102
+ readonly type: "power";
3103
+ readonly unit: "kW";
3104
+ readonly decimals: 2;
3105
+ };
3106
+ readonly icon: "Pulse";
3107
+ }, {
3108
+ readonly id: "consumption";
3109
+ readonly label: "device.meter.fields.consumption";
3110
+ readonly source: {
3111
+ readonly kind: "state";
3112
+ readonly path: "state.latestKwhUsage";
3113
+ };
3114
+ readonly format: {
3115
+ readonly type: "energy";
3116
+ readonly sourceUnit: "kWh";
3117
+ readonly decimals: 2;
3118
+ };
3119
+ readonly icon: "Lightning";
3120
+ }];
3121
+ };
2421
3122
  };
2422
3123
  readonly consumer: {
2423
3124
  readonly icon: "Gauge";
2424
3125
  readonly category: "grid";
3126
+ readonly archetype: "grid-energized";
3127
+ readonly detailPage: true;
3128
+ readonly properties: {
3129
+ readonly statList: [{
3130
+ readonly key: "meterNumber";
3131
+ readonly label: "Meter Number";
3132
+ readonly format: {
3133
+ readonly type: "text";
3134
+ };
3135
+ }];
3136
+ };
2425
3137
  readonly label: {
2426
3138
  readonly singular: "Consumer";
2427
3139
  readonly plural: "Consumers";
@@ -2431,6 +3143,37 @@ declare const ENTITY_CONFIG: {
2431
3143
  readonly singlePhaseOverheadLine: {
2432
3144
  readonly icon: "TextureSinglePhaseOverheadLine";
2433
3145
  readonly category: "grid";
3146
+ readonly archetype: "grid-line";
3147
+ readonly detailPage: true;
3148
+ readonly properties: {
3149
+ readonly statList: [{
3150
+ readonly key: "impedanceLength";
3151
+ readonly label: "Length";
3152
+ readonly format: {
3153
+ readonly type: "distance";
3154
+ readonly unit: "ft";
3155
+ readonly decimals: 0;
3156
+ };
3157
+ }, {
3158
+ readonly key: "conductorDescPhA";
3159
+ readonly label: "Conductor Phase A";
3160
+ readonly format: {
3161
+ readonly type: "text";
3162
+ };
3163
+ }, {
3164
+ readonly key: "conductorDescPhB";
3165
+ readonly label: "Conductor Phase B";
3166
+ readonly format: {
3167
+ readonly type: "text";
3168
+ };
3169
+ }, {
3170
+ readonly key: "conductorDescPhC";
3171
+ readonly label: "Conductor Phase C";
3172
+ readonly format: {
3173
+ readonly type: "text";
3174
+ };
3175
+ }];
3176
+ };
2434
3177
  readonly label: {
2435
3178
  readonly singular: "Single-Phase Overhead Line";
2436
3179
  readonly plural: "Single-Phase Overhead Lines";
@@ -2440,6 +3183,37 @@ declare const ENTITY_CONFIG: {
2440
3183
  readonly twoPhaseOverheadLine: {
2441
3184
  readonly icon: "TextureTwoPhaseOverheadLine";
2442
3185
  readonly category: "grid";
3186
+ readonly archetype: "grid-line";
3187
+ readonly detailPage: true;
3188
+ readonly properties: {
3189
+ readonly statList: [{
3190
+ readonly key: "impedanceLength";
3191
+ readonly label: "Length";
3192
+ readonly format: {
3193
+ readonly type: "distance";
3194
+ readonly unit: "ft";
3195
+ readonly decimals: 0;
3196
+ };
3197
+ }, {
3198
+ readonly key: "conductorDescPhA";
3199
+ readonly label: "Conductor Phase A";
3200
+ readonly format: {
3201
+ readonly type: "text";
3202
+ };
3203
+ }, {
3204
+ readonly key: "conductorDescPhB";
3205
+ readonly label: "Conductor Phase B";
3206
+ readonly format: {
3207
+ readonly type: "text";
3208
+ };
3209
+ }, {
3210
+ readonly key: "conductorDescPhC";
3211
+ readonly label: "Conductor Phase C";
3212
+ readonly format: {
3213
+ readonly type: "text";
3214
+ };
3215
+ }];
3216
+ };
2443
3217
  readonly label: {
2444
3218
  readonly singular: "Two-Phase Overhead Line";
2445
3219
  readonly plural: "Two-Phase Overhead Lines";
@@ -2449,6 +3223,37 @@ declare const ENTITY_CONFIG: {
2449
3223
  readonly threePhaseOverheadLine: {
2450
3224
  readonly icon: "TextureThreePhaseOverheadLine";
2451
3225
  readonly category: "grid";
3226
+ readonly archetype: "grid-line";
3227
+ readonly detailPage: true;
3228
+ readonly properties: {
3229
+ readonly statList: [{
3230
+ readonly key: "impedanceLength";
3231
+ readonly label: "Length";
3232
+ readonly format: {
3233
+ readonly type: "distance";
3234
+ readonly unit: "ft";
3235
+ readonly decimals: 0;
3236
+ };
3237
+ }, {
3238
+ readonly key: "conductorDescPhA";
3239
+ readonly label: "Conductor Phase A";
3240
+ readonly format: {
3241
+ readonly type: "text";
3242
+ };
3243
+ }, {
3244
+ readonly key: "conductorDescPhB";
3245
+ readonly label: "Conductor Phase B";
3246
+ readonly format: {
3247
+ readonly type: "text";
3248
+ };
3249
+ }, {
3250
+ readonly key: "conductorDescPhC";
3251
+ readonly label: "Conductor Phase C";
3252
+ readonly format: {
3253
+ readonly type: "text";
3254
+ };
3255
+ }];
3256
+ };
2452
3257
  readonly label: {
2453
3258
  readonly singular: "Three-Phase Overhead Line";
2454
3259
  readonly plural: "Three-Phase Overhead Lines";
@@ -2458,6 +3263,37 @@ declare const ENTITY_CONFIG: {
2458
3263
  readonly singlePhaseUndergroundLine: {
2459
3264
  readonly icon: "TextureSinglePhaseUndergroundLine";
2460
3265
  readonly category: "grid";
3266
+ readonly archetype: "grid-line";
3267
+ readonly detailPage: true;
3268
+ readonly properties: {
3269
+ readonly statList: [{
3270
+ readonly key: "impedanceLength";
3271
+ readonly label: "Length";
3272
+ readonly format: {
3273
+ readonly type: "distance";
3274
+ readonly unit: "ft";
3275
+ readonly decimals: 0;
3276
+ };
3277
+ }, {
3278
+ readonly key: "conductorDescPhA";
3279
+ readonly label: "Conductor Phase A";
3280
+ readonly format: {
3281
+ readonly type: "text";
3282
+ };
3283
+ }, {
3284
+ readonly key: "conductorDescPhB";
3285
+ readonly label: "Conductor Phase B";
3286
+ readonly format: {
3287
+ readonly type: "text";
3288
+ };
3289
+ }, {
3290
+ readonly key: "conductorDescPhC";
3291
+ readonly label: "Conductor Phase C";
3292
+ readonly format: {
3293
+ readonly type: "text";
3294
+ };
3295
+ }];
3296
+ };
2461
3297
  readonly label: {
2462
3298
  readonly singular: "Single-Phase Underground Line";
2463
3299
  readonly plural: "Single-Phase Underground Lines";
@@ -2467,6 +3303,37 @@ declare const ENTITY_CONFIG: {
2467
3303
  readonly twoPhaseUndergroundLine: {
2468
3304
  readonly icon: "TextureTwoPhaseUndergroundLine";
2469
3305
  readonly category: "grid";
3306
+ readonly archetype: "grid-line";
3307
+ readonly detailPage: true;
3308
+ readonly properties: {
3309
+ readonly statList: [{
3310
+ readonly key: "impedanceLength";
3311
+ readonly label: "Length";
3312
+ readonly format: {
3313
+ readonly type: "distance";
3314
+ readonly unit: "ft";
3315
+ readonly decimals: 0;
3316
+ };
3317
+ }, {
3318
+ readonly key: "conductorDescPhA";
3319
+ readonly label: "Conductor Phase A";
3320
+ readonly format: {
3321
+ readonly type: "text";
3322
+ };
3323
+ }, {
3324
+ readonly key: "conductorDescPhB";
3325
+ readonly label: "Conductor Phase B";
3326
+ readonly format: {
3327
+ readonly type: "text";
3328
+ };
3329
+ }, {
3330
+ readonly key: "conductorDescPhC";
3331
+ readonly label: "Conductor Phase C";
3332
+ readonly format: {
3333
+ readonly type: "text";
3334
+ };
3335
+ }];
3336
+ };
2470
3337
  readonly label: {
2471
3338
  readonly singular: "Two-Phase Underground Line";
2472
3339
  readonly plural: "Two-Phase Underground Lines";
@@ -2476,6 +3343,37 @@ declare const ENTITY_CONFIG: {
2476
3343
  readonly threePhaseUndergroundLine: {
2477
3344
  readonly icon: "TextureThreePhaseUndergroundLine";
2478
3345
  readonly category: "grid";
3346
+ readonly archetype: "grid-line";
3347
+ readonly detailPage: true;
3348
+ readonly properties: {
3349
+ readonly statList: [{
3350
+ readonly key: "impedanceLength";
3351
+ readonly label: "Length";
3352
+ readonly format: {
3353
+ readonly type: "distance";
3354
+ readonly unit: "ft";
3355
+ readonly decimals: 0;
3356
+ };
3357
+ }, {
3358
+ readonly key: "conductorDescPhA";
3359
+ readonly label: "Conductor Phase A";
3360
+ readonly format: {
3361
+ readonly type: "text";
3362
+ };
3363
+ }, {
3364
+ readonly key: "conductorDescPhB";
3365
+ readonly label: "Conductor Phase B";
3366
+ readonly format: {
3367
+ readonly type: "text";
3368
+ };
3369
+ }, {
3370
+ readonly key: "conductorDescPhC";
3371
+ readonly label: "Conductor Phase C";
3372
+ readonly format: {
3373
+ readonly type: "text";
3374
+ };
3375
+ }];
3376
+ };
2479
3377
  readonly label: {
2480
3378
  readonly singular: "Three-Phase Underground Line";
2481
3379
  readonly plural: "Three-Phase Underground Lines";
@@ -2485,6 +3383,27 @@ declare const ENTITY_CONFIG: {
2485
3383
  readonly motorSwitch: {
2486
3384
  readonly icon: "Diamond";
2487
3385
  readonly category: "grid";
3386
+ readonly archetype: "grid-energized";
3387
+ readonly detailPage: true;
3388
+ readonly properties: {
3389
+ readonly statList: [{
3390
+ readonly key: "ratedPower";
3391
+ readonly label: "Rated Power";
3392
+ readonly format: {
3393
+ readonly type: "power";
3394
+ readonly unit: "kW";
3395
+ readonly decimals: 1;
3396
+ };
3397
+ }, {
3398
+ readonly key: "voltage";
3399
+ readonly label: "Voltage";
3400
+ readonly format: {
3401
+ readonly type: "voltage";
3402
+ readonly unit: "V";
3403
+ readonly decimals: 0;
3404
+ };
3405
+ }];
3406
+ };
2488
3407
  readonly label: {
2489
3408
  readonly singular: "Motor Switch";
2490
3409
  readonly plural: "Motor Switches";
@@ -2494,6 +3413,25 @@ declare const ENTITY_CONFIG: {
2494
3413
  readonly recloser: {
2495
3414
  readonly icon: "TextureRecloser";
2496
3415
  readonly category: "grid";
3416
+ readonly archetype: "grid-energized";
3417
+ readonly detailPage: true;
3418
+ readonly properties: {
3419
+ readonly statList: [{
3420
+ readonly key: "ratedCurrent";
3421
+ readonly label: "Rated Current";
3422
+ readonly format: {
3423
+ readonly type: "number";
3424
+ readonly unit: "A";
3425
+ readonly decimals: 0;
3426
+ };
3427
+ }, {
3428
+ readonly key: "deviceType";
3429
+ readonly label: "Device Type";
3430
+ readonly format: {
3431
+ readonly type: "text";
3432
+ };
3433
+ }];
3434
+ };
2497
3435
  readonly label: {
2498
3436
  readonly singular: "Recloser";
2499
3437
  readonly plural: "Reclosers";
@@ -2511,6 +3449,25 @@ declare const ENTITY_CONFIG: {
2511
3449
  readonly fuse: {
2512
3450
  readonly icon: "TextureFuse";
2513
3451
  readonly category: "grid";
3452
+ readonly archetype: "grid-energized";
3453
+ readonly detailPage: true;
3454
+ readonly properties: {
3455
+ readonly statList: [{
3456
+ readonly key: "ratedCurrent";
3457
+ readonly label: "Rated Current";
3458
+ readonly format: {
3459
+ readonly type: "number";
3460
+ readonly unit: "A";
3461
+ readonly decimals: 0;
3462
+ };
3463
+ }, {
3464
+ readonly key: "deviceType";
3465
+ readonly label: "Device Type";
3466
+ readonly format: {
3467
+ readonly type: "text";
3468
+ };
3469
+ }];
3470
+ };
2514
3471
  readonly label: {
2515
3472
  readonly singular: "Fuse";
2516
3473
  readonly plural: "Fuses";
@@ -2520,6 +3477,25 @@ declare const ENTITY_CONFIG: {
2520
3477
  readonly breaker: {
2521
3478
  readonly icon: "TextureBreaker";
2522
3479
  readonly category: "grid";
3480
+ readonly archetype: "grid-energized";
3481
+ readonly detailPage: true;
3482
+ readonly properties: {
3483
+ readonly statList: [{
3484
+ readonly key: "ratedCurrent";
3485
+ readonly label: "Rated Current";
3486
+ readonly format: {
3487
+ readonly type: "number";
3488
+ readonly unit: "A";
3489
+ readonly decimals: 0;
3490
+ };
3491
+ }, {
3492
+ readonly key: "deviceType";
3493
+ readonly label: "Device Type";
3494
+ readonly format: {
3495
+ readonly type: "text";
3496
+ };
3497
+ }];
3498
+ };
2523
3499
  readonly label: {
2524
3500
  readonly singular: "Breaker";
2525
3501
  readonly plural: "Breakers";
@@ -2537,6 +3513,27 @@ declare const ENTITY_CONFIG: {
2537
3513
  readonly generator: {
2538
3514
  readonly icon: "Wind";
2539
3515
  readonly category: "grid";
3516
+ readonly archetype: "grid-energized";
3517
+ readonly detailPage: true;
3518
+ readonly properties: {
3519
+ readonly statList: [{
3520
+ readonly key: "ratedPower";
3521
+ readonly label: "Rated Power";
3522
+ readonly format: {
3523
+ readonly type: "power";
3524
+ readonly unit: "kW";
3525
+ readonly decimals: 1;
3526
+ };
3527
+ }, {
3528
+ readonly key: "outputVoltage";
3529
+ readonly label: "Output Voltage";
3530
+ readonly format: {
3531
+ readonly type: "voltage";
3532
+ readonly unit: "V";
3533
+ readonly decimals: 0;
3534
+ };
3535
+ }];
3536
+ };
2540
3537
  readonly label: {
2541
3538
  readonly singular: "Generator";
2542
3539
  readonly plural: "Generators";
@@ -2546,6 +3543,43 @@ declare const ENTITY_CONFIG: {
2546
3543
  readonly regulator: {
2547
3544
  readonly icon: "TextureRegulator";
2548
3545
  readonly category: "grid";
3546
+ readonly archetype: "grid-energized";
3547
+ readonly detailPage: true;
3548
+ readonly properties: {
3549
+ readonly statList: [{
3550
+ readonly key: "outputVoltagePhA";
3551
+ readonly label: "Output Voltage Phase A";
3552
+ readonly format: {
3553
+ readonly type: "voltage";
3554
+ readonly unit: "V";
3555
+ readonly decimals: 0;
3556
+ };
3557
+ }, {
3558
+ readonly key: "outputVoltagePhB";
3559
+ readonly label: "Output Voltage Phase B";
3560
+ readonly format: {
3561
+ readonly type: "voltage";
3562
+ readonly unit: "V";
3563
+ readonly decimals: 0;
3564
+ };
3565
+ }, {
3566
+ readonly key: "outputVoltagePhC";
3567
+ readonly label: "Output Voltage Phase C";
3568
+ readonly format: {
3569
+ readonly type: "voltage";
3570
+ readonly unit: "V";
3571
+ readonly decimals: 0;
3572
+ };
3573
+ }, {
3574
+ readonly key: "ratedPower";
3575
+ readonly label: "Rated Power";
3576
+ readonly format: {
3577
+ readonly type: "power";
3578
+ readonly unit: "kVA";
3579
+ readonly decimals: 1;
3580
+ };
3581
+ }];
3582
+ };
2549
3583
  readonly label: {
2550
3584
  readonly singular: "Regulator";
2551
3585
  readonly plural: "Regulators";
@@ -2555,6 +3589,19 @@ declare const ENTITY_CONFIG: {
2555
3589
  readonly supportStructure: {
2556
3590
  readonly icon: "TextureSupportStructure";
2557
3591
  readonly category: "grid";
3592
+ readonly archetype: "grid-line";
3593
+ readonly detailPage: true;
3594
+ readonly properties: {
3595
+ readonly statList: [{
3596
+ readonly key: "nominalVoltage";
3597
+ readonly label: "Nominal Voltage";
3598
+ readonly format: {
3599
+ readonly type: "voltage";
3600
+ readonly unit: "V";
3601
+ readonly decimals: 0;
3602
+ };
3603
+ }];
3604
+ };
2558
3605
  readonly label: {
2559
3606
  readonly singular: "Support Structure";
2560
3607
  readonly plural: "Support Structures";
@@ -2564,51 +3611,289 @@ declare const ENTITY_CONFIG: {
2564
3611
  readonly battery: {
2565
3612
  readonly icon: "BatteryHigh";
2566
3613
  readonly category: "device";
3614
+ readonly archetype: "device";
3615
+ readonly detailPage: true;
2567
3616
  readonly label: {
2568
3617
  readonly singular: "Battery";
2569
3618
  readonly plural: "Batteries";
2570
3619
  };
2571
3620
  readonly description: "Behind-the-meter battery or storage system";
3621
+ readonly fields: {
3622
+ readonly headlineMetrics: [{
3623
+ readonly id: "power";
3624
+ readonly label: "device.battery.fields.power";
3625
+ readonly source: {
3626
+ readonly kind: "state";
3627
+ readonly path: "state.gridPower";
3628
+ };
3629
+ readonly format: {
3630
+ readonly type: "power";
3631
+ readonly decimals: 1;
3632
+ };
3633
+ readonly icon: "Lightning";
3634
+ }, {
3635
+ readonly id: "soc";
3636
+ readonly label: "device.battery.fields.soc";
3637
+ readonly source: {
3638
+ readonly kind: "state";
3639
+ readonly path: "state.chargePercentage";
3640
+ };
3641
+ readonly format: {
3642
+ readonly type: "percentage";
3643
+ readonly decimals: 0;
3644
+ };
3645
+ readonly icon: "BatteryCharging";
3646
+ }];
3647
+ };
3648
+ readonly stateRules: {
3649
+ readonly primaryState: {
3650
+ readonly label: "device.battery.fields.status";
3651
+ readonly fieldPath: "state.chargingState";
3652
+ readonly mapping: {
3653
+ readonly charging: "charging";
3654
+ readonly discharging: "discharging";
3655
+ readonly idle: "idle";
3656
+ readonly unknown: "unknown";
3657
+ };
3658
+ readonly fallback: "unknown";
3659
+ };
3660
+ readonly secondaryState: {
3661
+ readonly label: "device.battery.fields.gridState";
3662
+ readonly fieldPath: "state.gridStatus";
3663
+ readonly mapping: {
3664
+ readonly importing: "importing";
3665
+ readonly exporting: "exporting";
3666
+ readonly idle: "importing";
3667
+ readonly unknown: "importing";
3668
+ };
3669
+ readonly fallback: "importing";
3670
+ };
3671
+ };
2572
3672
  };
2573
3673
  readonly evCharger: {
2574
3674
  readonly icon: "ChargingStation";
2575
3675
  readonly category: "device";
3676
+ readonly archetype: "device";
3677
+ readonly detailPage: true;
2576
3678
  readonly label: {
2577
3679
  readonly singular: "EV Charger";
2578
3680
  readonly plural: "EV Chargers";
2579
3681
  };
2580
3682
  readonly description: "Electric-vehicle charging station or port";
3683
+ readonly fields: {
3684
+ readonly headlineMetrics: [{
3685
+ readonly id: "power";
3686
+ readonly label: "device.evCharger.fields.power";
3687
+ readonly source: {
3688
+ readonly kind: "state";
3689
+ readonly path: "state.chargerWattage";
3690
+ };
3691
+ readonly format: {
3692
+ readonly type: "power";
3693
+ readonly decimals: 1;
3694
+ };
3695
+ readonly icon: "Lightning";
3696
+ }, {
3697
+ readonly id: "isPluggedIn";
3698
+ readonly label: "device.evCharger.fields.isPluggedIn";
3699
+ readonly source: {
3700
+ readonly kind: "state";
3701
+ readonly path: "state.isPluggedIn";
3702
+ };
3703
+ readonly format: {
3704
+ readonly type: "boolean";
3705
+ readonly trueText: "Yes";
3706
+ readonly falseText: "No";
3707
+ };
3708
+ readonly icon: "Plug";
3709
+ }];
3710
+ };
3711
+ readonly stateRules: {
3712
+ readonly primaryState: {
3713
+ readonly label: "device.evCharger.fields.status";
3714
+ readonly fieldPath: "state.chargingState";
3715
+ readonly mapping: {
3716
+ readonly charging: "charging";
3717
+ readonly discharging: "discharging";
3718
+ readonly idle: "idle";
3719
+ readonly unknown: "unknown";
3720
+ };
3721
+ readonly fallback: "unknown";
3722
+ };
3723
+ };
2581
3724
  };
2582
3725
  readonly inverter: {
2583
3726
  readonly icon: "Sun";
2584
3727
  readonly category: "device";
3728
+ readonly archetype: "device";
3729
+ readonly detailPage: true;
2585
3730
  readonly label: {
2586
3731
  readonly singular: "Solar / Inverter";
2587
3732
  readonly plural: "Solar / Inverters";
2588
3733
  };
2589
3734
  readonly description: "Solar PV inverter and its connected array";
3735
+ readonly fields: {
3736
+ readonly headlineMetrics: [{
3737
+ readonly id: "power";
3738
+ readonly label: "device.inverter.fields.power";
3739
+ readonly source: {
3740
+ readonly kind: "state";
3741
+ readonly path: "state.power";
3742
+ };
3743
+ readonly format: {
3744
+ readonly type: "power";
3745
+ readonly decimals: 0;
3746
+ };
3747
+ readonly icon: "Lightning";
3748
+ }, {
3749
+ readonly id: "gridPower";
3750
+ readonly label: "device.inverter.fields.gridPower";
3751
+ readonly source: {
3752
+ readonly kind: "state";
3753
+ readonly path: "state.gridPower";
3754
+ };
3755
+ readonly format: {
3756
+ readonly type: "power";
3757
+ readonly decimals: 0;
3758
+ };
3759
+ readonly icon: "GridFour";
3760
+ }];
3761
+ };
3762
+ readonly stateRules: {
3763
+ readonly primaryState: {
3764
+ readonly label: "device.inverter.fields.gridStatus";
3765
+ readonly fieldPath: "state.gridStatus";
3766
+ readonly mapping: {
3767
+ readonly exporting: "exporting";
3768
+ readonly importing: "importing";
3769
+ readonly idle: "idle";
3770
+ };
3771
+ readonly fallback: "unknown";
3772
+ };
3773
+ };
2590
3774
  };
2591
3775
  readonly thermostat: {
2592
3776
  readonly icon: "Thermometer";
2593
3777
  readonly category: "device";
3778
+ readonly archetype: "device";
3779
+ readonly detailPage: true;
2594
3780
  readonly label: {
2595
3781
  readonly singular: "Thermostat";
2596
3782
  readonly plural: "Thermostats";
2597
3783
  };
2598
3784
  readonly description: "Smart thermostat or connected HVAC control";
3785
+ readonly fields: {
3786
+ readonly headlineMetrics: [{
3787
+ readonly id: "ambientTemperature";
3788
+ readonly label: "device.thermostat.fields.ambientTemperature";
3789
+ readonly source: {
3790
+ readonly kind: "state";
3791
+ readonly path: "state.ambientTemperature";
3792
+ };
3793
+ readonly format: {
3794
+ readonly type: "temperature";
3795
+ readonly decimals: 0;
3796
+ };
3797
+ readonly icon: "Thermometer";
3798
+ }, {
3799
+ readonly id: "heatTarget";
3800
+ readonly label: "device.thermostat.fields.heatTarget";
3801
+ readonly source: {
3802
+ readonly kind: "state";
3803
+ readonly path: "state.heatTarget";
3804
+ };
3805
+ readonly format: {
3806
+ readonly type: "temperature";
3807
+ readonly decimals: 0;
3808
+ };
3809
+ readonly icon: "Flame";
3810
+ }, {
3811
+ readonly id: "coolTarget";
3812
+ readonly label: "device.thermostat.fields.coolTarget";
3813
+ readonly source: {
3814
+ readonly kind: "state";
3815
+ readonly path: "state.coolTarget";
3816
+ };
3817
+ readonly format: {
3818
+ readonly type: "temperature";
3819
+ readonly decimals: 0;
3820
+ };
3821
+ readonly icon: "Snowflake";
3822
+ }];
3823
+ };
3824
+ readonly stateRules: {
3825
+ readonly primaryState: {
3826
+ readonly label: "device.thermostat.fields.operatingMode";
3827
+ readonly fieldPath: "state.operatingMode";
3828
+ readonly mapping: {
3829
+ readonly heat: "heat";
3830
+ readonly cool: "cool";
3831
+ readonly auto: "auto";
3832
+ readonly off: "off";
3833
+ readonly eco: "eco";
3834
+ readonly unknown: "unknown";
3835
+ };
3836
+ readonly fallback: "unknown";
3837
+ };
3838
+ };
2599
3839
  };
2600
3840
  readonly vehicle: {
2601
3841
  readonly icon: "Car";
2602
3842
  readonly category: "device";
3843
+ readonly archetype: "device";
3844
+ readonly detailPage: true;
2603
3845
  readonly label: {
2604
3846
  readonly singular: "EV";
2605
3847
  readonly plural: "EVs";
2606
3848
  };
2607
3849
  readonly description: "Electric vehicle managed as a flexible load";
3850
+ readonly fields: {
3851
+ readonly headlineMetrics: [{
3852
+ readonly id: "chargePercentage";
3853
+ readonly label: "device.vehicle.fields.chargePercentage";
3854
+ readonly source: {
3855
+ readonly kind: "state";
3856
+ readonly path: "state.chargePercentage";
3857
+ };
3858
+ readonly format: {
3859
+ readonly type: "percentage";
3860
+ readonly decimals: 0;
3861
+ };
3862
+ readonly icon: "BatteryCharging";
3863
+ }, {
3864
+ readonly id: "range";
3865
+ readonly label: "device.vehicle.fields.range";
3866
+ readonly source: {
3867
+ readonly kind: "state";
3868
+ readonly path: "state.range";
3869
+ };
3870
+ readonly format: {
3871
+ readonly type: "distance";
3872
+ readonly unit: "mi";
3873
+ readonly decimals: 0;
3874
+ };
3875
+ readonly icon: "GasPump";
3876
+ }];
3877
+ };
3878
+ readonly stateRules: {
3879
+ readonly primaryState: {
3880
+ readonly label: "device.vehicle.fields.status";
3881
+ readonly fieldPath: "state.chargingState";
3882
+ readonly mapping: {
3883
+ readonly charging: "charging";
3884
+ readonly discharging: "discharging";
3885
+ readonly idle: "idle";
3886
+ readonly unknown: "unknown";
3887
+ };
3888
+ readonly fallback: "unknown";
3889
+ };
3890
+ };
2608
3891
  };
2609
3892
  readonly waterHeater: {
2610
3893
  readonly icon: "Drop";
2611
3894
  readonly category: "device";
3895
+ readonly archetype: "device";
3896
+ readonly detailPage: true;
2612
3897
  readonly label: {
2613
3898
  readonly singular: "Water Heater";
2614
3899
  readonly plural: "Water Heaters";
@@ -2617,6 +3902,39 @@ declare const ENTITY_CONFIG: {
2617
3902
  };
2618
3903
  };
2619
3904
  type EntityType = keyof typeof ENTITY_CONFIG;
3905
+ /**
3906
+ * The 22→12 mapping (MR-07 step 6): every grid registry key resolved to its
3907
+ * coarse `GridElementType`. The registry splits some element types by phase
3908
+ * count or sub-class (lines → 1P/2P/3P, overcurrent → recloser/fuse/breaker,
3909
+ * `NODE` → pole/relay/support structure), so several keys share one element
3910
+ * type. This is the recorded source-of-truth for which `GRID_STAT_LIST` a grid
3911
+ * entity's `properties.statList` was transcribed from; a conformance test asserts
3912
+ * each grid entity's stat-list is exactly `GRID_STAT_LIST[mapping[key]]`.
3913
+ */
3914
+ declare const GRID_ELEMENT_TYPE_BY_ENTITY: {
3915
+ readonly source: "SOURCE";
3916
+ readonly substation: "SOURCE";
3917
+ readonly capacitor: "CAPACITOR";
3918
+ readonly switch: "SWITCH";
3919
+ readonly sectionalizer: "SWITCH";
3920
+ readonly relay: "NODE";
3921
+ readonly transformer: "TRANSFORMER";
3922
+ readonly meter: "CONSUMER";
3923
+ readonly consumer: "CONSUMER";
3924
+ readonly singlePhaseOverheadLine: "OVERHEAD_LINE";
3925
+ readonly twoPhaseOverheadLine: "OVERHEAD_LINE";
3926
+ readonly threePhaseOverheadLine: "OVERHEAD_LINE";
3927
+ readonly singlePhaseUndergroundLine: "UNDERGROUND_LINE";
3928
+ readonly twoPhaseUndergroundLine: "UNDERGROUND_LINE";
3929
+ readonly threePhaseUndergroundLine: "UNDERGROUND_LINE";
3930
+ readonly motorSwitch: "MOTOR";
3931
+ readonly recloser: "OVERCURRENT_DEVICE";
3932
+ readonly fuse: "OVERCURRENT_DEVICE";
3933
+ readonly breaker: "OVERCURRENT_DEVICE";
3934
+ readonly generator: "GENERATOR";
3935
+ readonly regulator: "REGULATOR";
3936
+ readonly supportStructure: "NODE";
3937
+ };
2620
3938
  /**
2621
3939
  * Get entity configuration by type
2622
3940
  *
@@ -2663,6 +3981,66 @@ declare function getEntityLabel(entityType: EntityType, plural?: boolean): strin
2663
3981
  * @returns The entity's category
2664
3982
  */
2665
3983
  declare function getEntityCategory(entityType: EntityType): EntityCategory;
3984
+ /**
3985
+ * Inclusive bounds on `fields.headlineMetrics`. The design's `entity.now`
3986
+ * acceptance criteria say the cell count adapts across this range. Exported so
3987
+ * the conformance test enforces the bound rather than documenting it.
3988
+ */
3989
+ declare const HEADLINE_METRIC_BOUNDS: {
3990
+ readonly min: 2;
3991
+ readonly max: 4;
3992
+ };
3993
+ /**
3994
+ * Resolve the base page composition for an entity. This is what lets the 30
3995
+ * in-scope entities share five compositions instead of 30 pages of page code.
3996
+ *
3997
+ * @param entityType - The entity type key
3998
+ * @returns The entity's archetype
3999
+ * @throws If `entityType` is not a known entity (never returns `undefined`, so
4000
+ * a typo surfaces as a loud error rather than a silently missing composition).
4001
+ *
4002
+ * @example
4003
+ * ```tsx
4004
+ * archetypeFor("battery"); // "device"
4005
+ * archetypeFor("transformer"); // "grid-energized"
4006
+ * archetypeFor("nope"); // throws
4007
+ * ```
4008
+ */
4009
+ declare function archetypeFor(entityType: EntityType): EntityArchetype;
4010
+ /**
4011
+ * Whether an entity has a reachable detail page. The registry is the single
4012
+ * answer to "does this entity have a page?".
4013
+ *
4014
+ * @param entityType - The entity type key
4015
+ */
4016
+ declare function entityHasDetailPage(entityType: EntityType): boolean;
4017
+ /**
4018
+ * Whether `entity.now` renders a metric grid for this entity. True iff the
4019
+ * entity declares at least one headline metric. Grid elements (no metric
4020
+ * registry yet), Site, Customer and Water Heater return `false` — `entity.now`
4021
+ * declines to render its cells rather than crashing or rendering empty.
4022
+ *
4023
+ * @param entityType - The entity type key
4024
+ */
4025
+ declare function entityShowsNow(entityType: EntityType): boolean;
4026
+ /**
4027
+ * The static-property (`data.stat-list`) rows for an entity, or an empty array
4028
+ * when it has none. Grid entities carry a non-empty stat-list transcribed from
4029
+ * `grid-element-config`; devices and platform objects return `[]`.
4030
+ *
4031
+ * Note this is independent of `entityShowsNow`: a static stat-list is *not* an
4032
+ * `entity.now`. A grid line has `properties.statList` (structural nameplate) yet
4033
+ * `entityShowsNow` is `false` — that is the intended MR-07 split.
4034
+ *
4035
+ * @param entityType - The entity type key
4036
+ */
4037
+ declare function getEntityStatList(entityType: EntityType): readonly GridStatField[];
4038
+ /**
4039
+ * Whether an entity has a non-empty static-property (`data.stat-list`) block.
4040
+ *
4041
+ * @param entityType - The entity type key
4042
+ */
4043
+ declare function entityHasStatList(entityType: EntityType): boolean;
2666
4044
 
2667
4045
  /**
2668
4046
  * Resolves a CSS variable to its computed color value.
@@ -2723,4 +4101,4 @@ declare const getContrastingTextColor: (backgroundColor: string) => string;
2723
4101
  */
2724
4102
  declare const mapValuesToCategoricalColors: (values: (string | number)[]) => Record<string | number, string>;
2725
4103
 
2726
- export { type DistanceFormat as $, type ActionItem as A, type BadgeProps as B, type ChartMargin as C, getContrastingTextColor as D, ENTITY_CONFIG as E, getDefaultChartColor as F, getDefaultColors as G, Heading as H, type InteractiveMapProps as I, getEntityConfig as J, getEntityIcon as K, Loader as L, type MapPoint as M, getEntityLabel as N, getResolvedColor as O, getThemeCategoricalColors as P, getYFormatSettings as Q, isLightColor as R, type SegmentOption as S, TextLink as T, type FieldValue as U, type BooleanFormat as V, type FormattedValue as W, type FieldFormat as X, type YFormatSettings as Y, type CurrentFormat as Z, type DateFormat as _, type ActionMenuProps as a, type VoltageUnit as a$, type EnergyUnit as a0, type EnergyFormat as a1, type CurrencyFormat as a2, type NumberFormat as a3, type PhoneFormat as a4, type PowerFormat as a5, type FormatterFunction as a6, type ResistanceFormat as a7, type TemperatureFormat as a8, type TemperatureUnitString as a9, ENTITY_CATEGORY_CONFIG as aA, type EntityCategory as aB, type EntityCategoryConfig as aC, GRID_STATE_COLORS as aD, type GridStateColor as aE, InteractiveMap as aF, type InteractiveMapHandle as aG, type LayerFeature as aH, type LayerStyle as aI, MAP_TYPES as aJ, type MapType as aK, Meter as aL, type MetricFormat as aM, type PercentageFormat as aN, type PowerUnit as aO, type RenderType as aP, type ResistanceUnit as aQ, SegmentedControl as aR, StackNav as aS, type StackNavGroup as aT, type StackNavItem as aU, type StackNavLinkComponentProps as aV, type StackNavProps as aW, type StackNavTheme as aX, StaticMap as aY, type TextTransform as aZ, type TextTruncatePosition as a_, type TemperatureUnit as aa, type TextFormat as ab, type VoltageFormat as ac, type DeviceState as ad, type GridState as ae, type ComponentFormatter as af, type LayerSpec as ag, type CustomPinsSpec as ah, type GeoJsonLayerSpec as ai, type RasterLayerSpec as aj, type VectorLayerSpec as ak, type ClusteredVectorLayerSpec as al, ActionMenu as am, AppShell as an, Avatar as ao, Badge as ap, type BaseFormat as aq, ChartContext as ar, CodeEditor as as, type ColorSpec as at, type ComponentFormatOptions as au, type CurrentUnit as av, type CustomFormat as aw, DEFAULT_MAP_TYPE as ax, type DateFormatStyle as ay, type DistanceUnit as az, type AppShellProps as b, type ZoomStops as b0, activeDeviceStates as b1, baselineFromPoint as b2, deviceStateLabels as b3, deviceStateMetricFormats as b4, formatComponentValue as b5, getDeviceStateLabel as b6, getEntityCategory as b7, getGridStateLabel as b8, gridStateLabels as b9, isActiveState as ba, mapValuesToCategoricalColors as bb, useChartContext as bc, useComponentFormatter as bd, type AvatarProps as c, type BaseDataPoint as d, type CodeEditorProps as e, type CodeLanguage as f, type CodeTheme as g, type EntityConfig as h, type EntityType as i, Logo as j, type MeterProps as k, type SegmentedControlProps as l, SideNav as m, type SideNavItem as n, type SideNavProps as o, type StaticMapProps as p, type TooltipData as q, type TooltipSeries as r, TopNav as s, type TopNavProps as t, type YFormatType as u, clearColorCache as v, createCategoryColorMap as w, createXScale as x, createYScale as y, defaultMargin as z };
4104
+ export { getContrastingTextColor as $, ABSENT_GRID_FIELDS as A, type BadgeProps as B, type ChartMargin as C, type StaticMapProps as D, ENTITY_CONFIG as E, type TooltipData as F, GRID_ELEMENT_TYPE_BY_ENTITY as G, HEADLINE_METRIC_BOUNDS as H, type InteractiveMapProps as I, type TooltipSeries as J, TopNav as K, Loader as L, type MapPoint as M, type TopNavProps as N, type YFormatType as O, archetypeFor as P, clearColorCache as Q, createCategoryColorMap as R, type SegmentOption as S, TextLink as T, createXScale as U, createYScale as V, defaultMargin as W, entityHasDetailPage as X, type YFormatSettings as Y, entityHasStatList as Z, entityShowsNow as _, type ActionItem as a, type MapType as a$, getDefaultChartColor as a0, getDefaultColors as a1, getEntityConfig as a2, getEntityIcon as a3, getEntityLabel as a4, getEntityStatList as a5, getResolvedColor as a6, getThemeCategoricalColors as a7, getYFormatSettings as a8, isLightColor as a9, type RasterLayerSpec as aA, type VectorLayerSpec as aB, type ClusteredVectorLayerSpec as aC, ActionMenu as aD, AppShell as aE, Avatar as aF, Badge as aG, type BaseFormat as aH, ChartContext as aI, CodeEditor as aJ, type ColorSpec as aK, type ComponentFormatOptions as aL, type CurrentUnit as aM, type CustomFormat as aN, DEFAULT_MAP_TYPE as aO, type DateFormatStyle as aP, type DistanceUnit as aQ, ENTITY_CATEGORY_CONFIG as aR, type EntityCategory as aS, type EntityCategoryConfig as aT, GRID_STATE_COLORS as aU, type GridStateColor as aV, InteractiveMap as aW, type InteractiveMapHandle as aX, type LayerFeature as aY, type LayerStyle as aZ, MAP_TYPES as a_, type FieldValue as aa, type BooleanFormat as ab, type FormattedValue as ac, type FieldFormat as ad, type CurrentFormat as ae, type DateFormat as af, type DistanceFormat as ag, type EnergyUnit as ah, type EnergyFormat as ai, type CurrencyFormat as aj, type NumberFormat as ak, type PhoneFormat as al, type PowerFormat as am, type FormatterFunction as an, type ResistanceFormat as ao, type TemperatureFormat as ap, type TemperatureUnitString as aq, type TemperatureUnit as ar, type TextFormat as as, type VoltageFormat as at, type DeviceState as au, type GridState as av, type ComponentFormatter as aw, type LayerSpec as ax, type CustomPinsSpec as ay, type GeoJsonLayerSpec as az, type ActionMenuProps as b, Meter as b0, type MetricFormat as b1, type PercentageFormat as b2, type PowerUnit as b3, type RenderType as b4, type ResistanceUnit as b5, SegmentedControl as b6, StackNav as b7, type StackNavGroup as b8, type StackNavItem as b9, type StackNavLinkComponentProps as ba, type StackNavProps as bb, type StackNavTheme as bc, StaticMap as bd, type TextTransform as be, type TextTruncatePosition as bf, type VoltageUnit as bg, type ZoomStops as bh, activeDeviceStates as bi, baselineFromPoint as bj, deviceStateLabels as bk, deviceStateMetricFormats as bl, formatComponentValue as bm, getDeviceStateLabel as bn, getEntityCategory as bo, getGridStateLabel as bp, gridStateLabels as bq, isActiveState as br, mapValuesToCategoricalColors as bs, useChartContext as bt, useComponentFormatter as bu, type AppShellProps as c, type AvatarProps as d, type BaseDataPoint as e, type CodeEditorProps as f, type CodeLanguage as g, type CodeTheme as h, type EntityArchetype as i, type EntityConfig as j, type EntityStateRule as k, type EntityType as l, GRID_STAT_LIST as m, type GridElementSourceType as n, type GridStatField as o, type GridStatFieldFormat as p, Heading as q, type HeadlineMetric as r, Logo as s, type MeterProps as t, type MetricSource as u, type SegmentedControlProps as v, type SerializableFieldFormat as w, SideNav as x, type SideNavItem as y, type SideNavProps as z };