@texturehq/edges 1.0.2 → 1.1.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.
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { I as Icon, B as BaseDataPoint, Y as YFormatType, T as TooltipData, a as IconName$2 } from './server-DmvMh5XJ.js';
2
- export { A as ActionItem, c as ActionMenu, b as ActionMenuProps, e as AppShell, d as AppShellProps, g as Avatar, f as AvatarProps, i as Badge, h as BadgeProps, C as Card, Q as ChartContext, V as ChartMargin, m as CodeEditor, j as CodeEditorProps, k as CodeLanguage, l as CodeTheme, n as DateField, D as DateFieldProps, o as FileUpload, F as FileUploadProps, H as Heading, r as InteractiveMap, q as InteractiveMapProps, L as Loader, p as Logo, s as MAPBOX_THEMES, M as MapPoint, v as Meter, u as MeterProps, w as RichTextEditor, R as RichTextEditorProps, y as SegmentOption, z as SegmentedControl, x as SegmentedControlProps, J as SideNav, E as SideNavItem, G as SideNavProps, t as StaticMap, S as StaticMapProps, K as TextLink, P as TooltipSeries, O as TopNav, N as TopNavProps, $ as YFormatSettings, a0 as clearColorCache, a1 as createCategoryColorMap, W as createXScale, X as createYScale, Z as defaultMargin, a2 as getContrastingTextColor, a3 as getDefaultChartColor, a4 as getDefaultColors, a5 as getResolvedColor, a6 as getThemeCategoricalColors, _ as getYFormatSettings, a7 as isLightColor, U as useChartContext } from './server-DmvMh5XJ.js';
1
+ import { I as Icon, B as BaseDataPoint, Y as YFormatType, T as TooltipData, a as IconName$2 } from './server-DkP8PI1p.js';
2
+ export { A as ActionItem, c as ActionMenu, b as ActionMenuProps, e as AppShell, d as AppShellProps, g as Avatar, f as AvatarProps, i as Badge, h as BadgeProps, k as Card, C as CardProps, j as CardVariant, V as ChartContext, X as ChartMargin, o as CodeEditor, l as CodeEditorProps, m as CodeLanguage, n as CodeTheme, p as DateField, D as DateFieldProps, q as FileUpload, F as FileUploadProps, H as Heading, t as InteractiveMap, s as InteractiveMapProps, L as Loader, r as Logo, u as MAPBOX_THEMES, M as MapPoint, x as Meter, w as MeterProps, y as RichTextEditor, R as RichTextEditorProps, E as SegmentOption, G as SegmentedControl, z as SegmentedControlProps, N as SideNav, J as SideNavItem, K as SideNavProps, v as StaticMap, S as StaticMapProps, O as TextLink, U as TooltipSeries, Q as TopNav, P as TopNavProps, a1 as YFormatSettings, a2 as clearColorCache, a3 as createCategoryColorMap, Z as createXScale, _ as createYScale, $ as defaultMargin, a4 as getContrastingTextColor, a5 as getDefaultChartColor, a6 as getDefaultColors, a7 as getResolvedColor, a8 as getThemeCategoricalColors, a0 as getYFormatSettings, a9 as isLightColor, W as useChartContext } from './server-DkP8PI1p.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as React$1 from 'react';
5
5
  import React__default, { ComponentProps, ReactNode, ComponentType, Component, ErrorInfo } from 'react';
6
- import { Key, ValidationResult, BreadcrumbProps, BreadcrumbsProps, ButtonProps as ButtonProps$1, DateValue, CalendarProps as CalendarProps$1, CheckboxProps as CheckboxProps$1, CheckboxRenderProps, CheckboxGroupProps as CheckboxGroupProps$1, DateRangePickerProps as DateRangePickerProps$1, DialogProps, TextProps, FormProps, ListBoxProps as ListBoxProps$1, ListBoxItemProps, NumberFieldProps as NumberFieldProps$1, PopoverProps as PopoverProps$1, ProgressBarProps as ProgressBarProps$1, RadioProps, RadioGroupProps as RadioGroupProps$1, RangeCalendarProps as RangeCalendarProps$1, SelectProps as SelectProps$1, SwitchProps as SwitchProps$1, TabProps as TabProps$1, TabListProps, TabPanelProps, TabsProps, TextFieldProps as TextFieldProps$1, TimeFieldProps as TimeFieldProps$1, TimeValue, TooltipProps as TooltipProps$1 } from 'react-aria-components';
6
+ import { Key, ValidationResult, BreadcrumbProps, BreadcrumbsProps, ButtonProps as ButtonProps$1, DateValue, CalendarProps as CalendarProps$1, CheckboxProps as CheckboxProps$1, CheckboxRenderProps, CheckboxGroupProps as CheckboxGroupProps$1, DateRangePickerProps as DateRangePickerProps$1, DialogProps, TextProps, FormProps, ListBoxProps as ListBoxProps$1, ListBoxItemProps, NumberFieldProps as NumberFieldProps$1, PopoverProps as PopoverProps$1, ProgressBarProps as ProgressBarProps$1, RadioProps, RadioGroupProps as RadioGroupProps$1, RangeCalendarProps as RangeCalendarProps$1, SelectProps as SelectProps$1, SwitchProps as SwitchProps$1, TabProps as TabProps$1, TabListProps, TabPanelProps, TabsProps as TabsProps$1, TextFieldProps as TextFieldProps$1, TimeFieldProps as TimeFieldProps$1, TimeValue, TooltipProps as TooltipProps$1 } from 'react-aria-components';
7
7
  export { BreadcrumbProps, BreadcrumbsProps } from 'react-aria-components';
8
8
  import { ScaleTime, ScaleLinear } from 'd3-scale';
9
9
  import '@phosphor-icons/react';
@@ -19,6 +19,598 @@ declare function useDebounce<T>(value: T, delay?: number): T;
19
19
  */
20
20
  declare function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T | ((val: T) => T)) => void, () => void];
21
21
 
