@texturehq/edges 2.4.10 → 2.5.0

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.
@@ -20,6 +20,7 @@ declare const CUSTOM_ICON_REGISTRY: {
20
20
  readonly TextureRegulator: Icon$1;
21
21
  readonly TextureSwitch: Icon$1;
22
22
  readonly TextureSwitchClosed: Icon$1;
23
+ readonly TextureOpenPoint: Icon$1;
23
24
  readonly TextureSectionalizerOpen: Icon$1;
24
25
  readonly TextureSectionalizerClosed: Icon$1;
25
26
  readonly TextureTransformer: Icon$1;
@@ -20,6 +20,7 @@ declare const CUSTOM_ICON_REGISTRY: {
20
20
  readonly TextureRegulator: Icon$1;
21
21
  readonly TextureSwitch: Icon$1;
22
22
  readonly TextureSwitchClosed: Icon$1;
23
+ readonly TextureOpenPoint: Icon$1;
23
24
  readonly TextureSectionalizerOpen: Icon$1;
24
25
  readonly TextureSectionalizerClosed: Icon$1;
25
26
  readonly TextureTransformer: Icon$1;
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React__default, { ComponentProps, ReactNode } from 'react';
3
3
  import { Key, ValidationResult, ButtonProps as ButtonProps$1, CheckboxProps as CheckboxProps$1, CheckboxRenderProps, CheckboxGroupProps as CheckboxGroupProps$1, TextFieldProps as TextFieldProps$1, NumberFieldProps as NumberFieldProps$1, RadioProps, RadioGroupProps as RadioGroupProps$1, SelectProps as SelectProps$1, SwitchProps as SwitchProps$1, TimeFieldProps as TimeFieldProps$1, TimeValue } from 'react-aria-components';
4
- import { S as Size, I as Icon, B as BaseInputProps } from './RichTextEditor-BNXNpG4s.cjs';
4
+ import { S as Size, I as Icon, B as BaseInputProps } from './RichTextEditor-B_GaE_Yf.cjs';
5
5
 
6
6
  interface Item {
7
7
  id: string;
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React__default, { ComponentProps, ReactNode } from 'react';
3
3
  import { Key, ValidationResult, ButtonProps as ButtonProps$1, CheckboxProps as CheckboxProps$1, CheckboxRenderProps, CheckboxGroupProps as CheckboxGroupProps$1, TextFieldProps as TextFieldProps$1, NumberFieldProps as NumberFieldProps$1, RadioProps, RadioGroupProps as RadioGroupProps$1, SelectProps as SelectProps$1, SwitchProps as SwitchProps$1, TimeFieldProps as TimeFieldProps$1, TimeValue } from 'react-aria-components';
4
- import { S as Size, I as Icon, B as BaseInputProps } from './RichTextEditor-BNXNpG4s.js';
4
+ import { S as Size, I as Icon, B as BaseInputProps } from './RichTextEditor-B_GaE_Yf.js';
5
5
 
6
6
  interface Item {
7
7
  id: string;
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
3
  import React__default, { ReactNode, ComponentType } from 'react';
4
- import { d as IconName } from './RichTextEditor-BNXNpG4s.cjs';
4
+ import { d as IconName } from './RichTextEditor-B_GaE_Yf.js';
5
5
  import * as _visx_vendor_d3_scale from '@visx/vendor/d3-scale';
6
6
  import { ScaleTime, ScaleLinear } from 'd3-scale';
7
7
  import * as react_map_gl from 'react-map-gl';
@@ -552,6 +552,15 @@ interface BadgeProps {
552
552
  dotPosition?: "left" | "right";
553
553
  /** Whether the dot should pulse (animated) */
554
554
  dotPulse?: boolean;
555
+ /**
556
+ * Native tooltip text.
557
+ *
558
+ * A badge is often an abbreviation of something the reader cannot infer — a state,
559
+ * a threshold, a data-quality caveat. Without this, callers wrap the badge in a bare
560
+ * `<span title>` purely to explain it, which adds a layout box around an inline-flex
561
+ * element for no visual reason.
562
+ */
563
+ title?: string;
555
564
  /** Additional CSS classes */
556
565
  className?: string;
557
566
  }
@@ -564,7 +573,7 @@ interface BadgeProps {
564
573
  * Supports device states (charging, discharging, heat, cool, etc.) and
565
574
  * grid states (importing, exporting) as variant values.
566
575
  */
567
- declare function Badge({ children, variant, size, shape, dot, dotPosition, dotPulse, className, }: BadgeProps): react_jsx_runtime.JSX.Element;
576
+ declare function Badge({ children, variant, size, shape, dot, dotPosition, dotPulse, title, className, }: BadgeProps): react_jsx_runtime.JSX.Element;
568
577
 
569
578
  type CodeLanguage = "json" | "javascript" | "typescript" | "html" | "css" | "markdown" | "yaml" | "xml" | "python" | "sql";
570
579
  type CodeTheme = "github" | "github_dark";
@@ -1305,6 +1314,15 @@ interface VectorLayerSpec extends BaseLayerSpec {
1305
1314
  style?: LayerStyle;
1306
1315
  /** Mapbox filter expression (escape hatch for advanced filtering) */
1307
1316
  filter?: any;
1317
+ /**
1318
+ * Per-feature chip suppression for point (`circle`) layers. A Mapbox boolean
1319
+ * expression; where it evaluates true, the chip's fill + border render fully
1320
+ * transparent (`circle-opacity`/`circle-stroke-opacity` → 0) while the feature
1321
+ * stays interactive (click/hover still hit-test). Lets a glyph drawn on top
1322
+ * read as "on the geometry" with no chip behind it — e.g. Open Point switches
1323
+ * rendered as a bracket over the conductor line. Ignored for non-circle layers.
1324
+ */
1325
+ hideChipWhen?: any;
1308
1326
  }
1309
1327
  /**
1310
1328
  * GeoJSON layer (client-side data or URL)
@@ -1979,14 +1997,27 @@ interface MapPoint {
1979
1997
  interface MeterProps extends MeterProps$1 {
1980
1998
  /** Label displayed above the meter */
1981
1999
  label?: string;
1982
- /** Size variant of the meter */
1983
- size?: "sm" | "md" | "lg";
1984
- /** Visual variant based on semantic meaning */
1985
- variant?: "default" | "success" | "warning" | "error" | "info";
2000
+ /** Size variant of the meter. `xs` is a bare track sized for a dense table cell. */
2001
+ size?: "xs" | "sm" | "md" | "lg";
2002
+ /** Visual variant based on semantic meaning. `neutral` opts out of value-derived colouring. */
2003
+ variant?: "default" | "success" | "warning" | "error" | "info" | "neutral";
1986
2004
  /** Whether to show warning indicator at high values */
1987
2005
  showWarningIndicator?: boolean;
1988
2006
  /** Threshold percentage for showing warning (default: 80) */
1989
2007
  warningThreshold?: number;
2008
+ /**
2009
+ * Render the track alone, without the label / value row.
2010
+ *
2011
+ * For callers that already print the measurement next to the meter — a table cell whose
2012
+ * column *is* the value — where the built-in row would repeat it.
2013
+ *
2014
+ * The meter still needs a name: pass `label` (promoted to `aria-label`, since the visible
2015
+ * `<Label>` is no longer rendered) or an explicit `aria-label`. A caller whose track is
2016
+ * purely decorative — or whose displayed `value` is clamped, so the meter would state a
2017
+ * number the adjacent text contradicts — should pass `aria-hidden` instead and leave the
2018
+ * printed value as the only accessible one.
2019
+ */
2020
+ hideValueText?: boolean;
1990
2021
  /** Additional CSS classes */
1991
2022
  className?: string;
1992
2023
  }
@@ -1996,7 +2027,7 @@ interface MeterProps extends MeterProps$1 {
1996
2027
  * Displays a measurement within a known range, with visual indicators for different value ranges.
1997
2028
  * Perfect for showing capacity, usage levels, scores, or any bounded measurement.
1998
2029
  */
1999
- declare function Meter({ label, size, variant, showWarningIndicator, warningThreshold, className, ...props }: MeterProps): react_jsx_runtime.JSX.Element;
2030
+ declare function Meter({ label, size, variant, showWarningIndicator, warningThreshold, hideValueText, className, ...props }: MeterProps): react_jsx_runtime.JSX.Element;
2000
2031
 
2001
2032
  type SegmentOption = {
2002
2033
  id: string;
@@ -2312,6 +2343,17 @@ interface EntityConfig {
2312
2343
  */
2313
2344
  headlineMetrics: HeadlineMetric[];
2314
2345
  };
2346
+ /**
2347
+ * Which headline metric `entity.now` promotes to the hero ("fused") slot — a
2348
+ * single large number the design leads the rail with (e.g. Battery → SoC,
2349
+ * Inverter → Output). MUST be the `id` of one of this entity's
2350
+ * `fields.headlineMetrics`; the conformance test enforces that. Optional:
2351
+ * entities with no metric rail (Gateway, Water Heater) omit it, and a rail
2352
+ * with no promoted hero simply renders every cell equally. The hero choice
2353
+ * lives here, alongside the serialized metrics, so no per-instance prop is
2354
+ * needed (design build spec: "no per-instance metric props").
2355
+ */
2356
+ fusedMetricId?: string;
2315
2357
  /**
2316
2358
  * State rules for `entity.now`'s status chips. `primaryState` drives the
2317
2359
  * pulsing primary chip; `secondaryState` (battery/inverter: charge + grid)
@@ -3099,6 +3141,7 @@ declare const ENTITY_CONFIG: {
3099
3141
  readonly plural: "Meters";
3100
3142
  };
3101
3143
  readonly description: "Revenue meter at the point of consumption";
3144
+ readonly fusedMetricId: "power";
3102
3145
  readonly fields: {
3103
3146
  readonly headlineMetrics: [{
3104
3147
  readonly id: "power";
@@ -3126,6 +3169,30 @@ declare const ENTITY_CONFIG: {
3126
3169
  readonly decimals: 2;
3127
3170
  };
3128
3171
  readonly icon: "Lightning";
3172
+ }, {
3173
+ readonly id: "voltage";
3174
+ readonly label: "device.meter.fields.voltage";
3175
+ readonly source: {
3176
+ readonly kind: "state";
3177
+ readonly path: "state.phaseAVoltage";
3178
+ };
3179
+ readonly format: {
3180
+ readonly type: "voltage";
3181
+ readonly decimals: 1;
3182
+ };
3183
+ readonly icon: "Lightning";
3184
+ }, {
3185
+ readonly id: "current";
3186
+ readonly label: "device.meter.fields.current";
3187
+ readonly source: {
3188
+ readonly kind: "state";
3189
+ readonly path: "state.phaseACurrent";
3190
+ };
3191
+ readonly format: {
3192
+ readonly type: "current";
3193
+ readonly decimals: 2;
3194
+ };
3195
+ readonly icon: "Lightning";
3129
3196
  }];
3130
3197
  };
3131
3198
  };
@@ -3627,6 +3694,7 @@ declare const ENTITY_CONFIG: {
3627
3694
  readonly plural: "Batteries";
3628
3695
  };
3629
3696
  readonly description: "Behind-the-meter battery or storage system";
3697
+ readonly fusedMetricId: "soc";
3630
3698
  readonly fields: {
3631
3699
  readonly headlineMetrics: [{
3632
3700
  readonly id: "power";
@@ -3652,6 +3720,30 @@ declare const ENTITY_CONFIG: {
3652
3720
  readonly decimals: 0;
3653
3721
  };
3654
3722
  readonly icon: "BatteryCharging";
3723
+ }, {
3724
+ readonly id: "backupReserve";
3725
+ readonly label: "device.battery.fields.backupReserve";
3726
+ readonly source: {
3727
+ readonly kind: "state";
3728
+ readonly path: "state.backupReserve";
3729
+ };
3730
+ readonly format: {
3731
+ readonly type: "percentage";
3732
+ readonly decimals: 0;
3733
+ };
3734
+ readonly icon: "BatteryCharging";
3735
+ }, {
3736
+ readonly id: "loadPower";
3737
+ readonly label: "device.battery.fields.loadPower";
3738
+ readonly source: {
3739
+ readonly kind: "state";
3740
+ readonly path: "state.loadPower";
3741
+ };
3742
+ readonly format: {
3743
+ readonly type: "power";
3744
+ readonly decimals: 1;
3745
+ };
3746
+ readonly icon: "Lightning";
3655
3747
  }];
3656
3748
  };
3657
3749
  readonly stateRules: {
@@ -3689,6 +3781,7 @@ declare const ENTITY_CONFIG: {
3689
3781
  readonly plural: "EV Chargers";
3690
3782
  };
3691
3783
  readonly description: "Electric-vehicle charging station or port";
3784
+ readonly fusedMetricId: "power";
3692
3785
  readonly fields: {
3693
3786
  readonly headlineMetrics: [{
3694
3787
  readonly id: "power";
@@ -3715,6 +3808,30 @@ declare const ENTITY_CONFIG: {
3715
3808
  readonly falseText: "No";
3716
3809
  };
3717
3810
  readonly icon: "Plug";
3811
+ }, {
3812
+ readonly id: "voltage";
3813
+ readonly label: "device.evCharger.fields.voltage";
3814
+ readonly source: {
3815
+ readonly kind: "state";
3816
+ readonly path: "state.chargerVoltage";
3817
+ };
3818
+ readonly format: {
3819
+ readonly type: "voltage";
3820
+ readonly decimals: 1;
3821
+ };
3822
+ readonly icon: "Lightning";
3823
+ }, {
3824
+ readonly id: "current";
3825
+ readonly label: "device.evCharger.fields.current";
3826
+ readonly source: {
3827
+ readonly kind: "state";
3828
+ readonly path: "state.chargerCurrent";
3829
+ };
3830
+ readonly format: {
3831
+ readonly type: "current";
3832
+ readonly decimals: 1;
3833
+ };
3834
+ readonly icon: "Lightning";
3718
3835
  }];
3719
3836
  };
3720
3837
  readonly stateRules: {
@@ -3741,6 +3858,7 @@ declare const ENTITY_CONFIG: {
3741
3858
  readonly plural: "Solar / Inverters";
3742
3859
  };
3743
3860
  readonly description: "Solar PV inverter and its connected array";
3861
+ readonly fusedMetricId: "power";
3744
3862
  readonly fields: {
3745
3863
  readonly headlineMetrics: [{
3746
3864
  readonly id: "power";
@@ -3766,6 +3884,30 @@ declare const ENTITY_CONFIG: {
3766
3884
  readonly decimals: 0;
3767
3885
  };
3768
3886
  readonly icon: "GridFour";
3887
+ }, {
3888
+ readonly id: "generatedEnergy";
3889
+ readonly label: "device.inverter.fields.generatedEnergy";
3890
+ readonly source: {
3891
+ readonly kind: "state";
3892
+ readonly path: "state.generatedEnergy";
3893
+ };
3894
+ readonly format: {
3895
+ readonly type: "energy";
3896
+ readonly decimals: 1;
3897
+ };
3898
+ readonly icon: "Lightning";
3899
+ }, {
3900
+ readonly id: "lifetimeEnergyGenerated";
3901
+ readonly label: "device.inverter.fields.lifetimeEnergyGenerated";
3902
+ readonly source: {
3903
+ readonly kind: "state";
3904
+ readonly path: "state.lifetimeEnergyGenerated";
3905
+ };
3906
+ readonly format: {
3907
+ readonly type: "energy";
3908
+ readonly decimals: 0;
3909
+ };
3910
+ readonly icon: "Lightning";
3769
3911
  }];
3770
3912
  };
3771
3913
  readonly stateRules: {
@@ -3791,6 +3933,7 @@ declare const ENTITY_CONFIG: {
3791
3933
  readonly plural: "Thermostats";
3792
3934
  };
3793
3935
  readonly description: "Smart thermostat or connected HVAC control";
3936
+ readonly fusedMetricId: "ambientTemperature";
3794
3937
  readonly fields: {
3795
3938
  readonly headlineMetrics: [{
3796
3939
  readonly id: "ambientTemperature";
@@ -3828,6 +3971,16 @@ declare const ENTITY_CONFIG: {
3828
3971
  readonly decimals: 0;
3829
3972
  };
3830
3973
  readonly icon: "Snowflake";
3974
+ }, {
3975
+ readonly id: "fanMode";
3976
+ readonly label: "device.thermostat.fields.fanMode";
3977
+ readonly source: {
3978
+ readonly kind: "state";
3979
+ readonly path: "state.fanMode";
3980
+ };
3981
+ readonly format: {
3982
+ readonly type: "text";
3983
+ };
3831
3984
  }];
3832
3985
  };
3833
3986
  readonly stateRules: {
@@ -3856,6 +4009,7 @@ declare const ENTITY_CONFIG: {
3856
4009
  readonly plural: "EVs";
3857
4010
  };
3858
4011
  readonly description: "Electric vehicle managed as a flexible load";
4012
+ readonly fusedMetricId: "chargePercentage";
3859
4013
  readonly fields: {
3860
4014
  readonly headlineMetrics: [{
3861
4015
  readonly id: "chargePercentage";
@@ -3882,6 +4036,31 @@ declare const ENTITY_CONFIG: {
3882
4036
  readonly decimals: 0;
3883
4037
  };
3884
4038
  readonly icon: "GasPump";
4039
+ }, {
4040
+ readonly id: "chargeLimit";
4041
+ readonly label: "device.vehicle.fields.chargeLimit";
4042
+ readonly source: {
4043
+ readonly kind: "state";
4044
+ readonly path: "state.chargeLimit";
4045
+ };
4046
+ readonly format: {
4047
+ readonly type: "percentage";
4048
+ readonly decimals: 0;
4049
+ };
4050
+ readonly icon: "BatteryCharging";
4051
+ }, {
4052
+ readonly id: "isPluggedIn";
4053
+ readonly label: "device.vehicle.fields.isPluggedIn";
4054
+ readonly source: {
4055
+ readonly kind: "state";
4056
+ readonly path: "state.isPluggedIn";
4057
+ };
4058
+ readonly format: {
4059
+ readonly type: "boolean";
4060
+ readonly trueText: "Yes";
4061
+ readonly falseText: "No";
4062
+ };
4063
+ readonly icon: "Plug";
3885
4064
  }];
3886
4065
  };
3887
4066
  readonly stateRules: {