22
+ /**
23
+ * Core types for the formatting system
24
+ */
25
+ type FieldValue = string | number | boolean | Date | null | undefined;
26
+ type FormattedValue = string | null;
27
+ type FormatterFunction = (value: FieldValue, ...args: unknown[]) => FormattedValue;
28
+ interface BaseFormat {
29
+ nullText?: string;
30
+ emptyText?: string;
31
+ hideWhenNull?: boolean;
32
+ hideWhenZero?: boolean;
33
+ }
34
+ type TextTransform = "uppercase" | "lowercase" | "capitalize" | "titleCase" | "sentenceCase";
35
+ type TextTruncatePosition = "start" | "middle" | "end";
36
+ interface TextFormat extends BaseFormat {
37
+ type: "text";
38
+ transform?: TextTransform | TextTransform[];
39
+ truncate?: {
40
+ length: number;
41
+ position: TextTruncatePosition;
42
+ ellipsis?: string;
43
+ };
44
+ wrap?: "normal" | "nowrap" | "pre" | "pre-wrap";
45
+ highlight?: {
46
+ pattern: string | RegExp;
47
+ className?: string;
48
+ };
49
+ }
50
+ interface NumberFormat extends BaseFormat {
51
+ type: "number";
52
+ decimals?: number;
53
+ thousandsSeparator?: boolean;
54
+ notation?: "standard" | "scientific" | "compact" | "engineering";
55
+ compactDisplay?: "short" | "long";
56
+ sign?: "auto" | "never" | "always" | "exceptZero";
57
+ }
58
+ interface CurrencyFormat extends BaseFormat {
59
+ type: "currency";
60
+ currency?: string;
61
+ currencyDisplay?: "symbol" | "narrowSymbol" | "code" | "name";
62
+ minimumFractionDigits?: number;
63
+ maximumFractionDigits?: number;
64
+ thousandsSeparator?: boolean;
65
+ }
66
+ type DateFormatStyle = "short" | "medium" | "long" | "full";
67
+ interface DateFormat extends BaseFormat {
68
+ type: "date";
69
+ format?: string;
70
+ dateStyle?: DateFormatStyle;
71
+ timeStyle?: DateFormatStyle;
72
+ relative?: boolean;
73
+ timezone?: string;
74
+ }
75
+ interface BooleanFormat extends BaseFormat {
76
+ type: "boolean";
77
+ trueText?: string;
78
+ falseText?: string;
79
+ trueIcon?: string;
80
+ falseIcon?: string;
81
+ }
82
+ type EnergyUnit = "Wh" | "kWh" | "MWh" | "GWh";
83
+ interface EnergyFormat extends BaseFormat {
84
+ type: "energy";
85
+ unit?: EnergyUnit;
86
+ autoScale?: boolean;
87
+ decimals?: number;
88
+ }
89
+ type TemperatureUnit = "C" | "F" | "K";
90
+ type TemperatureUnitString = "CELSIUS" | "FAHRENHEIT" | "KELVIN";
91
+ interface TemperatureFormat extends BaseFormat {
92
+ type: "temperature";
93
+ unit?: TemperatureUnit | TemperatureUnitString;
94
+ decimals?: number;
95
+ showUnit?: boolean;
96
+ }
97
+ type DistanceUnit = "m" | "km" | "ft" | "mi" | "yd";
98
+ interface DistanceFormat extends BaseFormat {
99
+ type: "distance";
100
+ unit?: DistanceUnit;
101
+ autoScale?: boolean;
102
+ decimals?: number;
103
+ }
104
+ interface PhoneFormat extends BaseFormat {
105
+ type: "phone";
106
+ country?: string;
107
+ international?: boolean;
108
+ }
109
+ interface CustomFormat extends BaseFormat {
110
+ type: "custom";
111
+ formatter: FormatterFunction;
112
+ options?: Record<string, unknown>;
113
+ }
114
+ type FieldFormat = TextFormat | NumberFormat | CurrencyFormat | DateFormat | BooleanFormat | EnergyFormat | TemperatureFormat | DistanceFormat | PhoneFormat | CustomFormat;
115
+
116
+ /**
117
+ * Boolean formatting utilities
118
+ */
119
+
120
+ /**
121
+ * Format boolean value with custom text
122
+ */
123
+ declare const toBoolean: (value: boolean | null | undefined, trueText?: string, falseText?: string) => string | null;
124
+ /**
125
+ * Format boolean as enabled/disabled
126
+ */
127
+ declare const toEnabledDisabled: (value: boolean | null | undefined) => string | null;
128
+ /**
129
+ * Format boolean as on/off
130
+ */
131
+ declare const toOnOff: (value: boolean | null | undefined) => string | null;
132
+ /**
133
+ * Format boolean as active/inactive
134
+ */
135
+ declare const toActiveInactive: (value: boolean | null | undefined) => string | null;
136
+ /**
137
+ * Format boolean as true/false
138
+ */
139
+ declare const toTrueFalse: (value: boolean | null | undefined) => string | null;
140
+ /**
141
+ * Format boolean as checkmark/cross
142
+ */
143
+ declare const toCheckmark: (value: boolean | null | undefined) => string | null;
144
+ /**
145
+ * Parse various truthy/falsy values to boolean
146
+ */
147
+ declare const parseBoolean: (value: FieldValue) => boolean | null;
148
+ /**
149
+ * Format boolean according to BooleanFormat specification
150
+ */
151
+ declare const formatBoolean: (value: FieldValue, format: BooleanFormat) => FormattedValue;
152
+
153
+ /**
154
+ * Date formatting utilities using Luxon
155
+ */
156
+
157
+ /**
158
+ * Format date to string with various options
159
+ */
160
+ declare const toDateString: (value: string | Date | number | null | undefined, showTime?: boolean, timezone?: string) => string | null;
161
+ /**
162
+ * Format date to relative time (e.g., "2 hours ago")
163
+ */
164
+ declare const toRelativeTime: (value: string | Date | number | null | undefined) => string | null;
165
+ /**
166
+ * Format date with full date and time including weekday
167
+ */
168
+ declare const toFullDateTime: (value: string | Date | number | null | undefined, timezone?: string) => string | null;
169
+ /**
170
+ * Format date to ISO string
171
+ */
172
+ declare const toISOString: (value: string | Date | number | null | undefined) => string | null;
173
+ /**
174
+ * Format date with custom format string
175
+ */
176
+ declare const toCustomDateFormat: (value: string | Date | number | null | undefined, format: string, timezone?: string) => string | null;
177
+ /**
178
+ * Get formatted date parts
179
+ */
180
+ declare const getDateParts: (value: string | Date | number | null | undefined) => {
181
+ year: number;
182
+ month: number;
183
+ day: number;
184
+ weekday: number;
185
+ hour: number;
186
+ minute: number;
187
+ second: number;
188
+ millisecond: number;
189
+ weekdayShort: string | null;
190
+ weekdayLong: string | null;
191
+ monthShort: string | null;
192
+ monthLong: string | null;
193
+ } | null;
194
+ /**
195
+ * Format date according to DateFormat specification
196
+ */
197
+ declare const formatDate: (value: FieldValue, format: DateFormat) => FormattedValue;
198
+
199
+ /**
200
+ * Distance and length formatting utilities
201
+ */
202
+
203
+ /**
204
+ * Format as meters
205
+ */
206
+ declare const toMeters: (value: number | null | undefined, decimals?: number) => string | null;
207
+ /**
208
+ * Format as centimeters
209
+ */
210
+ declare const toCentimeters: (value: number | null | undefined, decimals?: number) => string | null;
211
+ /**
212
+ * Format as millimeters
213
+ */
214
+ declare const toMillimeters: (value: number | null | undefined, decimals?: number) => string | null;
215
+ /**
216
+ * Format as kilometers
217
+ */
218
+ declare const toKilometers: (value: number | null | undefined, decimals?: number) => string | null;
219
+ /**
220
+ * Format as feet
221
+ */
222
+ declare const toFeet: (value: number | null | undefined, decimals?: number) => string | null;
223
+ /**
224
+ * Format as inches
225
+ */
226
+ declare const toInches: (value: number | null | undefined, decimals?: number) => string | null;
227
+ /**
228
+ * Format as miles
229
+ */
230
+ declare const toMiles: (value: number | null | undefined, decimals?: number) => string | null;
231
+ /**
232
+ * Format as yards
233
+ */
234
+ declare const toYards: (value: number | null | undefined, decimals?: number) => string | null;
235
+ /**
236
+ * Format as nautical miles
237
+ */
238
+ declare const toNauticalMiles: (value: number | null | undefined, decimals?: number) => string | null;
239
+ /**
240
+ * Conversion utilities
241
+ */
242
+ declare const metersToFeet: (meters: number) => number;
243
+ declare const feetToMeters: (feet: number) => number;
244
+ declare const milesToKilometers: (miles: number) => number;
245
+ declare const kilometersToMiles: (km: number) => number;
246
+ declare const feetToMiles: (feet: number) => number;
247
+ declare const milesToFeet: (miles: number) => number;
248
+ declare const metersToMiles: (meters: number) => number;
249
+ declare const milesToMeters: (miles: number) => number;
250
+ declare const yardsToMeters: (yards: number) => number;
251
+ declare const metersToYards: (meters: number) => number;
252
+ declare const inchesToCentimeters: (inches: number) => number;
253
+ declare const centimetersToInches: (cm: number) => number;
254
+ /**
255
+ * Auto-scale distance to the most appropriate unit
256
+ */
257
+ declare const autoScaleDistance: (value: number | null | undefined, metric?: boolean, decimals?: number) => string | null;
258
+ /**
259
+ * Format distance according to DistanceFormat specification
260
+ */
261
+ declare const formatDistance: (value: FieldValue, format: DistanceFormat) => FormattedValue;
262
+
263
+ /**
264
+ * Energy, power, and electrical formatting utilities
265
+ */
266
+
267
+ /**
268
+ * Format as Watt-hours
269
+ */
270
+ declare const toWh: (value: number | null | undefined, decimals?: number) => string | null;
271
+ /**
272
+ * Format as kilowatt-hours
273
+ */
274
+ declare const tokWh: (value: number | null | undefined, decimals?: number) => string | null;
275
+ /**
276
+ * Format as megawatt-hours
277
+ */
278
+ declare const toMWh: (value: number | null | undefined, decimals?: number) => string | null;
279
+ /**
280
+ * Format as gigawatt-hours
281
+ */
282
+ declare const toGWh: (value: number | null | undefined, decimals?: number) => string | null;
283
+ /**
284
+ * Auto-scale energy to the most appropriate unit
285
+ */
286
+ declare const autoScaleEnergy: (value: number | null | undefined, decimals?: number) => string | null;
287
+ /**
288
+ * Format as Watts
289
+ */
290
+ declare const toWatts: (value: number | null | undefined) => string | null;
291
+ /**
292
+ * Format as kilowatts
293
+ */
294
+ declare const tokW: (value: number | null | undefined, decimals?: number) => string | null;
295
+ /**
296
+ * Format as megawatts
297
+ */
298
+ declare const toMW: (value: number | null | undefined, decimals?: number) => string | null;
299
+ /**
300
+ * Auto-scale power to the most appropriate unit
301
+ */
302
+ declare const autoScalePower: (value: number | null | undefined, decimals?: number) => string | null;
303
+ /**
304
+ * Format energy according to EnergyFormat specification
305
+ */
306
+ declare const formatEnergy: (value: FieldValue, format: EnergyFormat) => FormattedValue;
307
+ /**
308
+ * Electrical units - Amperage
309
+ */
310
+ declare const toAmps: (value: number | null | undefined, decimals?: number) => string | null;
311
+ /**
312
+ * Electrical units - Voltage
313
+ */
314
+ declare const toVolts: (value: number | null | undefined) => string | null;
315
+ /**
316
+ * Electrical units - Millivolts
317
+ */
318
+ declare const toMillivolts: (value: number | null | undefined) => string | null;
319
+ /**
320
+ * Electrical units - Kilovolts
321
+ */
322
+ declare const toKilovolts: (value: number | null | undefined, decimals?: number) => string | null;
323
+ /**
324
+ * Electrical units - Ohms (resistance)
325
+ */
326
+ declare const toOhms: (value: number | null | undefined, decimals?: number) => string | null;
327
+ /**
328
+ * Electrical units - Milliohms
329
+ */
330
+ declare const toMilliohms: (value: number | null | undefined, decimals?: number) => string | null;
331
+
332
+ /**
333
+ * Number and currency formatting utilities
334
+ */
335
+
336
+ /**
337
+ * Check if a value is null or undefined
338
+ */
339
+ declare const isNil: (value: unknown) => value is null | undefined;
340
+ /**
341
+ * Format as percentage
342
+ */
343
+ declare const toPercentage: (value: number | null | undefined, decimals?: number) => string | null;
344
+ /**
345
+ * Format as integer
346
+ */
347
+ declare const toInteger: (value: number | null | undefined) => string | null;
348
+ /**
349
+ * Format as float with specified decimals
350
+ */
351
+ declare const toFloat: (value: number | null | undefined, decimals?: number) => string | null;
352
+ /**
353
+ * Format number with thousands separator
354
+ */
355
+ declare const toFormattedNumber: (value: number | null | undefined, decimals?: number, thousandsSeparator?: boolean) => string | null;
356
+ /**
357
+ * Format number with compact notation (1K, 1M, etc.)
358
+ */
359
+ declare const toCompactNumber: (value: number | null | undefined, display?: "short" | "long") => string | null;
360
+ /**
361
+ * Format number with scientific notation
362
+ */
363
+ declare const toScientificNotation: (value: number | null | undefined, decimals?: number) => string | null;
364
+ /**
365
+ * Format as currency
366
+ */
367
+ declare const toCurrency: (value: number | null | undefined, currency?: string, options?: Partial<CurrencyFormat>) => string | null;
368
+ /**
369
+ * Format number according to NumberFormat specification
370
+ */
371
+ declare const formatNumber: (value: FieldValue, format: NumberFormat) => FormattedValue;
372
+ /**
373
+ * Format currency according to CurrencyFormat specification
374
+ */
375
+ declare const formatCurrency: (value: FieldValue, format: CurrencyFormat) => FormattedValue;
376
+
377
+ /**
378
+ * Phone number formatting utilities
379
+ */
380
+
381
+ /**
382
+ * Format US phone number
383
+ */
384
+ declare const formatUSPhone: (phone: string | null | undefined) => string | null;
385
+ /**
386
+ * Format international phone number
387
+ */
388
+ declare const formatInternationalPhone: (phone: string | null | undefined) => string | null;
389
+ /**
390
+ * Format phone number with basic formatting
391
+ */
392
+ declare const formatPhoneNumber: (phone: string | null | undefined) => string | null;
393
+ /**
394
+ * Format phone according to PhoneFormat specification
395
+ */
396
+ declare const formatPhone: (value: FieldValue, format: PhoneFormat) => FormattedValue;
397
+
398
+ /**
399
+ * FormatRegistry - A singleton pattern for managing formatters
400
+ * Allows registration and retrieval of formatting functions by key
401
+ */
402
+
403
+ declare class FormatRegistryClass {
404
+ private formatters;
405
+ /**
406
+ * Register a new formatter
407
+ * @param key - Unique identifier for the formatter
408
+ * @param formatter - The formatting function
409
+ */
410
+ register(key: string, formatter: FormatterFunction): void;
411
+ /**
412
+ * Format a value using a registered formatter
413
+ * @param key - The formatter key
414
+ * @param value - The value to format
415
+ * @param args - Additional arguments to pass to the formatter
416
+ * @returns The formatted value or null
417
+ */
418
+ format(key: string, value: FieldValue, ...args: unknown[]): FormattedValue;
419
+ /**
420
+ * Check if a formatter is registered
421
+ * @param key - The formatter key
422
+ * @returns True if the formatter exists
423
+ */
424
+ has(key: string): boolean;
425
+ /**
426
+ * Get all registered formatter keys
427
+ * @returns Array of formatter keys
428
+ */
429
+ keys(): string[];
430
+ /**
431
+ * Remove a formatter
432
+ * @param key - The formatter key to remove
433
+ */
434
+ unregister(key: string): void;
435
+ /**
436
+ * Clear all registered formatters
437
+ */
438
+ clear(): void;
439
+ }
440
+ declare const FormatRegistry: FormatRegistryClass;
441
+
442
+ /**
443
+ * Temperature formatting utilities
444
+ */
445
+
446
+ /**
447
+ * Convert temperature unit string to symbol
448
+ */
449
+ declare const temperatureStringToSymbol: (unit: TemperatureUnitString) => TemperatureUnit;
450
+ /**
451
+ * Format as Fahrenheit
452
+ */
453
+ declare const toFahrenheit: (value: number | null | undefined, decimals?: number) => string | null;
454
+ /**
455
+ * Format as Celsius
456
+ */
457
+ declare const toCelsius: (value: number | null | undefined, fromFahrenheit?: boolean, decimals?: number) => string | null;
458
+ /**
459
+ * Format as Kelvin
460
+ */
461
+ declare const toKelvin: (value: number | null | undefined, fromFahrenheit?: boolean, decimals?: number) => string | null;
462
+ /**
463
+ * Convert Celsius to Fahrenheit
464
+ */
465
+ declare const celsiusToFahrenheit: (celsius: number) => number;
466
+ /**
467
+ * Convert Fahrenheit to Celsius
468
+ */
469
+ declare const fahrenheitToCelsius: (fahrenheit: number) => number;
470
+ /**
471
+ * Convert Celsius to Kelvin
472
+ */
473
+ declare const celsiusToKelvin: (celsius: number) => number;
474
+ /**
475
+ * Convert Kelvin to Celsius
476
+ */
477
+ declare const kelvinToCelsius: (kelvin: number) => number;
478
+ /**
479
+ * Convert Fahrenheit to Kelvin
480
+ */
481
+ declare const fahrenheitToKelvin: (fahrenheit: number) => number;
482
+ /**
483
+ * Convert Kelvin to Fahrenheit
484
+ */
485
+ declare const kelvinToFahrenheit: (kelvin: number) => number;
486
+ /**
487
+ * Format temperature with specified unit
488
+ */
489
+ declare const toTemperature: (value: number | null | undefined, unit?: TemperatureUnit | TemperatureUnitString, decimals?: number) => string | null;
490
+ /**
491
+ * Format temperature according to TemperatureFormat specification
492
+ */
493
+ declare const formatTemperature: (value: FieldValue, format: TemperatureFormat) => FormattedValue;
494
+
495
+ /**
496
+ * Text formatting utilities
497
+ */
498
+
499
+ /**
500
+ * Convert text to uppercase
501
+ */
502
+ declare const toUpperCase: (text: string | null | undefined) => string;
503
+ /**
504
+ * Convert text to lowercase
505
+ */
506
+ declare const toLowerCase: (text: string | null | undefined) => string;
507
+ /**
508
+ * Convert text to sentence case
509
+ */
510
+ declare const toSentenceCase: (text: string | null | undefined) => string;
511
+ /**
512
+ * Convert text to title case
513
+ */
514
+ declare const toTitleCase: (text: string | null | undefined) => string;
515
+ /**
516
+ * Capitalize first letter of each word
517
+ */
518
+ declare const capitalize: (text: string | null | undefined) => string;
519
+ /**
520
+ * Uppercase first letter only
521
+ */
522
+ declare const ucFirst: (text: string | null | undefined) => string;
523
+ /**
524
+ * Convert camelCase to words
525
+ */
526
+ declare const camelCaseToWords: (text: string | null | undefined) => string;
527
+ /**
528
+ * Convert snake_case to words
529
+ */
530
+ declare const snakeCaseToWords: (text: string | null | undefined) => string;
531
+ /**
532
+ * Convert enum-style text to sentence case
533
+ */
534
+ declare const enumToSentenceCase: (text: string | null | undefined) => string;
535
+ /**
536
+ * Truncate text in the middle
537
+ */
538
+ declare const truncateMiddle: (value: string | null | undefined, length?: number) => string;
539
+ /**
540
+ * Truncate text at the start
541
+ */
542
+ declare const truncateStart: (value: string | null | undefined, length?: number) => string;
543
+ /**
544
+ * Truncate text at the end
545
+ */
546
+ declare const truncateEnd: (value: string | null | undefined, length?: number, ellipsis?: string) => string;
547
+ /**
548
+ * Mask sensitive text (e.g., secrets, API keys)
549
+ */
550
+ declare const toSecret: (value: string | null | undefined) => string;
551
+ /**
552
+ * Format text according to TextFormat specification
553
+ */
554
+ declare const formatText: (value: FieldValue, format: TextFormat) => FormattedValue;
555
+
556
+ /**
557
+ * Comprehensive formatting utilities for the Edges design system
558
+ *
559
+ * This module provides a unified formatting system with support for:
560
+ * - Text formatting (case conversion, truncation, etc.)
561
+ * - Number formatting (decimals, thousands separators, compact notation)
562
+ * - Currency formatting (multiple currencies and display options)
563
+ * - Date formatting (relative time, custom formats, timezones)
564
+ * - Boolean formatting (custom true/false text)
565
+ * - Energy units (Wh, kWh, MWh, GWh with auto-scaling)
566
+ * - Temperature units (Celsius, Fahrenheit, Kelvin)
567
+ * - Distance units (meters, kilometers, miles, feet)
568
+ * - Phone number formatting (US and international)
569
+ * - Custom formatters via the FormatRegistry
570
+ */
571
+
572
+ /**
573
+ * Main formatting function that routes to the appropriate formatter
574
+ * based on the format type
575
+ *
576
+ * @param value - The value to format
577
+ * @param format - The format specification
578
+ * @returns The formatted value or null
579
+ *
580
+ * @example
581
+ * ```typescript
582
+ * // Format as currency
583
+ * formatFieldValue(1234.56, { type: "currency", currency: "USD" })
584
+ * // Returns: "$1,234.56"
585
+ *
586
+ * // Format as relative time
587
+ * formatFieldValue(new Date(), { type: "date", relative: true })
588
+ * // Returns: "just now"
589
+ *
590
+ * // Format with custom formatter
591
+ * formatFieldValue("hello", {
592
+ * type: "custom",
593
+ * formatter: (val) => String(val).toUpperCase()
594
+ * })
595
+ * // Returns: "HELLO"
596
+ * ```
597
+ */
598
+ declare const formatFieldValue: (value: FieldValue, format: FieldFormat) => FormattedValue;
599
+ /**
600
+ * Convenience function to create a format object
601
+ *
602
+ * @example
603
+ * ```typescript
604
+ * const currencyFormat = createFormat("currency", { currency: "EUR" });
605
+ * const dateFormat = createFormat("date", { relative: true });
606
+ * ```
607
+ */
608
+ declare const createFormat: <T extends FieldFormat["type"]>(type: T, options?: Omit<Extract<FieldFormat, {
609
+ type: T;
610
+ }>, "type">) => Extract<FieldFormat, {
611
+ type: T;
612
+ }>;
613
+
22
614
  /**
23
615
  * Control-specific style utilities for form elements and interactive components.
24
616
  * These styles use CSS variables defined in the theme for consistent sizing
@@ -36,7 +628,7 @@ interface Item {
36
628
  id: string;
37
629
  name: string;
38
630
  }
39
- interface Section {
631
+ interface Section$1 {
40
632
  name: string;
41
633
  items: Item[];
42
634
  }
@@ -69,7 +661,7 @@ type AutocompleteRequestConfig = RestRequestConfig | GraphQLRequestConfig;
69
661
  interface AutocompleteProps {
70
662
  label?: string;
71
663
  staticItems?: Item[];
72
- sections?: Section[];
664
+ sections?: Section$1[];
73
665
  selectedKey?: Key | null;
74
666
  defaultSelectedKey?: Key | null;
75
667
  onSelectionChange?: (key: Key | null) => void;
@@ -78,7 +670,7 @@ interface AutocompleteProps {
78
670
  placeholder?: string;
79
671
  renderItem?: (item: Item) => React__default.ReactNode;
80
672
  renderLeftIcon?: (isLoading: boolean) => React__default.ReactNode;
81
- renderSection?: (section: Section, children: React__default.ReactNode) => React__default.ReactNode;
673
+ renderSection?: (section: Section$1, children: React__default.ReactNode) => React__default.ReactNode;
82
674
  errorMessage?: string | ((validation: ValidationResult) => string);
83
675
  description?: string;
84
676
  size?: Size;
@@ -826,6 +1418,206 @@ declare function FieldGroup(props: FieldGroupProps): react_jsx_runtime.JSX.Eleme
826
1418
  */
827
1419
  declare function Form(props: FormProps): react_jsx_runtime.JSX.Element;
828
1420
 
1421
+ /**
1422
+ * Grid Component — Flexible layout system for dashboards
1423
+ *
1424
+ * A higher-level abstraction over CSS Grid that provides responsive columns,
1425
+ * consistent spacing, and span helpers for building complex dashboard layouts.
1426
+ *
1427
+ * Usage:
1428
+ * ```tsx
1429
+ * <Grid cols={{ base: 1, md: 2, lg: 4 }} gap="md">
1430
+ * <Grid.Item span={{ base: 1, lg: 2 }}>
1431
+ * <Card>Wide content</Card>
1432
+ * </Grid.Item>
1433
+ * <Grid.Item>
1434
+ * <Card>Regular content</Card>
1435
+ * </Grid.Item>
1436
+ * </Grid>
1437
+ * ```
1438
+ */
1439
+ type ResponsiveValue<T> = T | {
1440
+ base?: T;
1441
+ sm?: T;
1442
+ md?: T;
1443
+ lg?: T;
1444
+ xl?: T;
1445
+ "2xl"?: T;
1446
+ };
1447
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | "none";
1448
+ type GridSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | "full" | "auto";
1449
+ type GridGap = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
1450
+ type GridAlign = "start" | "center" | "end" | "stretch" | "baseline";
1451
+ type GridJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
1452
+ type GridFlow = "row" | "col" | "dense" | "row-dense" | "col-dense";
1453
+ interface GridProps {
1454
+ /** Number of columns at different breakpoints */
1455
+ cols?: ResponsiveValue<GridCols>;
1456
+ /** Gap between grid items using design tokens */
1457
+ gap?: GridGap;
1458
+ /** Gap between rows specifically */
1459
+ gapY?: GridGap;
1460
+ /** Gap between columns specifically */
1461
+ gapX?: GridGap;
1462
+ /** Vertical alignment of items */
1463
+ align?: GridAlign;
1464
+ /** Horizontal justification of the grid */
1465
+ justify?: GridJustify;
1466
+ /** Grid flow direction */
1467
+ flow?: GridFlow;
1468
+ /** Auto-fit mode with minimum item width */
1469
+ autoFit?: string;
1470
+ /** Auto-fill mode with minimum item width */
1471
+ autoFill?: string;
1472
+ /** Additional CSS classes */
1473
+ className?: string;
1474
+ /** Child elements */
1475
+ children?: React__default.ReactNode;
1476
+ }
1477
+ interface GridItemProps {
1478
+ /** Column span at different breakpoints */
1479
+ span?: ResponsiveValue<GridSpan>;
1480
+ /** Column start position */
1481
+ colStart?: ResponsiveValue<number | "auto">;
1482
+ /** Column end position */
1483
+ colEnd?: ResponsiveValue<number | "auto">;
1484
+ /** Row span at different breakpoints */
1485
+ rowSpan?: ResponsiveValue<GridSpan>;
1486
+ /** Row start position */
1487
+ rowStart?: ResponsiveValue<number | "auto">;
1488
+ /** Row end position */
1489
+ rowEnd?: ResponsiveValue<number | "auto">;
1490
+ /** Additional CSS classes */
1491
+ className?: string;
1492
+ /** Child elements */
1493
+ children?: React__default.ReactNode;
1494
+ }
1495
+ declare function Grid({ cols, gap, gapX, gapY, align, justify, flow, autoFit, autoFill, className, children, }: GridProps): react_jsx_runtime.JSX.Element;
1496
+ declare namespace Grid {
1497
+ var Item: typeof GridItem;
1498
+ }
1499
+ declare function GridItem({ span, className, children, }: GridItemProps): react_jsx_runtime.JSX.Element;
1500
+
1501
+ /**
1502
+ * Kpi Component — Single metric display
1503
+ *
1504
+ * Displays a key performance indicator with value, delta, trend, and status.
1505
+ * Designed to work standalone or within a KpiGroup for dashboard layouts.
1506
+ *
1507
+ * Usage:
1508
+ * ```tsx
1509
+ * <Kpi
1510
+ * label="Active Sites"
1511
+ * value={2481}
1512
+ * delta={3.2}
1513
+ * deltaPeriodLabel="vs last 7d"
1514
+ * trend={dataPoints}
1515
+ * />
1516
+ * ```
1517
+ */
1518
+ type KpiStatus = "neutral" | "success" | "warning" | "error" | "info";
1519
+ type KpiSize = "sm" | "md" | "lg";
1520
+ type KpiOrientation = "vertical" | "horizontal";
1521
+ interface TrendPoint {
1522
+ x: number | string | Date;
1523
+ y: number;
1524
+ }
1525
+ interface KpiProps {
1526
+ /** Short label describing the metric */
1527
+ label: React__default.ReactNode;
1528
+ /** Primary value - number for auto-formatting or string for custom display */
1529
+ value: number | string;
1530
+ /** Unit suffix (e.g., "kW", "%", "$") */
1531
+ unit?: string;
1532
+ /** Intl.NumberFormat options for numeric values */
1533
+ format?: Intl.NumberFormatOptions;
1534
+ /** Change since prior period */
1535
+ delta?: number;
1536
+ /** Description of delta period (e.g., "vs last 7d") */
1537
+ deltaPeriodLabel?: string;
1538
+ /** How to interpret delta direction */
1539
+ deltaIntent?: "upIsGood" | "downIsGood";
1540
+ /** Mini trend data points */
1541
+ trend?: TrendPoint[];
1542
+ /** Status indicator */
1543
+ status?: {
1544
+ value: string;
1545
+ tone?: KpiStatus;
1546
+ };
1547
+ /** Help text or tooltip content */
1548
+ helpText?: React__default.ReactNode;
1549
+ /** Size variant */
1550
+ size?: KpiSize;
1551
+ /** Layout orientation */
1552
+ orientation?: KpiOrientation;
1553
+ /** Loading state */
1554
+ loading?: boolean;
1555
+ /** Empty state */
1556
+ empty?: boolean;
1557
+ /** Error state */
1558
+ error?: string | React__default.ReactNode;
1559
+ /** Click handler for drill-down */
1560
+ onClick?: () => void;
1561
+ /** Additional CSS classes */
1562
+ className?: string;
1563
+ /** Custom value renderer */
1564
+ renderValue?: (value: KpiProps["value"]) => React__default.ReactNode;
1565
+ /** Custom delta renderer */
1566
+ renderDelta?: (delta?: number) => React__default.ReactNode;
1567
+ /** Custom trend renderer */
1568
+ renderTrend?: (points?: TrendPoint[]) => React__default.ReactNode;
1569
+ }
1570
+ declare function Kpi({ label, value, unit, format, delta, deltaPeriodLabel, deltaIntent, trend, status, helpText, size, orientation, loading, empty, error, onClick, className, renderValue, renderDelta, renderTrend, }: KpiProps): react_jsx_runtime.JSX.Element;
1571
+
1572
+ /**
1573
+ * KpiGroup Component — Layout container for multiple KPIs
1574
+ *
1575
+ * Provides consistent grid layout for KPI cards with responsive columns
1576
+ * and spacing. Perfect for dashboard metric rows and summary sections.
1577
+ *
1578
+ * Usage:
1579
+ * ```tsx
1580
+ * <KpiGroup cols={{ base: 1, md: 2, lg: 4 }}>
1581
+ * <Kpi label="Revenue" value={45231} />
1582
+ * <Kpi label="Users" value={1234} />
1583
+ * <Kpi label="Conversion" value={0.089} unit="%" />
1584
+ * <Kpi label="Avg Order" value={89.50} unit="$" />
1585
+ * </KpiGroup>
1586
+ * ```
1587
+ */
1588
+ type KpiGroupGap = "xs" | "sm" | "md" | "lg" | "xl";
1589
+ type KpiGroupAlign = "start" | "center" | "stretch";
1590
+ interface KpiGroupCols {
1591
+ base?: number;
1592
+ sm?: number;
1593
+ md?: number;
1594
+ lg?: number;
1595
+ xl?: number;
1596
+ "2xl"?: number;
1597
+ }
1598
+ interface KpiGroupProps {
1599
+ /** KPI components to display */
1600
+ children: React__default.ReactNode;
1601
+ /** Responsive column configuration */
1602
+ cols?: KpiGroupCols | number;
1603
+ /** Gap between items using spacing tokens */
1604
+ gap?: KpiGroupGap;
1605
+ /** Vertical alignment of items */
1606
+ align?: KpiGroupAlign;
1607
+ /** Force equal heights for all items */
1608
+ equalizeHeights?: boolean;
1609
+ /** Optional header content */
1610
+ header?: React__default.ReactNode;
1611
+ /** Loading state for all children */
1612
+ loading?: boolean;
1613
+ /** Additional CSS classes */
1614
+ className?: string;
1615
+ }
1616
+ declare function KpiGroup({ children, cols, gap, align, equalizeHeights, header, loading, className, }: KpiGroupProps): react_jsx_runtime.JSX.Element;
1617
+ declare namespace KpiGroup {
1618
+ var displayName: string;
1619
+ }
1620
+
829
1621
  /**
830
1622
  * ListBox
831
1623
  *
@@ -984,6 +1776,103 @@ interface NumberFieldProps extends Omit<NumberFieldProps$1, "size" | "className"
984
1776
  }
985
1777
  declare function NumberField({ label, description, errorMessage, size, tooltip, isRequired, transparent, validationResult, ...props }: NumberFieldProps): react_jsx_runtime.JSX.Element;
986
1778
 
1779
+ /**
1780
+ * PageLayout — opinionated, SSR-friendly page scaffold for dashboards.
1781
+ *
1782
+ * Structure:
1783
+ * <PageLayout>
1784
+ * <PageLayout.Header title="..." subtitle="..." breadcrumbs={[...]} />
1785
+ * <PageLayout.Actions primary={<Button/>} secondary={<Button/>} />
1786
+ * <PageLayout.Filters>...chips/search/time...</PageLayout.Filters>
1787
+ * <PageLayout.Tabs tabs={[...]} value=... onChange=... />
1788
+ * <PageLayout.Content>
1789
+ * <Grid cols={{ base: 1, lg: 4 }} gap="lg">
1790
+ * ...cards/tables/content...
1791
+ * </Grid>
1792
+ * </PageLayout.Content>
1793
+ * <PageLayout.Aside>...sticky insights/help...</PageLayout.Aside>
1794
+ * </PageLayout>
1795
+ *
1796
+ * Notes:
1797
+ * - Router-agnostic: Breadcrumbs accept either structured items with a Link component, or a custom ReactNode.
1798
+ * - Accessible: Header uses h1; Tabs are roving-`tablist`; Filters region has landmark role.
1799
+ * - Composable: Use with Grid component for layouts, Card for content containers.
1800
+ * - Styling: token-oriented utility classes (match to your Tailwind preset/tokens).
1801
+ */
1802
+ type BreadcrumbItem = {
1803
+ label: string;
1804
+ href?: string;
1805
+ };
1806
+ type PageLayoutProps = {
1807
+ children: React$1.ReactNode;
1808
+ /** Constrain width and apply default page rhythm */
1809
+ maxWidth?: number;
1810
+ paddingXClass?: string;
1811
+ paddingYClass?: string;
1812
+ className?: string;
1813
+ };
1814
+ declare function PageLayout({ children, maxWidth, paddingXClass, paddingYClass, className, }: PageLayoutProps): react_jsx_runtime.JSX.Element;
1815
+ declare namespace PageLayout {
1816
+ var Header: typeof Header;
1817
+ var Actions: typeof Actions;
1818
+ var Filters: typeof Filters;
1819
+ var Tabs: typeof Tabs$1;
1820
+ var Content: typeof Content;
1821
+ var Aside: typeof Aside$1;
1822
+ }
1823
+ type PageHeaderProps = {
1824
+ title: React$1.ReactNode;
1825
+ subtitle?: React$1.ReactNode;
1826
+ breadcrumbs?: BreadcrumbItem[];
1827
+ /** Custom breadcrumbs node if you don't want the built-in renderer */
1828
+ breadcrumbsNode?: React$1.ReactNode;
1829
+ /** Optional right-aligned meta area (badges, status, small stats) */
1830
+ meta?: React$1.ReactNode;
1831
+ /** Optional slot to replace the default heading element */
1832
+ headingAs?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
1833
+ className?: string;
1834
+ };
1835
+ declare function Header({ title, subtitle, breadcrumbs, breadcrumbsNode, meta, headingAs, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
1836
+ type PageActionsProps = {
1837
+ primary?: React$1.ReactNode;
1838
+ secondary?: React$1.ReactNode;
1839
+ children?: React$1.ReactNode;
1840
+ align?: "start" | "end";
1841
+ className?: string;
1842
+ };
1843
+ declare function Actions({ primary, secondary, children, align, className, }: PageActionsProps): react_jsx_runtime.JSX.Element;
1844
+ type PageFiltersProps = {
1845
+ children: React$1.ReactNode;
1846
+ className?: string;
1847
+ ariaLabel?: string;
1848
+ };
1849
+ declare function Filters({ children, className, ariaLabel }: PageFiltersProps): react_jsx_runtime.JSX.Element;
1850
+ type Tab$1 = {
1851
+ id: string;
1852
+ label: React$1.ReactNode;
1853
+ disabled?: boolean;
1854
+ };
1855
+ type TabsProps = {
1856
+ tabs: Tab$1[];
1857
+ value?: string;
1858
+ defaultValue?: string;
1859
+ onChange?: (id: string) => void;
1860
+ className?: string;
1861
+ };
1862
+ declare function Tabs$1({ tabs, value, defaultValue, onChange, className }: TabsProps): react_jsx_runtime.JSX.Element;
1863
+ type PageContentProps = {
1864
+ children: React$1.ReactNode;
1865
+ className?: string;
1866
+ };
1867
+ declare function Content({ children, className }: PageContentProps): react_jsx_runtime.JSX.Element;
1868
+ type PageAsideProps = {
1869
+ children: React$1.ReactNode;
1870
+ /** Sticky aside on wide screens */
1871
+ sticky?: boolean;
1872
+ className?: string;
1873
+ };
1874
+ declare function Aside$1({ children, sticky, className }: PageAsideProps): react_jsx_runtime.JSX.Element;
1875
+
987
1876
  interface Place {
988
1877
  id: string;
989
1878
  place_name: string;
@@ -1070,6 +1959,50 @@ interface RangeCalendarProps<T extends DateValue> extends Omit<RangeCalendarProp
1070
1959
  }
1071
1960
  declare function RangeCalendar<T extends DateValue>({ errorMessage, ...props }: RangeCalendarProps<T>): react_jsx_runtime.JSX.Element;
1072
1961
 
1962
+ /**
1963
+ * Section Component — Semantic content grouping for dashboards
1964
+ *
1965
+ * A lightweight container that provides structure and hierarchy to page content.
1966
+ * Less heavy than a Card, more structured than a div. Perfect for organizing
1967
+ * related content with consistent spacing and optional headers.
1968
+ *
1969
+ * Usage:
1970
+ * ```tsx
1971
+ * <Section
1972
+ * title="Overview"
1973
+ * description="Key metrics and performance indicators"
1974
+ * actions={<Button variant="ghost" size="sm">Refresh</Button>}
1975
+ * >
1976
+ * <Grid cols={{ base: 1, lg: 3 }}>
1977
+ * <Card>...</Card>
1978
+ * </Grid>
1979
+ * </Section>
1980
+ * ```
1981
+ */
1982
+ type SectionVariant = "plain" | "contained" | "bordered";
1983
+ type SectionSpacing = "none" | "sm" | "md" | "lg";
1984
+ interface SectionProps {
1985
+ /** Section title */
1986
+ title?: React__default.ReactNode;
1987
+ /** Optional description/subtitle */
1988
+ description?: React__default.ReactNode;
1989
+ /** Actions slot (buttons, links, etc.) */
1990
+ actions?: React__default.ReactNode;
1991
+ /** Visual variant */
1992
+ variant?: SectionVariant;
1993
+ /** Vertical spacing around section */
1994
+ spacing?: SectionSpacing;
1995
+ /** Show divider under header */
1996
+ withDivider?: boolean;
1997
+ /** Heading level for accessibility */
1998
+ headingAs?: "h2" | "h3" | "h4";
1999
+ /** Additional CSS classes */
2000
+ className?: string;
2001
+ /** Section content */
2002
+ children?: React__default.ReactNode;
2003
+ }
2004
+ declare function Section({ title, description, actions, variant, spacing, withDivider, headingAs, className, children, }: SectionProps): react_jsx_runtime.JSX.Element;
2005
+
1073
2006
  /**
1074
2007
  * Interface defining the shape of items in the Select component
1075
2008
  */
@@ -1155,6 +2088,155 @@ interface SliderProps {
1155
2088
  }
1156
2089
  declare function Slider({ label, description, tooltip, errorMessage, size, className, value, defaultValue, onChange, min, max, step, disabled, showValue, }: SliderProps): react_jsx_runtime.JSX.Element;
1157
2090
 
2091
+ /**
2092
+ * SplitPane Component — Resizable two-panel layout
2093
+ *
2094
+ * A layout primitive for side-by-side content with a draggable divider.
2095
+ * Perfect for list/detail views, dashboards with inspectors, or any
2096
+ * main/aside layout that benefits from user-controlled sizing.
2097
+ *
2098
+ * Usage:
2099
+ * ```tsx
2100
+ * <SplitPane defaultSize={0.7} minSize={280} maxSize={480}>
2101
+ * <SplitPane.Main>
2102
+ * <DataTable />
2103
+ * </SplitPane.Main>
2104
+ * <SplitPane.Aside>
2105
+ * <Inspector />
2106
+ * </SplitPane.Aside>
2107
+ * </SplitPane>
2108
+ * ```
2109
+ */
2110
+ type SplitPaneOrientation = "horizontal" | "vertical";
2111
+ interface SplitPaneProps {
2112
+ /** Initial size of the main panel (0-1 for ratio, or px value) */
2113
+ defaultSize?: number;
2114
+ /** Minimum size of aside panel in pixels */
2115
+ minSize?: number;
2116
+ /** Maximum size of aside panel in pixels */
2117
+ maxSize?: number;
2118
+ /** Orientation of the split */
2119
+ orientation?: SplitPaneOrientation;
2120
+ /** Whether the divider is draggable */
2121
+ resizable?: boolean;
2122
+ /** Callback when resize occurs */
2123
+ onResize?: (size: number) => void;
2124
+ /** Additional CSS classes */
2125
+ className?: string;
2126
+ /** Child panels */
2127
+ children?: React__default.ReactNode;
2128
+ }
2129
+ interface SplitPanePanelProps {
2130
+ className?: string;
2131
+ children?: React__default.ReactNode;
2132
+ }
2133
+ declare function SplitPane({ defaultSize, minSize, maxSize, orientation, resizable, onResize, className, children, }: SplitPaneProps): react_jsx_runtime.JSX.Element;
2134
+ declare namespace SplitPane {
2135
+ var Main: typeof Main;
2136
+ var Aside: typeof Aside;
2137
+ }
2138
+ declare function Main({ className, children }: SplitPanePanelProps): react_jsx_runtime.JSX.Element;
2139
+ declare function Aside({ className, children }: SplitPanePanelProps): react_jsx_runtime.JSX.Element;
2140
+
2141
+ /**
2142
+ * StatList Component — Compact key-value statistics display
2143
+ *
2144
+ * Display a list of labeled statistics with formatting, status indicators,
2145
+ * and optional actions. Perfect for detail panels, inspectors, and spec sheets.
2146
+ *
2147
+ * Usage:
2148
+ * ```tsx
2149
+ * <StatList
2150
+ * items={[
2151
+ * { id: "voltage", label: "Voltage", value: 241, unit: "V" },
2152
+ * { id: "status", label: "Status", value: "Online", tone: "success" },
2153
+ * { id: "updated", label: "Last Update", value: new Date() }
2154
+ * ]}
2155
+ * />
2156
+ * ```
2157
+ */
2158
+ type StatTone = "neutral" | "success" | "warning" | "error" | "info";
2159
+ type StatAlign = "start" | "end";
2160
+ type StatLayout = "one-column" | "two-column";
2161
+ type StatValue = string | number | boolean | Date | null | undefined;
2162
+ type StatFormatter = ((value: StatValue) => React__default.ReactNode) | {
2163
+ type: "number";
2164
+ options?: Intl.NumberFormatOptions;
2165
+ unit?: string;
2166
+ } | {
2167
+ type: "date";
2168
+ options?: Intl.DateTimeFormatOptions;
2169
+ } | {
2170
+ type: "duration";
2171
+ base?: "seconds" | "ms";
2172
+ } | {
2173
+ type: "bool";
2174
+ trueLabel?: string;
2175
+ falseLabel?: string;
2176
+ } | {
2177
+ type: "string";
2178
+ transform?: "uppercase" | "lowercase" | "capitalize";
2179
+ };
2180
+ interface StatThreshold {
2181
+ when: (value: StatValue) => boolean;
2182
+ tone: StatTone;
2183
+ }
2184
+ interface StatItem {
2185
+ /** Unique identifier */
2186
+ id: string;
2187
+ /** Label for the statistic */
2188
+ label: React__default.ReactNode;
2189
+ /** Value to display */
2190
+ value: StatValue;
2191
+ /** Custom formatter for the value */
2192
+ formatter?: StatFormatter;
2193
+ /** Unit to append to formatted value */
2194
+ unit?: string;
2195
+ /** Additional metadata below value */
2196
+ meta?: React__default.ReactNode;
2197
+ /** Explicit tone/status color */
2198
+ tone?: StatTone;
2199
+ /** Data-driven tone based on value */
2200
+ thresholds?: StatThreshold[];
2201
+ /** Enable copy to clipboard */
2202
+ copyable?: boolean | ((value: StatValue) => string);
2203
+ /** Optional link URL */
2204
+ href?: string;
2205
+ /** Click handler */
2206
+ onAction?: () => void;
2207
+ /** Icon before label */
2208
+ iconLeft?: React__default.ReactNode;
2209
+ /** Icon after value */
2210
+ iconRight?: React__default.ReactNode;
2211
+ /** Tooltip for additional info */
2212
+ tooltip?: React__default.ReactNode;
2213
+ /** Disabled state */
2214
+ disabled?: boolean;
2215
+ }
2216
+ interface StatListProps {
2217
+ /** Statistics to display */
2218
+ items: StatItem[];
2219
+ /** Layout mode */
2220
+ layout?: StatLayout;
2221
+ /** Compact spacing */
2222
+ dense?: boolean;
2223
+ /** Value alignment */
2224
+ valueAlign?: StatAlign;
2225
+ /** Show dividers between items */
2226
+ showDividers?: boolean;
2227
+ /** Loading state */
2228
+ skeleton?: boolean;
2229
+ /** Empty state */
2230
+ empty?: boolean;
2231
+ /** Error state */
2232
+ error?: string | React__default.ReactNode;
2233
+ /** Additional CSS classes */
2234
+ className?: string;
2235
+ /** Copy callback */
2236
+ onCopy?: (text: string, id: string) => void;
2237
+ }
2238
+ declare function StatList({ items, layout, dense, valueAlign, showDividers, skeleton, empty, error, className, onCopy, }: StatListProps): react_jsx_runtime.JSX.Element;
2239
+
1158
2240
  interface SwitchProps extends Omit<SwitchProps$1, "children"> {
1159
2241
  children: React__default.ReactNode;
1160
2242
  }
@@ -1169,7 +2251,7 @@ type TabProps = TabProps$1 & {
1169
2251
  *
1170
2252
  * Tabbed interface with styled tabs and panels.
1171
2253
  */
1172
- declare function Tabs(props: TabsProps): react_jsx_runtime.JSX.Element;
2254
+ declare function Tabs(props: TabsProps$1): react_jsx_runtime.JSX.Element;
1173
2255
  /**
1174
2256
  * TabList container.
1175
2257
  */
@@ -1326,4 +2408,4 @@ interface ColorModeProviderProps {
1326
2408
  }
1327
2409
  declare const ColorModeProvider: React.FC<ColorModeProviderProps>;
1328
2410
 
1329
- export { type Action, ActionCell, type ActionCellProps, AreaSeries, AutoMobileRenderer, Autocomplete, BarSeries, BaseDataPoint, type BaseInputProps, type BaseProps, BooleanCell, type BooleanCellProps, Breadcrumb, Breadcrumbs, Button, Calendar, CardMobileRenderer, type CellAlignment, type CellComponent, type CellComponentProps, type CellContext, type CellEmphasis, ChartAxis, ChartBottomBar, ChartContainer, type ChartExportMetadata, ChartTooltip, Checkbox, CheckboxGroup, Chip, ClearButton, ColorModeProvider, type Column, CopyToClipboard, DataTable, type DataTableProps, DateCell, type DateCellProps, DateRangePicker, Description, type DescriptionProps, Dialog, DialogHeader, Drawer, ErrorBoundary, type ExportType, FieldError, type FieldErrorProps, FieldGroup, type FieldGroupProps, Form, Icon, Input, type InputProps, type InputStyleProps, InputWrapper, Label, type LabelProps, LineSeries, type LinkBehavior, ListBox, ListBoxItem, type MobileBreakpoint, type MobileConfig, type MobileRenderer, Notice, NoticeContainer, type NoticeContainerProps, type NoticeOptions, type NoticeProps, NoticeProvider, type NoticeProviderProps, type NoticeVariant, NumberCell, type NumberCellProps, NumberField, PlaceSearch, Popover, ProgressBar, Radio, RadioGroup, RangeCalendar, SKELETON_SIZES, Select, SelectCell, type SelectCellProps, Skeleton, Slider, type SortConfig, type SortDirection, Switch, Tab, TabList, TabPanel, type TableDensity, type TableLayout, type TableWidth, Tabs, TextArea, TextAreaWithChips, TextCell, type TextCellProps, TextField, TimeField, ToggleButton, Tooltip, TooltipData, YFormatType, exportChart, formatEmptyValue, getBadgeClasses, getBooleanBadgeVariant, getCellAlignmentClasses, getCellContainerClasses, getCellTextClasses, getExportFormatName, getFieldGroupStyles, getInputBackgroundStyles, getInputBaseStyles, getInputStateStyles, getNumericColorClasses, getSkeletonSize, isExportSupported, resolveValue, useColorMode, useDebounce, useInputFocus, useLocalStorage, useNotice };
2411
+ export { type Action, ActionCell, type ActionCellProps, AreaSeries, AutoMobileRenderer, Autocomplete, BarSeries, BaseDataPoint, type BaseFormat, type BaseInputProps, type BaseProps, BooleanCell, type BooleanCellProps, type BooleanFormat, Breadcrumb, type BreadcrumbItem, Breadcrumbs, Button, Calendar, CardMobileRenderer, type CellAlignment, type CellComponent, type CellComponentProps, type CellContext, type CellEmphasis, ChartAxis, ChartBottomBar, ChartContainer, type ChartExportMetadata, ChartTooltip, Checkbox, CheckboxGroup, Chip, ClearButton, ColorModeProvider, type Column, CopyToClipboard, type CurrencyFormat, type CustomFormat, DataTable, type DataTableProps, DateCell, type DateCellProps, type DateFormat, type DateFormatStyle, DateRangePicker, Description, type DescriptionProps, Dialog, DialogHeader, type DistanceFormat, type DistanceUnit, Drawer, type EnergyFormat, type EnergyUnit, ErrorBoundary, type ExportType, FieldError, type FieldErrorProps, type FieldFormat, FieldGroup, type FieldGroupProps, type FieldValue, Form, FormatRegistry, type FormattedValue, type FormatterFunction, Grid, type GridAlign, type GridCols, type GridFlow, type GridGap, type GridItemProps, type GridJustify, type GridProps, type GridSpan, Icon, Input, type InputProps, type InputStyleProps, InputWrapper, Kpi, KpiGroup, type KpiGroupAlign, type KpiGroupCols, type KpiGroupGap, type KpiGroupProps, type KpiOrientation, type KpiProps, type KpiSize, type KpiStatus, Label, type LabelProps, LineSeries, type LinkBehavior, ListBox, ListBoxItem, type MobileBreakpoint, type MobileConfig, type MobileRenderer, Notice, NoticeContainer, type NoticeContainerProps, type NoticeOptions, type NoticeProps, NoticeProvider, type NoticeProviderProps, type NoticeVariant, NumberCell, type NumberCellProps, NumberField, type NumberFormat, type PageActionsProps, type PageAsideProps, type PageContentProps, type PageFiltersProps, type PageHeaderProps, PageLayout, type PageLayoutProps, type PhoneFormat, PlaceSearch, Popover, ProgressBar, Radio, RadioGroup, RangeCalendar, type ResponsiveValue, SKELETON_SIZES, Section, type SectionProps, type SectionSpacing, type SectionVariant, Select, SelectCell, type SelectCellProps, Skeleton, Slider, type SortConfig, type SortDirection, SplitPane, type SplitPaneOrientation, type SplitPanePanelProps, type SplitPaneProps, type StatAlign, type StatFormatter, type StatItem, type StatLayout, StatList, type StatListProps, type StatThreshold, type StatTone, type StatValue, Switch, Tab, TabList, TabPanel, type TableDensity, type TableLayout, type TableWidth, Tabs, type TabsProps, type TemperatureFormat, type TemperatureUnit, type TemperatureUnitString, TextArea, TextAreaWithChips, TextCell, type TextCellProps, TextField, type TextFormat, type TextTransform, type TextTruncatePosition, TimeField, ToggleButton, Tooltip, TooltipData, type TrendPoint, YFormatType, autoScaleDistance, autoScaleEnergy, autoScalePower, camelCaseToWords, capitalize, celsiusToFahrenheit, celsiusToKelvin, centimetersToInches, createFormat, enumToSentenceCase, exportChart, fahrenheitToCelsius, fahrenheitToKelvin, feetToMeters, feetToMiles, formatBoolean, formatCurrency, formatDate, formatDistance, formatEmptyValue, formatEnergy, formatFieldValue, formatInternationalPhone, formatNumber, formatPhone, formatPhoneNumber, formatTemperature, formatText, formatUSPhone, getBadgeClasses, getBooleanBadgeVariant, getCellAlignmentClasses, getCellContainerClasses, getCellTextClasses, getDateParts, getExportFormatName, getFieldGroupStyles, getInputBackgroundStyles, getInputBaseStyles, getInputStateStyles, getNumericColorClasses, getSkeletonSize, inchesToCentimeters, isExportSupported, isNil, kelvinToCelsius, kelvinToFahrenheit, kilometersToMiles, metersToFeet, metersToMiles, metersToYards, milesToFeet, milesToKilometers, milesToMeters, parseBoolean, resolveValue, snakeCaseToWords, temperatureStringToSymbol, toActiveInactive, toAmps, toBoolean, toCelsius, toCentimeters, toCheckmark, toCompactNumber, toCurrency, toCustomDateFormat, toDateString, toEnabledDisabled, toFahrenheit, toFeet, toFloat, toFormattedNumber, toFullDateTime, toGWh, toISOString, toInches, toInteger, toKelvin, toKilometers, toKilovolts, toLowerCase, toMW, toMWh, toMeters, toMiles, toMillimeters, toMilliohms, toMillivolts, toNauticalMiles, toOhms, toOnOff, toPercentage, toRelativeTime, toScientificNotation, toSecret, toSentenceCase, toTemperature, toTitleCase, toTrueFalse, toUpperCase, toVolts, toWatts, toWh, toYards, tokW, tokWh, truncateEnd, truncateMiddle, truncateStart, ucFirst, useColorMode, useDebounce, useInputFocus, useLocalStorage, useNotice, yardsToMeters };