@datatechsolutions/ui 2.11.48 → 2.11.49

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.
Files changed (35) hide show
  1. package/dist/astrlabe/contracts.d.mts +309 -0
  2. package/dist/astrlabe/contracts.d.ts +309 -0
  3. package/dist/astrlabe/graph-node.d.mts +28 -0
  4. package/dist/astrlabe/graph-node.d.ts +28 -0
  5. package/dist/astrlabe/index.d.mts +749 -0
  6. package/dist/astrlabe/index.d.ts +749 -0
  7. package/dist/astrlabe/index.js +108 -108
  8. package/dist/astrlabe/index.mjs +2 -2
  9. package/dist/astrlabe/utils.d.mts +71 -0
  10. package/dist/astrlabe/utils.d.ts +71 -0
  11. package/dist/astrlabe/workflow-canvas.d.mts +5 -0
  12. package/dist/astrlabe/workflow-canvas.d.ts +5 -0
  13. package/dist/astrlabe/workflow-canvas.js +2 -2
  14. package/dist/astrlabe/workflow-canvas.mjs +1 -1
  15. package/dist/astrlabe/workflow-preview-canvas.d.mts +10 -0
  16. package/dist/astrlabe/workflow-preview-canvas.d.ts +10 -0
  17. package/dist/brand/index.d.mts +85 -0
  18. package/dist/brand/index.d.ts +85 -0
  19. package/dist/{chunk-XDS3RWPA.mjs → chunk-2PDBTL32.mjs} +9 -13
  20. package/dist/chunk-2PDBTL32.mjs.map +1 -0
  21. package/dist/{chunk-NWELMK3Y.js → chunk-BN5S4O4N.js} +9 -13
  22. package/dist/chunk-BN5S4O4N.js.map +1 -0
  23. package/dist/dynamic-island-confirm-Bw24Ll2r.d.mts +114 -0
  24. package/dist/dynamic-island-confirm-Bw24Ll2r.d.ts +114 -0
  25. package/dist/index.d.mts +4673 -0
  26. package/dist/index.d.ts +4673 -0
  27. package/dist/lib/i18n-context.d.mts +36 -0
  28. package/dist/lib/i18n-context.d.ts +36 -0
  29. package/dist/lib/router-context.d.mts +35 -0
  30. package/dist/lib/router-context.d.ts +35 -0
  31. package/dist/workflow-canvas-D4928AfA.d.mts +273 -0
  32. package/dist/workflow-canvas-NSxfr5dy.d.ts +273 -0
  33. package/package.json +1 -1
  34. package/dist/chunk-NWELMK3Y.js.map +0 -1
  35. package/dist/chunk-XDS3RWPA.mjs.map +0 -1
@@ -0,0 +1,4673 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as Headless from '@headlessui/react';
3
+ import { ButtonProps as ButtonProps$1 } from '@headlessui/react';
4
+ import * as React$1 from 'react';
5
+ import React__default, { HTMLAttributes, ReactNode, InputHTMLAttributes, SelectHTMLAttributes, ComponentType, TextareaHTMLAttributes, FormEvent, SVGProps } from 'react';
6
+ import { a as GlassModalIdentity } from './dynamic-island-confirm-Bw24Ll2r.js';
7
+ export { D as DynamicIslandConfirm, b as GlassModal, c as GlassModalProps, d as GlassModalSection, e as GlassModalSidebar, G as GlassModalSize } from './dynamic-island-confirm-Bw24Ll2r.js';
8
+ export { I18nContextValue, I18nFormatter, I18nProvider, I18nProviderProps, createI18nFromMessages, useFormatter, useLocale, useTranslations } from './lib/i18n-context.js';
9
+ export { LinkComponent, RouterContextValue, RouterProvider, RouterProviderProps, useLink, usePathname, useRouter } from './lib/router-context.js';
10
+ import { Variants, Transition } from 'framer-motion';
11
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
12
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
13
+ import * as zustand from 'zustand';
14
+
15
+ declare const Link: React__default.ForwardRefExoticComponent<{
16
+ href: string;
17
+ children?: React__default.ReactNode;
18
+ } & Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & React__default.RefAttributes<HTMLAnchorElement>>;
19
+
20
+ /**
21
+ * Button Styles Module
22
+ * ====================
23
+ *
24
+ * Centralized style definitions for all button variants.
25
+ * Extracted from button.tsx for better maintainability.
26
+ */
27
+ declare const iosColors$1: {
28
+ 'ios-glass-blue': string[];
29
+ 'ios-glass-red': string[];
30
+ 'ios-glass-green': string[];
31
+ 'ios-blue': string[];
32
+ 'ios-red': string[];
33
+ 'ios-green': string[];
34
+ 'ios-orange': string[];
35
+ 'ios-purple': string[];
36
+ 'ios-teal': string[];
37
+ };
38
+ declare const sizeStyles: {
39
+ xs: string;
40
+ sm: string;
41
+ md: string;
42
+ lg: string;
43
+ xl: string;
44
+ };
45
+ declare const styles: {
46
+ base: string[];
47
+ solid: string[];
48
+ outline: string[];
49
+ plain: string[];
50
+ gradient: string[];
51
+ colors: {
52
+ 'dark/zinc': string[];
53
+ light: string[];
54
+ 'dark/white': string[];
55
+ dark: string[];
56
+ white: string[];
57
+ zinc: string[];
58
+ indigo: string[];
59
+ cyan: string[];
60
+ red: string[];
61
+ orange: string[];
62
+ amber: string[];
63
+ yellow: string[];
64
+ lime: string[];
65
+ green: string[];
66
+ emerald: string[];
67
+ teal: string[];
68
+ sky: string[];
69
+ blue: string[];
70
+ violet: string[];
71
+ purple: string[];
72
+ fuchsia: string[];
73
+ pink: string[];
74
+ rose: string[];
75
+ };
76
+ };
77
+ declare const fabSizes: {
78
+ sm: string;
79
+ md: string;
80
+ lg: string;
81
+ };
82
+ declare const fabPositions: {
83
+ 'bottom-right': string;
84
+ 'bottom-left': string;
85
+ 'bottom-center': string;
86
+ };
87
+ declare const fabColors: {
88
+ 'ios-blue': string;
89
+ 'ios-green': string;
90
+ 'ios-red': string;
91
+ 'ios-purple': string;
92
+ 'ios-orange': string;
93
+ };
94
+ declare const iconButtonSizes: {
95
+ sm: string;
96
+ md: string;
97
+ lg: string;
98
+ };
99
+ type ColorType = keyof typeof styles.colors | keyof typeof iosColors$1;
100
+ type SizeType = keyof typeof sizeStyles;
101
+ type FABColorType = keyof typeof fabColors;
102
+ type FABPositionType = keyof typeof fabPositions;
103
+ type FABSizeType = keyof typeof fabSizes;
104
+ type IconButtonSizeType = keyof typeof iconButtonSizes;
105
+
106
+ type ButtonProps = ({
107
+ color?: ColorType;
108
+ outline?: never;
109
+ plain?: never;
110
+ gradient?: never;
111
+ } | {
112
+ color?: never;
113
+ outline: true;
114
+ plain?: never;
115
+ gradient?: never;
116
+ } | {
117
+ color?: never;
118
+ outline?: never;
119
+ plain: true;
120
+ gradient?: never;
121
+ } | {
122
+ color?: never;
123
+ outline?: never;
124
+ plain?: never;
125
+ gradient: true;
126
+ }) & {
127
+ className?: string;
128
+ children: React__default.ReactNode;
129
+ /** Make button pill-shaped (fully rounded) */
130
+ pill?: boolean;
131
+ /** Button size */
132
+ size?: SizeType;
133
+ /** Show loading spinner */
134
+ loading?: boolean;
135
+ /** Loading text (optional) */
136
+ loadingText?: string;
137
+ /** Full width button */
138
+ fullWidth?: boolean;
139
+ /** Destructive action (uses iOS red) */
140
+ destructive?: boolean;
141
+ } & (({
142
+ href?: never;
143
+ } & Omit<ButtonProps$1, 'as' | 'className'>) | ({
144
+ href: string;
145
+ } & Omit<React__default.ComponentPropsWithoutRef<typeof Link>, 'className'>));
146
+ declare const Button: React__default.ForwardRefExoticComponent<(ButtonProps & {
147
+ disabled?: boolean;
148
+ }) & React__default.RefAttributes<HTMLElement>>;
149
+ /**
150
+ * Expand the hit area to at least 44×44px on touch devices
151
+ */
152
+ declare function TouchTarget({ children }: {
153
+ children: React__default.ReactNode;
154
+ }): react_jsx_runtime.JSX.Element;
155
+ /**
156
+ * Floating Action Button (FAB) - iOS style
157
+ * Fixed position button typically in bottom-right corner
158
+ */
159
+ type FABProps = {
160
+ /** Icon to display */
161
+ icon: React__default.ReactNode;
162
+ /** Optional label (shows on hover/focus) */
163
+ label?: string;
164
+ /** Button color */
165
+ color?: FABColorType;
166
+ /** Size variant */
167
+ size?: FABSizeType;
168
+ /** Position on screen */
169
+ position?: FABPositionType;
170
+ /** Click handler */
171
+ onClick?: () => void;
172
+ /** Show loading state */
173
+ loading?: boolean;
174
+ /** Custom class */
175
+ className?: string;
176
+ /** Extended FAB with label always visible */
177
+ extended?: boolean;
178
+ };
179
+ declare function FloatingActionButton({ icon, label, color, size, position, onClick, loading, className, extended, }: FABProps): react_jsx_runtime.JSX.Element;
180
+ /**
181
+ * Icon Button - Compact button with just an icon
182
+ */
183
+ type IconButtonProps = {
184
+ icon: React__default.ReactNode;
185
+ label: string;
186
+ color?: ColorType;
187
+ size?: IconButtonSizeType;
188
+ variant?: 'solid' | 'ghost' | 'outline';
189
+ onClick?: () => void;
190
+ disabled?: boolean;
191
+ loading?: boolean;
192
+ className?: string;
193
+ destructive?: boolean;
194
+ };
195
+ declare function IconButton({ icon, label, color, size, variant, onClick, disabled, loading, className, destructive, }: IconButtonProps): react_jsx_runtime.JSX.Element;
196
+
197
+ type CardProps = HTMLAttributes<HTMLDivElement> & {
198
+ /** Card style variant */
199
+ variant?: "default" | "gradient" | "glass" | "elevated";
200
+ /** Enable hover lift animation */
201
+ interactive?: boolean;
202
+ /** Enable press animation */
203
+ pressable?: boolean;
204
+ /** Click handler (enables pressable automatically) */
205
+ onPress?: () => void;
206
+ };
207
+ declare function Card({ className, variant, interactive, pressable, onPress, ...props }: CardProps): react_jsx_runtime.JSX.Element;
208
+ declare function CardHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
209
+ declare function CardTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>): react_jsx_runtime.JSX.Element;
210
+ declare function CardDescription({ className, ...props }: HTMLAttributes<HTMLParagraphElement>): react_jsx_runtime.JSX.Element;
211
+ declare function CardContent({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
212
+ declare function CardFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
213
+ declare function CardDivider({ className }: {
214
+ className?: string;
215
+ }): react_jsx_runtime.JSX.Element;
216
+ type SectionCardHeaderProps = {
217
+ icon?: ReactNode;
218
+ title: string;
219
+ subtitle?: string;
220
+ /** Gradient classes for the icon background */
221
+ gradient?: string;
222
+ /** Optional content on the right side */
223
+ rightContent?: ReactNode;
224
+ };
225
+ type SectionCardProps = {
226
+ /** Card header configuration */
227
+ header: SectionCardHeaderProps;
228
+ /** Card body content */
229
+ children: ReactNode;
230
+ /** Additional className for the card container */
231
+ className?: string;
232
+ /** Whether to add padding to the body (default: true) */
233
+ padded?: boolean;
234
+ /** Card variant */
235
+ variant?: "default" | "gradient" | "glass" | "elevated";
236
+ };
237
+ /**
238
+ * Section Card with gradient icon header
239
+ * Used across dashboard pages for consistent section styling
240
+ */
241
+ declare function SectionCard({ header, children, className, padded, variant, }: SectionCardProps): react_jsx_runtime.JSX.Element;
242
+ type ListCardProps = {
243
+ children: ReactNode;
244
+ className?: string;
245
+ variant?: "default" | "glass";
246
+ };
247
+ declare function ListCard({ children, className, variant }: ListCardProps): react_jsx_runtime.JSX.Element;
248
+ type ListCardItemProps = HTMLAttributes<HTMLDivElement> & {
249
+ /** Left content (icon, avatar) */
250
+ leading?: ReactNode;
251
+ /** Main content */
252
+ children: ReactNode;
253
+ /** Right content (badge, button, chevron) */
254
+ trailing?: ReactNode;
255
+ /** Enable press animation */
256
+ pressable?: boolean;
257
+ /** Click handler */
258
+ onPress?: () => void;
259
+ };
260
+ declare function ListCardItem({ leading, children, trailing, pressable, onPress, className, ...props }: ListCardItemProps): react_jsx_runtime.JSX.Element;
261
+
262
+ type InputProps = InputHTMLAttributes<HTMLInputElement> & {
263
+ label?: string;
264
+ error?: string;
265
+ icon?: React.ReactNode;
266
+ /** Show clear button when input has value */
267
+ clearable?: boolean;
268
+ /** Use floating label style */
269
+ floatingLabel?: boolean;
270
+ /** Callback when clear button is clicked */
271
+ onClear?: () => void;
272
+ /** Show password toggle for password fields */
273
+ showPasswordToggle?: boolean;
274
+ /** Show character counter */
275
+ showCharacterCount?: boolean;
276
+ /** Max characters for counter */
277
+ maxCharacters?: number;
278
+ /** Show success state */
279
+ success?: boolean;
280
+ /** Success message */
281
+ successMessage?: string;
282
+ /** Helper text below input */
283
+ helperText?: string;
284
+ /** iOS filled style (gray background, no border) */
285
+ variant?: "default" | "filled";
286
+ };
287
+ declare const Input: React$1.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & {
288
+ label?: string;
289
+ error?: string;
290
+ icon?: React.ReactNode;
291
+ /** Show clear button when input has value */
292
+ clearable?: boolean;
293
+ /** Use floating label style */
294
+ floatingLabel?: boolean;
295
+ /** Callback when clear button is clicked */
296
+ onClear?: () => void;
297
+ /** Show password toggle for password fields */
298
+ showPasswordToggle?: boolean;
299
+ /** Show character counter */
300
+ showCharacterCount?: boolean;
301
+ /** Max characters for counter */
302
+ maxCharacters?: number;
303
+ /** Show success state */
304
+ success?: boolean;
305
+ /** Success message */
306
+ successMessage?: string;
307
+ /** Helper text below input */
308
+ helperText?: string;
309
+ /** iOS filled style (gray background, no border) */
310
+ variant?: "default" | "filled";
311
+ } & React$1.RefAttributes<HTMLInputElement>>;
312
+ /**
313
+ * Password Input - Pre-configured input for passwords
314
+ */
315
+ declare const PasswordInput: React$1.ForwardRefExoticComponent<Omit<InputProps, "type" | "showPasswordToggle"> & React$1.RefAttributes<HTMLInputElement>>;
316
+ /**
317
+ * Search Input - Pre-configured input for search
318
+ */
319
+ declare const SearchInput: React$1.ForwardRefExoticComponent<Omit<InputProps, "type"> & React$1.RefAttributes<HTMLInputElement>>;
320
+
321
+ type SelectOption = {
322
+ value: string;
323
+ label: string;
324
+ disabled?: boolean;
325
+ };
326
+ declare const Select: React$1.ForwardRefExoticComponent<SelectHTMLAttributes<HTMLSelectElement> & {
327
+ label?: string;
328
+ error?: string;
329
+ /** Options as array of objects or strings */
330
+ options?: SelectOption[] | string[];
331
+ /** Use wheel picker on mobile */
332
+ useMobilePicker?: boolean;
333
+ /** Placeholder text */
334
+ placeholder?: string;
335
+ } & React$1.RefAttributes<HTMLSelectElement>>;
336
+ type DropdownSelectProps = {
337
+ label?: string;
338
+ options: SelectOption[];
339
+ value?: string;
340
+ onChange: (value: string) => void;
341
+ placeholder?: string;
342
+ disabled?: boolean;
343
+ error?: string;
344
+ };
345
+ declare function DropdownSelect({ label, options, value, onChange, placeholder, disabled, error, }: DropdownSelectProps): react_jsx_runtime.JSX.Element;
346
+
347
+ type ThemeToggleProps = {
348
+ theme: 'light' | 'dark';
349
+ onToggle: () => void;
350
+ lightModeLabel?: string;
351
+ darkModeLabel?: string;
352
+ };
353
+ declare function ThemeToggle({ theme, onToggle, lightModeLabel, darkModeLabel, }: ThemeToggleProps): react_jsx_runtime.JSX.Element;
354
+ type ThemeToggleCompactProps = {
355
+ theme: 'light' | 'dark';
356
+ onToggle: () => void;
357
+ lightModeLabel?: string;
358
+ darkModeLabel?: string;
359
+ };
360
+ declare function ThemeToggleCompact({ theme, onToggle, lightModeLabel, darkModeLabel, }: ThemeToggleCompactProps): react_jsx_runtime.JSX.Element;
361
+
362
+ type MetricCardTrend = {
363
+ value: number;
364
+ label?: string;
365
+ formatValue?: (value: number) => string;
366
+ };
367
+ type MetricCardProps = {
368
+ title: string;
369
+ value: string | number;
370
+ subtitle?: string;
371
+ icon?: ReactNode;
372
+ trend?: MetricCardTrend;
373
+ variant?: "default" | "success" | "warning" | "danger";
374
+ };
375
+ declare function MetricCard({ title, value, subtitle, icon, trend, variant, }: MetricCardProps): react_jsx_runtime.JSX.Element;
376
+
377
+ type AgentAnalysisCardProps = {
378
+ name: string;
379
+ avatar: string;
380
+ duration: string;
381
+ output: string;
382
+ };
383
+ declare function AgentAnalysisCard({ name, avatar, duration, output }: AgentAnalysisCardProps): react_jsx_runtime.JSX.Element;
384
+
385
+ type RecommendationCardProps = {
386
+ price: string;
387
+ delta: string;
388
+ confidence: string;
389
+ margin: string;
390
+ minMax: string;
391
+ };
392
+ declare function RecommendationCard({ price, delta, confidence, margin, minMax }: RecommendationCardProps): react_jsx_runtime.JSX.Element;
393
+
394
+ type CompetitorEntry = {
395
+ name: string;
396
+ distance: string;
397
+ price: string;
398
+ change: string;
399
+ up: boolean;
400
+ };
401
+ type MarketPricesCardProps = {
402
+ competitors: CompetitorEntry[];
403
+ };
404
+ declare function MarketPricesCard({ competitors }: MarketPricesCardProps): react_jsx_runtime.JSX.Element;
405
+
406
+ type HeroSectionProps = {
407
+ icon: ReactNode;
408
+ label: string;
409
+ title: string;
410
+ subtitle: ReactNode;
411
+ /** Optional top accent gradient bar (e.g. "from-indigo-600 via-purple-600 to-pink-500") */
412
+ gradient?: string;
413
+ /** Optional action buttons to display in the header */
414
+ actions?: ReactNode;
415
+ /** Optional toolbar (search/filter/create) rendered below subtitle */
416
+ toolbar?: ReactNode;
417
+ /** Optional badges/pills to display below subtitle */
418
+ badges?: ReactNode;
419
+ /** Optional extra content next to the label (e.g. entity count) */
420
+ labelExtra?: ReactNode;
421
+ children?: ReactNode;
422
+ };
423
+ /**
424
+ * Reusable hero section using the liquid-surface glass style.
425
+ * Same look as entity cards — frosted glass with optional gradient accent stripe.
426
+ */
427
+ declare function HeroSection({ icon, label, title, subtitle, gradient, actions, toolbar, badges, labelExtra, children, }: HeroSectionProps): react_jsx_runtime.JSX.Element;
428
+
429
+ interface ActiveFilterChip {
430
+ type: string;
431
+ value: string;
432
+ label: string;
433
+ color?: string;
434
+ }
435
+ interface ActiveFilterChipStyleConfig {
436
+ icon: ComponentType<{
437
+ className?: string;
438
+ }>;
439
+ className: string;
440
+ }
441
+ interface ActiveFilterChipsProps {
442
+ filters: ActiveFilterChip[];
443
+ onRemoveFilter?: (filter: ActiveFilterChip) => void;
444
+ styleConfig?: Record<string, ActiveFilterChipStyleConfig>;
445
+ }
446
+ declare function ActiveFilterChips({ filters, onRemoveFilter, styleConfig, }: ActiveFilterChipsProps): react_jsx_runtime.JSX.Element;
447
+
448
+ interface ActiveFilter {
449
+ type: string;
450
+ value: string;
451
+ label: string;
452
+ /** Optional custom color class for the pill */
453
+ color?: string;
454
+ }
455
+ type SearchBarProps = {
456
+ searchTerm: string;
457
+ onSearchChange: (value: string) => void;
458
+ placeholder?: string;
459
+ activeFilters?: ActiveFilter[];
460
+ onRemoveFilter?: (filter: ActiveFilter) => void;
461
+ onClearAll?: () => void;
462
+ /** Optional content to render at the end of the search bar */
463
+ endContent?: ReactNode;
464
+ /** Remove border and shadow when inside a unified container */
465
+ noBorder?: boolean;
466
+ /** Show cancel button on focus */
467
+ showCancelButton?: boolean;
468
+ /** Callback when cancel button is clicked */
469
+ onCancel?: () => void;
470
+ /** Optional style config for filter chip types */
471
+ filterChipStyleConfig?: Record<string, ActiveFilterChipStyleConfig>;
472
+ };
473
+ /**
474
+ * Reusable search bar with filter chips
475
+ * Used across dashboard pages for consistent search experience
476
+ */
477
+ declare function SearchBar({ searchTerm, onSearchChange, placeholder, activeFilters, onRemoveFilter, onClearAll, endContent, noBorder, showCancelButton, onCancel, filterChipStyleConfig, }: SearchBarProps): react_jsx_runtime.JSX.Element;
478
+
479
+ type ColorVariant = "emerald" | "blue" | "amber" | "orange" | "indigo" | "purple" | "red";
480
+ type InfoConfig = {
481
+ title?: string;
482
+ content?: string;
483
+ blocks?: Array<{
484
+ label: string;
485
+ content: string;
486
+ }>;
487
+ };
488
+ type StatCardProps = {
489
+ icon: ReactNode;
490
+ value: string | number;
491
+ label: string;
492
+ /** Optional badge/pill displayed below the label (e.g., month indicator) */
493
+ badge?: string;
494
+ /** Optional info popover configuration to show SQL queries */
495
+ info?: InfoConfig;
496
+ color?: ColorVariant;
497
+ /** Shows a filtered indicator badge */
498
+ isFiltered?: boolean;
499
+ /** Shows urgent styling (amber tint) */
500
+ isUrgent?: boolean;
501
+ /** Makes the card clickable with active state */
502
+ isActive?: boolean;
503
+ onClick?: () => void;
504
+ className?: string;
505
+ };
506
+ /**
507
+ * Reusable stat card for displaying metrics
508
+ * Used in stats grids across dashboard pages
509
+ */
510
+ declare function StatCard({ icon, value, label, badge, info, color, isFiltered, isUrgent, isActive, onClick, className, }: StatCardProps): react_jsx_runtime.JSX.Element;
511
+
512
+ type SectionHeaderProps = {
513
+ icon: ReactNode;
514
+ title: string;
515
+ subtitle?: string;
516
+ /** Gradient classes for the icon background */
517
+ gradient?: string;
518
+ /** Optional content on the right side */
519
+ rightContent?: ReactNode;
520
+ };
521
+ /**
522
+ * Reusable section header with gradient icon box
523
+ * Used across dashboard pages for consistent section styling
524
+ */
525
+ declare function SectionHeader({ icon, title, subtitle, gradient, rightContent, }: SectionHeaderProps): react_jsx_runtime.JSX.Element;
526
+
527
+ type PriceChangeBadgeProps = {
528
+ value: number | null;
529
+ size?: "sm" | "md";
530
+ showIcon?: boolean;
531
+ className?: string;
532
+ };
533
+ /**
534
+ * Displays a price change percentage as a colored badge.
535
+ * Green for positive changes, red for negative.
536
+ */
537
+ declare function PriceChangeBadge({ value, size, showIcon, className, }: PriceChangeBadgeProps): react_jsx_runtime.JSX.Element | null;
538
+
539
+ type PaginationProps = {
540
+ currentPage: number;
541
+ totalPages: number;
542
+ totalItems: number;
543
+ pageSize: number;
544
+ onPageChange: (page: number) => void;
545
+ className?: string;
546
+ };
547
+ declare function Pagination({ currentPage, totalPages, totalItems, pageSize, onPageChange, className, }: PaginationProps): react_jsx_runtime.JSX.Element | null;
548
+
549
+ type SpinnerSize = "xs" | "sm" | "md" | "lg" | "xl";
550
+ type SpinnerColor = "primary" | "white" | "emerald" | "current" | "blue" | "gray";
551
+ type SpinnerVariant = "circle" | "dots" | "pulse";
552
+ type SpinnerProps = {
553
+ size?: SpinnerSize;
554
+ color?: SpinnerColor;
555
+ variant?: SpinnerVariant;
556
+ className?: string;
557
+ /** Optional label below spinner */
558
+ label?: string;
559
+ };
560
+ declare function Spinner({ size, color, variant, className, label, }: SpinnerProps): react_jsx_runtime.JSX.Element;
561
+ type LoadingOverlayProps = {
562
+ /** Whether to show the overlay */
563
+ show: boolean;
564
+ /** Loading message */
565
+ message?: string;
566
+ /** Blur the background */
567
+ blur?: boolean;
568
+ };
569
+ declare function LoadingOverlay({ show, message, blur }: LoadingOverlayProps): react_jsx_runtime.JSX.Element | null;
570
+ type InlineSpinnerProps = {
571
+ size?: "xs" | "sm";
572
+ className?: string;
573
+ };
574
+ declare function InlineSpinner({ size, className }: InlineSpinnerProps): react_jsx_runtime.JSX.Element;
575
+
576
+ type PillVariant = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "info" | "outline-primary" | "outline-success" | "outline-warning" | "outline-danger" | "blue" | "green" | "red" | "orange" | "purple" | "pink" | "teal";
577
+ type PillSize = "xs" | "sm" | "md" | "lg";
578
+ type PillProps = {
579
+ children: ReactNode;
580
+ variant?: PillVariant;
581
+ size?: PillSize;
582
+ className?: string;
583
+ onClick?: () => void;
584
+ /** Icon to show before text */
585
+ icon?: ReactNode;
586
+ /** Show remove button */
587
+ removable?: boolean;
588
+ /** Callback when remove button is clicked */
589
+ onRemove?: () => void;
590
+ };
591
+ declare function Pill({ children, variant, size, className, onClick, icon, removable, onRemove, }: PillProps): react_jsx_runtime.JSX.Element;
592
+ type CountPillProps = {
593
+ count: number;
594
+ max?: number;
595
+ variant?: 'default' | 'primary' | 'danger';
596
+ size?: 'sm' | 'md';
597
+ };
598
+ declare function CountPill({ count, max, variant, size, }: CountPillProps): react_jsx_runtime.JSX.Element | null;
599
+
600
+ type GrowthSize = "xs" | "sm" | "md";
601
+ type GrowthIndicatorProps = {
602
+ value: number;
603
+ size?: GrowthSize;
604
+ showValue?: boolean;
605
+ format?: "percent" | "number";
606
+ locale?: string;
607
+ formatValue?: (value: number, format: "percent" | "number") => string;
608
+ className?: string;
609
+ };
610
+ declare function GrowthIndicator({ value, size, showValue, format, formatValue, className }: GrowthIndicatorProps): react_jsx_runtime.JSX.Element | null;
611
+
612
+ type RoleBadgeStyle = {
613
+ bg: string;
614
+ text: string;
615
+ ring: string;
616
+ };
617
+ type RoleBadgeProps = {
618
+ role: string;
619
+ size?: "xs" | "sm" | "md";
620
+ className?: string;
621
+ roleStyles?: Record<string, RoleBadgeStyle>;
622
+ };
623
+ declare function RoleBadge({ role, size, className, roleStyles }: RoleBadgeProps): react_jsx_runtime.JSX.Element;
624
+
625
+ type TagBadgeStyle = {
626
+ bg: string;
627
+ text: string;
628
+ ring: string;
629
+ };
630
+ type TagBadgeProps = {
631
+ value: string;
632
+ size?: 'xs' | 'sm' | 'md';
633
+ className?: string;
634
+ styles?: Record<string, TagBadgeStyle>;
635
+ fallbackStyle?: TagBadgeStyle;
636
+ };
637
+ declare function TagBadge({ value, size, className, styles, fallbackStyle, }: TagBadgeProps): react_jsx_runtime.JSX.Element;
638
+
639
+ type ToggleSwitchColor = 'green' | 'blue' | 'indigo' | 'violet' | 'teal' | 'orange' | 'red';
640
+ type ToggleSwitchProps = {
641
+ /** Whether the toggle is on */
642
+ checked: boolean;
643
+ /** Callback when toggle changes */
644
+ onChange: (checked: boolean) => void;
645
+ /** Disable the toggle */
646
+ disabled?: boolean;
647
+ /** Size variant */
648
+ size?: 'sm' | 'md' | 'lg';
649
+ /** Color when checked (default: green) */
650
+ color?: ToggleSwitchColor;
651
+ /** Accessible label */
652
+ label?: string;
653
+ };
654
+ declare function ToggleSwitch({ checked, onChange, disabled, size, color, label, }: ToggleSwitchProps): react_jsx_runtime.JSX.Element;
655
+ type LabeledToggleProps = ToggleSwitchProps & {
656
+ title: string;
657
+ description?: string;
658
+ };
659
+ declare function LabeledToggle({ title, description, checked, onChange, disabled, size, color, }: LabeledToggleProps): react_jsx_runtime.JSX.Element;
660
+
661
+ type Segment = {
662
+ value: string;
663
+ label: string;
664
+ icon?: React.ReactNode;
665
+ };
666
+ type SegmentedControlProps = {
667
+ /** Segments to display */
668
+ segments: Segment[] | string[];
669
+ /** Currently selected value */
670
+ value: string;
671
+ /** Callback when selection changes */
672
+ onChange: (value: string) => void;
673
+ /** Size variant */
674
+ size?: 'sm' | 'md' | 'lg';
675
+ /** Full width */
676
+ fullWidth?: boolean;
677
+ /** Disabled state */
678
+ disabled?: boolean;
679
+ };
680
+ declare function SegmentedControl({ segments, value, onChange, size, fullWidth, disabled, }: SegmentedControlProps): react_jsx_runtime.JSX.Element;
681
+ declare function CompactSegmentedControl({ segments, value, onChange, }: Omit<SegmentedControlProps, 'size' | 'fullWidth'>): react_jsx_runtime.JSX.Element;
682
+
683
+ type SheetSide = 'bottom' | 'right';
684
+ type SheetSize = 'md' | 'lg' | 'xl';
685
+ type SheetProps = {
686
+ /** Whether the sheet is open */
687
+ open: boolean;
688
+ /** Callback when sheet should close */
689
+ onClose: () => void;
690
+ /** Sheet content */
691
+ children: React.ReactNode;
692
+ /** Title for accessibility */
693
+ title?: string;
694
+ /** Show drag handle */
695
+ showHandle?: boolean;
696
+ /** Snap points as percentages (e.g., ['50%', '90%']) — only for bottom side */
697
+ snapPoints?: string[];
698
+ /** Initial snap point index */
699
+ initialSnap?: number;
700
+ /** Which side the sheet slides from */
701
+ side?: SheetSide;
702
+ /** Width size for right-side sheet */
703
+ size?: SheetSize;
704
+ };
705
+ declare function Sheet({ open, onClose, children, title, showHandle, snapPoints, side, size, }: SheetProps): react_jsx_runtime.JSX.Element;
706
+ type ActionSheetAction = {
707
+ label: string;
708
+ onClick: () => void;
709
+ destructive?: boolean;
710
+ disabled?: boolean;
711
+ };
712
+ type ActionSheetProps = {
713
+ open: boolean;
714
+ onClose: () => void;
715
+ title?: string;
716
+ message?: string;
717
+ actions: ActionSheetAction[];
718
+ };
719
+ declare function ActionSheet({ open, onClose, title, message, actions, }: ActionSheetProps): react_jsx_runtime.JSX.Element;
720
+
721
+ type WheelPickerOption = {
722
+ value: string;
723
+ label: string;
724
+ };
725
+ type WheelPickerProps = {
726
+ /** Options to display */
727
+ options: WheelPickerOption[] | string[];
728
+ /** Currently selected value */
729
+ value: string;
730
+ /** Callback when selection changes */
731
+ onChange: (value: string) => void;
732
+ /** Number of visible items */
733
+ visibleItems?: number;
734
+ /** Item height in pixels */
735
+ itemHeight?: number;
736
+ };
737
+ declare function WheelPicker({ options, value, onChange, visibleItems, itemHeight, }: WheelPickerProps): react_jsx_runtime.JSX.Element;
738
+ type MultiColumnPickerProps = {
739
+ columns: {
740
+ options: WheelPickerOption[] | string[];
741
+ value: string;
742
+ onChange: (value: string) => void;
743
+ width: string;
744
+ }[];
745
+ };
746
+ declare function MultiColumnPicker({ columns }: MultiColumnPickerProps): react_jsx_runtime.JSX.Element;
747
+
748
+ type PageIndicatorProps = {
749
+ /** Total number of pages */
750
+ count: number;
751
+ /** Currently active page (0-indexed) */
752
+ active: number;
753
+ /** Callback when a dot is clicked */
754
+ onChange?: (index: number) => void;
755
+ /** Size variant */
756
+ size?: 'sm' | 'md' | 'lg';
757
+ /** Color variant */
758
+ variant?: 'default' | 'light' | 'dark';
759
+ };
760
+ declare function PageIndicator({ count, active, onChange, size, variant, }: PageIndicatorProps): react_jsx_runtime.JSX.Element;
761
+ type ExpandingPageIndicatorProps = Omit<PageIndicatorProps, 'size'> & {
762
+ /** Width of active indicator */
763
+ activeWidth?: number;
764
+ };
765
+ declare function ExpandingPageIndicator({ count, active, onChange, variant, activeWidth, }: ExpandingPageIndicatorProps): react_jsx_runtime.JSX.Element;
766
+ type ProgressIndicatorProps = {
767
+ /** Total number of steps */
768
+ steps: number;
769
+ /** Current step (0-indexed) */
770
+ current: number;
771
+ /** Show step numbers */
772
+ showNumbers?: boolean;
773
+ };
774
+ declare function ProgressIndicator({ steps, current, showNumbers, }: ProgressIndicatorProps): react_jsx_runtime.JSX.Element;
775
+
776
+ type ActionMenuItem = {
777
+ label: string;
778
+ icon?: React.ReactNode;
779
+ onClick: () => void;
780
+ destructive?: boolean;
781
+ disabled?: boolean;
782
+ };
783
+ type ActionMenuGroup = {
784
+ title?: string;
785
+ items: ActionMenuItem[];
786
+ };
787
+ type ActionMenuProps = {
788
+ /** Menu trigger element */
789
+ trigger: React.ReactNode;
790
+ /** Menu items or groups */
791
+ items: ActionMenuItem[] | ActionMenuGroup[];
792
+ /** Alignment relative to trigger */
793
+ align?: 'start' | 'center' | 'end';
794
+ /** Side relative to trigger */
795
+ side?: 'top' | 'bottom';
796
+ };
797
+ declare function ActionMenu({ trigger, items, align, side, }: ActionMenuProps): react_jsx_runtime.JSX.Element;
798
+
799
+ type SafeAreaProps = {
800
+ children: ReactNode;
801
+ /** Which edges to apply safe area padding */
802
+ edges?: ('top' | 'bottom' | 'left' | 'right')[];
803
+ /** Additional className */
804
+ className?: string;
805
+ /** Use as flex container */
806
+ flex?: boolean;
807
+ };
808
+ /**
809
+ * SafeArea component that respects device safe area insets
810
+ * Uses CSS env() variables for notch/home indicator padding
811
+ */
812
+ declare function SafeArea({ children, edges, className, flex, }: SafeAreaProps): react_jsx_runtime.JSX.Element;
813
+ /**
814
+ * SafeAreaView - Full screen container with safe area insets
815
+ * Useful for full-page layouts on mobile
816
+ */
817
+ declare function SafeAreaView({ children, className, }: {
818
+ children: ReactNode;
819
+ className?: string;
820
+ }): react_jsx_runtime.JSX.Element;
821
+ /**
822
+ * SafeAreaSpacer - Adds spacing for safe area insets
823
+ * Useful for fixed headers/footers
824
+ */
825
+ declare function SafeAreaSpacer({ position, className, }: {
826
+ position: 'top' | 'bottom';
827
+ className?: string;
828
+ }): react_jsx_runtime.JSX.Element;
829
+ /**
830
+ * BottomSafeArea - Fixed bottom container with safe area padding
831
+ * Perfect for bottom navigation or action buttons
832
+ */
833
+ declare function BottomSafeArea({ children, className, blur, }: {
834
+ children: ReactNode;
835
+ className?: string;
836
+ blur?: boolean;
837
+ }): react_jsx_runtime.JSX.Element;
838
+
839
+ type SwipeAction = {
840
+ /** Action label */
841
+ label: string;
842
+ /** Action icon */
843
+ icon?: ReactNode;
844
+ /** Background color */
845
+ color: string;
846
+ /** Text color */
847
+ textColor: string;
848
+ /** Callback when action is triggered */
849
+ onAction: () => void;
850
+ };
851
+ type SwipeableRowProps = {
852
+ /** Row content */
853
+ children: ReactNode;
854
+ /** Actions revealed on left swipe */
855
+ leftActions?: SwipeAction[];
856
+ /** Actions revealed on right swipe */
857
+ rightActions?: SwipeAction[];
858
+ /** Width of each action button (default: 80) */
859
+ actionWidth?: number;
860
+ /** Threshold to trigger full swipe action (default: 0.5) */
861
+ fullSwipeThreshold?: number;
862
+ /** Enable full swipe to trigger first action */
863
+ enableFullSwipe?: boolean;
864
+ /** Additional className */
865
+ className?: string;
866
+ };
867
+ declare function SwipeableRow({ children, leftActions, rightActions, actionWidth, fullSwipeThreshold, enableFullSwipe, className, }: SwipeableRowProps): react_jsx_runtime.JSX.Element;
868
+ declare function DeleteSwipeAction(onDelete: () => void): SwipeAction;
869
+ declare function ArchiveSwipeAction(onArchive: () => void): SwipeAction;
870
+ declare function EditSwipeAction(onEdit: () => void): SwipeAction;
871
+ declare function FavoriteSwipeAction(onFavorite: () => void, isFavorite?: boolean): SwipeAction;
872
+
873
+ type PullToRefreshContainerProps = {
874
+ /** Content to wrap */
875
+ children: ReactNode;
876
+ /** Callback when refresh is triggered */
877
+ onRefresh: () => Promise<void>;
878
+ /** Enable/disable pull-to-refresh (default: true) */
879
+ enabled?: boolean;
880
+ /** Pull threshold in pixels (default: 80) */
881
+ threshold?: number;
882
+ /** Additional className for the container */
883
+ className?: string;
884
+ /** Custom refresh indicator */
885
+ renderIndicator?: (props: {
886
+ pullDistance: number;
887
+ isRefreshing: boolean;
888
+ progress: number;
889
+ }) => ReactNode;
890
+ };
891
+ /**
892
+ * Pull-to-refresh container component
893
+ * Wraps content and provides iOS-style pull-to-refresh functionality
894
+ */
895
+ declare function PullToRefreshContainer({ children, onRefresh, enabled, threshold, className, renderIndicator, }: PullToRefreshContainerProps): react_jsx_runtime.JSX.Element;
896
+ /**
897
+ * Modern circular progress indicator for pull-to-refresh
898
+ */
899
+ declare function CircularRefreshIndicator({ pullDistance, isRefreshing, progress, }: {
900
+ pullDistance: number;
901
+ isRefreshing: boolean;
902
+ progress: number;
903
+ }): react_jsx_runtime.JSX.Element | null;
904
+ /**
905
+ * Simple dot indicator for minimal designs
906
+ */
907
+ declare function DotRefreshIndicator({ pullDistance, isRefreshing, }: {
908
+ pullDistance: number;
909
+ isRefreshing: boolean;
910
+ progress: number;
911
+ }): react_jsx_runtime.JSX.Element | null;
912
+
913
+ type EdgeSwipeIndicatorProps = {
914
+ /** Enable/disable the indicator (default: true) */
915
+ enabled?: boolean;
916
+ /** Edge detection zone width in pixels (default: 20) */
917
+ edgeWidth?: number;
918
+ /** Threshold to show indicator (default: 30) */
919
+ showThreshold?: number;
920
+ };
921
+ /**
922
+ * Visual indicator for edge swipe gesture
923
+ * Shows an arrow when user swipes from the left edge
924
+ */
925
+ declare function EdgeSwipeIndicator({ enabled, edgeWidth, showThreshold, }: EdgeSwipeIndicatorProps): react_jsx_runtime.JSX.Element;
926
+ /**
927
+ * Provider component that adds edge swipe navigation to the app
928
+ * Include this at the root of your app layout
929
+ */
930
+ declare function EdgeSwipeProvider({ children, enabled, onBack, }: {
931
+ children: React.ReactNode;
932
+ enabled?: boolean;
933
+ onBack?: () => void;
934
+ }): react_jsx_runtime.JSX.Element;
935
+
936
+ type SortDirection = 'asc' | 'desc' | null;
937
+ declare function Table({ bleed, dense, grid, striped, loading, emptyState, className, children, ...props }: {
938
+ bleed?: boolean;
939
+ dense?: boolean;
940
+ grid?: boolean;
941
+ striped?: boolean;
942
+ /** Show loading skeleton */
943
+ loading?: boolean;
944
+ /** Custom empty state component */
945
+ emptyState?: React__default.ReactNode;
946
+ } & React__default.ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
947
+ declare function TableHead({ className, ...props }: React__default.ComponentPropsWithoutRef<'thead'>): react_jsx_runtime.JSX.Element;
948
+ declare function TableBody(props: React__default.ComponentPropsWithoutRef<'tbody'>): react_jsx_runtime.JSX.Element;
949
+ declare function TableRow({ href, target, title, className, ...props }: {
950
+ href?: string;
951
+ target?: string;
952
+ title?: string;
953
+ } & React__default.ComponentPropsWithoutRef<'tr'>): react_jsx_runtime.JSX.Element;
954
+ declare function TableHeader({ className, ...props }: React__default.ComponentPropsWithoutRef<'th'>): react_jsx_runtime.JSX.Element;
955
+ declare function TableCell({ className, children, ...props }: React__default.ComponentPropsWithoutRef<'td'>): react_jsx_runtime.JSX.Element;
956
+ /**
957
+ * Sortable Table Header - iOS style with haptic feedback
958
+ */
959
+ declare function SortableTableHeader({ className, children, sortKey, currentSort, currentDirection, onSort, ...props }: {
960
+ sortKey: string;
961
+ currentSort?: string;
962
+ currentDirection?: SortDirection;
963
+ onSort?: (key: string, direction: SortDirection) => void;
964
+ } & React__default.ComponentPropsWithoutRef<'th'>): react_jsx_runtime.JSX.Element;
965
+ /**
966
+ * Table Skeleton Row - Loading placeholder
967
+ */
968
+ declare function TableSkeletonRow({ columns, className, }: {
969
+ columns?: number;
970
+ className?: string;
971
+ }): react_jsx_runtime.JSX.Element;
972
+ /**
973
+ * Table Skeleton - Multiple loading rows
974
+ */
975
+ declare function TableSkeleton({ rows, columns, }: {
976
+ rows?: number;
977
+ columns?: number;
978
+ }): react_jsx_runtime.JSX.Element;
979
+ /**
980
+ * Table Empty State
981
+ */
982
+ declare function TableEmptyState({ icon, title, description, action, colSpan, }: {
983
+ icon?: React__default.ReactNode;
984
+ title: string;
985
+ description?: string;
986
+ action?: React__default.ReactNode;
987
+ colSpan?: number;
988
+ }): react_jsx_runtime.JSX.Element;
989
+ /**
990
+ * Animated Table Row - With enter/exit animations
991
+ */
992
+ declare function AnimatedTableRow({ href, target, title, className, index, ...props }: {
993
+ href?: string;
994
+ target?: string;
995
+ title?: string;
996
+ index?: number;
997
+ } & React__default.ComponentPropsWithoutRef<'tr'>): react_jsx_runtime.JSX.Element;
998
+ /**
999
+ * Selectable Table Row - With checkbox
1000
+ */
1001
+ declare function SelectableTableRow({ selected, onSelect, href, target, title, className, children, ...props }: {
1002
+ selected?: boolean;
1003
+ onSelect?: (selected: boolean) => void;
1004
+ href?: string;
1005
+ target?: string;
1006
+ title?: string;
1007
+ } & React__default.ComponentPropsWithoutRef<'tr'>): react_jsx_runtime.JSX.Element;
1008
+
1009
+ type EmptyStateProps = {
1010
+ /** Main message/title */
1011
+ message: string;
1012
+ /** Optional detailed description */
1013
+ description?: string;
1014
+ /** Optional icon component */
1015
+ icon?: React.ComponentType<{
1016
+ className?: string;
1017
+ }>;
1018
+ /** Optional action button */
1019
+ action?: {
1020
+ label: string;
1021
+ onClick: () => void;
1022
+ };
1023
+ /** Visual style variant */
1024
+ variant?: "default" | "minimal" | "card";
1025
+ };
1026
+ /**
1027
+ * iOS-style empty state component
1028
+ * Used when there's no content to display
1029
+ */
1030
+ declare function EmptyState({ message, description, icon: Icon, action, variant, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1031
+ /**
1032
+ * Error State Component - iOS style with retry logic
1033
+ */
1034
+ type ErrorStateProps = {
1035
+ /** Error title */
1036
+ title?: string;
1037
+ /** Error message/description */
1038
+ message?: string;
1039
+ /** Error code (optional) */
1040
+ errorCode?: string | number;
1041
+ /** Error type determines icon and styling */
1042
+ type?: "generic" | "network" | "server" | "permission" | "notFound";
1043
+ /** Retry callback */
1044
+ onRetry?: () => Promise<void> | void;
1045
+ /** Retry button label */
1046
+ retryLabel?: string;
1047
+ /** Secondary action */
1048
+ secondaryAction?: {
1049
+ label: string;
1050
+ onClick: () => void;
1051
+ };
1052
+ /** Show detailed error info toggle */
1053
+ showDetails?: boolean;
1054
+ /** Detailed error info */
1055
+ details?: string;
1056
+ /** Visual variant */
1057
+ variant?: "default" | "minimal" | "card" | "fullscreen";
1058
+ };
1059
+ declare function ErrorState({ title, message, errorCode, type, onRetry, retryLabel, secondaryAction, showDetails, details, variant, }: ErrorStateProps): react_jsx_runtime.JSX.Element;
1060
+ /**
1061
+ * Offline State - Specialized error state for network issues
1062
+ */
1063
+ declare function OfflineState({ onRetry, message, }: {
1064
+ onRetry?: () => Promise<void> | void;
1065
+ message?: string;
1066
+ }): react_jsx_runtime.JSX.Element;
1067
+ /**
1068
+ * No Results State - For empty search/filter results
1069
+ */
1070
+ declare function NoResultsState({ searchTerm, onClearFilters, suggestions, }: {
1071
+ searchTerm?: string;
1072
+ onClearFilters?: () => void;
1073
+ suggestions?: string[];
1074
+ }): react_jsx_runtime.JSX.Element;
1075
+ /**
1076
+ * No Data State - For when a section has no data yet
1077
+ */
1078
+ declare function NoDataState({ title, message, actionLabel, onAction, icon: CustomIcon, }: {
1079
+ title?: string;
1080
+ message?: string;
1081
+ actionLabel?: string;
1082
+ onAction?: () => void;
1083
+ icon?: React.ComponentType<{
1084
+ className?: string;
1085
+ }>;
1086
+ }): react_jsx_runtime.JSX.Element;
1087
+
1088
+ type DynamicIslandState = 'idle' | 'compact' | 'expanded';
1089
+ type DynamicIslandPosition = 'center' | 'left' | 'right';
1090
+ type DynamicIslandProps = {
1091
+ /** Content for idle state (small pill) */
1092
+ idleContent?: ReactNode;
1093
+ /** Content for compact state (slightly larger) */
1094
+ compactContent?: ReactNode;
1095
+ /** Content for expanded state (full size) */
1096
+ expandedContent?: ReactNode;
1097
+ /** Current state */
1098
+ state?: DynamicIslandState;
1099
+ /** Auto-collapse after delay (ms) */
1100
+ autoCollapseDelay?: number;
1101
+ /** Callback when state changes */
1102
+ onStateChange?: (state: DynamicIslandState) => void;
1103
+ /** Horizontal position */
1104
+ position?: DynamicIslandPosition;
1105
+ };
1106
+ declare function DynamicIsland({ idleContent, compactContent, expandedContent, state, autoCollapseDelay, onStateChange, position, }: DynamicIslandProps): react_jsx_runtime.JSX.Element;
1107
+ type NotificationVariant = 'success' | 'error' | 'info' | 'warning';
1108
+ type DynamicIslandNotificationProps = {
1109
+ /** Show the notification */
1110
+ show: boolean;
1111
+ /** App icon */
1112
+ icon?: ReactNode;
1113
+ /** App name */
1114
+ appName?: string;
1115
+ /** Notification title */
1116
+ title: string;
1117
+ /** Notification message */
1118
+ message?: string;
1119
+ /** Notification variant for colors */
1120
+ variant?: NotificationVariant;
1121
+ /** Auto-dismiss after delay (ms) */
1122
+ dismissAfter?: number;
1123
+ /** Callback when dismissed */
1124
+ onDismiss?: () => void;
1125
+ /** Horizontal position */
1126
+ position?: DynamicIslandPosition;
1127
+ };
1128
+ declare function DynamicIslandNotification({ show, icon, appName, title, message, variant, dismissAfter, onDismiss, position, }: DynamicIslandNotificationProps): react_jsx_runtime.JSX.Element | null;
1129
+
1130
+ type NotificationType = 'success' | 'error' | 'warning' | 'info';
1131
+ interface Notification {
1132
+ id: string;
1133
+ type: NotificationType;
1134
+ title: string;
1135
+ message?: string;
1136
+ timestamp: Date;
1137
+ }
1138
+ type NotificationContextType = {
1139
+ history: Notification[];
1140
+ pendingApprovals: Notification[];
1141
+ historyOpen: boolean;
1142
+ addNotification: (notification: Omit<Notification, 'id' | 'timestamp'>) => void;
1143
+ removeFromHistory: (id: string) => void;
1144
+ clearHistory: () => void;
1145
+ openHistory: () => void;
1146
+ closeHistory: () => void;
1147
+ success: (title: string, message?: string) => void;
1148
+ error: (title: string, message?: string) => void;
1149
+ warning: (title: string, message?: string) => void;
1150
+ info: (title: string, message?: string) => void;
1151
+ };
1152
+ declare function useNotifications(): NotificationContextType;
1153
+ type NotificationProviderProps = {
1154
+ children: ReactNode;
1155
+ appName?: string;
1156
+ };
1157
+ declare function NotificationProvider({ children, appName }: NotificationProviderProps): react_jsx_runtime.JSX.Element;
1158
+ declare function NotificationBellButton(): react_jsx_runtime.JSX.Element | null;
1159
+
1160
+ /**
1161
+ * Container Component
1162
+ * ==================
1163
+ *
1164
+ * Reusable container with multiple style variants.
1165
+ * Eliminates repeated Tailwind class patterns across components.
1166
+ */
1167
+
1168
+ type ContainerVariant = 'card' | 'elevated' | 'glass' | 'minimal';
1169
+ interface ContainerProps extends React__default.HTMLAttributes<HTMLDivElement> {
1170
+ variant?: ContainerVariant;
1171
+ children: React__default.ReactNode;
1172
+ }
1173
+ declare const Container: React__default.ForwardRefExoticComponent<ContainerProps & React__default.RefAttributes<HTMLDivElement>>;
1174
+
1175
+ /**
1176
+ * FormField Component
1177
+ * ==================
1178
+ *
1179
+ * Standardized form field wrapper with label, error display, and accessibility.
1180
+ * Used across all forms (auth, admin, settings).
1181
+ */
1182
+
1183
+ interface FormFieldProps extends React__default.HTMLAttributes<HTMLDivElement> {
1184
+ label?: React__default.ReactNode;
1185
+ error?: string | null;
1186
+ required?: boolean;
1187
+ helperText?: React__default.ReactNode;
1188
+ children: React__default.ReactNode;
1189
+ htmlFor?: string;
1190
+ }
1191
+ declare const FormField: React__default.ForwardRefExoticComponent<FormFieldProps & React__default.RefAttributes<HTMLDivElement>>;
1192
+
1193
+ /**
1194
+ * FormSection Component
1195
+ * ====================
1196
+ *
1197
+ * Section wrapper for grouping related form fields.
1198
+ * Provides consistent spacing and optional title/description.
1199
+ */
1200
+
1201
+ interface FormSectionProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'title'> {
1202
+ title?: React__default.ReactNode;
1203
+ description?: React__default.ReactNode;
1204
+ children: React__default.ReactNode;
1205
+ }
1206
+ declare const FormSection: React__default.ForwardRefExoticComponent<FormSectionProps & React__default.RefAttributes<HTMLDivElement>>;
1207
+
1208
+ /**
1209
+ * ListItem Component
1210
+ * =================
1211
+ *
1212
+ * Standardized list item with icon, title, metadata, and actions.
1213
+ * Replaces repeated card patterns in station, approval, and competitor lists.
1214
+ */
1215
+
1216
+ type ListItemVariant = 'default' | 'compact' | 'card' | 'highlighted';
1217
+ interface ListItemAction {
1218
+ label: string;
1219
+ onClick: () => void;
1220
+ variant?: 'default' | 'danger';
1221
+ disabled?: boolean;
1222
+ }
1223
+ interface ListItemMetadata {
1224
+ label: string;
1225
+ value: string | React__default.ReactNode;
1226
+ }
1227
+ interface ListItemProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'title'> {
1228
+ icon?: React__default.ReactNode;
1229
+ title: React__default.ReactNode;
1230
+ subtitle?: React__default.ReactNode;
1231
+ metadata?: ListItemMetadata[];
1232
+ actions?: ListItemAction[];
1233
+ variant?: ListItemVariant;
1234
+ }
1235
+ declare const ListItem: React__default.ForwardRefExoticComponent<ListItemProps & React__default.RefAttributes<HTMLDivElement>>;
1236
+
1237
+ type StatusBadgeTone = 'success' | 'error' | 'warning' | 'info' | 'neutral';
1238
+ type StatusType = 'pending' | 'approved' | 'rejected' | 'active' | 'inactive' | 'processing' | 'error' | 'success' | string;
1239
+ type StatusBadgeConfig = {
1240
+ label: string;
1241
+ icon?: ComponentType<{
1242
+ className?: string;
1243
+ }>;
1244
+ tone?: StatusBadgeTone;
1245
+ animateIcon?: boolean;
1246
+ };
1247
+ type LegacyStatusBadgeProps = {
1248
+ status: string;
1249
+ label?: string;
1250
+ size?: 'sm' | 'md';
1251
+ className?: string;
1252
+ statusConfig?: never;
1253
+ };
1254
+ type ConfigurableStatusBadgeProps = {
1255
+ status: string;
1256
+ statusConfig: Record<string, StatusBadgeConfig>;
1257
+ label?: string;
1258
+ size?: 'sm' | 'md';
1259
+ className?: string;
1260
+ };
1261
+ type StatusBadgeProps = LegacyStatusBadgeProps | ConfigurableStatusBadgeProps;
1262
+ declare const StatusBadge: React$1.ForwardRefExoticComponent<StatusBadgeProps & React$1.RefAttributes<HTMLDivElement>>;
1263
+
1264
+ declare function Text({ className, ...props }: React.ComponentPropsWithoutRef<'p'>): react_jsx_runtime.JSX.Element;
1265
+ declare function TextLink({ className, ...props }: React.ComponentPropsWithoutRef<typeof Link>): react_jsx_runtime.JSX.Element;
1266
+ declare function Strong({ className, ...props }: React.ComponentPropsWithoutRef<'strong'>): react_jsx_runtime.JSX.Element;
1267
+ declare function Code({ className, ...props }: React.ComponentPropsWithoutRef<'code'>): react_jsx_runtime.JSX.Element;
1268
+
1269
+ declare const sizes: {
1270
+ xs: string;
1271
+ sm: string;
1272
+ md: string;
1273
+ lg: string;
1274
+ xl: string;
1275
+ '2xl': string;
1276
+ '3xl': string;
1277
+ '4xl': string;
1278
+ '5xl': string;
1279
+ };
1280
+ declare function Dialog({ size, className, children, ...props }: {
1281
+ size?: keyof typeof sizes;
1282
+ className?: string;
1283
+ children: React__default.ReactNode;
1284
+ } & Omit<Headless.DialogProps, 'as' | 'className'>): react_jsx_runtime.JSX.Element;
1285
+ declare function DialogTitle({ className, ...props }: {
1286
+ className?: string;
1287
+ } & Omit<Headless.DialogTitleProps, 'as' | 'className'>): react_jsx_runtime.JSX.Element;
1288
+ declare function DialogDescription({ className, ...props }: {
1289
+ className?: string;
1290
+ } & Omit<Headless.DescriptionProps<typeof Text>, 'as' | 'className'>): react_jsx_runtime.JSX.Element;
1291
+ declare function DialogBody({ className, ...props }: React__default.ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
1292
+ declare function DialogActions({ className, ...props }: React__default.ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
1293
+
1294
+ interface SelectableListItem {
1295
+ id: string;
1296
+ title: string;
1297
+ subtitle?: string;
1298
+ searchText?: string;
1299
+ leadingVisual?: ReactNode;
1300
+ }
1301
+ interface SelectableListPickerLabels {
1302
+ selectedSummary: (selectedCount: number, totalCount: number) => string;
1303
+ selectAll: string;
1304
+ clear: string;
1305
+ searchPlaceholder: string;
1306
+ loading: string;
1307
+ noResults: (query: string) => string;
1308
+ resultsSummary: (filteredCount: number, totalCount: number) => string;
1309
+ }
1310
+ interface SelectableListPickerProps {
1311
+ items: SelectableListItem[];
1312
+ selectedIds: string[];
1313
+ onChange: (selectedIds: string[]) => void;
1314
+ labels: SelectableListPickerLabels;
1315
+ maxHeight?: string;
1316
+ }
1317
+ declare function SelectableListPicker({ items, selectedIds, onChange, labels, maxHeight, }: SelectableListPickerProps): react_jsx_runtime.JSX.Element;
1318
+
1319
+ type ChipItemStyle = {
1320
+ bg: string;
1321
+ text: string;
1322
+ dotColor?: string;
1323
+ };
1324
+ type ChipItem = {
1325
+ id: string;
1326
+ name: string;
1327
+ abbreviation?: string;
1328
+ isActive?: boolean;
1329
+ style: ChipItemStyle;
1330
+ };
1331
+ type ChipPickerProps = {
1332
+ items: ChipItem[];
1333
+ selectedIds: string[];
1334
+ onChange: (ids: string[]) => void;
1335
+ isLoading?: boolean;
1336
+ showActions?: boolean;
1337
+ loadingLabel?: string;
1338
+ selectedLabel?: string;
1339
+ selectAllLabel?: string;
1340
+ clearLabel?: string;
1341
+ emptyLabel?: string;
1342
+ };
1343
+ declare function ChipPicker({ items, selectedIds, onChange, isLoading, showActions, loadingLabel, selectedLabel, selectAllLabel, clearLabel, emptyLabel, }: ChipPickerProps): react_jsx_runtime.JSX.Element;
1344
+
1345
+ interface SelectableChipItem {
1346
+ id: string;
1347
+ label: string;
1348
+ leadingVisual?: ReactNode;
1349
+ }
1350
+ interface SelectableChipPickerLabels {
1351
+ selectedSummary: (selectedCount: number, totalCount: number) => string;
1352
+ allSelected?: string;
1353
+ selectAll: string;
1354
+ clear: string;
1355
+ empty: string;
1356
+ }
1357
+ interface SelectableChipPickerProps {
1358
+ items: SelectableChipItem[];
1359
+ selectedIds: string[];
1360
+ onChange: (selectedIds: string[]) => void;
1361
+ labels: SelectableChipPickerLabels;
1362
+ }
1363
+ declare function SelectableChipPicker({ items, selectedIds, onChange, labels, }: SelectableChipPickerProps): react_jsx_runtime.JSX.Element;
1364
+
1365
+ interface CopyableIdProps {
1366
+ id: string;
1367
+ copyValue?: string;
1368
+ label?: string;
1369
+ className?: string;
1370
+ }
1371
+ declare function CopyableId({ id, copyValue, label, className }: CopyableIdProps): react_jsx_runtime.JSX.Element;
1372
+
1373
+ interface CardActionMenuItem {
1374
+ id: string;
1375
+ label: string;
1376
+ onSelect: () => void;
1377
+ icon?: ReactNode;
1378
+ tone?: 'default' | 'danger';
1379
+ }
1380
+ interface CardActionMenuProps {
1381
+ items: CardActionMenuItem[];
1382
+ }
1383
+ declare function CardActionMenu({ items }: CardActionMenuProps): react_jsx_runtime.JSX.Element;
1384
+
1385
+ interface FilterBadgeProps {
1386
+ count: number;
1387
+ }
1388
+ declare function FilterBadge({ count }: FilterBadgeProps): react_jsx_runtime.JSX.Element | null;
1389
+
1390
+ interface FeedItemCardProps {
1391
+ children: ReactNode;
1392
+ className?: string;
1393
+ }
1394
+ declare function FeedItemCard({ children, className }: FeedItemCardProps): react_jsx_runtime.JSX.Element;
1395
+
1396
+ type ContextMenuItem = {
1397
+ type?: 'item';
1398
+ key: string;
1399
+ label: string;
1400
+ icon?: React.ComponentType<{
1401
+ className?: string;
1402
+ }>;
1403
+ onClick: () => void;
1404
+ danger?: boolean;
1405
+ disabled?: boolean;
1406
+ testId?: string;
1407
+ };
1408
+ type ContextMenuDivider = {
1409
+ type: 'divider';
1410
+ key: string;
1411
+ };
1412
+ type ContextMenuEntry = ContextMenuItem | ContextMenuDivider;
1413
+ type ContextMenuProps = {
1414
+ position: {
1415
+ x: number;
1416
+ y: number;
1417
+ };
1418
+ onClose: () => void;
1419
+ entries: ContextMenuEntry[];
1420
+ minWidthClass?: string;
1421
+ testId?: string;
1422
+ };
1423
+ declare function ContextMenu({ position, onClose, entries, minWidthClass, testId, }: ContextMenuProps): React$1.ReactPortal;
1424
+
1425
+ interface DatePickerProps {
1426
+ value: Date | null;
1427
+ onChange: (date: Date | null) => void;
1428
+ placeholder?: string;
1429
+ disableFuture?: boolean;
1430
+ className?: string;
1431
+ }
1432
+ declare function DatePicker({ value, onChange, placeholder, disableFuture, className, }: DatePickerProps): react_jsx_runtime.JSX.Element;
1433
+
1434
+ interface TimeValue {
1435
+ hours: number;
1436
+ minutes: number;
1437
+ }
1438
+ interface TimePickerProps {
1439
+ value: TimeValue | null;
1440
+ onChange: (time: TimeValue) => void;
1441
+ selectedDate?: Date | null;
1442
+ placeholder?: string;
1443
+ className?: string;
1444
+ }
1445
+ declare function TimePicker({ value, onChange, selectedDate, placeholder, className, }: TimePickerProps): react_jsx_runtime.JSX.Element;
1446
+
1447
+ type StepTimelineStatus = 'complete' | 'current' | 'upcoming';
1448
+ interface StepTimelineItem {
1449
+ id: string;
1450
+ name: string;
1451
+ description: string;
1452
+ status: StepTimelineStatus;
1453
+ }
1454
+ interface StepTimelineProps<TStep extends StepTimelineItem> {
1455
+ steps: TStep[];
1456
+ progressLabel: string;
1457
+ onStepClick?: (stepIndex: number) => void;
1458
+ renderCompleteContent?: (step: TStep) => ReactNode;
1459
+ }
1460
+ declare function StepTimeline<TStep extends StepTimelineItem>({ steps, progressLabel, onStepClick, renderCompleteContent, }: StepTimelineProps<TStep>): react_jsx_runtime.JSX.Element;
1461
+
1462
+ type BreadcrumbItem = {
1463
+ name: string;
1464
+ href: string;
1465
+ };
1466
+ type MetaItem = {
1467
+ icon: ReactNode;
1468
+ text: string;
1469
+ };
1470
+ type PageHeadingProps = {
1471
+ breadcrumbs?: BreadcrumbItem[];
1472
+ title: string;
1473
+ subtitle?: string;
1474
+ icon?: ReactNode;
1475
+ meta?: MetaItem[];
1476
+ actions?: ReactNode;
1477
+ };
1478
+ declare function PageHeading({ breadcrumbs, title, subtitle, icon, meta, actions }: PageHeadingProps): react_jsx_runtime.JSX.Element;
1479
+
1480
+ type InputSize = 'sm' | 'md' | 'lg';
1481
+ type BaseFormFieldProps = {
1482
+ label?: string;
1483
+ error?: string;
1484
+ hint?: string;
1485
+ required?: boolean;
1486
+ icon?: ReactNode;
1487
+ inputSize?: InputSize;
1488
+ className?: string;
1489
+ };
1490
+ type FormInputProps = BaseFormFieldProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> & {
1491
+ onValueChange?: (value: string) => void;
1492
+ };
1493
+ type FormTextareaProps = BaseFormFieldProps & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> & {
1494
+ onValueChange?: (value: string) => void;
1495
+ };
1496
+ type FormSelectProps = BaseFormFieldProps & Omit<SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'size'> & {
1497
+ onValueChange?: (value: string) => void;
1498
+ options: Array<{
1499
+ value: string;
1500
+ label: string;
1501
+ }>;
1502
+ };
1503
+ declare function FormInput({ label, error, hint, required, icon, inputSize, className, onValueChange, ...props }: FormInputProps): react_jsx_runtime.JSX.Element;
1504
+ declare function FormTextarea({ label, error, hint, required, inputSize, className, onValueChange, ...props }: FormTextareaProps): react_jsx_runtime.JSX.Element;
1505
+ type PriceSize = 'sm' | 'md' | 'lg' | 'xl';
1506
+ type FormPriceInputProps = Omit<BaseFormFieldProps, 'icon'> & {
1507
+ value: string;
1508
+ onValueChange?: (value: string) => void;
1509
+ currencySymbol: string;
1510
+ priceSize?: PriceSize;
1511
+ step?: string;
1512
+ placeholder?: string;
1513
+ colorClass?: string;
1514
+ disabled?: boolean;
1515
+ min?: string | number;
1516
+ max?: string | number;
1517
+ className?: string;
1518
+ };
1519
+ declare function FormPriceInput({ label, error, hint, required, inputSize, priceSize, currencySymbol, value, onValueChange, step, placeholder, colorClass, disabled, min, max, className, }: FormPriceInputProps): react_jsx_runtime.JSX.Element;
1520
+ declare function FormSelect({ label, error, hint, required, inputSize, className, onValueChange, options, ...props }: FormSelectProps): react_jsx_runtime.JSX.Element;
1521
+
1522
+ type FormProps = React__default.FormHTMLAttributes<HTMLFormElement> & {
1523
+ children: React__default.ReactNode;
1524
+ };
1525
+ declare const Form: React__default.ForwardRefExoticComponent<React__default.FormHTMLAttributes<HTMLFormElement> & {
1526
+ children: React__default.ReactNode;
1527
+ } & React__default.RefAttributes<HTMLFormElement>>;
1528
+ type FormGridProps = React__default.HTMLAttributes<HTMLDivElement> & {
1529
+ children: React__default.ReactNode;
1530
+ };
1531
+ declare const FormGrid: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & {
1532
+ children: React__default.ReactNode;
1533
+ } & React__default.RefAttributes<HTMLDivElement>>;
1534
+ type InlineFormProps = React__default.HTMLAttributes<HTMLDivElement> & {
1535
+ children: React__default.ReactNode;
1536
+ };
1537
+ declare const InlineForm: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & {
1538
+ children: React__default.ReactNode;
1539
+ } & React__default.RefAttributes<HTMLDivElement>>;
1540
+ type FormActionsRowProps = React__default.HTMLAttributes<HTMLDivElement> & {
1541
+ children: React__default.ReactNode;
1542
+ };
1543
+ declare const FormActionsRow: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & {
1544
+ children: React__default.ReactNode;
1545
+ } & React__default.RefAttributes<HTMLDivElement>>;
1546
+
1547
+ type FormActionsProps = {
1548
+ cancelLabel: string;
1549
+ saveLabel: string;
1550
+ onCancel: () => void;
1551
+ onSave: () => void;
1552
+ saveDisabled?: boolean;
1553
+ className?: string;
1554
+ };
1555
+ declare function FormActions({ cancelLabel, saveLabel, onCancel, onSave, saveDisabled, className, }: FormActionsProps): react_jsx_runtime.JSX.Element;
1556
+
1557
+ type ToggleColor = 'blue' | 'green' | 'red' | 'amber' | 'purple' | 'indigo';
1558
+ type FormToggleProps = {
1559
+ checked: boolean;
1560
+ onChange: (checked: boolean) => void;
1561
+ label?: string;
1562
+ disabled?: boolean;
1563
+ color?: ToggleColor;
1564
+ size?: 'sm' | 'md';
1565
+ variant?: 'inline' | 'card';
1566
+ };
1567
+ declare function FormToggle({ checked, onChange, label, disabled, color, size, variant }: FormToggleProps): react_jsx_runtime.JSX.Element;
1568
+
1569
+ type FormCheckboxProps = {
1570
+ checked: boolean;
1571
+ onChange: (checked: boolean) => void;
1572
+ label: string;
1573
+ description?: string;
1574
+ disabled?: boolean;
1575
+ };
1576
+ declare function FormCheckbox({ checked, onChange, label, description, disabled }: FormCheckboxProps): react_jsx_runtime.JSX.Element;
1577
+
1578
+ type BaseFormIconColor = 'blue' | 'violet' | 'emerald' | 'amber' | 'rose' | 'indigo' | 'purple' | 'red' | 'green';
1579
+ interface BaseFormProps {
1580
+ /** Icon element displayed in the header (e.g. a Heroicon) */
1581
+ icon?: ReactNode;
1582
+ /** Preset color for the icon box background */
1583
+ iconColor?: BaseFormIconColor;
1584
+ /** Custom className for the icon box (overrides iconColor) */
1585
+ iconClassName?: string;
1586
+ /** Form title */
1587
+ title?: string;
1588
+ /** Subtitle shown below the title */
1589
+ subtitle?: string;
1590
+ /** Form submit handler */
1591
+ onSubmit: (event: FormEvent) => void;
1592
+ /** Form content (FormInput, FormSelect, etc.) */
1593
+ children: ReactNode;
1594
+ /** Label for the submit button */
1595
+ submitLabel: string;
1596
+ /** Label for the cancel button (renders cancel button when provided alongside onCancel) */
1597
+ cancelLabel?: string;
1598
+ /** Cancel callback — renders cancel button when provided */
1599
+ onCancel?: () => void;
1600
+ /** Disables submit button and shows loading state */
1601
+ isLoading?: boolean;
1602
+ /** Disables the submit button */
1603
+ submitDisabled?: boolean;
1604
+ /** Show the header section (default: true) */
1605
+ showHeader?: boolean;
1606
+ /** Show the footer buttons (default: true) */
1607
+ showFooter?: boolean;
1608
+ /** Extra content rendered after the cancel button */
1609
+ footerExtra?: ReactNode;
1610
+ /** Additional className on the <form> element */
1611
+ className?: string;
1612
+ }
1613
+ declare function BaseForm({ icon, iconColor, iconClassName, title, subtitle, onSubmit, children, submitLabel, cancelLabel, onCancel, isLoading, submitDisabled, showHeader, showFooter, footerExtra, className, }: BaseFormProps): react_jsx_runtime.JSX.Element;
1614
+
1615
+ interface ExpandableHistoryItem {
1616
+ id: string;
1617
+ headerLeft: ReactNode;
1618
+ headerRight?: ReactNode;
1619
+ summary?: ReactNode;
1620
+ details?: ReactNode;
1621
+ }
1622
+ interface ExpandableHistoryListProps {
1623
+ items: ExpandableHistoryItem[];
1624
+ loadingLabel: string;
1625
+ emptyLabel: string;
1626
+ isLoading?: boolean;
1627
+ className?: string;
1628
+ }
1629
+ declare function ExpandableHistoryList({ items, loadingLabel, emptyLabel, isLoading, className, }: ExpandableHistoryListProps): react_jsx_runtime.JSX.Element;
1630
+
1631
+ type BooleanFlagsPreset = {
1632
+ id: string;
1633
+ label: string;
1634
+ description?: string;
1635
+ values: Record<string, boolean>;
1636
+ };
1637
+ type BooleanFlagsPickerProps = {
1638
+ values: Record<string, boolean>;
1639
+ onChange: (values: Record<string, boolean>) => void;
1640
+ presets?: BooleanFlagsPreset[];
1641
+ selectedPresetId?: string | null;
1642
+ onPresetChange?: (presetId: string | null) => void;
1643
+ labels: Record<string, string>;
1644
+ descriptions?: Record<string, string>;
1645
+ };
1646
+ declare function BooleanFlagsPicker({ values, onChange, presets, selectedPresetId, onPresetChange, labels, descriptions, }: BooleanFlagsPickerProps): react_jsx_runtime.JSX.Element;
1647
+
1648
+ type InfoPopoverProps = {
1649
+ title: string;
1650
+ content: ReactNode;
1651
+ triggerLabel?: string;
1652
+ };
1653
+ declare function InfoPopover({ title, content, triggerLabel }: InfoPopoverProps): react_jsx_runtime.JSX.Element;
1654
+
1655
+ interface DetailsPopoverActor {
1656
+ avatarText: string;
1657
+ primaryText: string;
1658
+ secondaryText?: string;
1659
+ }
1660
+ interface DetailsPopoverComparison {
1661
+ label: string;
1662
+ fromLabel: string;
1663
+ fromValue: string;
1664
+ toLabel: string;
1665
+ toValue: string;
1666
+ icon?: ReactNode;
1667
+ }
1668
+ interface DetailsPopoverNote {
1669
+ label: string;
1670
+ value: string;
1671
+ icon?: ReactNode;
1672
+ }
1673
+ interface DetailsPopoverProps {
1674
+ triggerAriaLabel: string;
1675
+ headerTitle: string;
1676
+ headerIcon?: ReactNode;
1677
+ headerClassName?: string;
1678
+ actor?: DetailsPopoverActor;
1679
+ timestamp?: string;
1680
+ timestampIcon?: ReactNode;
1681
+ comparison?: DetailsPopoverComparison;
1682
+ note?: DetailsPopoverNote;
1683
+ }
1684
+ declare function DetailsPopover({ triggerAriaLabel, headerTitle, headerIcon, headerClassName, actor, timestamp, timestampIcon, comparison, note, }: DetailsPopoverProps): react_jsx_runtime.JSX.Element;
1685
+
1686
+ interface FormStep {
1687
+ id: string;
1688
+ title: string;
1689
+ description?: string;
1690
+ icon?: ReactNode;
1691
+ }
1692
+ interface StepFormPageProps {
1693
+ title: string;
1694
+ subtitle?: string;
1695
+ label: string;
1696
+ icon: ReactNode;
1697
+ gradient?: string;
1698
+ steps: FormStep[];
1699
+ currentStep: number;
1700
+ onStepChange: (step: number) => void;
1701
+ onSubmit: () => void;
1702
+ onCancel: () => void;
1703
+ isSubmitting?: boolean;
1704
+ submitLabel?: string;
1705
+ canAdvance?: boolean;
1706
+ headerRight?: ReactNode;
1707
+ children: ReactNode;
1708
+ }
1709
+ declare function StepFormPage({ title, subtitle, label, icon, gradient, steps, currentStep, onStepChange, onSubmit, onCancel, isSubmitting, submitLabel, canAdvance, headerRight, children, }: StepFormPageProps): react_jsx_runtime.JSX.Element;
1710
+
1711
+ interface StepNavigationButtonsProps {
1712
+ /** Handler for the back button. If omitted, only the continue button is shown. */
1713
+ onBack?: () => void;
1714
+ /** Whether the form is currently submitting */
1715
+ isLoading: boolean;
1716
+ /** Label for the back button */
1717
+ backLabel?: string;
1718
+ /** Label for the continue/submit button */
1719
+ continueLabel: string;
1720
+ /** Label shown while loading (replaces continueLabel) */
1721
+ loadingLabel?: string;
1722
+ /** Whether to show a spinner alongside the loading label */
1723
+ showSpinner?: boolean;
1724
+ /** Button type for the continue button (defaults to 'submit') */
1725
+ type?: 'submit' | 'button';
1726
+ /** Click handler for the continue button (only needed when type='button') */
1727
+ onContinue?: () => void;
1728
+ }
1729
+ declare function StepNavigationButtons({ onBack, isLoading, backLabel, continueLabel, loadingLabel, showSpinner, type, onContinue, }: StepNavigationButtonsProps): react_jsx_runtime.JSX.Element;
1730
+
1731
+ type SearchFilterToolbarProps = {
1732
+ label: string;
1733
+ query: string;
1734
+ onQueryChange: (value: string) => void;
1735
+ placeholder: string;
1736
+ filtersOpen?: boolean;
1737
+ onOpenFilters?: () => void;
1738
+ onCloseFilters?: () => void;
1739
+ filtersTitle?: string;
1740
+ activeFiltersCount?: number;
1741
+ onClearFilters?: () => void;
1742
+ actions?: ReactNode;
1743
+ /** Filter pills rendered inside the search input area */
1744
+ filterPills?: ReactNode;
1745
+ /** Optional context shown in filter modal header (e.g., entity + count) */
1746
+ filtersContext?: {
1747
+ icon?: ReactNode;
1748
+ label: string;
1749
+ countLabel?: string;
1750
+ };
1751
+ /** Optional icon for header when filtersContext is not provided */
1752
+ filtersHeaderIcon?: ReactNode;
1753
+ children?: ReactNode;
1754
+ };
1755
+ declare function SearchFilterToolbar({ label, query, onQueryChange, placeholder, filtersOpen, onOpenFilters, onCloseFilters, filtersTitle, activeFiltersCount, onClearFilters, actions, filterPills, filtersContext, filtersHeaderIcon, children, }: SearchFilterToolbarProps): react_jsx_runtime.JSX.Element;
1756
+
1757
+ type EntityCardDragProps = Pick<HTMLAttributes<HTMLDivElement>, 'draggable' | 'onDragStart' | 'onDragEnd' | 'onDragOver' | 'onDrop'>;
1758
+ interface EntityCardProps {
1759
+ /** Leading element: icon box, color badge, avatar */
1760
+ icon?: ReactNode;
1761
+ /** Primary title */
1762
+ title: ReactNode;
1763
+ /** Secondary line (ID, email, etc.) */
1764
+ subtitle?: ReactNode;
1765
+ /** Status badge — pass true/false for active/inactive, or a ReactNode for custom */
1766
+ status?: boolean | ReactNode;
1767
+ /** Optional top color accent bar (gradient classes, e.g. "from-green-500 to-emerald-600") */
1768
+ accentGradient?: string;
1769
+ /** Card body content (metadata, pills, tags, etc.) */
1770
+ children?: ReactNode;
1771
+ /** Footer actions (edit/delete buttons) — rendered below a border-t divider */
1772
+ footer?: ReactNode;
1773
+ /** Full-card click handler */
1774
+ onClick?: () => void;
1775
+ /** Additional className */
1776
+ className?: string;
1777
+ /** HTML div props for drag-and-drop */
1778
+ dragProps?: EntityCardDragProps;
1779
+ }
1780
+ declare function EntityCard({ icon, title, subtitle, status, accentGradient, children, footer, onClick, className, dragProps, }: EntityCardProps): react_jsx_runtime.JSX.Element;
1781
+
1782
+ type FilterTileColor = 'blue' | 'emerald' | 'gray' | 'amber' | 'violet' | 'purple' | 'orange' | 'red' | 'indigo' | 'cyan' | 'teal' | 'pink' | 'rose' | 'green' | 'yellow' | 'slate' | 'sky' | 'fuchsia';
1783
+ interface FilterTileButtonProps {
1784
+ /** Whether the filter is currently active */
1785
+ isActive: boolean;
1786
+ /** Accent color for the tile */
1787
+ color: FilterTileColor;
1788
+ /** Icon rendered inside the badge (h-5 w-5 recommended) */
1789
+ icon: React__default.ReactNode;
1790
+ /** Primary label text */
1791
+ label: string;
1792
+ /** Secondary count/description text */
1793
+ count: string;
1794
+ /** Click handler — typically toggles the filter */
1795
+ onClick: () => void;
1796
+ }
1797
+ declare function FilterTileButton({ isActive, color, icon, label, count, onClick, }: FilterTileButtonProps): react_jsx_runtime.JSX.Element;
1798
+ interface FilterSectionHeaderProps {
1799
+ /** Icon rendered inside the badge (h-4 w-4 recommended) */
1800
+ icon: React__default.ReactNode;
1801
+ /** Accent color for the icon badge */
1802
+ color: FilterTileColor;
1803
+ /** Section label text */
1804
+ label: string;
1805
+ }
1806
+ declare function FilterSectionHeader({ icon, color, label, }: FilterSectionHeaderProps): react_jsx_runtime.JSX.Element;
1807
+
1808
+ type DockSkeletonProps = {
1809
+ className?: string;
1810
+ };
1811
+ declare function DockSkeleton({ className }: DockSkeletonProps): react_jsx_runtime.JSX.Element;
1812
+
1813
+ type LaunchpadMenuItem = {
1814
+ label: string;
1815
+ icon?: ReactNode;
1816
+ href?: string;
1817
+ onClick?: () => void;
1818
+ };
1819
+ type LaunchpadItem = {
1820
+ id: string;
1821
+ name: string;
1822
+ href: string;
1823
+ icon: ComponentType<{
1824
+ className?: string;
1825
+ }>;
1826
+ gradient: string;
1827
+ shadow: string;
1828
+ badge?: number;
1829
+ notification?: number;
1830
+ subtitle?: string;
1831
+ menuItems: LaunchpadMenuItem[];
1832
+ /** When defined, the item triggers this callback instead of navigating via href. */
1833
+ onClick?: () => void;
1834
+ };
1835
+ type LaunchpadUserProfile = {
1836
+ name?: string | null;
1837
+ email?: string | null;
1838
+ picture?: string | null;
1839
+ role?: string | null;
1840
+ };
1841
+ type LaunchpadGridProps = {
1842
+ pageItems: LaunchpadItem[];
1843
+ actionItems: LaunchpadItem[];
1844
+ actionItemIds: ReadonlySet<string>;
1845
+ pageOrder: string[];
1846
+ userProfile?: LaunchpadUserProfile | null;
1847
+ isHydrated?: boolean;
1848
+ actionsLabel: string;
1849
+ onItemClick: (item: LaunchpadItem) => void;
1850
+ onPrefetch?: (href: string) => void;
1851
+ className?: string;
1852
+ };
1853
+ declare function LaunchpadGrid({ pageItems, actionItems, actionItemIds, pageOrder, userProfile, isHydrated, actionsLabel, onItemClick, className, }: LaunchpadGridProps): react_jsx_runtime.JSX.Element;
1854
+
1855
+ interface StatCardSkeletonProps {
1856
+ count?: number;
1857
+ columns?: 3 | 4;
1858
+ }
1859
+ declare function StatCardSkeleton({ count, columns }: StatCardSkeletonProps): react_jsx_runtime.JSX.Element;
1860
+
1861
+ interface CardGridSkeletonProps {
1862
+ count?: number;
1863
+ columns?: 1 | 2 | 3 | 4;
1864
+ }
1865
+ declare function CardGridSkeleton({ count, columns }: CardGridSkeletonProps): react_jsx_runtime.JSX.Element;
1866
+
1867
+ interface RegionFilterSkeletonProps {
1868
+ count?: number;
1869
+ }
1870
+ declare function RegionFilterSkeleton({ count }: RegionFilterSkeletonProps): react_jsx_runtime.JSX.Element;
1871
+
1872
+ interface BrandFilterSkeletonProps {
1873
+ count?: number;
1874
+ }
1875
+ declare function BrandFilterSkeleton({ count }: BrandFilterSkeletonProps): react_jsx_runtime.JSX.Element;
1876
+
1877
+ declare function AnalysisSkeleton(): react_jsx_runtime.JSX.Element;
1878
+
1879
+ /**
1880
+ * Reusable section header skeleton with icon and title
1881
+ */
1882
+ declare function SectionHeaderSkeleton(): react_jsx_runtime.JSX.Element;
1883
+
1884
+ /**
1885
+ * Base shimmer animation class for skeleton loading
1886
+ */
1887
+ declare const shimmerClass = "bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700 animate-shimmer motion-reduce:animate-none bg-[length:200%_100%]";
1888
+ declare const shimmerWhiteClass = "bg-white/20 animate-pulse motion-reduce:animate-none";
1889
+
1890
+ type CookieConsentProps = {
1891
+ learnMoreHref?: string;
1892
+ storageKey?: string;
1893
+ onAccept?: () => void;
1894
+ onReject?: () => void;
1895
+ };
1896
+ declare function CookieConsent({ learnMoreHref, storageKey, onAccept, onReject, }?: CookieConsentProps): react_jsx_runtime.JSX.Element;
1897
+
1898
+ type DockMenuItem = {
1899
+ label: string;
1900
+ icon?: ReactNode;
1901
+ href?: string;
1902
+ onClick?: () => void;
1903
+ variant?: 'default' | 'danger';
1904
+ };
1905
+ type DockAction = {
1906
+ id: string;
1907
+ icon: React.ComponentType<{
1908
+ className?: string;
1909
+ }>;
1910
+ label: string;
1911
+ onClick: () => void;
1912
+ href?: string;
1913
+ badge?: number;
1914
+ active?: boolean;
1915
+ menuItems: DockMenuItem[];
1916
+ /** RGB triplet for accent color (e.g. '59, 130, 246'). Overrides hardcoded getDockAccent. */
1917
+ accentRgb?: string;
1918
+ };
1919
+ type DockPosition = 'bottom' | 'top' | 'left' | 'right';
1920
+ type DockProps = {
1921
+ navigationActions: DockAction[];
1922
+ contextualActions: DockAction[];
1923
+ position?: DockPosition;
1924
+ className?: string;
1925
+ autoHide?: boolean;
1926
+ };
1927
+ declare function Dock({ navigationActions, contextualActions, position, className, autoHide, }: DockProps): react_jsx_runtime.JSX.Element;
1928
+
1929
+ type DockContainerProps = {
1930
+ navigationActions: DockAction[];
1931
+ contextualActions: DockAction[];
1932
+ position?: 'left' | 'right' | 'bottom';
1933
+ autoHide?: boolean;
1934
+ enabled?: boolean;
1935
+ tabletBreakpoint?: number;
1936
+ className?: string;
1937
+ };
1938
+ /**
1939
+ * Renders the Dock component with responsive viewport handling and skeleton loading.
1940
+ * Shows a skeleton until actions are populated, then transitions to the real Dock.
1941
+ * On tablet viewports (below tabletBreakpoint), forces bottom position.
1942
+ */
1943
+ declare function DockContainer({ navigationActions, contextualActions, position, autoHide, enabled, tabletBreakpoint, className, }: DockContainerProps): react_jsx_runtime.JSX.Element | null;
1944
+
1945
+ type AppShellProps = {
1946
+ children: ReactNode;
1947
+ navigation: ReactNode;
1948
+ dock?: ReactNode;
1949
+ profileDrawer?: ReactNode;
1950
+ initializers?: ReactNode;
1951
+ sessionGuard?: ReactNode;
1952
+ loadingLabel?: string;
1953
+ };
1954
+ declare function AppShell({ children, navigation, dock, profileDrawer, initializers, sessionGuard, loadingLabel, }: AppShellProps): react_jsx_runtime.JSX.Element;
1955
+
1956
+ type AvatarProps = {
1957
+ src?: string | null;
1958
+ square?: boolean;
1959
+ initials?: string;
1960
+ alt?: string;
1961
+ className?: string;
1962
+ };
1963
+ declare function Avatar({ src, square, initials, alt, className, ...props }: AvatarProps & React__default.ComponentPropsWithoutRef<'span'>): react_jsx_runtime.JSX.Element;
1964
+ declare const AvatarButton: React__default.ForwardRefExoticComponent<(AvatarProps & (({
1965
+ href?: never;
1966
+ } & Omit<Headless.ButtonProps<"button">, "className" | "as">) | ({
1967
+ href: string;
1968
+ } & Omit<Omit<{
1969
+ href: string;
1970
+ children?: React__default.ReactNode;
1971
+ } & Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> & React__default.RefAttributes<HTMLAnchorElement>, "ref">, "className">))) & React__default.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
1972
+
1973
+ interface ImageUploadProps {
1974
+ /** Current image URL (S3 key or full URL) */
1975
+ src?: string | null;
1976
+ /** Fallback initials when no image */
1977
+ initials?: string;
1978
+ /** Alt text */
1979
+ alt?: string;
1980
+ /** Size class (default: 'h-20 w-20') */
1981
+ sizeClass?: string;
1982
+ /** Whether to show as square (default: circular) */
1983
+ square?: boolean;
1984
+ /** Allowed MIME types */
1985
+ accept?: string;
1986
+ /** Max file size in bytes (default: 5MB) */
1987
+ maxSizeBytes?: number;
1988
+ /** Called when a file is selected and validated */
1989
+ onUpload: (file: File) => Promise<{
1990
+ success: boolean;
1991
+ key?: string;
1992
+ error?: string;
1993
+ }>;
1994
+ /** Called after successful upload with the new S3 key */
1995
+ onUploaded?: (key: string) => void;
1996
+ /** Hint text below the image */
1997
+ hint?: string;
1998
+ /** Error text for invalid type */
1999
+ invalidTypeMessage?: string;
2000
+ /** Error text for file too large */
2001
+ tooLargeMessage?: string;
2002
+ /** Disabled state */
2003
+ disabled?: boolean;
2004
+ }
2005
+ declare function ImageUpload({ src, initials, alt, sizeClass, square, accept, maxSizeBytes, onUpload, onUploaded, hint, invalidTypeMessage, tooLargeMessage, disabled, }: ImageUploadProps): react_jsx_runtime.JSX.Element;
2006
+
2007
+ declare const colors$1: {
2008
+ red: string;
2009
+ orange: string;
2010
+ amber: string;
2011
+ yellow: string;
2012
+ lime: string;
2013
+ green: string;
2014
+ emerald: string;
2015
+ teal: string;
2016
+ cyan: string;
2017
+ sky: string;
2018
+ blue: string;
2019
+ indigo: string;
2020
+ violet: string;
2021
+ purple: string;
2022
+ fuchsia: string;
2023
+ pink: string;
2024
+ rose: string;
2025
+ zinc: string;
2026
+ };
2027
+ type BadgeProps = {
2028
+ color?: keyof typeof colors$1;
2029
+ };
2030
+ declare function Badge({ color, className, ...props }: BadgeProps & React__default.ComponentPropsWithoutRef<'span'>): react_jsx_runtime.JSX.Element;
2031
+
2032
+ interface BreadcrumbPage {
2033
+ name: string;
2034
+ href: string;
2035
+ current: boolean;
2036
+ }
2037
+ type BreadcrumbProps = {
2038
+ pages: BreadcrumbPage[];
2039
+ actions?: ReactNode;
2040
+ centerContent?: ReactNode;
2041
+ dashboardPath?: string;
2042
+ };
2043
+ declare function Breadcrumb({ pages, actions, centerContent, dashboardPath }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
2044
+
2045
+ interface CreateActionButtonProps {
2046
+ label: string;
2047
+ onClick: () => void;
2048
+ className?: string;
2049
+ accent?: string;
2050
+ mode?: 'responsive' | 'desktop' | 'mobile';
2051
+ }
2052
+ declare function CreateActionButton({ label, onClick, className, mode, }: CreateActionButtonProps): react_jsx_runtime.JSX.Element;
2053
+
2054
+ declare function DashboardProgressShell({ children }: {
2055
+ children: ReactNode;
2056
+ }): react_jsx_runtime.JSX.Element;
2057
+
2058
+ type DevModeBannerUser = {
2059
+ email?: string;
2060
+ role?: string;
2061
+ };
2062
+ type DevModeBannerProps = {
2063
+ user?: DevModeBannerUser | null;
2064
+ devModeLabel?: string;
2065
+ devModeMessage?: string;
2066
+ };
2067
+ declare function DevModeBanner({ user, devModeLabel, devModeMessage, }: DevModeBannerProps): react_jsx_runtime.JSX.Element | null;
2068
+
2069
+ declare function Divider({ soft, className, ...props }: {
2070
+ soft?: boolean;
2071
+ } & React.ComponentPropsWithoutRef<'hr'>): react_jsx_runtime.JSX.Element;
2072
+
2073
+ declare function Dropdown(props: Headless.MenuProps): react_jsx_runtime.JSX.Element;
2074
+
2075
+ type ForceTouchMenuItem = {
2076
+ label: string;
2077
+ icon?: ReactNode;
2078
+ href?: string;
2079
+ onClick?: () => void;
2080
+ variant?: 'default' | 'danger';
2081
+ };
2082
+ type ForceTouchMenuProps = {
2083
+ children: ReactNode;
2084
+ items: ForceTouchMenuItem[];
2085
+ href?: string;
2086
+ onTap?: () => void;
2087
+ openOnClick?: boolean;
2088
+ className?: string;
2089
+ };
2090
+ declare function ForceTouchMenu({ children, items, href, onTap, openOnClick, className, }: ForceTouchMenuProps): react_jsx_runtime.JSX.Element;
2091
+
2092
+ type FlyoutMenuProps = {
2093
+ open: boolean;
2094
+ onClose: () => void;
2095
+ title?: ReactNode;
2096
+ children: ReactNode;
2097
+ maxWidthClassName?: string;
2098
+ panelClassName?: string;
2099
+ };
2100
+ declare function FlyoutMenu({ open, onClose, title, children, maxWidthClassName, panelClassName, }: FlyoutMenuProps): react_jsx_runtime.JSX.Element;
2101
+
2102
+ type FlyoutQuickActionsProps = {
2103
+ /** Current resolved theme ('light' | 'dark') */
2104
+ resolvedTheme: 'light' | 'dark';
2105
+ /** Toggle theme callback */
2106
+ onToggleTheme: () => void;
2107
+ /** Open notification history */
2108
+ onNotifications?: () => void;
2109
+ /** Notification badge count */
2110
+ notificationCount?: number;
2111
+ /** Open user profile */
2112
+ onProfile: () => void;
2113
+ /** User display name for profile button */
2114
+ userName?: string;
2115
+ /** User initials for avatar */
2116
+ userInitial?: string;
2117
+ /** Sign out callback */
2118
+ onSignOut: () => void;
2119
+ /** Close the flyout after action */
2120
+ onClose?: () => void;
2121
+ };
2122
+ declare function FlyoutQuickActions({ resolvedTheme, onToggleTheme, onNotifications, notificationCount, onProfile, userName, userInitial, onSignOut, onClose, }: FlyoutQuickActionsProps): react_jsx_runtime.JSX.Element;
2123
+
2124
+ type FlyoutNavItem = {
2125
+ id: string;
2126
+ label: string;
2127
+ subtitle?: string;
2128
+ href: string;
2129
+ icon: ComponentType<{
2130
+ className?: string;
2131
+ }>;
2132
+ gradient: string;
2133
+ hoverClass?: string;
2134
+ /** When defined, triggers this callback instead of navigating via href. */
2135
+ onClick?: () => void;
2136
+ };
2137
+ type FlyoutNavGridProps = {
2138
+ items: FlyoutNavItem[];
2139
+ currentPath: string;
2140
+ onNavigate: (href: string) => void;
2141
+ showSearch?: boolean;
2142
+ /** Function to resolve the glass accent RGB for a given href */
2143
+ getAccentRgb?: (href: string) => string;
2144
+ /** CSS class for the search input focus ring (default "focus-ring-indigo") */
2145
+ searchFocusRingClass?: string;
2146
+ };
2147
+ declare function FlyoutNavGrid({ items, currentPath, onNavigate, showSearch, getAccentRgb, searchFocusRingClass, }: FlyoutNavGridProps): react_jsx_runtime.JSX.Element;
2148
+
2149
+ type HeadingProps = {
2150
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
2151
+ } & React.ComponentPropsWithoutRef<'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;
2152
+ declare function Heading({ className, level, ...props }: HeadingProps): react_jsx_runtime.JSX.Element;
2153
+ declare function Subheading({ className, level, ...props }: HeadingProps): react_jsx_runtime.JSX.Element;
2154
+
2155
+ type LanguageOption$1 = {
2156
+ code: string;
2157
+ label: string;
2158
+ flag: string;
2159
+ badge: string;
2160
+ };
2161
+ type LanguageSwitcherProps = {
2162
+ languages: LanguageOption$1[];
2163
+ currentLocale: string;
2164
+ onLocaleChange: (locale: string) => void;
2165
+ changeLanguageLabel?: string;
2166
+ };
2167
+ declare function LanguageSwitcher({ languages, currentLocale, onLocaleChange, changeLanguageLabel, }: LanguageSwitcherProps): react_jsx_runtime.JSX.Element;
2168
+
2169
+ interface ItemSummaryMetadata {
2170
+ label: string;
2171
+ value: ReactNode;
2172
+ }
2173
+ interface ItemSummaryProps {
2174
+ icon?: ReactNode;
2175
+ title: ReactNode;
2176
+ subtitle?: ReactNode;
2177
+ metadata?: ItemSummaryMetadata[];
2178
+ iconContainerClassName?: string;
2179
+ titleClassName?: string;
2180
+ subtitleClassName?: string;
2181
+ metadataContainerClassName?: string;
2182
+ metadataLabelClassName?: string;
2183
+ metadataValueClassName?: string;
2184
+ }
2185
+ declare function ItemSummary({ icon, title, subtitle, metadata, iconContainerClassName, titleClassName, subtitleClassName, metadataContainerClassName, metadataLabelClassName, metadataValueClassName, }: ItemSummaryProps): react_jsx_runtime.JSX.Element;
2186
+
2187
+ type LiquidFilterInputProps = {
2188
+ value: string;
2189
+ onChange: (value: string) => void;
2190
+ placeholder: string;
2191
+ label?: string;
2192
+ className?: string;
2193
+ };
2194
+ declare function LiquidFilterInput({ value, onChange, placeholder, label, className }: LiquidFilterInputProps): react_jsx_runtime.JSX.Element;
2195
+
2196
+ interface ManagementSurfaceProps extends HTMLAttributes<HTMLDivElement> {
2197
+ children: ReactNode;
2198
+ }
2199
+ declare function ManagementSurface({ children, className, ...props }: ManagementSurfaceProps): react_jsx_runtime.JSX.Element;
2200
+
2201
+ type ManagementPageLayoutProps = {
2202
+ hero: ReactNode;
2203
+ summary?: ReactNode;
2204
+ content: ReactNode;
2205
+ mobileAction?: ReactNode;
2206
+ children?: ReactNode;
2207
+ testId?: string;
2208
+ className?: string;
2209
+ };
2210
+ declare function ManagementPageLayout({ hero, summary, content, mobileAction, children, testId, className, }: ManagementPageLayoutProps): react_jsx_runtime.JSX.Element;
2211
+
2212
+ type MonthPickerProps = {
2213
+ value: string;
2214
+ onChange: (value: string) => void;
2215
+ availableMonths: string[];
2216
+ placeholder?: string;
2217
+ /** Remove border and shadow when inside a unified container */
2218
+ noBorder?: boolean;
2219
+ /** Optional custom trigger content (used for card-style triggers) */
2220
+ triggerContent?: React$1.ReactNode;
2221
+ /** Optional extra classes for trigger button */
2222
+ triggerClassName?: string;
2223
+ /** Optional extra classes for popover content */
2224
+ contentClassName?: string;
2225
+ /** Popover side direction */
2226
+ side?: "top" | "right" | "bottom" | "left";
2227
+ /** Whether popover can auto-flip when space is constrained */
2228
+ avoidCollisions?: boolean;
2229
+ };
2230
+ declare function MonthPicker({ value, onChange, availableMonths, placeholder, noBorder, triggerContent, triggerClassName, contentClassName, side, avoidCollisions, }: MonthPickerProps): react_jsx_runtime.JSX.Element;
2231
+
2232
+ declare function NavigationProgress(): react_jsx_runtime.JSX.Element;
2233
+
2234
+ type PageEmptyStateProps = {
2235
+ title: string;
2236
+ message: string;
2237
+ iconName: string;
2238
+ /** Override the default icon with a custom React element */
2239
+ customIcon?: React.ReactNode;
2240
+ };
2241
+ declare function PageEmptyState({ title, message, iconName, customIcon }: PageEmptyStateProps): react_jsx_runtime.JSX.Element;
2242
+
2243
+ type PageErrorStateProps = {
2244
+ /** HTTP status code (e.g. 500, 502, 503) */
2245
+ statusCode?: number;
2246
+ /** Error title */
2247
+ title: string;
2248
+ /** Error description */
2249
+ message: string;
2250
+ /** Retry callback — renders a retry button when provided */
2251
+ onRetry?: () => void;
2252
+ /** Retry button label */
2253
+ retryLabel?: string;
2254
+ /** Override the default icon with a custom React element */
2255
+ customIcon?: ReactNode;
2256
+ };
2257
+ declare function PageErrorState({ statusCode, title, message, onRetry, retryLabel, customIcon, }: PageErrorStateProps): react_jsx_runtime.JSX.Element;
2258
+
2259
+ type PageLoadingStateProps = {
2260
+ label?: string;
2261
+ compact?: boolean;
2262
+ };
2263
+ declare function PageLoadingState({ label, compact }: PageLoadingStateProps): react_jsx_runtime.JSX.Element;
2264
+
2265
+ type BrandedLoaderProps = {
2266
+ /** App icon — SVG element or component */
2267
+ icon: ReactNode;
2268
+ /** App name displayed below icon */
2269
+ appName: string;
2270
+ /** Loading label text */
2271
+ label?: string;
2272
+ /** Gradient class for the icon container (e.g. "from-purple-500 to-blue-500") */
2273
+ gradient?: string;
2274
+ /** Accent color for the pulse ring (e.g. "ring-purple-500/30") */
2275
+ accentRing?: string;
2276
+ /** Full-screen or compact mode */
2277
+ compact?: boolean;
2278
+ /** If true, icon already has its own background (e.g. app SVG with built-in gradient) — skip the gradient container */
2279
+ rawIcon?: boolean;
2280
+ /** Additional class name */
2281
+ className?: string;
2282
+ };
2283
+ declare const WINDSOCK_LOADER: {
2284
+ readonly gradient: "from-emerald-500 to-teal-600";
2285
+ readonly accentRing: "ring-emerald-500/30";
2286
+ };
2287
+ declare const FUEL_PRICE_LOADER: {
2288
+ readonly gradient: "from-blue-500 to-indigo-600";
2289
+ readonly accentRing: "ring-blue-500/30";
2290
+ };
2291
+ declare const KORI_ERP_LOADER: {
2292
+ readonly gradient: "from-purple-500 to-violet-600";
2293
+ readonly accentRing: "ring-purple-500/30";
2294
+ };
2295
+ declare const WIRE_LOADER: {
2296
+ readonly gradient: "from-sky-500 to-indigo-600";
2297
+ readonly accentRing: "ring-indigo-500/30";
2298
+ };
2299
+ declare function BrandedLoader({ icon, appName, label, gradient, accentRing, compact, rawIcon, className, }: BrandedLoaderProps): react_jsx_runtime.JSX.Element;
2300
+
2301
+ type AppLogoProps = {
2302
+ /** App icon component (heroicon or custom SVG) */
2303
+ icon: ComponentType<{
2304
+ className?: string;
2305
+ }>;
2306
+ /** App name displayed as wordmark */
2307
+ appName: string;
2308
+ /** Gradient class for the icon background (e.g. "from-purple-500 to-blue-600") */
2309
+ gradient?: string;
2310
+ /** Size variant */
2311
+ size?: 'sm' | 'md' | 'lg';
2312
+ /** Additional className */
2313
+ className?: string;
2314
+ /** Custom wordmark element instead of text */
2315
+ wordmark?: ReactNode;
2316
+ };
2317
+ declare function AppLogo({ icon: Icon, appName, gradient, size, className, wordmark, }: AppLogoProps): react_jsx_runtime.JSX.Element;
2318
+
2319
+ type AccentColor = 'blue' | 'emerald' | 'purple' | 'indigo';
2320
+ type ErrorPageProps = {
2321
+ title?: string;
2322
+ message?: string;
2323
+ action?: ReactNode;
2324
+ className?: string;
2325
+ /** Accent color for the status code number */
2326
+ accentColor?: AccentColor;
2327
+ };
2328
+ declare function NotFoundPage({ title, message, action, className, accentColor }: ErrorPageProps): react_jsx_runtime.JSX.Element;
2329
+ declare function BadRequestPage({ title, message, action, className, accentColor }: ErrorPageProps): react_jsx_runtime.JSX.Element;
2330
+ declare function ServerErrorPage({ title, message, action, className, accentColor }: ErrorPageProps): react_jsx_runtime.JSX.Element;
2331
+
2332
+ interface PreferenceSectionProps {
2333
+ title?: string;
2334
+ titleIcon?: ReactNode;
2335
+ children: ReactNode;
2336
+ className?: string;
2337
+ }
2338
+ declare function PreferenceSection({ title, titleIcon, children, className, }: PreferenceSectionProps): react_jsx_runtime.JSX.Element;
2339
+
2340
+ interface ProfileIdentityCardProps {
2341
+ displayName: string;
2342
+ profileInitial: string;
2343
+ avatarUrl?: string;
2344
+ email?: string;
2345
+ showEmail: boolean;
2346
+ role?: string;
2347
+ }
2348
+ declare function ProfileIdentityCard({ displayName, profileInitial, avatarUrl, email, showEmail, role, }: ProfileIdentityCardProps): react_jsx_runtime.JSX.Element;
2349
+
2350
+ interface SettingsFieldConfig {
2351
+ key: string;
2352
+ label: string;
2353
+ description?: string;
2354
+ value: string;
2355
+ onChange?: (value: string) => void;
2356
+ placeholder?: string;
2357
+ type?: 'text' | 'email' | 'password' | 'textarea' | 'url';
2358
+ readOnly?: boolean;
2359
+ copyable?: boolean;
2360
+ rows?: number;
2361
+ }
2362
+ interface SelectionOption {
2363
+ value: string;
2364
+ label: string;
2365
+ icon: ReactNode;
2366
+ }
2367
+ interface ToggleConfig {
2368
+ key: string;
2369
+ checked: boolean;
2370
+ onChange: () => void;
2371
+ onLabel: string;
2372
+ onIcon?: ReactNode;
2373
+ offLabel: string;
2374
+ offIcon?: ReactNode;
2375
+ }
2376
+ interface RadioGroupConfig {
2377
+ key: string;
2378
+ legend: string;
2379
+ value: string;
2380
+ onChange: (value: string) => void;
2381
+ options: Array<{
2382
+ value: string;
2383
+ label: string;
2384
+ }>;
2385
+ columns?: 2 | 3 | 4;
2386
+ }
2387
+ interface LanguageOption {
2388
+ code: string;
2389
+ label: string;
2390
+ flagSvg?: string;
2391
+ flagEmoji?: string;
2392
+ }
2393
+ interface PreferenceGroupConfig {
2394
+ title: string;
2395
+ description?: string;
2396
+ value: string;
2397
+ onChange: (value: string) => void;
2398
+ options: SelectionOption[];
2399
+ columns?: 2 | 3 | 4;
2400
+ }
2401
+ interface WorkspaceSectionConfig {
2402
+ title: string;
2403
+ fields: SettingsFieldConfig[];
2404
+ }
2405
+ interface ProfileSectionConfig {
2406
+ title: string;
2407
+ initials: string;
2408
+ avatarUrl?: string;
2409
+ avatarGradient?: string;
2410
+ changeAvatarLabel: string;
2411
+ onChangeAvatar?: () => void;
2412
+ fields: SettingsFieldConfig[];
2413
+ password?: {
2414
+ title: string;
2415
+ currentLabel: string;
2416
+ newLabel: string;
2417
+ confirmLabel: string;
2418
+ submitLabel: string;
2419
+ onSubmit: (current: string, newPassword: string, confirm: string) => void;
2420
+ };
2421
+ }
2422
+ interface PreferencesSectionConfig {
2423
+ title: string;
2424
+ description?: string;
2425
+ /** StatusToggle rows (theme, email visibility, etc.) */
2426
+ toggles?: ToggleConfig[];
2427
+ /** Radio card groups (dock position, etc.) */
2428
+ radioGroups?: RadioGroupConfig[];
2429
+ /** Language picker grid */
2430
+ languages?: {
2431
+ title: string;
2432
+ titleIcon?: ReactNode;
2433
+ currentLocale: string;
2434
+ onLocaleChange: (locale: string) => void;
2435
+ options: LanguageOption[];
2436
+ };
2437
+ /** SelectionCard grids (legacy/simple pickers) */
2438
+ groups?: PreferenceGroupConfig[];
2439
+ }
2440
+ interface SettingsSection {
2441
+ id: string;
2442
+ label: string;
2443
+ icon: ComponentType<{
2444
+ className?: string;
2445
+ }>;
2446
+ group?: string;
2447
+ }
2448
+ interface SettingsModalProps {
2449
+ open: boolean;
2450
+ onClose: () => void;
2451
+ title: string;
2452
+ subtitle?: string;
2453
+ closeLabel?: string;
2454
+ sidebarFooter?: ReactNode;
2455
+ initialSection?: string;
2456
+ identity?: GlassModalIdentity;
2457
+ sections: SettingsSection[];
2458
+ workspace?: WorkspaceSectionConfig;
2459
+ profile?: ProfileSectionConfig;
2460
+ preferences?: PreferencesSectionConfig;
2461
+ renderSection?: (sectionId: string) => ReactNode | undefined;
2462
+ placeholderMessage?: string;
2463
+ accessDenied?: {
2464
+ title: string;
2465
+ description: string;
2466
+ icon?: ReactNode;
2467
+ };
2468
+ /** Sign-out button at the bottom of the sidebar */
2469
+ signOut?: {
2470
+ label: string;
2471
+ icon?: ReactNode;
2472
+ onClick: () => void;
2473
+ };
2474
+ }
2475
+ declare function SettingsModal({ open, onClose, title, subtitle, closeLabel, sidebarFooter, initialSection, identity, sections, workspace, profile, preferences, renderSection, placeholderMessage, accessDenied, signOut, }: SettingsModalProps): react_jsx_runtime.JSX.Element;
2476
+
2477
+ interface SelectionCardProps {
2478
+ selected: boolean;
2479
+ onClick: () => void;
2480
+ icon?: ReactNode;
2481
+ label: string;
2482
+ className?: string;
2483
+ }
2484
+ declare function SelectionCard({ selected, onClick, icon, label, className, }: SelectionCardProps): react_jsx_runtime.JSX.Element;
2485
+
2486
+ interface SelectableOptionsGridOption<TValue extends string> {
2487
+ value: TValue;
2488
+ label: string;
2489
+ leadingVisual?: string;
2490
+ }
2491
+ interface SelectableOptionsGridProps<TValue extends string> {
2492
+ options: SelectableOptionsGridOption<TValue>[];
2493
+ selectedValue: TValue;
2494
+ onChange: (value: TValue) => void;
2495
+ }
2496
+ declare function SelectableOptionsGrid<TValue extends string>({ options, selectedValue, onChange, }: SelectableOptionsGridProps<TValue>): react_jsx_runtime.JSX.Element;
2497
+
2498
+ declare function Stat({ title, value, change }: {
2499
+ title: string;
2500
+ value: string;
2501
+ change?: string;
2502
+ }): react_jsx_runtime.JSX.Element;
2503
+
2504
+ interface StatusToggleProps {
2505
+ checked: boolean;
2506
+ onChange: () => void;
2507
+ offLabel?: string;
2508
+ offIcon?: ReactNode;
2509
+ onLabel?: string;
2510
+ onIcon?: ReactNode;
2511
+ className?: string;
2512
+ }
2513
+ declare function StatusToggle({ checked, onChange, offLabel, offIcon, onLabel, onIcon, className, }: StatusToggleProps): react_jsx_runtime.JSX.Element;
2514
+
2515
+ type ThemeSwitchProps = {
2516
+ checked: boolean;
2517
+ onChange: () => void;
2518
+ label: string;
2519
+ className?: string;
2520
+ };
2521
+ declare function ThemeSwitch({ checked, onChange, label, className }: ThemeSwitchProps): react_jsx_runtime.JSX.Element;
2522
+
2523
+ declare const WindsockIcon: (props: SVGProps<SVGSVGElement>) => react_jsx_runtime.JSX.Element;
2524
+
2525
+ interface OtpInputProps {
2526
+ /** Number of digits (default: 6) */
2527
+ length?: number;
2528
+ /** Current value */
2529
+ value: string;
2530
+ /** Change handler */
2531
+ onChange: (value: string) => void;
2532
+ /** Called when all digits are filled */
2533
+ onComplete?: (code: string) => void;
2534
+ /** Error message */
2535
+ error?: string;
2536
+ /** Disabled state */
2537
+ disabled?: boolean;
2538
+ /** Auto-focus first input on mount */
2539
+ autoFocus?: boolean;
2540
+ /** Input mode for mobile keyboards */
2541
+ inputMode?: 'numeric' | 'text';
2542
+ }
2543
+ declare function OtpInput({ length, value, onChange, onComplete, error, disabled, autoFocus, inputMode, }: OtpInputProps): react_jsx_runtime.JSX.Element;
2544
+
2545
+ interface PasswordPolicy {
2546
+ minLength?: number;
2547
+ requireUppercase?: boolean;
2548
+ requireLowercase?: boolean;
2549
+ requireNumbers?: boolean;
2550
+ requireSpecialCharacters?: boolean;
2551
+ }
2552
+ interface PasswordStrengthMeterProps {
2553
+ /** The password to evaluate */
2554
+ password: string;
2555
+ /** Password policy requirements */
2556
+ policy?: PasswordPolicy;
2557
+ /** Show individual requirement checklist */
2558
+ showRequirements?: boolean;
2559
+ }
2560
+ declare function PasswordStrengthMeter({ password, policy, showRequirements, }: PasswordStrengthMeterProps): react_jsx_runtime.JSX.Element | null;
2561
+
2562
+ interface BackupCodeGridProps {
2563
+ /** Array of backup codes */
2564
+ codes: string[];
2565
+ /** Called when copy-all is clicked */
2566
+ onCopyAll?: () => void;
2567
+ /** Show download button */
2568
+ showDownload?: boolean;
2569
+ /** Whether codes are visible */
2570
+ revealed?: boolean;
2571
+ /** Called when reveal is toggled */
2572
+ onReveal?: () => void;
2573
+ }
2574
+ declare function BackupCodeGrid({ codes, onCopyAll, showDownload, revealed, onReveal, }: BackupCodeGridProps): react_jsx_runtime.JSX.Element;
2575
+
2576
+ type SocialProvider = 'google' | 'github' | 'discord' | 'microsoft';
2577
+ interface SocialLoginButtonsProps {
2578
+ /** Providers to show */
2579
+ providers: SocialProvider[];
2580
+ /** Called when a provider button is clicked */
2581
+ onProviderClick: (provider: SocialProvider) => void;
2582
+ /** Layout direction */
2583
+ layout?: 'row' | 'column';
2584
+ /** Provider currently loading */
2585
+ loading?: SocialProvider | null;
2586
+ /** Disable all buttons */
2587
+ disabled?: boolean;
2588
+ }
2589
+ declare function SocialLoginButtons({ providers, onProviderClick, layout, loading, disabled, }: SocialLoginButtonsProps): react_jsx_runtime.JSX.Element;
2590
+
2591
+ /**
2592
+ * HeroPanel
2593
+ *
2594
+ * A generic branded hero panel with liquid-glass aesthetics.
2595
+ * Used for split-screen login layouts, landing pages, etc.
2596
+ * Renders: logo slot, glass heading card, stat tiles, footer.
2597
+ */
2598
+ interface HeroPanelStat {
2599
+ value: string;
2600
+ label: string;
2601
+ }
2602
+ interface HeroPanelProps {
2603
+ logo: React.ReactNode;
2604
+ title: string;
2605
+ subtitle: string;
2606
+ stats: HeroPanelStat[];
2607
+ footer?: string;
2608
+ className?: string;
2609
+ }
2610
+ declare function HeroPanel({ logo, title, subtitle, stats, footer, className, }: HeroPanelProps): react_jsx_runtime.JSX.Element;
2611
+
2612
+ interface AuthLayoutProps {
2613
+ /** Auth form content */
2614
+ children: ReactNode;
2615
+ /** Optional hero panel config for split-screen layout */
2616
+ heroPanel?: HeroPanelProps;
2617
+ /** Card max width (default: md) */
2618
+ cardWidth?: 'sm' | 'md' | 'lg';
2619
+ /** Optional logo shown above the card */
2620
+ logo?: ReactNode;
2621
+ }
2622
+ declare function AuthLayout({ children, heroPanel, cardWidth, logo, }: AuthLayoutProps): react_jsx_runtime.JSX.Element;
2623
+
2624
+ /**
2625
+ * iOS-style haptic feedback hook
2626
+ * Provides tactile feedback for touch interactions
2627
+ */
2628
+ type HapticPattern = 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error' | 'selection';
2629
+ declare function useHaptic(): {
2630
+ trigger: (pattern?: HapticPattern) => boolean;
2631
+ cancel: () => void;
2632
+ isSupported: boolean;
2633
+ };
2634
+ /**
2635
+ * Standalone haptic trigger for use outside React components
2636
+ */
2637
+ declare function triggerHaptic(pattern?: HapticPattern): boolean;
2638
+
2639
+ type PullToRefreshOptions = {
2640
+ /** Callback when refresh is triggered */
2641
+ onRefresh: () => Promise<void>;
2642
+ /** Pull distance to trigger refresh (default: 80) */
2643
+ threshold?: number;
2644
+ /** Maximum pull distance (default: 120) */
2645
+ maxPull?: number;
2646
+ /** Enable/disable the hook (default: true) */
2647
+ enabled?: boolean;
2648
+ };
2649
+ declare function usePullToRefresh(options: PullToRefreshOptions): {
2650
+ containerRef: React__default.RefObject<HTMLDivElement | null>;
2651
+ pullDistance: number;
2652
+ isRefreshing: boolean;
2653
+ canRefresh: boolean;
2654
+ progress: number;
2655
+ };
2656
+ /**
2657
+ * Pull-to-refresh indicator component
2658
+ */
2659
+ declare function PullToRefreshIndicator({ pullDistance, isRefreshing, threshold, }: {
2660
+ pullDistance: number;
2661
+ isRefreshing: boolean;
2662
+ threshold?: number;
2663
+ }): react_jsx_runtime.JSX.Element | null;
2664
+
2665
+ /**
2666
+ * iOS-style animation presets for Framer Motion
2667
+ * Based on Apple Human Interface Guidelines
2668
+ * Includes reduced motion support for accessibility
2669
+ */
2670
+
2671
+ /**
2672
+ * Check if user prefers reduced motion
2673
+ * Use this to conditionally disable animations
2674
+ */
2675
+ declare function prefersReducedMotion(): boolean;
2676
+ /**
2677
+ * Get a transition that respects reduced motion preference
2678
+ */
2679
+ declare function getTransition(transition: Transition): Transition;
2680
+ /**
2681
+ * Get variants that respect reduced motion preference
2682
+ */
2683
+ declare function getVariants(variants: Variants): Variants;
2684
+ declare const springPresets: {
2685
+ /** Default iOS spring - balanced and smooth */
2686
+ default: Transition;
2687
+ /** Bouncy spring - more playful, good for icons */
2688
+ bouncy: Transition;
2689
+ /** Stiff spring - snappy, good for buttons */
2690
+ stiff: Transition;
2691
+ /** Gentle spring - slow and smooth, good for modals */
2692
+ gentle: Transition;
2693
+ /** Sheet spring - iOS sheet presentation */
2694
+ sheet: Transition;
2695
+ /** Quick spring - very fast, good for micro-interactions */
2696
+ quick: Transition;
2697
+ };
2698
+ /** Spring presets with reduced motion fallback (instant) */
2699
+ declare const springPresetsReduced: {
2700
+ default: Transition;
2701
+ bouncy: Transition;
2702
+ stiff: Transition;
2703
+ gentle: Transition;
2704
+ sheet: Transition;
2705
+ quick: Transition;
2706
+ };
2707
+ declare const buttonPress: Variants;
2708
+ declare const buttonTap: {
2709
+ scale: number;
2710
+ transition: Transition;
2711
+ };
2712
+ /** Reduced motion version - no scale animation */
2713
+ declare const buttonPressReduced: Variants;
2714
+ declare const cardHover: Variants;
2715
+ declare const cardPress: Variants;
2716
+ /** Reduced motion version - opacity only */
2717
+ declare const cardHoverReduced: Variants;
2718
+ declare const slideUp: Variants;
2719
+ declare const slideRight: Variants;
2720
+ declare const slideDown: Variants;
2721
+ declare const fadeScale: Variants;
2722
+ /** Reduced motion - fade only, no movement */
2723
+ declare const fadeOnly: Variants;
2724
+ declare const notificationBanner: Variants;
2725
+ /** Reduced motion version */
2726
+ declare const notificationBannerReduced: Variants;
2727
+ declare const listItem: Variants;
2728
+ declare const staggerContainer: Variants;
2729
+ /** Reduced motion - no stagger, just fade */
2730
+ declare const listItemReduced: Variants;
2731
+ declare const swipeActionThreshold = 80;
2732
+ declare const swipeConstraints: {
2733
+ left: number;
2734
+ right: number;
2735
+ };
2736
+ declare const pageControlDot: Variants;
2737
+ declare const iosColors: {
2738
+ blue: string;
2739
+ green: string;
2740
+ red: string;
2741
+ orange: string;
2742
+ yellow: string;
2743
+ purple: string;
2744
+ pink: string;
2745
+ teal: string;
2746
+ indigo: string;
2747
+ mint: string;
2748
+ cyan: string;
2749
+ brown: string;
2750
+ gray: string;
2751
+ gray2: string;
2752
+ gray3: string;
2753
+ gray4: string;
2754
+ gray5: string;
2755
+ gray6: string;
2756
+ dark: {
2757
+ blue: string;
2758
+ green: string;
2759
+ red: string;
2760
+ orange: string;
2761
+ yellow: string;
2762
+ purple: string;
2763
+ pink: string;
2764
+ teal: string;
2765
+ indigo: string;
2766
+ mint: string;
2767
+ cyan: string;
2768
+ brown: string;
2769
+ };
2770
+ };
2771
+ declare const durations: {
2772
+ instant: number;
2773
+ fast: number;
2774
+ normal: number;
2775
+ slow: number;
2776
+ verySlow: number;
2777
+ };
2778
+ /** Duration presets with reduced motion fallback */
2779
+ declare const durationsReduced: {
2780
+ instant: number;
2781
+ fast: number;
2782
+ normal: number;
2783
+ slow: number;
2784
+ verySlow: number;
2785
+ };
2786
+ declare const easings: {
2787
+ /** Standard ease for most animations */
2788
+ default: number[];
2789
+ /** Ease out - decelerating */
2790
+ out: number[];
2791
+ /** Ease in - accelerating */
2792
+ in: number[];
2793
+ /** Ease in-out - both */
2794
+ inOut: number[];
2795
+ /** iOS-style ease */
2796
+ ios: number[];
2797
+ };
2798
+ /**
2799
+ * Creates animation props that respect reduced motion preference
2800
+ */
2801
+ declare function createMotionProps<T extends object>(animatedProps: T, reducedProps?: Partial<T>): T;
2802
+
2803
+ declare function resolveGlassAccentRgb(className: string | undefined, fallback?: string): string;
2804
+
2805
+ /**
2806
+ * Subdivision Theme System
2807
+ * ========================
2808
+ *
2809
+ * Registry-based theming for geographic subdivisions (states, provinces, etc.).
2810
+ * Consumers register country-specific palettes at startup, then query via
2811
+ * generic getSubdivision* functions.
2812
+ *
2813
+ * No country-specific data is hardcoded here — all data comes from registration.
2814
+ */
2815
+ interface SubdivisionColorPalette {
2816
+ primary: string;
2817
+ secondary: string;
2818
+ text: 'light' | 'dark';
2819
+ }
2820
+ interface SubdivisionThemeConfig {
2821
+ palettes: Record<string, SubdivisionColorPalette>;
2822
+ accents?: Record<string, string>;
2823
+ flagUrlTemplate?: (code: string) => string | null;
2824
+ }
2825
+ declare function registerSubdivisionTheme(countryCode: string, config: SubdivisionThemeConfig): void;
2826
+ declare function getSubdivisionPalette(country: string, code: string): SubdivisionColorPalette | null;
2827
+ declare function getSubdivisionFlagUrl(country: string, code: string): string | null;
2828
+ declare function getSubdivisionHexColor(country: string, code: string): string | null;
2829
+ declare function getSubdivisionGradient(country: string, code: string, direction?: string): string | null;
2830
+ declare function getSubdivisionColors(country: string, code: string): {
2831
+ ring: string;
2832
+ text: string;
2833
+ bg: string;
2834
+ pill: string;
2835
+ } | null;
2836
+ declare function getSubdivisionAccent(country: string, code: string): string | null;
2837
+ declare function isValidSubdivision(country: string, code: string): boolean;
2838
+
2839
+ declare function formatCurrency$1(value: number | null | undefined, currency: string): string;
2840
+ declare function formatPercentage(value: number | null | undefined, locale: string): string;
2841
+ declare function formatDate(dateString: string | null | undefined | {
2842
+ value: string;
2843
+ }, options: {
2844
+ showTimezone?: boolean;
2845
+ locale: string;
2846
+ }): string;
2847
+ declare function getStatusColor(status: string | null): string;
2848
+
2849
+ interface NotificationBadgeProps {
2850
+ count: number;
2851
+ className?: string;
2852
+ }
2853
+ declare function NotificationBadge({ count, className }: NotificationBadgeProps): react_jsx_runtime.JSX.Element | null;
2854
+
2855
+ /**
2856
+ * Fuel UI Contracts
2857
+ * =================
2858
+ * Presentation-specific types shared by Fuel UI consumers.
2859
+ */
2860
+ type FuelColors = {
2861
+ primary: string;
2862
+ secondary: string;
2863
+ accent: string;
2864
+ };
2865
+ type SaveStatus = 'idle' | 'saving' | 'saved';
2866
+
2867
+ /**
2868
+ * Text Components
2869
+ */
2870
+ declare function RadiantHeading({ className, as: Element, dark, ...props }: {
2871
+ className?: string;
2872
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
2873
+ dark?: boolean;
2874
+ } & React.ComponentPropsWithoutRef<'h1' | 'h2' | 'h3'>): react_jsx_runtime.JSX.Element;
2875
+ declare function RadiantSubheading({ className, as: Element, dark, ...props }: {
2876
+ className?: string;
2877
+ as?: 'h2' | 'h3' | 'h4';
2878
+ dark?: boolean;
2879
+ } & React.ComponentPropsWithoutRef<'h2' | 'h3' | 'h4'>): react_jsx_runtime.JSX.Element;
2880
+ declare function Lead({ className, ...props }: React.ComponentPropsWithoutRef<'p'>): react_jsx_runtime.JSX.Element;
2881
+ /**
2882
+ * Animated Number Component
2883
+ */
2884
+ declare function AnimatedNumber({ start, end, decimals, suffix, }: {
2885
+ start: number;
2886
+ end: number;
2887
+ decimals?: number;
2888
+ suffix?: string;
2889
+ }): react_jsx_runtime.JSX.Element;
2890
+ /**
2891
+ * Gradient Components
2892
+ */
2893
+ declare function Gradient({ className, ...props }: React.ComponentPropsWithoutRef<'div'>): react_jsx_runtime.JSX.Element;
2894
+ declare function GradientBackground(): react_jsx_runtime.JSX.Element;
2895
+ /**
2896
+ * Bento Card Component
2897
+ */
2898
+ declare function BentoCard({ dark, className, eyebrow, title, description, graphic, fade, }: {
2899
+ dark?: boolean;
2900
+ className?: string;
2901
+ eyebrow: React.ReactNode;
2902
+ title: React.ReactNode;
2903
+ description: React.ReactNode;
2904
+ graphic: React.ReactNode;
2905
+ fade?: ('top' | 'bottom')[];
2906
+ }): react_jsx_runtime.JSX.Element;
2907
+ /**
2908
+ * Plus Grid Components
2909
+ */
2910
+ declare function PlusGrid({ className, children, }: {
2911
+ className?: string;
2912
+ children: React.ReactNode;
2913
+ }): react_jsx_runtime.JSX.Element;
2914
+ declare function PlusGridRow({ className, children, }: {
2915
+ className?: string;
2916
+ children: React.ReactNode;
2917
+ }): react_jsx_runtime.JSX.Element;
2918
+ declare function PlusGridItem({ className, children, }: {
2919
+ className?: string;
2920
+ children: React.ReactNode;
2921
+ }): react_jsx_runtime.JSX.Element;
2922
+ /**
2923
+ * Radiant Stat Card Component
2924
+ */
2925
+ declare function RadiantStatCard({ value, label, gradient, }: {
2926
+ value: React.ReactNode;
2927
+ label: string;
2928
+ gradient?: string;
2929
+ }): react_jsx_runtime.JSX.Element;
2930
+ /**
2931
+ * Feature Card with Icon
2932
+ */
2933
+ declare function FeatureCard({ icon: Icon, title, description, gradient, }: {
2934
+ icon: React.ComponentType<{
2935
+ className?: string;
2936
+ }>;
2937
+ title: string;
2938
+ description: string;
2939
+ gradient?: string;
2940
+ }): react_jsx_runtime.JSX.Element;
2941
+
2942
+ /**
2943
+ * CategoryTab / CategoryTabs / CategoryBadge
2944
+ *
2945
+ * Generic selectable category tabs with configurable color schemes.
2946
+ * Fully domain-agnostic — consumers provide a CategoryTabConfig for each item.
2947
+ */
2948
+ interface CategoryTabConfig {
2949
+ abbreviation: string;
2950
+ label: string;
2951
+ bg: string;
2952
+ text: string;
2953
+ selectedBg: string;
2954
+ selectedText: string;
2955
+ selectedBorder: string;
2956
+ dotColor: string;
2957
+ }
2958
+ interface CategoryTabProps {
2959
+ config: CategoryTabConfig;
2960
+ isSelected: boolean;
2961
+ onClick: () => void;
2962
+ className?: string;
2963
+ }
2964
+ declare function CategoryTab({ config, isSelected, onClick, className, }: CategoryTabProps): react_jsx_runtime.JSX.Element;
2965
+ interface CategoryTabsProps {
2966
+ items: Array<{
2967
+ key: string;
2968
+ config: CategoryTabConfig;
2969
+ value?: string;
2970
+ reactKey?: string;
2971
+ }>;
2972
+ selectedKey: string | null;
2973
+ onSelect: (key: string) => void;
2974
+ className?: string;
2975
+ }
2976
+ declare function CategoryTabs({ items, selectedKey, onSelect, className, }: CategoryTabsProps): react_jsx_runtime.JSX.Element;
2977
+ interface CategoryBadgeProps {
2978
+ config: CategoryTabConfig;
2979
+ size?: "sm" | "md";
2980
+ className?: string;
2981
+ }
2982
+ declare function CategoryBadge({ config, size, className, }: CategoryBadgeProps): react_jsx_runtime.JSX.Element;
2983
+
2984
+ /**
2985
+ * OptionGrid
2986
+ *
2987
+ * A generic grid of selectable option buttons with icon header.
2988
+ * Used for selecting from a set of options (e.g., currencies, countries, themes).
2989
+ */
2990
+ interface OptionGridItem {
2991
+ code: string;
2992
+ flag: string;
2993
+ label: string;
2994
+ }
2995
+ interface OptionGridProps {
2996
+ icon: React.ReactNode;
2997
+ title: string;
2998
+ options: OptionGridItem[];
2999
+ selected: string;
3000
+ onSelect: (code: string) => void;
3001
+ isLoading?: boolean;
3002
+ columns?: 2 | 3 | 4;
3003
+ layout?: 'horizontal' | 'vertical';
3004
+ className?: string;
3005
+ }
3006
+ declare function OptionGrid({ icon, title, options, selected, onSelect, isLoading, columns, layout, className, }: OptionGridProps): react_jsx_runtime.JSX.Element;
3007
+
3008
+ interface CollapsibleGroup<TItem, TMeta = undefined> {
3009
+ key: string;
3010
+ items: TItem[];
3011
+ header: ReactNode;
3012
+ meta?: TMeta;
3013
+ }
3014
+ interface CollapsibleGroupedListProps<TItem, TMeta = undefined> {
3015
+ groups: CollapsibleGroup<TItem, TMeta>[];
3016
+ renderItem: (item: TItem, group: CollapsibleGroup<TItem, TMeta>) => ReactNode;
3017
+ getItemKey: (item: TItem) => string;
3018
+ className?: string;
3019
+ groupClassName?: (group: CollapsibleGroup<TItem, TMeta>) => string;
3020
+ }
3021
+ declare function CollapsibleGroupedList<TItem, TMeta = undefined>({ groups, renderItem, getItemKey, className, groupClassName, }: CollapsibleGroupedListProps<TItem, TMeta>): react_jsx_runtime.JSX.Element;
3022
+
3023
+ /**
3024
+ * UserAvatar / UserMobileInfo
3025
+ *
3026
+ * Generic user avatar with dropdown menu. Domain-agnostic — accepts
3027
+ * user info and menu items as props, no i18n or store dependencies.
3028
+ */
3029
+ interface UserAvatarUser {
3030
+ name?: string;
3031
+ email?: string;
3032
+ }
3033
+ interface UserAvatarMenuItem {
3034
+ name: string;
3035
+ href: string;
3036
+ }
3037
+ interface UserAvatarLabels {
3038
+ openMenu?: string;
3039
+ defaultUser?: string;
3040
+ defaultEmail?: string;
3041
+ }
3042
+ interface UserAvatarProps {
3043
+ user: UserAvatarUser | null;
3044
+ menuItems?: UserAvatarMenuItem[];
3045
+ labels?: UserAvatarLabels;
3046
+ className?: string;
3047
+ }
3048
+ declare function UserAvatar({ user, menuItems, labels, className, }: UserAvatarProps): react_jsx_runtime.JSX.Element;
3049
+ interface UserMobileInfoProps {
3050
+ user: UserAvatarUser | null;
3051
+ labels?: Pick<UserAvatarLabels, 'defaultUser' | 'defaultEmail'>;
3052
+ }
3053
+ declare function UserMobileInfo({ user, labels }: UserMobileInfoProps): react_jsx_runtime.JSX.Element;
3054
+
3055
+ /**
3056
+ * InteractiveGeoMap Component
3057
+ * ============================
3058
+ *
3059
+ * Main orchestrator for an interactive geographic map.
3060
+ * Fully generic — works with any country and any data type.
3061
+ * Consumers provide GeoJSON, region coordinates, and render props
3062
+ * for domain-specific content (hover panels, fuel breakdowns, etc.).
3063
+ */
3064
+
3065
+ interface InteractiveGeoMapProps<T = unknown> {
3066
+ items: T[];
3067
+ getRegionCode: (item: T) => string;
3068
+ regionCoordinates: Record<string, [number, number]>;
3069
+ defaultCenter?: [number, number];
3070
+ geoJsonUrl: string;
3071
+ regionPropertyKey?: string;
3072
+ projectionType?: 'mercator' | 'albersUsa';
3073
+ getRegionColor: (code: string) => string;
3074
+ getFlagUrl?: (code: string) => string | null;
3075
+ isRegionActive?: (code: string) => boolean;
3076
+ onRegionToggle?: (code: string) => void;
3077
+ renderHoverContent?: (regionCode: string, items: T[]) => React__default.ReactNode;
3078
+ formatCounter?: (totalItems: number, totalRegions: number, activeItems?: number, activeRegions?: number) => string;
3079
+ zoomLabels?: {
3080
+ zoomIn?: string;
3081
+ zoomOut?: string;
3082
+ };
3083
+ ariaLabel?: string;
3084
+ className?: string;
3085
+ }
3086
+ declare const InteractiveGeoMap: <T = unknown>(props: InteractiveGeoMapProps<T> & {
3087
+ ref?: React__default.Ref<HTMLDivElement>;
3088
+ }) => React__default.ReactElement | null;
3089
+
3090
+ /**
3091
+ * useGeoMapState Hook
3092
+ * ===================
3093
+ *
3094
+ * Centralized state management for an interactive geographic map.
3095
+ * Handles zoom, pan, hover, and marker entrance animations.
3096
+ * Fully generic — no country-specific data.
3097
+ */
3098
+ interface GeoMapRegionData<T = unknown> {
3099
+ code: string;
3100
+ items: T[];
3101
+ coordinates: [number, number];
3102
+ }
3103
+ interface UseGeoMapStateOptions<T> {
3104
+ items: T[];
3105
+ getRegionCode: (item: T) => string;
3106
+ regionCoordinates: Record<string, [number, number]>;
3107
+ defaultCenter?: [number, number];
3108
+ }
3109
+ declare function useGeoMapState<T>({ items, getRegionCode, regionCoordinates, defaultCenter, }: UseGeoMapStateOptions<T>): {
3110
+ zoom: number;
3111
+ setZoom: React$1.Dispatch<React$1.SetStateAction<number>>;
3112
+ handleZoomIn: () => void;
3113
+ handleZoomOut: () => void;
3114
+ handleMoveEnd: (position: {
3115
+ coordinates: [number, number];
3116
+ zoom: number;
3117
+ }) => void;
3118
+ MIN_ZOOM: number;
3119
+ MAX_ZOOM: number;
3120
+ center: [number, number];
3121
+ setCenter: React$1.Dispatch<React$1.SetStateAction<[number, number]>>;
3122
+ panOffset: [number, number];
3123
+ handlePan: (dx: number, dy: number) => void;
3124
+ hoveredRegion: string | null;
3125
+ setHoveredRegion: React$1.Dispatch<React$1.SetStateAction<string | null>>;
3126
+ animatedRegions: Set<string>;
3127
+ regionGroups: GeoMapRegionData<T>[];
3128
+ getMarkerSize: (count: number) => number;
3129
+ getFontSize: (markerSize: number) => string;
3130
+ };
3131
+
3132
+ /**
3133
+ * GeoMapCanvas Component
3134
+ * ======================
3135
+ *
3136
+ * Core map rendering using SVG + d3-geo.
3137
+ * Handles geography rendering, markers, drag-to-pan, and interactions.
3138
+ * Zoom and pan are handled via viewBox manipulation for uniform scaling.
3139
+ *
3140
+ * Fully generic — no country-specific data. GeoJSON URL and region property
3141
+ * key are provided via props.
3142
+ */
3143
+
3144
+ interface GeoMapCanvasProps<T = unknown> {
3145
+ regionGroups: GeoMapRegionData<T>[];
3146
+ regionColorMap: Map<string, string>;
3147
+ animatedRegions: Set<string>;
3148
+ zoom: number;
3149
+ panOffset: [number, number];
3150
+ hoveredRegion: string | null;
3151
+ onPan: (dx: number, dy: number) => void;
3152
+ onRegionHover: (code: string | null) => void;
3153
+ onRegionClick: (code: string) => void;
3154
+ isRegionActive?: (code: string) => boolean;
3155
+ getMarkerSize: (count: number) => number;
3156
+ getFontSize: (markerSize: number) => string;
3157
+ geoJsonUrl: string;
3158
+ regionPropertyKey?: string;
3159
+ projectionType?: 'mercator' | 'albersUsa';
3160
+ ariaLabel?: string;
3161
+ }
3162
+ declare const GeoMapCanvas: <T = unknown>(props: GeoMapCanvasProps<T> & {
3163
+ ref?: React__default.Ref<HTMLDivElement>;
3164
+ }) => React__default.ReactElement | null;
3165
+
3166
+ /**
3167
+ * MapZoomControls Component
3168
+ * ========================
3169
+ *
3170
+ * Zoom in/out buttons and zoom level display for the map.
3171
+ * Generic — accepts optional labels instead of calling useTranslations.
3172
+ */
3173
+
3174
+ interface MapZoomControlsProps {
3175
+ zoom: number;
3176
+ minZoom: number;
3177
+ maxZoom: number;
3178
+ onZoomIn: () => void;
3179
+ onZoomOut: () => void;
3180
+ labels?: {
3181
+ zoomIn?: string;
3182
+ zoomOut?: string;
3183
+ };
3184
+ }
3185
+ declare const MapZoomControls: React__default.ForwardRefExoticComponent<MapZoomControlsProps & React__default.RefAttributes<HTMLDivElement>>;
3186
+
3187
+ /**
3188
+ * GeoMapLegend Component
3189
+ * =====================
3190
+ *
3191
+ * Displays top regions by item count with their colors and optional flags.
3192
+ * Generic — no country-specific logic.
3193
+ */
3194
+
3195
+ interface GeoMapLegendProps {
3196
+ items: Array<{
3197
+ code: string;
3198
+ count: number;
3199
+ }>;
3200
+ colorMap: Map<string, string>;
3201
+ getFlagUrl?: (code: string) => string | null;
3202
+ getLabel?: (code: string) => string;
3203
+ labels: {
3204
+ title: string;
3205
+ more: string;
3206
+ };
3207
+ maxItems?: number;
3208
+ }
3209
+ declare const GeoMapLegend: React__default.ForwardRefExoticComponent<GeoMapLegendProps & React__default.RefAttributes<HTMLDivElement>>;
3210
+
3211
+ interface RegionGroupDefinition {
3212
+ key: string;
3213
+ label: string;
3214
+ codes: string[];
3215
+ gradient: string;
3216
+ iconColor: string;
3217
+ }
3218
+
3219
+ /**
3220
+ * Brazil Subdivision Theme Data
3221
+ * =============================
3222
+ *
3223
+ * Reusable Brazilian state palettes, accents, coordinates, macro-regions,
3224
+ * and convenience helpers. Does NOT self-register; consumers call
3225
+ * `registerSubdivisionTheme('BR', BR_THEME_CONFIG)` at startup.
3226
+ */
3227
+
3228
+ declare const BRAZIL_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3229
+ declare const BRAZIL_ACCENT_MAP: Record<string, string>;
3230
+ declare const BR_THEME_CONFIG: SubdivisionThemeConfig;
3231
+ declare const BRAZIL_STATE_COORDINATES: Record<string, [number, number]>;
3232
+ declare const BRAZIL_MAP_CENTER: [number, number];
3233
+ declare const BRAZIL_MACRO_REGIONS: RegionGroupDefinition[];
3234
+ declare const getBrazilFlagUrl: (uf: string) => string | null;
3235
+ declare const getBrazilHexColor: (uf: string) => string | null;
3236
+ declare const getBrazilPalette: (uf: string) => SubdivisionColorPalette | null;
3237
+ declare const getBrazilGradient: (uf: string, direction?: string) => string | null;
3238
+ declare const getBrazilColors: (uf: string) => {
3239
+ ring: string;
3240
+ text: string;
3241
+ bg: string;
3242
+ pill: string;
3243
+ } | null;
3244
+ declare const getBrazilAccent: (uf: string) => string | null;
3245
+ declare const isValidBrazilState: (uf: string) => boolean;
3246
+
3247
+ type EntityDrawerMaxWidth = 'max-w-xl' | 'max-w-2xl' | 'max-w-4xl' | 'max-w-6xl' | 'max-w-full';
3248
+ type EntityDrawerProps = {
3249
+ open: boolean;
3250
+ onClose: () => void;
3251
+ title: string;
3252
+ subtitle?: string;
3253
+ icon?: ReactNode;
3254
+ gradient?: string;
3255
+ maxWidth?: EntityDrawerMaxWidth;
3256
+ tabs?: ReactNode;
3257
+ children: ReactNode;
3258
+ };
3259
+ declare function EntityDrawer({ open, onClose, title, subtitle, icon, gradient, maxWidth, tabs, children, }: EntityDrawerProps): react_jsx_runtime.JSX.Element | null;
3260
+
3261
+ declare const LOCALE_FLAGS: Record<string, string>;
3262
+
3263
+ type FilterPillVariant = 'blue' | 'emerald' | 'orange' | 'purple' | 'violet' | 'amber' | 'red' | 'indigo' | 'cyan' | 'teal' | 'pink' | 'rose' | 'green' | 'yellow' | 'slate' | 'sky' | 'fuchsia' | 'gray';
3264
+ type FilterPillProps = {
3265
+ icon: ReactNode;
3266
+ label: ReactNode;
3267
+ variant: FilterPillVariant;
3268
+ onRemove: () => void;
3269
+ };
3270
+ declare function FilterPill({ icon, label, variant, onRemove }: FilterPillProps): react_jsx_runtime.JSX.Element;
3271
+
3272
+ /**
3273
+ * US Subdivision Theme Data
3274
+ * =========================
3275
+ *
3276
+ * Reusable US state palettes, accents, coordinates, macro-regions,
3277
+ * and convenience helpers. Does NOT self-register; consumers call
3278
+ * `registerSubdivisionTheme('US', US_THEME_CONFIG)` at startup.
3279
+ */
3280
+
3281
+ declare const US_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3282
+ declare const US_ACCENT_MAP: Record<string, string>;
3283
+ declare const US_THEME_CONFIG: SubdivisionThemeConfig;
3284
+ declare const US_STATE_COORDINATES: Record<string, [number, number]>;
3285
+ declare const US_MAP_CENTER: [number, number];
3286
+ declare const US_MACRO_REGIONS: RegionGroupDefinition[];
3287
+ declare const getUsFlagUrl: (state: string) => string | null;
3288
+ declare const getUsHexColor: (state: string) => string | null;
3289
+ declare const getUsPalette: (state: string) => SubdivisionColorPalette | null;
3290
+ declare const getUsGradient: (state: string, direction?: string) => string | null;
3291
+ declare const getUsColors: (state: string) => {
3292
+ ring: string;
3293
+ text: string;
3294
+ bg: string;
3295
+ pill: string;
3296
+ } | null;
3297
+ declare const getUsAccent: (state: string) => string | null;
3298
+ declare const isValidUsState: (state: string) => boolean;
3299
+
3300
+ /**
3301
+ * Canada Subdivision Theme Data
3302
+ * =============================
3303
+ *
3304
+ * Reusable Canadian province/territory palettes, accents, coordinates,
3305
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3306
+ * call `registerSubdivisionTheme('CA', CA_THEME_CONFIG)` at startup.
3307
+ */
3308
+
3309
+ declare const CANADA_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3310
+ declare const CANADA_ACCENT_MAP: Record<string, string>;
3311
+ declare const CA_THEME_CONFIG: SubdivisionThemeConfig;
3312
+ declare const CANADA_PROVINCE_COORDINATES: Record<string, [number, number]>;
3313
+ declare const CANADA_MAP_CENTER: [number, number];
3314
+ declare const CANADA_MACRO_REGIONS: RegionGroupDefinition[];
3315
+ declare const getCanadaFlagUrl: (code: string) => string | null;
3316
+ declare const getCanadaHexColor: (code: string) => string | null;
3317
+ declare const getCanadaPalette: (code: string) => SubdivisionColorPalette | null;
3318
+ declare const getCanadaGradient: (code: string, direction?: string) => string | null;
3319
+ declare const getCanadaColors: (code: string) => {
3320
+ ring: string;
3321
+ text: string;
3322
+ bg: string;
3323
+ pill: string;
3324
+ } | null;
3325
+ declare const getCanadaAccent: (code: string) => string | null;
3326
+ declare const isValidCanadaProvince: (code: string) => boolean;
3327
+
3328
+ /**
3329
+ * Mexico Subdivision Theme Data
3330
+ * =============================
3331
+ *
3332
+ * Reusable Mexican state palettes, accents, coordinates, macro-regions,
3333
+ * and convenience helpers. Does NOT self-register; consumers call
3334
+ * `registerSubdivisionTheme('MX', MX_THEME_CONFIG)` at startup.
3335
+ */
3336
+
3337
+ declare const MEXICO_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3338
+ declare const MEXICO_ACCENT_MAP: Record<string, string>;
3339
+ declare const MX_THEME_CONFIG: SubdivisionThemeConfig;
3340
+ declare const MEXICO_STATE_COORDINATES: Record<string, [number, number]>;
3341
+ declare const MEXICO_MAP_CENTER: [number, number];
3342
+ declare const MEXICO_MACRO_REGIONS: RegionGroupDefinition[];
3343
+ declare const getMexicoFlagUrl: (code: string) => string | null;
3344
+ declare const getMexicoHexColor: (code: string) => string | null;
3345
+ declare const getMexicoPalette: (code: string) => SubdivisionColorPalette | null;
3346
+ declare const getMexicoGradient: (code: string, direction?: string) => string | null;
3347
+ declare const getMexicoColors: (code: string) => {
3348
+ ring: string;
3349
+ text: string;
3350
+ bg: string;
3351
+ pill: string;
3352
+ } | null;
3353
+ declare const getMexicoAccent: (code: string) => string | null;
3354
+ declare const isValidMexicoState: (code: string) => boolean;
3355
+
3356
+ /**
3357
+ * Colombia Subdivision Theme Data
3358
+ * ================================
3359
+ *
3360
+ * Reusable Colombian department palettes, accents, coordinates, macro-regions,
3361
+ * and convenience helpers. Does NOT self-register; consumers call
3362
+ * `registerSubdivisionTheme('CO', CO_THEME_CONFIG)` at startup.
3363
+ */
3364
+
3365
+ declare const COLOMBIA_DEPARTMENT_PALETTES: Record<string, SubdivisionColorPalette>;
3366
+ declare const COLOMBIA_ACCENT_MAP: Record<string, string>;
3367
+ declare const CO_THEME_CONFIG: SubdivisionThemeConfig;
3368
+ declare const COLOMBIA_DEPARTMENT_COORDINATES: Record<string, [number, number]>;
3369
+ declare const COLOMBIA_MAP_CENTER: [number, number];
3370
+ declare const COLOMBIA_MACRO_REGIONS: RegionGroupDefinition[];
3371
+ declare const getColombiaFlagUrl: (code: string) => string | null;
3372
+ declare const getColombiaHexColor: (code: string) => string | null;
3373
+ declare const getColombiaPalette: (code: string) => SubdivisionColorPalette | null;
3374
+ declare const getColombiaGradient: (code: string, direction?: string) => string | null;
3375
+ declare const getColombiaColors: (code: string) => {
3376
+ ring: string;
3377
+ text: string;
3378
+ bg: string;
3379
+ pill: string;
3380
+ } | null;
3381
+ declare const getColombiaAccent: (code: string) => string | null;
3382
+ declare const isValidColombiaDepartment: (code: string) => boolean;
3383
+
3384
+ /**
3385
+ * Argentina Subdivision Theme Data
3386
+ * =================================
3387
+ *
3388
+ * Reusable Argentine province palettes, accents, coordinates, macro-regions,
3389
+ * and convenience helpers. Does NOT self-register; consumers call
3390
+ * `registerSubdivisionTheme('AR', AR_THEME_CONFIG)` at startup.
3391
+ */
3392
+
3393
+ declare const ARGENTINA_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3394
+ declare const ARGENTINA_ACCENT_MAP: Record<string, string>;
3395
+ declare const AR_THEME_CONFIG: SubdivisionThemeConfig;
3396
+ declare const ARGENTINA_PROVINCE_COORDINATES: Record<string, [number, number]>;
3397
+ declare const ARGENTINA_MAP_CENTER: [number, number];
3398
+ declare const ARGENTINA_MACRO_REGIONS: RegionGroupDefinition[];
3399
+ declare const getArgentinaFlagUrl: (code: string) => string | null;
3400
+ declare const getArgentinaHexColor: (code: string) => string | null;
3401
+ declare const getArgentinaPalette: (code: string) => SubdivisionColorPalette | null;
3402
+ declare const getArgentinaGradient: (code: string, direction?: string) => string | null;
3403
+ declare const getArgentinaColors: (code: string) => {
3404
+ ring: string;
3405
+ text: string;
3406
+ bg: string;
3407
+ pill: string;
3408
+ } | null;
3409
+ declare const getArgentinaAccent: (code: string) => string | null;
3410
+ declare const isValidArgentinaProvince: (code: string) => boolean;
3411
+
3412
+ /**
3413
+ * Chile Subdivision Theme Data
3414
+ * ============================
3415
+ *
3416
+ * Reusable Chilean region palettes, accents, coordinates, macro-regions,
3417
+ * and convenience helpers. Does NOT self-register; consumers call
3418
+ * `registerSubdivisionTheme('CL', CL_THEME_CONFIG)` at startup.
3419
+ */
3420
+
3421
+ declare const CHILE_REGION_PALETTES: Record<string, SubdivisionColorPalette>;
3422
+ declare const CHILE_ACCENT_MAP: Record<string, string>;
3423
+ declare const CL_THEME_CONFIG: SubdivisionThemeConfig;
3424
+ declare const CHILE_REGION_COORDINATES: Record<string, [number, number]>;
3425
+ declare const CHILE_MAP_CENTER: [number, number];
3426
+ declare const CHILE_MACRO_REGIONS: RegionGroupDefinition[];
3427
+ declare const getChileFlagUrl: (code: string) => string | null;
3428
+ declare const getChileHexColor: (code: string) => string | null;
3429
+ declare const getChilePalette: (code: string) => SubdivisionColorPalette | null;
3430
+ declare const getChileGradient: (code: string, direction?: string) => string | null;
3431
+ declare const getChileColors: (code: string) => {
3432
+ ring: string;
3433
+ text: string;
3434
+ bg: string;
3435
+ pill: string;
3436
+ } | null;
3437
+ declare const getChileAccent: (code: string) => string | null;
3438
+ declare const isValidChileRegion: (code: string) => boolean;
3439
+
3440
+ /**
3441
+ * Peru Subdivision Theme Data
3442
+ * ===========================
3443
+ *
3444
+ * Reusable Peruvian department palettes, accents, coordinates, macro-regions,
3445
+ * and convenience helpers. Does NOT self-register; consumers call
3446
+ * `registerSubdivisionTheme('PE', PE_THEME_CONFIG)` at startup.
3447
+ */
3448
+
3449
+ declare const PERU_DEPARTMENT_PALETTES: Record<string, SubdivisionColorPalette>;
3450
+ declare const PERU_ACCENT_MAP: Record<string, string>;
3451
+ declare const PE_THEME_CONFIG: SubdivisionThemeConfig;
3452
+ declare const PERU_DEPARTMENT_COORDINATES: Record<string, [number, number]>;
3453
+ declare const PERU_MAP_CENTER: [number, number];
3454
+ declare const PERU_MACRO_REGIONS: RegionGroupDefinition[];
3455
+ declare const getPeruFlagUrl: (code: string) => string | null;
3456
+ declare const getPeruHexColor: (code: string) => string | null;
3457
+ declare const getPeruPalette: (code: string) => SubdivisionColorPalette | null;
3458
+ declare const getPeruGradient: (code: string, direction?: string) => string | null;
3459
+ declare const getPeruColors: (code: string) => {
3460
+ ring: string;
3461
+ text: string;
3462
+ bg: string;
3463
+ pill: string;
3464
+ } | null;
3465
+ declare const getPeruAccent: (code: string) => string | null;
3466
+ declare const isValidPeruDepartment: (code: string) => boolean;
3467
+
3468
+ /**
3469
+ * Germany Subdivision Theme Data
3470
+ * ==============================
3471
+ *
3472
+ * Reusable German Bundesland palettes, accents, coordinates,
3473
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3474
+ * call `registerSubdivisionTheme('DE', DE_THEME_CONFIG)` at startup.
3475
+ */
3476
+
3477
+ declare const GERMANY_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3478
+ declare const GERMANY_ACCENT_MAP: Record<string, string>;
3479
+ declare const DE_THEME_CONFIG: SubdivisionThemeConfig;
3480
+ declare const GERMANY_STATE_COORDINATES: Record<string, [number, number]>;
3481
+ declare const GERMANY_MAP_CENTER: [number, number];
3482
+ declare const GERMANY_MACRO_REGIONS: RegionGroupDefinition[];
3483
+ declare const getGermanyFlagUrl: (code: string) => string | null;
3484
+ declare const getGermanyHexColor: (code: string) => string | null;
3485
+ declare const getGermanyPalette: (code: string) => SubdivisionColorPalette | null;
3486
+ declare const getGermanyGradient: (code: string, direction?: string) => string | null;
3487
+ declare const getGermanyColors: (code: string) => {
3488
+ ring: string;
3489
+ text: string;
3490
+ bg: string;
3491
+ pill: string;
3492
+ } | null;
3493
+ declare const getGermanyAccent: (code: string) => string | null;
3494
+ declare const isValidGermanyState: (code: string) => boolean;
3495
+
3496
+ /**
3497
+ * France Subdivision Theme Data
3498
+ * =============================
3499
+ *
3500
+ * Reusable French region palettes, accents, coordinates,
3501
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3502
+ * call `registerSubdivisionTheme('FR', FR_THEME_CONFIG)` at startup.
3503
+ */
3504
+
3505
+ declare const FRANCE_REGION_PALETTES: Record<string, SubdivisionColorPalette>;
3506
+ declare const FRANCE_ACCENT_MAP: Record<string, string>;
3507
+ declare const FR_THEME_CONFIG: SubdivisionThemeConfig;
3508
+ declare const FRANCE_REGION_COORDINATES: Record<string, [number, number]>;
3509
+ declare const FRANCE_MAP_CENTER: [number, number];
3510
+ declare const FRANCE_MACRO_REGIONS: RegionGroupDefinition[];
3511
+ declare const getFranceFlagUrl: (code: string) => string | null;
3512
+ declare const getFranceHexColor: (code: string) => string | null;
3513
+ declare const getFrancePalette: (code: string) => SubdivisionColorPalette | null;
3514
+ declare const getFranceGradient: (code: string, direction?: string) => string | null;
3515
+ declare const getFranceColors: (code: string) => {
3516
+ ring: string;
3517
+ text: string;
3518
+ bg: string;
3519
+ pill: string;
3520
+ } | null;
3521
+ declare const getFranceAccent: (code: string) => string | null;
3522
+ declare const isValidFranceRegion: (code: string) => boolean;
3523
+
3524
+ /**
3525
+ * Spain Subdivision Theme Data
3526
+ * ============================
3527
+ *
3528
+ * Reusable Spanish province palettes, accents, coordinates,
3529
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3530
+ * call `registerSubdivisionTheme('ES', ES_THEME_CONFIG)` at startup.
3531
+ */
3532
+
3533
+ declare const SPAIN_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3534
+ declare const SPAIN_ACCENT_MAP: Record<string, string>;
3535
+ declare const ES_THEME_CONFIG: SubdivisionThemeConfig;
3536
+ declare const SPAIN_PROVINCE_COORDINATES: Record<string, [number, number]>;
3537
+ declare const SPAIN_MAP_CENTER: [number, number];
3538
+ declare const SPAIN_MACRO_REGIONS: RegionGroupDefinition[];
3539
+ declare const getSpainFlagUrl: (code: string) => string | null;
3540
+ declare const getSpainHexColor: (code: string) => string | null;
3541
+ declare const getSpainPalette: (code: string) => SubdivisionColorPalette | null;
3542
+ declare const getSpainGradient: (code: string, direction?: string) => string | null;
3543
+ declare const getSpainColors: (code: string) => {
3544
+ ring: string;
3545
+ text: string;
3546
+ bg: string;
3547
+ pill: string;
3548
+ } | null;
3549
+ declare const getSpainAccent: (code: string) => string | null;
3550
+ declare const isValidSpainProvince: (code: string) => boolean;
3551
+
3552
+ /**
3553
+ * Italy Subdivision Theme Data
3554
+ * ============================
3555
+ *
3556
+ * Reusable Italian region palettes, accents, coordinates,
3557
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3558
+ * call `registerSubdivisionTheme('IT', IT_THEME_CONFIG)` at startup.
3559
+ */
3560
+
3561
+ declare const ITALY_REGION_PALETTES: Record<string, SubdivisionColorPalette>;
3562
+ declare const ITALY_ACCENT_MAP: Record<string, string>;
3563
+ declare const IT_THEME_CONFIG: SubdivisionThemeConfig;
3564
+ declare const ITALY_REGION_COORDINATES: Record<string, [number, number]>;
3565
+ declare const ITALY_MAP_CENTER: [number, number];
3566
+ declare const ITALY_MACRO_REGIONS: RegionGroupDefinition[];
3567
+ declare const getItalyFlagUrl: (code: string) => string | null;
3568
+ declare const getItalyHexColor: (code: string) => string | null;
3569
+ declare const getItalyPalette: (code: string) => SubdivisionColorPalette | null;
3570
+ declare const getItalyGradient: (code: string, direction?: string) => string | null;
3571
+ declare const getItalyColors: (code: string) => {
3572
+ ring: string;
3573
+ text: string;
3574
+ bg: string;
3575
+ pill: string;
3576
+ } | null;
3577
+ declare const getItalyAccent: (code: string) => string | null;
3578
+ declare const isValidItalyRegion: (code: string) => boolean;
3579
+
3580
+ /**
3581
+ * United Kingdom Subdivision Theme Data
3582
+ * ======================================
3583
+ *
3584
+ * Reusable UK nation palettes, accents, coordinates,
3585
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3586
+ * call `registerSubdivisionTheme('GB', GB_THEME_CONFIG)` at startup.
3587
+ */
3588
+
3589
+ declare const UK_NATION_PALETTES: Record<string, SubdivisionColorPalette>;
3590
+ declare const UK_ACCENT_MAP: Record<string, string>;
3591
+ declare const GB_THEME_CONFIG: SubdivisionThemeConfig;
3592
+ declare const UK_NATION_COORDINATES: Record<string, [number, number]>;
3593
+ declare const UK_MAP_CENTER: [number, number];
3594
+ declare const UK_MACRO_REGIONS: RegionGroupDefinition[];
3595
+ declare const getUKFlagUrl: (code: string) => string | null;
3596
+ declare const getUKHexColor: (code: string) => string | null;
3597
+ declare const getUKPalette: (code: string) => SubdivisionColorPalette | null;
3598
+ declare const getUKGradient: (code: string, direction?: string) => string | null;
3599
+ declare const getUKColors: (code: string) => {
3600
+ ring: string;
3601
+ text: string;
3602
+ bg: string;
3603
+ pill: string;
3604
+ } | null;
3605
+ declare const getUKAccent: (code: string) => string | null;
3606
+ declare const isValidUKNation: (code: string) => boolean;
3607
+
3608
+ /**
3609
+ * Portugal Subdivision Theme Data
3610
+ * ===============================
3611
+ *
3612
+ * Reusable Portuguese district palettes, accents, coordinates,
3613
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3614
+ * call `registerSubdivisionTheme('PT', PT_THEME_CONFIG)` at startup.
3615
+ */
3616
+
3617
+ declare const PORTUGAL_DISTRICT_PALETTES: Record<string, SubdivisionColorPalette>;
3618
+ declare const PORTUGAL_ACCENT_MAP: Record<string, string>;
3619
+ declare const PT_THEME_CONFIG: SubdivisionThemeConfig;
3620
+ declare const PORTUGAL_DISTRICT_COORDINATES: Record<string, [number, number]>;
3621
+ declare const PORTUGAL_MAP_CENTER: [number, number];
3622
+ declare const PORTUGAL_MACRO_REGIONS: RegionGroupDefinition[];
3623
+ declare const getPortugalFlagUrl: (code: string) => string | null;
3624
+ declare const getPortugalHexColor: (code: string) => string | null;
3625
+ declare const getPortugalPalette: (code: string) => SubdivisionColorPalette | null;
3626
+ declare const getPortugalGradient: (code: string, direction?: string) => string | null;
3627
+ declare const getPortugalColors: (code: string) => {
3628
+ ring: string;
3629
+ text: string;
3630
+ bg: string;
3631
+ pill: string;
3632
+ } | null;
3633
+ declare const getPortugalAccent: (code: string) => string | null;
3634
+ declare const isValidPortugalDistrict: (code: string) => boolean;
3635
+
3636
+ /**
3637
+ * Australia Subdivision Theme Data
3638
+ * ================================
3639
+ *
3640
+ * Reusable Australian state/territory palettes, accents, coordinates,
3641
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3642
+ * call `registerSubdivisionTheme('AU', AU_THEME_CONFIG)` at startup.
3643
+ */
3644
+
3645
+ declare const AUSTRALIA_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3646
+ declare const AUSTRALIA_ACCENT_MAP: Record<string, string>;
3647
+ declare const AU_THEME_CONFIG: SubdivisionThemeConfig;
3648
+ declare const AUSTRALIA_STATE_COORDINATES: Record<string, [number, number]>;
3649
+ declare const AUSTRALIA_MAP_CENTER: [number, number];
3650
+ declare const AUSTRALIA_MACRO_REGIONS: RegionGroupDefinition[];
3651
+ declare const getAustraliaFlagUrl: (code: string) => string | null;
3652
+ declare const getAustraliaHexColor: (code: string) => string | null;
3653
+ declare const getAustraliaPalette: (code: string) => SubdivisionColorPalette | null;
3654
+ declare const getAustraliaGradient: (code: string, direction?: string) => string | null;
3655
+ declare const getAustraliaColors: (code: string) => {
3656
+ ring: string;
3657
+ text: string;
3658
+ bg: string;
3659
+ pill: string;
3660
+ } | null;
3661
+ declare const getAustraliaAccent: (code: string) => string | null;
3662
+ declare const isValidAustraliaState: (code: string) => boolean;
3663
+
3664
+ /**
3665
+ * Japan Subdivision Theme Data
3666
+ * ============================
3667
+ *
3668
+ * Reusable Japanese prefecture palettes, accents, coordinates,
3669
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3670
+ * call `registerSubdivisionTheme('JP', JP_THEME_CONFIG)` at startup.
3671
+ */
3672
+
3673
+ declare const JAPAN_PREFECTURE_PALETTES: Record<string, SubdivisionColorPalette>;
3674
+ declare const JAPAN_ACCENT_MAP: Record<string, string>;
3675
+ declare const JP_THEME_CONFIG: SubdivisionThemeConfig;
3676
+ declare const JAPAN_PREFECTURE_COORDINATES: Record<string, [number, number]>;
3677
+ declare const JAPAN_MAP_CENTER: [number, number];
3678
+ declare const JAPAN_MACRO_REGIONS: RegionGroupDefinition[];
3679
+ declare const getJapanFlagUrl: (code: string) => string | null;
3680
+ declare const getJapanHexColor: (code: string) => string | null;
3681
+ declare const getJapanPalette: (code: string) => SubdivisionColorPalette | null;
3682
+ declare const getJapanGradient: (code: string, direction?: string) => string | null;
3683
+ declare const getJapanColors: (code: string) => {
3684
+ ring: string;
3685
+ text: string;
3686
+ bg: string;
3687
+ pill: string;
3688
+ } | null;
3689
+ declare const getJapanAccent: (code: string) => string | null;
3690
+ declare const isValidJapanPrefecture: (code: string) => boolean;
3691
+
3692
+ /**
3693
+ * India Subdivision Theme Data
3694
+ * ============================
3695
+ *
3696
+ * Reusable Indian state/UT palettes, accents, coordinates,
3697
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3698
+ * call `registerSubdivisionTheme('IN', IN_THEME_CONFIG)` at startup.
3699
+ */
3700
+
3701
+ declare const INDIA_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3702
+ declare const INDIA_ACCENT_MAP: Record<string, string>;
3703
+ declare const IN_THEME_CONFIG: SubdivisionThemeConfig;
3704
+ declare const INDIA_STATE_COORDINATES: Record<string, [number, number]>;
3705
+ declare const INDIA_MAP_CENTER: [number, number];
3706
+ declare const INDIA_MACRO_REGIONS: RegionGroupDefinition[];
3707
+ declare const getIndiaFlagUrl: (code: string) => string | null;
3708
+ declare const getIndiaHexColor: (code: string) => string | null;
3709
+ declare const getIndiaPalette: (code: string) => SubdivisionColorPalette | null;
3710
+ declare const getIndiaGradient: (code: string, direction?: string) => string | null;
3711
+ declare const getIndiaColors: (code: string) => {
3712
+ ring: string;
3713
+ text: string;
3714
+ bg: string;
3715
+ pill: string;
3716
+ } | null;
3717
+ declare const getIndiaAccent: (code: string) => string | null;
3718
+ declare const isValidIndiaState: (code: string) => boolean;
3719
+
3720
+ /**
3721
+ * South Africa Subdivision Theme Data
3722
+ * ====================================
3723
+ *
3724
+ * Reusable South African province palettes, accents, coordinates,
3725
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3726
+ * call `registerSubdivisionTheme('ZA', ZA_THEME_CONFIG)` at startup.
3727
+ */
3728
+
3729
+ declare const SOUTH_AFRICA_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3730
+ declare const SOUTH_AFRICA_ACCENT_MAP: Record<string, string>;
3731
+ declare const ZA_THEME_CONFIG: SubdivisionThemeConfig;
3732
+ declare const SOUTH_AFRICA_PROVINCE_COORDINATES: Record<string, [number, number]>;
3733
+ declare const SOUTH_AFRICA_MAP_CENTER: [number, number];
3734
+ declare const SOUTH_AFRICA_MACRO_REGIONS: RegionGroupDefinition[];
3735
+ declare const getSouthAfricaFlagUrl: (code: string) => string | null;
3736
+ declare const getSouthAfricaHexColor: (code: string) => string | null;
3737
+ declare const getSouthAfricaPalette: (code: string) => SubdivisionColorPalette | null;
3738
+ declare const getSouthAfricaGradient: (code: string, direction?: string) => string | null;
3739
+ declare const getSouthAfricaColors: (code: string) => {
3740
+ ring: string;
3741
+ text: string;
3742
+ bg: string;
3743
+ pill: string;
3744
+ } | null;
3745
+ declare const getSouthAfricaAccent: (code: string) => string | null;
3746
+ declare const isValidSouthAfricaProvince: (code: string) => boolean;
3747
+
3748
+ /**
3749
+ * South Korea Subdivision Theme Data
3750
+ * ===================================
3751
+ *
3752
+ * Reusable South Korean province/city palettes, accents, coordinates,
3753
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3754
+ * call `registerSubdivisionTheme('KR', KR_THEME_CONFIG)` at startup.
3755
+ */
3756
+
3757
+ declare const SOUTH_KOREA_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3758
+ declare const SOUTH_KOREA_ACCENT_MAP: Record<string, string>;
3759
+ declare const KR_THEME_CONFIG: SubdivisionThemeConfig;
3760
+ declare const SOUTH_KOREA_PROVINCE_COORDINATES: Record<string, [number, number]>;
3761
+ declare const SOUTH_KOREA_MAP_CENTER: [number, number];
3762
+ declare const SOUTH_KOREA_MACRO_REGIONS: RegionGroupDefinition[];
3763
+ declare const getSouthKoreaFlagUrl: (code: string) => string | null;
3764
+ declare const getSouthKoreaHexColor: (code: string) => string | null;
3765
+ declare const getSouthKoreaPalette: (code: string) => SubdivisionColorPalette | null;
3766
+ declare const getSouthKoreaGradient: (code: string, direction?: string) => string | null;
3767
+ declare const getSouthKoreaColors: (code: string) => {
3768
+ ring: string;
3769
+ text: string;
3770
+ bg: string;
3771
+ pill: string;
3772
+ } | null;
3773
+ declare const getSouthKoreaAccent: (code: string) => string | null;
3774
+ declare const isValidSouthKoreaProvince: (code: string) => boolean;
3775
+
3776
+ /**
3777
+ * Indonesia Subdivision Theme Data
3778
+ * =================================
3779
+ *
3780
+ * Reusable Indonesian province palettes, accents, coordinates,
3781
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3782
+ * call `registerSubdivisionTheme('ID', ID_THEME_CONFIG)` at startup.
3783
+ */
3784
+
3785
+ declare const INDONESIA_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3786
+ declare const INDONESIA_ACCENT_MAP: Record<string, string>;
3787
+ declare const ID_THEME_CONFIG: SubdivisionThemeConfig;
3788
+ declare const INDONESIA_PROVINCE_COORDINATES: Record<string, [number, number]>;
3789
+ declare const INDONESIA_MAP_CENTER: [number, number];
3790
+ declare const INDONESIA_MACRO_REGIONS: RegionGroupDefinition[];
3791
+ declare const getIndonesiaFlagUrl: (code: string) => string | null;
3792
+ declare const getIndonesiaHexColor: (code: string) => string | null;
3793
+ declare const getIndonesiaPalette: (code: string) => SubdivisionColorPalette | null;
3794
+ declare const getIndonesiaGradient: (code: string, direction?: string) => string | null;
3795
+ declare const getIndonesiaColors: (code: string) => {
3796
+ ring: string;
3797
+ text: string;
3798
+ bg: string;
3799
+ pill: string;
3800
+ } | null;
3801
+ declare const getIndonesiaAccent: (code: string) => string | null;
3802
+ declare const isValidIndonesiaProvince: (code: string) => boolean;
3803
+
3804
+ /**
3805
+ * Thailand Subdivision Theme Data
3806
+ * ================================
3807
+ *
3808
+ * Reusable Thai province palettes, accents, coordinates,
3809
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3810
+ * call `registerSubdivisionTheme('TH', TH_THEME_CONFIG)` at startup.
3811
+ */
3812
+
3813
+ declare const THAILAND_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3814
+ declare const THAILAND_ACCENT_MAP: Record<string, string>;
3815
+ declare const TH_THEME_CONFIG: SubdivisionThemeConfig;
3816
+ declare const THAILAND_PROVINCE_COORDINATES: Record<string, [number, number]>;
3817
+ declare const THAILAND_MAP_CENTER: [number, number];
3818
+ declare const THAILAND_MACRO_REGIONS: RegionGroupDefinition[];
3819
+ declare const getThailandFlagUrl: (code: string) => string | null;
3820
+ declare const getThailandHexColor: (code: string) => string | null;
3821
+ declare const getThailandPalette: (code: string) => SubdivisionColorPalette | null;
3822
+ declare const getThailandGradient: (code: string, direction?: string) => string | null;
3823
+ declare const getThailandColors: (code: string) => {
3824
+ ring: string;
3825
+ text: string;
3826
+ bg: string;
3827
+ pill: string;
3828
+ } | null;
3829
+ declare const getThailandAccent: (code: string) => string | null;
3830
+ declare const isValidThailandProvince: (code: string) => boolean;
3831
+
3832
+ /**
3833
+ * Nigeria Subdivision Theme Data
3834
+ * ===============================
3835
+ *
3836
+ * Reusable Nigerian state palettes, accents, coordinates,
3837
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3838
+ * call `registerSubdivisionTheme('NG', NG_THEME_CONFIG)` at startup.
3839
+ */
3840
+
3841
+ declare const NIGERIA_STATE_PALETTES: Record<string, SubdivisionColorPalette>;
3842
+ declare const NIGERIA_ACCENT_MAP: Record<string, string>;
3843
+ declare const NG_THEME_CONFIG: SubdivisionThemeConfig;
3844
+ declare const NIGERIA_STATE_COORDINATES: Record<string, [number, number]>;
3845
+ declare const NIGERIA_MAP_CENTER: [number, number];
3846
+ declare const NIGERIA_MACRO_REGIONS: RegionGroupDefinition[];
3847
+ declare const getNigeriaFlagUrl: (code: string) => string | null;
3848
+ declare const getNigeriaHexColor: (code: string) => string | null;
3849
+ declare const getNigeriaPalette: (code: string) => SubdivisionColorPalette | null;
3850
+ declare const getNigeriaGradient: (code: string, direction?: string) => string | null;
3851
+ declare const getNigeriaColors: (code: string) => {
3852
+ ring: string;
3853
+ text: string;
3854
+ bg: string;
3855
+ pill: string;
3856
+ } | null;
3857
+ declare const getNigeriaAccent: (code: string) => string | null;
3858
+ declare const isValidNigeriaState: (code: string) => boolean;
3859
+
3860
+ /**
3861
+ * Egypt Subdivision Theme Data
3862
+ * ============================
3863
+ *
3864
+ * Reusable Egyptian governorate palettes, accents, coordinates,
3865
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3866
+ * call `registerSubdivisionTheme('EG', EG_THEME_CONFIG)` at startup.
3867
+ */
3868
+
3869
+ declare const EGYPT_GOVERNORATE_PALETTES: Record<string, SubdivisionColorPalette>;
3870
+ declare const EGYPT_ACCENT_MAP: Record<string, string>;
3871
+ declare const EG_THEME_CONFIG: SubdivisionThemeConfig;
3872
+ declare const EGYPT_GOVERNORATE_COORDINATES: Record<string, [number, number]>;
3873
+ declare const EGYPT_MAP_CENTER: [number, number];
3874
+ declare const EGYPT_MACRO_REGIONS: RegionGroupDefinition[];
3875
+ declare const getEgyptFlagUrl: (code: string) => string | null;
3876
+ declare const getEgyptHexColor: (code: string) => string | null;
3877
+ declare const getEgyptPalette: (code: string) => SubdivisionColorPalette | null;
3878
+ declare const getEgyptGradient: (code: string, direction?: string) => string | null;
3879
+ declare const getEgyptColors: (code: string) => {
3880
+ ring: string;
3881
+ text: string;
3882
+ bg: string;
3883
+ pill: string;
3884
+ } | null;
3885
+ declare const getEgyptAccent: (code: string) => string | null;
3886
+ declare const isValidEgyptGovernorate: (code: string) => boolean;
3887
+
3888
+ /**
3889
+ * Turkey Subdivision Theme Data
3890
+ * =============================
3891
+ *
3892
+ * Reusable Turkish province palettes, accents, coordinates,
3893
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3894
+ * call `registerSubdivisionTheme('TR', TR_THEME_CONFIG)` at startup.
3895
+ */
3896
+
3897
+ declare const TURKEY_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
3898
+ declare const TURKEY_ACCENT_MAP: Record<string, string>;
3899
+ declare const TR_THEME_CONFIG: SubdivisionThemeConfig;
3900
+ declare const TURKEY_PROVINCE_COORDINATES: Record<string, [number, number]>;
3901
+ declare const TURKEY_MAP_CENTER: [number, number];
3902
+ declare const TURKEY_MACRO_REGIONS: RegionGroupDefinition[];
3903
+ declare const getTurkeyFlagUrl: (code: string) => string | null;
3904
+ declare const getTurkeyHexColor: (code: string) => string | null;
3905
+ declare const getTurkeyPalette: (code: string) => SubdivisionColorPalette | null;
3906
+ declare const getTurkeyGradient: (code: string, direction?: string) => string | null;
3907
+ declare const getTurkeyColors: (code: string) => {
3908
+ ring: string;
3909
+ text: string;
3910
+ bg: string;
3911
+ pill: string;
3912
+ } | null;
3913
+ declare const getTurkeyAccent: (code: string) => string | null;
3914
+ declare const isValidTurkeyProvince: (code: string) => boolean;
3915
+
3916
+ /**
3917
+ * Poland Subdivision Theme Data
3918
+ * =============================
3919
+ *
3920
+ * Reusable Polish voivodeship palettes, accents, coordinates,
3921
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3922
+ * call `registerSubdivisionTheme('PL', PL_THEME_CONFIG)` at startup.
3923
+ */
3924
+
3925
+ declare const POLAND_VOIVODESHIP_PALETTES: Record<string, SubdivisionColorPalette>;
3926
+ declare const POLAND_ACCENT_MAP: Record<string, string>;
3927
+ declare const PL_THEME_CONFIG: SubdivisionThemeConfig;
3928
+ declare const POLAND_VOIVODESHIP_COORDINATES: Record<string, [number, number]>;
3929
+ declare const POLAND_MAP_CENTER: [number, number];
3930
+ declare const POLAND_MACRO_REGIONS: RegionGroupDefinition[];
3931
+ declare const getPolandFlagUrl: (code: string) => string | null;
3932
+ declare const getPolandHexColor: (code: string) => string | null;
3933
+ declare const getPolandPalette: (code: string) => SubdivisionColorPalette | null;
3934
+ declare const getPolandGradient: (code: string, direction?: string) => string | null;
3935
+ declare const getPolandColors: (code: string) => {
3936
+ ring: string;
3937
+ text: string;
3938
+ bg: string;
3939
+ pill: string;
3940
+ } | null;
3941
+ declare const getPolandAccent: (code: string) => string | null;
3942
+ declare const isValidPolandVoivodeship: (code: string) => boolean;
3943
+
3944
+ /**
3945
+ * Sweden Subdivision Theme Data
3946
+ * =============================
3947
+ *
3948
+ * Reusable Swedish county palettes, accents, coordinates,
3949
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3950
+ * call `registerSubdivisionTheme('SE', SE_THEME_CONFIG)` at startup.
3951
+ */
3952
+
3953
+ declare const SWEDEN_COUNTY_PALETTES: Record<string, SubdivisionColorPalette>;
3954
+ declare const SWEDEN_ACCENT_MAP: Record<string, string>;
3955
+ declare const SE_THEME_CONFIG: SubdivisionThemeConfig;
3956
+ declare const SWEDEN_COUNTY_COORDINATES: Record<string, [number, number]>;
3957
+ declare const SWEDEN_MAP_CENTER: [number, number];
3958
+ declare const SWEDEN_MACRO_REGIONS: RegionGroupDefinition[];
3959
+ declare const getSwedenFlagUrl: (code: string) => string | null;
3960
+ declare const getSwedenHexColor: (code: string) => string | null;
3961
+ declare const getSwedenPalette: (code: string) => SubdivisionColorPalette | null;
3962
+ declare const getSwedenGradient: (code: string, direction?: string) => string | null;
3963
+ declare const getSwedenColors: (code: string) => {
3964
+ ring: string;
3965
+ text: string;
3966
+ bg: string;
3967
+ pill: string;
3968
+ } | null;
3969
+ declare const getSwedenAccent: (code: string) => string | null;
3970
+ declare const isValidSwedenCounty: (code: string) => boolean;
3971
+
3972
+ /**
3973
+ * Norway Subdivision Theme Data
3974
+ * =============================
3975
+ *
3976
+ * Reusable Norwegian county palettes, accents, coordinates,
3977
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
3978
+ * call `registerSubdivisionTheme('NO', NO_THEME_CONFIG)` at startup.
3979
+ */
3980
+
3981
+ declare const NORWAY_COUNTY_PALETTES: Record<string, SubdivisionColorPalette>;
3982
+ declare const NORWAY_ACCENT_MAP: Record<string, string>;
3983
+ declare const NO_THEME_CONFIG: SubdivisionThemeConfig;
3984
+ declare const NORWAY_COUNTY_COORDINATES: Record<string, [number, number]>;
3985
+ declare const NORWAY_MAP_CENTER: [number, number];
3986
+ declare const NORWAY_MACRO_REGIONS: RegionGroupDefinition[];
3987
+ declare const getNorwayFlagUrl: (code: string) => string | null;
3988
+ declare const getNorwayHexColor: (code: string) => string | null;
3989
+ declare const getNorwayPalette: (code: string) => SubdivisionColorPalette | null;
3990
+ declare const getNorwayGradient: (code: string, direction?: string) => string | null;
3991
+ declare const getNorwayColors: (code: string) => {
3992
+ ring: string;
3993
+ text: string;
3994
+ bg: string;
3995
+ pill: string;
3996
+ } | null;
3997
+ declare const getNorwayAccent: (code: string) => string | null;
3998
+ declare const isValidNorwayCounty: (code: string) => boolean;
3999
+
4000
+ /**
4001
+ * Netherlands Subdivision Theme Data
4002
+ * ===================================
4003
+ *
4004
+ * Reusable Dutch province palettes, accents, coordinates,
4005
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
4006
+ * call `registerSubdivisionTheme('NL', NL_THEME_CONFIG)` at startup.
4007
+ */
4008
+
4009
+ declare const NETHERLANDS_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
4010
+ declare const NETHERLANDS_ACCENT_MAP: Record<string, string>;
4011
+ declare const NL_THEME_CONFIG: SubdivisionThemeConfig;
4012
+ declare const NETHERLANDS_PROVINCE_COORDINATES: Record<string, [number, number]>;
4013
+ declare const NETHERLANDS_MAP_CENTER: [number, number];
4014
+ declare const NETHERLANDS_MACRO_REGIONS: RegionGroupDefinition[];
4015
+ declare const getNetherlandsFlagUrl: (code: string) => string | null;
4016
+ declare const getNetherlandsHexColor: (code: string) => string | null;
4017
+ declare const getNetherlandsPalette: (code: string) => SubdivisionColorPalette | null;
4018
+ declare const getNetherlandsGradient: (code: string, direction?: string) => string | null;
4019
+ declare const getNetherlandsColors: (code: string) => {
4020
+ ring: string;
4021
+ text: string;
4022
+ bg: string;
4023
+ pill: string;
4024
+ } | null;
4025
+ declare const getNetherlandsAccent: (code: string) => string | null;
4026
+ declare const isValidNetherlandsProvince: (code: string) => boolean;
4027
+
4028
+ /**
4029
+ * Philippines Subdivision Theme Data
4030
+ * ===================================
4031
+ *
4032
+ * Reusable Philippine province palettes, accents, coordinates,
4033
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
4034
+ * call `registerSubdivisionTheme('PH', PH_THEME_CONFIG)` at startup.
4035
+ */
4036
+
4037
+ declare const PHILIPPINES_PROVINCE_PALETTES: Record<string, SubdivisionColorPalette>;
4038
+ declare const PHILIPPINES_ACCENT_MAP: Record<string, string>;
4039
+ declare const PH_THEME_CONFIG: SubdivisionThemeConfig;
4040
+ declare const PHILIPPINES_PROVINCE_COORDINATES: Record<string, [number, number]>;
4041
+ declare const PHILIPPINES_MAP_CENTER: [number, number];
4042
+ declare const PHILIPPINES_MACRO_REGIONS: RegionGroupDefinition[];
4043
+ declare const getPhilippinesFlagUrl: (code: string) => string | null;
4044
+ declare const getPhilippinesHexColor: (code: string) => string | null;
4045
+ declare const getPhilippinesPalette: (code: string) => SubdivisionColorPalette | null;
4046
+ declare const getPhilippinesGradient: (code: string, direction?: string) => string | null;
4047
+ declare const getPhilippinesColors: (code: string) => {
4048
+ ring: string;
4049
+ text: string;
4050
+ bg: string;
4051
+ pill: string;
4052
+ } | null;
4053
+ declare const getPhilippinesAccent: (code: string) => string | null;
4054
+ declare const isValidPhilippinesProvince: (code: string) => boolean;
4055
+
4056
+ /**
4057
+ * New Zealand Subdivision Theme Data
4058
+ * ===================================
4059
+ *
4060
+ * Reusable New Zealand region palettes, accents, coordinates,
4061
+ * macro-regions, and convenience helpers. Does NOT self-register; consumers
4062
+ * call `registerSubdivisionTheme('NZ', NZ_THEME_CONFIG)` at startup.
4063
+ */
4064
+
4065
+ declare const NEW_ZEALAND_REGION_PALETTES: Record<string, SubdivisionColorPalette>;
4066
+ declare const NEW_ZEALAND_ACCENT_MAP: Record<string, string>;
4067
+ declare const NZ_THEME_CONFIG: SubdivisionThemeConfig;
4068
+ declare const NEW_ZEALAND_REGION_COORDINATES: Record<string, [number, number]>;
4069
+ declare const NEW_ZEALAND_MAP_CENTER: [number, number];
4070
+ declare const NEW_ZEALAND_MACRO_REGIONS: RegionGroupDefinition[];
4071
+ declare const getNewZealandFlagUrl: (code: string) => string | null;
4072
+ declare const getNewZealandHexColor: (code: string) => string | null;
4073
+ declare const getNewZealandPalette: (code: string) => SubdivisionColorPalette | null;
4074
+ declare const getNewZealandGradient: (code: string, direction?: string) => string | null;
4075
+ declare const getNewZealandColors: (code: string) => {
4076
+ ring: string;
4077
+ text: string;
4078
+ bg: string;
4079
+ pill: string;
4080
+ } | null;
4081
+ declare const getNewZealandAccent: (code: string) => string | null;
4082
+ declare const isValidNewZealandRegion: (code: string) => boolean;
4083
+
4084
+ /**
4085
+ * Country Configuration System
4086
+ * ============================
4087
+ *
4088
+ * Unified registry that bundles everything an app needs to render a country
4089
+ * map and format its data: theme, coordinates, regions, currency, locale,
4090
+ * address format, and tax configuration.
4091
+ *
4092
+ * All 18 supported countries are pre-registered. Consumers can also register
4093
+ * custom countries via `registerCountry(config)`.
4094
+ */
4095
+
4096
+ interface CountryCurrencyConfig {
4097
+ code: string;
4098
+ numeric: string;
4099
+ symbol: string;
4100
+ decimal: string;
4101
+ thousands: string;
4102
+ symbolPosition: 'before' | 'after';
4103
+ precision: number;
4104
+ }
4105
+ interface CountryLocaleConfig {
4106
+ defaultLocale: string;
4107
+ dateFormat: string;
4108
+ timeFormat: '12h' | '24h';
4109
+ firstDayOfWeek: 0 | 1;
4110
+ measurementSystem: 'metric' | 'imperial';
4111
+ }
4112
+ interface CountryAddressFormat {
4113
+ fields: string[];
4114
+ template: string;
4115
+ postalCodeLabel: string;
4116
+ postalCodePattern?: string;
4117
+ stateLabel: string;
4118
+ }
4119
+ interface CountryLanguage {
4120
+ code: string;
4121
+ name: string;
4122
+ nativeName: string;
4123
+ primary?: boolean;
4124
+ }
4125
+ interface CountryTaxConfig {
4126
+ name: string;
4127
+ standardRate: number;
4128
+ subdivisionRates?: Record<string, number>;
4129
+ }
4130
+ interface CountryConfig {
4131
+ code: string;
4132
+ name: string;
4133
+ nativeName: string;
4134
+ flag: string;
4135
+ theme: SubdivisionThemeConfig;
4136
+ coordinates: Record<string, [number, number]>;
4137
+ mapCenter: [number, number];
4138
+ macroRegions: RegionGroupDefinition[];
4139
+ geoJsonPath: string;
4140
+ projection: 'mercator' | 'albersUsa';
4141
+ regionPropertyKey: string;
4142
+ languages: CountryLanguage[];
4143
+ currency: CountryCurrencyConfig;
4144
+ locale: CountryLocaleConfig;
4145
+ address: CountryAddressFormat;
4146
+ tax: CountryTaxConfig;
4147
+ }
4148
+ /**
4149
+ * Get a country configuration by its ISO 3166-1 alpha-2 code.
4150
+ * Returns null if the country is not registered.
4151
+ */
4152
+ declare function getCountryConfig(code: string): CountryConfig | null;
4153
+ /**
4154
+ * Register (or replace) a country configuration.
4155
+ */
4156
+ declare function registerCountry(config: CountryConfig): void;
4157
+ /**
4158
+ * Get all registered country configurations, sorted by country code.
4159
+ */
4160
+ declare function getAllCountries(): CountryConfig[];
4161
+ /**
4162
+ * Format a numeric amount as a currency string for a given country.
4163
+ * Returns the raw number as a string if the country is not found.
4164
+ */
4165
+ declare function formatCurrency(amount: number, countryCode: string): string;
4166
+ /**
4167
+ * Format an address record using the country's template.
4168
+ * Unknown placeholders are left blank.
4169
+ */
4170
+ declare function formatAddress(address: Record<string, string>, countryCode: string): string;
4171
+
4172
+ declare function Fieldset({ className, ...props }: {
4173
+ className?: string;
4174
+ } & Omit<Headless.FieldsetProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4175
+ declare function Legend({ className, ...props }: {
4176
+ className?: string;
4177
+ } & Omit<Headless.LegendProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4178
+ declare function FieldGroup({ className, ...props }: React__default.ComponentPropsWithoutRef<"div">): react_jsx_runtime.JSX.Element;
4179
+ declare function Field({ className, ...props }: {
4180
+ className?: string;
4181
+ } & Omit<Headless.FieldProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4182
+ declare function Label({ className, ...props }: {
4183
+ className?: string;
4184
+ } & Omit<Headless.LabelProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4185
+ declare function Description({ className, ...props }: {
4186
+ className?: string;
4187
+ } & Omit<Headless.DescriptionProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4188
+ declare function ErrorMessage({ className, ...props }: {
4189
+ className?: string;
4190
+ } & Omit<Headless.DescriptionProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4191
+
4192
+ declare const Textarea: React$1.ForwardRefExoticComponent<React$1.TextareaHTMLAttributes<HTMLTextAreaElement> & React$1.RefAttributes<HTMLTextAreaElement>>;
4193
+
4194
+ interface PaginationMeta {
4195
+ page: number;
4196
+ limit?: number;
4197
+ pageSize?: number;
4198
+ total: number;
4199
+ totalPages: number;
4200
+ hasNext?: boolean;
4201
+ hasPrev?: boolean;
4202
+ }
4203
+ interface OffsetPaginationParams {
4204
+ page: number;
4205
+ limit: number;
4206
+ search?: string;
4207
+ }
4208
+ interface DataPaginationProps {
4209
+ pagination: PaginationMeta;
4210
+ params?: OffsetPaginationParams;
4211
+ onUpdate: (params: Partial<OffsetPaginationParams>) => void;
4212
+ loading?: boolean;
4213
+ /** @deprecated Search is handled by SearchFilterToolbar — use showSearch={false} */
4214
+ showSearch?: boolean;
4215
+ searchPlaceholder?: string;
4216
+ showPageSize?: boolean;
4217
+ pageSizeOptions?: number[];
4218
+ }
4219
+ declare function DataPagination({ pagination, onUpdate, loading, showPageSize, pageSizeOptions, params, }: DataPaginationProps): react_jsx_runtime.JSX.Element | null;
4220
+
4221
+ interface PageHeaderProps {
4222
+ title: string;
4223
+ subtitle?: string;
4224
+ size?: "default" | "large";
4225
+ actions?: React__default.ReactNode;
4226
+ className?: string;
4227
+ children?: React__default.ReactNode;
4228
+ }
4229
+ /**
4230
+ * Unified Page Header Component
4231
+ *
4232
+ * Standardizes page header patterns across the application:
4233
+ * - Consistent typography sizing (text-2xl default, text-3xl large)
4234
+ * - Unified slate color palette with glass styling
4235
+ * - Mobile-responsive layout
4236
+ */
4237
+ declare const PageHeader: React__default.NamedExoticComponent<PageHeaderProps>;
4238
+ /**
4239
+ * Page Section Header - For subsections within pages
4240
+ */
4241
+ declare const PageSectionHeader: React__default.NamedExoticComponent<Omit<PageHeaderProps, "size">>;
4242
+ /**
4243
+ * Card Section Header - For headers within cards or smaller sections
4244
+ */
4245
+ declare const CardSectionHeader: React__default.NamedExoticComponent<Omit<PageHeaderProps, "size">>;
4246
+
4247
+ declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
4248
+ declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4249
+ declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
4250
+ declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4251
+
4252
+ interface ContactCardProps {
4253
+ type: "partnerships" | "press" | "careers" | "general";
4254
+ email: string;
4255
+ phone: string;
4256
+ }
4257
+ declare const ContactCard: React__default.NamedExoticComponent<ContactCardProps>;
4258
+ interface OfficeCardProps {
4259
+ city: string;
4260
+ address: string;
4261
+ postalCode: string;
4262
+ }
4263
+ declare const OfficeCard: React__default.NamedExoticComponent<OfficeCardProps>;
4264
+ interface ContactSectionProps {
4265
+ title: string;
4266
+ subtitle: string;
4267
+ children: React__default.ReactNode;
4268
+ }
4269
+ declare const ContactSection: React__default.NamedExoticComponent<ContactSectionProps>;
4270
+
4271
+ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4272
+
4273
+ declare function DropdownButton<T extends React__default.ElementType = typeof Button>({ as, ...props }: {
4274
+ className?: string;
4275
+ } & Omit<Headless.MenuButtonProps<T>, "className">): react_jsx_runtime.JSX.Element;
4276
+ declare function DropdownMenu({ anchor, className, ...props }: {
4277
+ className?: string;
4278
+ } & Omit<Headless.MenuItemsProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4279
+ declare function DropdownItem({ className, ...props }: {
4280
+ className?: string;
4281
+ } & (Omit<Headless.MenuItemProps<"button">, "as" | "className"> | Omit<Headless.MenuItemProps<typeof Link>, "as" | "className">)): react_jsx_runtime.JSX.Element;
4282
+ declare function DropdownDivider({ className, ...props }: {
4283
+ className?: string;
4284
+ } & Omit<Headless.MenuSeparatorProps, "as" | "className">): react_jsx_runtime.JSX.Element;
4285
+ declare function DropdownLabel({ className, ...props }: React__default.ComponentPropsWithoutRef<"div">): react_jsx_runtime.JSX.Element;
4286
+
4287
+ declare const colors: {
4288
+ "dark/zinc": string[];
4289
+ "dark/white": string[];
4290
+ dark: string[];
4291
+ zinc: string[];
4292
+ white: string[];
4293
+ red: string[];
4294
+ orange: string[];
4295
+ amber: string[];
4296
+ yellow: string[];
4297
+ lime: string[];
4298
+ green: string[];
4299
+ emerald: string[];
4300
+ teal: string[];
4301
+ cyan: string[];
4302
+ sky: string[];
4303
+ blue: string[];
4304
+ indigo: string[];
4305
+ violet: string[];
4306
+ purple: string[];
4307
+ fuchsia: string[];
4308
+ pink: string[];
4309
+ rose: string[];
4310
+ };
4311
+ type Color = keyof typeof colors;
4312
+ declare function Switch({ color, className, ...props }: {
4313
+ color?: Color;
4314
+ className?: string;
4315
+ } & Omit<Headless.SwitchProps, "as" | "className" | "children">): react_jsx_runtime.JSX.Element;
4316
+
4317
+ /**
4318
+ * Shared navigation item type used across all platform apps.
4319
+ *
4320
+ * Each app defines its own navigation items using this shape, which feeds into
4321
+ * the LaunchpadGrid, FlyoutNavGrid, and Dock components.
4322
+ */
4323
+ type NavigationMenuItem = {
4324
+ label: string;
4325
+ icon?: ReactNode;
4326
+ href?: string;
4327
+ onClick?: () => void;
4328
+ variant?: 'default' | 'danger';
4329
+ };
4330
+ type NavigationItem = {
4331
+ /** Unique identifier for this nav item (e.g. 'stations', 'customers') */
4332
+ id: string;
4333
+ /** Display name (typically translated) */
4334
+ name: string;
4335
+ /** Navigation target path */
4336
+ href: string;
4337
+ /** Hero icon component reference */
4338
+ icon: ComponentType<{
4339
+ className?: string;
4340
+ }>;
4341
+ /** Tailwind gradient classes (e.g. 'from-blue-400 to-blue-600') */
4342
+ gradient: string;
4343
+ /** Tailwind shadow class (e.g. 'shadow-blue-500/30') */
4344
+ shadow: string;
4345
+ /** RGB triplet for liquid-glass accent (e.g. '59, 130, 246') */
4346
+ accentRgb: string;
4347
+ /** Short description shown in flyout/launchpad subtitle */
4348
+ subtitle: string;
4349
+ /** Optional permission required to see this item */
4350
+ permission?: string;
4351
+ /** Optional numeric badge (e.g. notification count) */
4352
+ badge?: number;
4353
+ /** Context menu / long-press items */
4354
+ menuItems: NavigationMenuItem[];
4355
+ /**
4356
+ * Optional click handler — when defined, the item triggers this callback
4357
+ * instead of navigating to `href`. Useful for items that open modals,
4358
+ * drawers, or other non-navigation actions (e.g. settings).
4359
+ */
4360
+ onClick?: () => void;
4361
+ };
4362
+
4363
+ type BuildDockActionsOptions = {
4364
+ showDashboard?: boolean;
4365
+ dashboardPath?: string;
4366
+ dashboardIcon?: ComponentType<{
4367
+ className?: string;
4368
+ }>;
4369
+ dashboardLabel?: string;
4370
+ contextualItems?: DockAction[];
4371
+ profileIcon?: ComponentType<{
4372
+ className?: string;
4373
+ }>;
4374
+ profileLabel?: string;
4375
+ signOutIcon?: ComponentType<{
4376
+ className?: string;
4377
+ }>;
4378
+ signOutLabel?: string;
4379
+ };
4380
+ type BuildDockActionsHandlers = {
4381
+ navigate: (href: string) => void;
4382
+ openProfile?: () => void;
4383
+ onSignOut?: () => void;
4384
+ };
4385
+ type BuildDockActionsResult = {
4386
+ navigationActions: DockAction[];
4387
+ contextualActions: DockAction[];
4388
+ };
4389
+ /**
4390
+ * Converts NavigationItem[] to DockAction[] for the Dock component.
4391
+ *
4392
+ * - Auto-adds a dashboard item when `showDashboard` is true
4393
+ * - Sets `active` state based on pathname matching
4394
+ * - Adds profile + sign-out to contextual actions
4395
+ */
4396
+ declare function buildDockActions(items: NavigationItem[], pathname: string, handlers: BuildDockActionsHandlers, options?: BuildDockActionsOptions): BuildDockActionsResult;
4397
+ /**
4398
+ * Converts NavigationItem[] to LaunchpadItem[] for the LaunchpadGrid component.
4399
+ *
4400
+ * Maps gradient, shadow, badge, subtitle, and menuItems from NavigationItem
4401
+ * to the LaunchpadItem shape.
4402
+ */
4403
+ declare function buildLaunchpadItems(items: NavigationItem[], actionItems?: NavigationItem[]): LaunchpadItem[];
4404
+ /**
4405
+ * Converts NavigationItem[] to FlyoutNavItem[] for FlyoutNavGrid.
4406
+ *
4407
+ * Maps id, label, subtitle, href, icon, and gradient.
4408
+ */
4409
+ declare function buildFlyoutNavItems(items: NavigationItem[]): FlyoutNavItem[];
4410
+ /**
4411
+ * Filters NavigationItem[] by user permissions.
4412
+ *
4413
+ * - Items without a `permission` field are always included
4414
+ * - Wildcard `'*'` in `userPermissions` includes everything
4415
+ */
4416
+ declare function filterByPermission(items: NavigationItem[], userPermissions: string[]): NavigationItem[];
4417
+
4418
+ type AppNavigationProps = {
4419
+ items: NavigationItem[];
4420
+ pathname: string;
4421
+ dockEnabled?: boolean;
4422
+ dockPosition?: 'left' | 'right' | 'bottom';
4423
+ dockAutoHide?: boolean;
4424
+ showLaunchpad?: boolean;
4425
+ launchpadUserProfile?: LaunchpadUserProfile | null;
4426
+ launchpadActionItems?: NavigationItem[];
4427
+ launchpadActionsLabel?: string;
4428
+ launchpadPageOrder?: string[];
4429
+ flyoutOpen?: boolean;
4430
+ onFlyoutClose?: () => void;
4431
+ flyoutResolvedTheme?: 'light' | 'dark';
4432
+ onToggleTheme?: () => void;
4433
+ onNavigate: (href: string) => void;
4434
+ onOpenProfile?: () => void;
4435
+ onSignOut?: () => void;
4436
+ onNotifications?: () => void;
4437
+ onPrefetch?: (href: string) => void;
4438
+ dashboardPath?: string;
4439
+ dashboardIcon?: ComponentType<{
4440
+ className?: string;
4441
+ }>;
4442
+ profileIcon?: ComponentType<{
4443
+ className?: string;
4444
+ }>;
4445
+ signOutIcon?: ComponentType<{
4446
+ className?: string;
4447
+ }>;
4448
+ contextualDockActions?: DockAction[];
4449
+ onLaunchpadItemClick?: (item: {
4450
+ href: string;
4451
+ id: string;
4452
+ }) => void;
4453
+ labels?: {
4454
+ home?: string;
4455
+ profile?: string;
4456
+ signOut?: string;
4457
+ notifications?: string;
4458
+ searchPlaceholder?: string;
4459
+ actions?: string;
4460
+ };
4461
+ notificationCount?: number;
4462
+ userName?: string;
4463
+ userInitial?: string;
4464
+ };
4465
+ declare function AppNavigation({ items, pathname, dockEnabled, dockPosition, dockAutoHide, showLaunchpad, launchpadUserProfile, launchpadActionItems, launchpadActionsLabel, launchpadPageOrder, flyoutOpen, onFlyoutClose, flyoutResolvedTheme, onToggleTheme, onNavigate, onOpenProfile, onSignOut, onNotifications, onPrefetch, dashboardPath, dashboardIcon, profileIcon, signOutIcon, contextualDockActions, onLaunchpadItemClick: externalLaunchpadItemClick, labels, notificationCount, userName, userInitial, }: AppNavigationProps): react_jsx_runtime.JSX.Element;
4466
+
4467
+ type PlatformShellUser = {
4468
+ name?: string | null;
4469
+ email?: string | null;
4470
+ image?: string | null;
4471
+ role?: string | null;
4472
+ permissions?: string[];
4473
+ organizationId?: string | null;
4474
+ };
4475
+ type PlatformShellLabels = {
4476
+ home?: string;
4477
+ profile?: string;
4478
+ signOut?: string;
4479
+ signOutConfirmTitle?: string;
4480
+ cancel?: string;
4481
+ notifications?: string;
4482
+ theme?: string;
4483
+ currentTheme?: string;
4484
+ language?: string;
4485
+ currentLocale?: string;
4486
+ /** Flag emoji or element for the current locale (e.g. '🇧🇷') */
4487
+ localeFlag?: string;
4488
+ actions?: string;
4489
+ searchPlaceholder?: string;
4490
+ };
4491
+ type PlatformShellProps = {
4492
+ /** Navigable items for dock, launchpad, and flyout */
4493
+ items: NavigationItem[];
4494
+ /** Additional action items for the launchpad only */
4495
+ launchpadActionItems?: NavigationItem[];
4496
+ /** Custom ordering of launchpad page tiles */
4497
+ launchpadPageOrder?: string[];
4498
+ /** Current user (null when not authenticated) */
4499
+ user: PlatformShellUser | null;
4500
+ /** Auth loading state */
4501
+ authStatus: 'loading' | 'authenticated' | 'unauthenticated';
4502
+ /** Sign-out callback */
4503
+ onSignOut: () => void;
4504
+ /** Dock position preference */
4505
+ dockPosition?: 'left' | 'right' | 'bottom' | 'top';
4506
+ /** Whether the dock auto-hides */
4507
+ dockAutoHide?: boolean;
4508
+ /** Whether the dock is enabled */
4509
+ dockEnabled?: boolean;
4510
+ /** Resolved theme for the flyout quick-actions */
4511
+ resolvedTheme?: 'light' | 'dark';
4512
+ /** Toggle dark/light theme */
4513
+ onToggleTheme?: () => void;
4514
+ /** Current pathname */
4515
+ pathname: string;
4516
+ /** Programmatic navigation callback */
4517
+ onNavigate: (href: string) => void;
4518
+ /** Optional prefetch callback */
4519
+ onPrefetch?: (href: string) => void;
4520
+ /** Dashboard pathname to detect when to show launchpad (default: '/dashboard') */
4521
+ dashboardPath?: string;
4522
+ /** Paths where the shell chrome (breadcrumb, dock, flyout) should NOT render */
4523
+ publicPaths?: string[];
4524
+ /** App display name (e.g. "Fuel Price AI") */
4525
+ appName: string;
4526
+ /** App icon element for the branded loader */
4527
+ appIcon: ReactNode;
4528
+ /** Custom logo element for the flyout trigger (replaces default icon+name button) */
4529
+ appLogo?: ReactNode;
4530
+ /** Gradient class (e.g. "from-blue-500 to-indigo-600") */
4531
+ appGradient: string;
4532
+ /** Accent ring class (e.g. "ring-blue-500/30") */
4533
+ appAccentRing?: string;
4534
+ /** Icon for the dashboard dock button */
4535
+ dashboardIcon?: ComponentType<{
4536
+ className?: string;
4537
+ }>;
4538
+ /** Icon for the profile dock button */
4539
+ profileIcon?: ComponentType<{
4540
+ className?: string;
4541
+ }>;
4542
+ /** Icon for the sign-out dock button */
4543
+ signOutIcon?: ComponentType<{
4544
+ className?: string;
4545
+ }>;
4546
+ /** Page content */
4547
+ children: ReactNode;
4548
+ /** Content rendered inside the profile drawer (app-specific controls) */
4549
+ profileDrawerContent?: ReactNode;
4550
+ /** Profile drawer render prop — receives open state + close handler */
4551
+ profileDrawer?: (props: {
4552
+ open: boolean;
4553
+ onClose: () => void;
4554
+ }) => ReactNode;
4555
+ /** Extra content rendered before children (initializers, data loaders, etc.) */
4556
+ initializers?: ReactNode;
4557
+ /** Extra content rendered after the main layout (FABs, modals, etc.) */
4558
+ extras?: ReactNode;
4559
+ /** Custom breadcrumb/header bar */
4560
+ headerContent?: ReactNode;
4561
+ labels?: PlatformShellLabels;
4562
+ /** Number of unread notifications */
4563
+ notificationCount?: number;
4564
+ /** Open notification history */
4565
+ onNotifications?: () => void;
4566
+ /** Open language selector */
4567
+ onLanguage?: () => void;
4568
+ };
4569
+ declare function PlatformShell({ items, launchpadActionItems, launchpadPageOrder, user, authStatus, onSignOut, dockPosition, dockAutoHide, dockEnabled, resolvedTheme, onToggleTheme, pathname, onNavigate, onPrefetch, dashboardPath, publicPaths, appName, appIcon, appLogo, appGradient, appAccentRing, dashboardIcon, profileIcon, signOutIcon, children, profileDrawerContent: _profileDrawerContent, profileDrawer, initializers, extras, headerContent, labels, notificationCount, onNotifications, onLanguage, }: PlatformShellProps): react_jsx_runtime.JSX.Element;
4570
+
4571
+ type ShellUser = {
4572
+ name?: string | null;
4573
+ email?: string | null;
4574
+ image?: string | null;
4575
+ role?: string | null;
4576
+ permissions?: string[];
4577
+ organizationId?: string | null;
4578
+ };
4579
+ type ShellPreferences = {
4580
+ locale: string;
4581
+ localeFlag?: string;
4582
+ localeName?: string;
4583
+ theme: 'light' | 'dark' | 'system';
4584
+ resolvedTheme: 'light' | 'dark';
4585
+ dockPosition: 'left' | 'right' | 'bottom' | 'top';
4586
+ dockAutoHide: boolean;
4587
+ dockEnabled: boolean;
4588
+ };
4589
+ type ShellLabels = {
4590
+ home?: string;
4591
+ profile?: string;
4592
+ signOut?: string;
4593
+ signOutConfirmTitle?: string;
4594
+ cancel?: string;
4595
+ notifications?: string;
4596
+ theme?: string;
4597
+ currentTheme?: string;
4598
+ language?: string;
4599
+ currentLocale?: string;
4600
+ localeFlag?: string;
4601
+ actions?: string;
4602
+ };
4603
+ type PlatformShellState = {
4604
+ profileDrawerOpen: boolean;
4605
+ flyoutOpen: boolean;
4606
+ signOutConfirmOpen: boolean;
4607
+ settingsModalOpen: boolean;
4608
+ settingsSection: string;
4609
+ user: ShellUser | null;
4610
+ authStatus: 'loading' | 'authenticated' | 'unauthenticated';
4611
+ preferences: ShellPreferences;
4612
+ notificationCount: number;
4613
+ labels: ShellLabels;
4614
+ appName: string;
4615
+ appGradient: string;
4616
+ _onSignOut: (() => void) | null;
4617
+ _onToggleTheme: (() => void) | null;
4618
+ _onNavigate: ((href: string) => void) | null;
4619
+ _onNotifications: (() => void) | null;
4620
+ _onLanguageChange: ((locale: string) => void) | null;
4621
+ openProfile: () => void;
4622
+ closeProfile: () => void;
4623
+ openSettings: (section?: string) => void;
4624
+ closeSettings: () => void;
4625
+ openFlyout: () => void;
4626
+ closeFlyout: () => void;
4627
+ requestSignOut: () => void;
4628
+ cancelSignOut: () => void;
4629
+ confirmSignOut: () => void;
4630
+ toggleTheme: () => void;
4631
+ changeLanguage: (locale: string) => void;
4632
+ navigate: (href: string) => void;
4633
+ openNotifications: () => void;
4634
+ setUser: (user: ShellUser | null) => void;
4635
+ setAuthStatus: (status: 'loading' | 'authenticated' | 'unauthenticated') => void;
4636
+ setPreferences: (prefs: Partial<ShellPreferences>) => void;
4637
+ setNotificationCount: (count: number) => void;
4638
+ setLabels: (labels: ShellLabels) => void;
4639
+ setBranding: (appName: string, appGradient: string) => void;
4640
+ registerCallbacks: (callbacks: {
4641
+ onSignOut?: () => void;
4642
+ onToggleTheme?: () => void;
4643
+ onNavigate?: (href: string) => void;
4644
+ onNotifications?: () => void;
4645
+ onLanguageChange?: (locale: string) => void;
4646
+ }) => void;
4647
+ };
4648
+ declare const usePlatformShellStore: zustand.UseBoundStore<zustand.StoreApi<PlatformShellState>>;
4649
+ declare const selectUserName: (state: PlatformShellState) => string | undefined;
4650
+ declare const selectUserInitial: (state: PlatformShellState) => string;
4651
+ declare const selectIsAuthenticated: (state: PlatformShellState) => boolean;
4652
+ declare const selectShowShellChrome: (state: PlatformShellState) => boolean;
4653
+
4654
+ /**
4655
+ * SkipToContent — Accessibility skip navigation link
4656
+ *
4657
+ * Hidden by default, becomes visible on focus (Tab key).
4658
+ * Allows keyboard users to skip past navigation and jump to main content.
4659
+ *
4660
+ * Usage in app layout:
4661
+ * <SkipToContent targetId="main-content" />
4662
+ * <nav>...</nav>
4663
+ * <main id="main-content">...</main>
4664
+ */
4665
+ interface SkipToContentProps {
4666
+ /** The id of the main content element to skip to */
4667
+ targetId?: string;
4668
+ /** Custom label text */
4669
+ label?: string;
4670
+ }
4671
+ declare function SkipToContent({ targetId, label, }: SkipToContentProps): react_jsx_runtime.JSX.Element;
4672
+
4673
+ export { ARGENTINA_ACCENT_MAP, ARGENTINA_MACRO_REGIONS, ARGENTINA_MAP_CENTER, ARGENTINA_PROVINCE_COORDINATES, ARGENTINA_PROVINCE_PALETTES, AR_THEME_CONFIG, AUSTRALIA_ACCENT_MAP, AUSTRALIA_MACRO_REGIONS, AUSTRALIA_MAP_CENTER, AUSTRALIA_STATE_COORDINATES, AUSTRALIA_STATE_PALETTES, AU_THEME_CONFIG, type AccentColor, ActionMenu, ActionSheet, type ActiveFilter, type ActiveFilterChip, type ActiveFilterChipStyleConfig, ActiveFilterChips, AgentAnalysisCard, AnalysisSkeleton, AnimatedNumber, AnimatedTableRow, AppLogo, AppNavigation, type AppNavigationProps, AppShell, type AppShellProps, ArchiveSwipeAction, AuthLayout, type AuthLayoutProps, Avatar, AvatarButton, BRAZIL_ACCENT_MAP, BRAZIL_MACRO_REGIONS, BRAZIL_MAP_CENTER, BRAZIL_STATE_COORDINATES, BRAZIL_STATE_PALETTES, BR_THEME_CONFIG, BackupCodeGrid, type BackupCodeGridProps, BadRequestPage, Badge, BaseForm, type BaseFormIconColor, type BaseFormProps, BentoCard, BooleanFlagsPicker, type BooleanFlagsPickerProps, type BooleanFlagsPreset, BottomSafeArea, BrandFilterSkeleton, BrandedLoader, Breadcrumb, type BreadcrumbItem, type BreadcrumbPage, Button, CANADA_ACCENT_MAP, CANADA_MACRO_REGIONS, CANADA_MAP_CENTER, CANADA_PROVINCE_COORDINATES, CANADA_PROVINCE_PALETTES, CA_THEME_CONFIG, CHILE_ACCENT_MAP, CHILE_MACRO_REGIONS, CHILE_MAP_CENTER, CHILE_REGION_COORDINATES, CHILE_REGION_PALETTES, CL_THEME_CONFIG, COLOMBIA_ACCENT_MAP, COLOMBIA_DEPARTMENT_COORDINATES, COLOMBIA_DEPARTMENT_PALETTES, COLOMBIA_MACRO_REGIONS, COLOMBIA_MAP_CENTER, CO_THEME_CONFIG, Card, CardActionMenu, type CardActionMenuItem, CardContent, CardDescription, CardDivider, CardFooter, CardGridSkeleton, CardHeader, CardSectionHeader, CardTitle, CategoryBadge, type CategoryBadgeProps, CategoryTab, type CategoryTabConfig, type CategoryTabProps, CategoryTabs, type CategoryTabsProps, type ChipItem, type ChipItemStyle, ChipPicker, CircularRefreshIndicator, Code, type CollapsibleGroup, CollapsibleGroupedList, type CollapsibleGroupedListProps, CompactSegmentedControl, ContactCard, ContactSection, Container, type ContainerProps, type ContainerVariant, ContextMenu, type ContextMenuDivider, type ContextMenuEntry, type ContextMenuItem, CookieConsent, CopyableId, CountPill, type CountryAddressFormat, type CountryConfig, type CountryCurrencyConfig, type CountryLanguage, type CountryLocaleConfig, type CountryTaxConfig, CreateActionButton, DE_THEME_CONFIG, DashboardProgressShell, DataPagination, DatePicker, DeleteSwipeAction, Description, DetailsPopover, type DetailsPopoverActor, type DetailsPopoverComparison, type DetailsPopoverNote, type DetailsPopoverProps, DevModeBanner, Dialog, DialogActions, DialogBody, DialogDescription, DialogTitle, Divider, Dock, type DockAction, DockContainer, DockSkeleton, DotRefreshIndicator, Dropdown, DropdownButton, DropdownDivider, DropdownItem, DropdownLabel, DropdownMenu, DropdownSelect, DynamicIsland, DynamicIslandNotification, EGYPT_ACCENT_MAP, EGYPT_GOVERNORATE_COORDINATES, EGYPT_GOVERNORATE_PALETTES, EGYPT_MACRO_REGIONS, EGYPT_MAP_CENTER, EG_THEME_CONFIG, ES_THEME_CONFIG, EdgeSwipeIndicator, EdgeSwipeProvider, EditSwipeAction, EmptyState, EntityCard, type EntityCardProps, EntityDrawer, type EntityDrawerMaxWidth, type EntityDrawerProps, ErrorMessage, ErrorState, type ExpandableHistoryItem, ExpandableHistoryList, type ExpandableHistoryListProps, ExpandingPageIndicator, FRANCE_ACCENT_MAP, FRANCE_MACRO_REGIONS, FRANCE_MAP_CENTER, FRANCE_REGION_COORDINATES, FRANCE_REGION_PALETTES, FR_THEME_CONFIG, FUEL_PRICE_LOADER, FavoriteSwipeAction, FeatureCard, FeedItemCard, Field, FieldGroup, Label as FieldLabel, Fieldset, FilterBadge, FilterPill, type FilterPillProps, type FilterPillVariant, FilterSectionHeader, type FilterSectionHeaderProps, FilterTileButton, type FilterTileButtonProps, type FilterTileColor, FloatingActionButton, FlyoutMenu, FlyoutNavGrid, type FlyoutNavItem, FlyoutQuickActions, ForceTouchMenu, Form, FormActions, type FormActionsProps, FormActionsRow, type FormActionsRowProps, FormCheckbox, type FormCheckboxProps, FormField, type FormFieldProps, FormGrid, type FormGridProps, FormInput, type FormInputProps, FormPriceInput, type FormPriceInputProps, type FormProps, FormSection, type FormSectionProps, FormSelect, type FormSelectProps, type FormStep, FormTextarea, type FormTextareaProps, FormToggle, type FormToggleProps, type FuelColors, GB_THEME_CONFIG, GERMANY_ACCENT_MAP, GERMANY_MACRO_REGIONS, GERMANY_MAP_CENTER, GERMANY_STATE_COORDINATES, GERMANY_STATE_PALETTES, GeoMapCanvas, type GeoMapCanvasProps, GeoMapLegend, type GeoMapLegendProps, type GeoMapRegionData, GlassModalIdentity, Gradient, GradientBackground, GrowthIndicator, Heading, HeroPanel, type HeroPanelProps, type HeroPanelStat, HeroSection, ID_THEME_CONFIG, INDIA_ACCENT_MAP, INDIA_MACRO_REGIONS, INDIA_MAP_CENTER, INDIA_STATE_COORDINATES, INDIA_STATE_PALETTES, INDONESIA_ACCENT_MAP, INDONESIA_MACRO_REGIONS, INDONESIA_MAP_CENTER, INDONESIA_PROVINCE_COORDINATES, INDONESIA_PROVINCE_PALETTES, IN_THEME_CONFIG, ITALY_ACCENT_MAP, ITALY_MACRO_REGIONS, ITALY_MAP_CENTER, ITALY_REGION_COORDINATES, ITALY_REGION_PALETTES, IT_THEME_CONFIG, IconButton, ImageUpload, type ImageUploadProps, InfoPopover, type InfoPopoverProps, InlineForm, type InlineFormProps, InlineSpinner, Input, InteractiveGeoMap, type InteractiveGeoMapProps, ItemSummary, type ItemSummaryMetadata, JAPAN_ACCENT_MAP, JAPAN_MACRO_REGIONS, JAPAN_MAP_CENTER, JAPAN_PREFECTURE_COORDINATES, JAPAN_PREFECTURE_PALETTES, JP_THEME_CONFIG, KORI_ERP_LOADER, KR_THEME_CONFIG, LOCALE_FLAGS, Label, LabeledToggle, type LanguageOption$1 as LanguageOption, LanguageSwitcher, LaunchpadGrid, type LaunchpadGridProps, type LaunchpadItem, type LaunchpadMenuItem, type LaunchpadUserProfile, Lead, Legend, LiquidFilterInput, ListCard, ListCardItem, ListItem, type ListItemAction, type ListItemMetadata, type ListItemProps, type ListItemVariant, LoadingOverlay, MEXICO_ACCENT_MAP, MEXICO_MACRO_REGIONS, MEXICO_MAP_CENTER, MEXICO_STATE_COORDINATES, MEXICO_STATE_PALETTES, MX_THEME_CONFIG, ManagementPageLayout, type ManagementPageLayoutProps, ManagementSurface, MapZoomControls, type MapZoomControlsProps, MarketPricesCard, type MetaItem, MetricCard, MonthPicker, MultiColumnPicker, NETHERLANDS_ACCENT_MAP, NETHERLANDS_MACRO_REGIONS, NETHERLANDS_MAP_CENTER, NETHERLANDS_PROVINCE_COORDINATES, NETHERLANDS_PROVINCE_PALETTES, NEW_ZEALAND_ACCENT_MAP, NEW_ZEALAND_MACRO_REGIONS, NEW_ZEALAND_MAP_CENTER, NEW_ZEALAND_REGION_COORDINATES, NEW_ZEALAND_REGION_PALETTES, NG_THEME_CONFIG, NIGERIA_ACCENT_MAP, NIGERIA_MACRO_REGIONS, NIGERIA_MAP_CENTER, NIGERIA_STATE_COORDINATES, NIGERIA_STATE_PALETTES, NL_THEME_CONFIG, NORWAY_ACCENT_MAP, NORWAY_COUNTY_COORDINATES, NORWAY_COUNTY_PALETTES, NORWAY_MACRO_REGIONS, NORWAY_MAP_CENTER, NO_THEME_CONFIG, NZ_THEME_CONFIG, type NavigationItem, type NavigationMenuItem, NavigationProgress, NoDataState, NoResultsState, NotFoundPage, type Notification, NotificationBadge, type NotificationBadgeProps, NotificationBellButton, NotificationProvider, type NotificationType, OfficeCard, OfflineState, type OffsetPaginationParams, OptionGrid, type OptionGridItem, type OptionGridProps, OtpInput, type OtpInputProps, PERU_ACCENT_MAP, PERU_DEPARTMENT_COORDINATES, PERU_DEPARTMENT_PALETTES, PERU_MACRO_REGIONS, PERU_MAP_CENTER, PE_THEME_CONFIG, PHILIPPINES_ACCENT_MAP, PHILIPPINES_MACRO_REGIONS, PHILIPPINES_MAP_CENTER, PHILIPPINES_PROVINCE_COORDINATES, PHILIPPINES_PROVINCE_PALETTES, PH_THEME_CONFIG, PL_THEME_CONFIG, POLAND_ACCENT_MAP, POLAND_MACRO_REGIONS, POLAND_MAP_CENTER, POLAND_VOIVODESHIP_COORDINATES, POLAND_VOIVODESHIP_PALETTES, PORTUGAL_ACCENT_MAP, PORTUGAL_DISTRICT_COORDINATES, PORTUGAL_DISTRICT_PALETTES, PORTUGAL_MACRO_REGIONS, PORTUGAL_MAP_CENTER, PT_THEME_CONFIG, PageEmptyState, PageErrorState, PageHeader, PageHeading, type PageHeadingProps, PageIndicator, PageLoadingState, PageSectionHeader, Pagination, type PaginationMeta, PasswordInput, type PasswordPolicy, PasswordStrengthMeter, type PasswordStrengthMeterProps, Pill, PlatformShell, type PlatformShellLabels, type PlatformShellProps, type PlatformShellState, type PlatformShellUser, PlusGrid, PlusGridItem, PlusGridRow, type PreferenceGroupConfig, PreferenceSection, type PreferenceSectionProps, type PreferencesSectionConfig, PriceChangeBadge, ProfileIdentityCard, type ProfileSectionConfig, Progress, ProgressIndicator, PullToRefreshContainer, PullToRefreshIndicator, RadiantHeading, RadiantStatCard, RadiantSubheading, type RadioGroupConfig, RecommendationCard, RegionFilterSkeleton, RoleBadge, SE_THEME_CONFIG, SOUTH_AFRICA_ACCENT_MAP, SOUTH_AFRICA_MACRO_REGIONS, SOUTH_AFRICA_MAP_CENTER, SOUTH_AFRICA_PROVINCE_COORDINATES, SOUTH_AFRICA_PROVINCE_PALETTES, SOUTH_KOREA_ACCENT_MAP, SOUTH_KOREA_MACRO_REGIONS, SOUTH_KOREA_MAP_CENTER, SOUTH_KOREA_PROVINCE_COORDINATES, SOUTH_KOREA_PROVINCE_PALETTES, SPAIN_ACCENT_MAP, SPAIN_MACRO_REGIONS, SPAIN_MAP_CENTER, SPAIN_PROVINCE_COORDINATES, SPAIN_PROVINCE_PALETTES, SWEDEN_ACCENT_MAP, SWEDEN_COUNTY_COORDINATES, SWEDEN_COUNTY_PALETTES, SWEDEN_MACRO_REGIONS, SWEDEN_MAP_CENTER, SafeArea, SafeAreaSpacer, SafeAreaView, type SaveStatus, SearchBar, SearchFilterToolbar, type SearchFilterToolbarProps, SearchInput, SectionCard, SectionHeader, SectionHeaderSkeleton, SegmentedControl, Select, type SelectableChipItem, SelectableChipPicker, type SelectableChipPickerLabels, type SelectableListItem, SelectableListPicker, type SelectableListPickerLabels, SelectableOptionsGrid, type SelectableOptionsGridOption, type SelectableOptionsGridProps, SelectableTableRow, SelectionCard, type SelectionCardProps, type SelectionOption, ServerErrorPage, type SettingsFieldConfig, type LanguageOption as SettingsLanguageOption, SettingsModal, type SettingsModalProps, type SettingsSection, Sheet, type ShellLabels, type ShellPreferences, type ShellUser, SkipToContent, SocialLoginButtons, type SocialLoginButtonsProps, type SocialProvider, SortableTableHeader, Spinner, Stat, StatCard, StatCardSkeleton, StatusBadge, type StatusBadgeProps, StatusToggle, type StatusType, StepFormPage, type StepFormPageProps, StepNavigationButtons, type StepNavigationButtonsProps, StepTimeline, type StepTimelineItem, type StepTimelineProps, type StepTimelineStatus, Strong, type SubdivisionColorPalette, type SubdivisionThemeConfig, Subheading, SwipeableRow, Switch, THAILAND_ACCENT_MAP, THAILAND_MACRO_REGIONS, THAILAND_MAP_CENTER, THAILAND_PROVINCE_COORDINATES, THAILAND_PROVINCE_PALETTES, TH_THEME_CONFIG, TR_THEME_CONFIG, TURKEY_ACCENT_MAP, TURKEY_MACRO_REGIONS, TURKEY_MAP_CENTER, TURKEY_PROVINCE_COORDINATES, TURKEY_PROVINCE_PALETTES, Table, TableBody, TableCell, TableEmptyState, TableHead, TableHeader, TableRow, TableSkeleton, TableSkeletonRow, Tabs, TabsContent, TabsList, TabsTrigger, TagBadge, type TagBadgeStyle, Text, TextLink, Textarea, ThemeSwitch, ThemeToggle, ThemeToggleCompact, TimePicker, type ToggleConfig, ToggleSwitch, type ToggleSwitchColor, TouchTarget, UK_ACCENT_MAP, UK_MACRO_REGIONS, UK_MAP_CENTER, UK_NATION_COORDINATES, UK_NATION_PALETTES, US_ACCENT_MAP, US_MACRO_REGIONS, US_MAP_CENTER, US_STATE_COORDINATES, US_STATE_PALETTES, US_THEME_CONFIG, type UseGeoMapStateOptions, UserAvatar, type UserAvatarLabels, type UserAvatarMenuItem, type UserAvatarProps, type UserAvatarUser, UserMobileInfo, type UserMobileInfoProps, WINDSOCK_LOADER, WIRE_LOADER, WheelPicker, WindsockIcon, type WorkspaceSectionConfig, ZA_THEME_CONFIG, buildDockActions, buildFlyoutNavItems, buildLaunchpadItems, buttonPress, buttonPressReduced, buttonTap, cardHover, cardHoverReduced, cardPress, createMotionProps, durations, durationsReduced, easings, fadeOnly, fadeScale, filterByPermission, formatAddress, formatCurrency as formatCountryCurrency, formatCurrency$1 as formatCurrency, formatDate, formatPercentage, getAllCountries, getArgentinaAccent, getArgentinaColors, getArgentinaFlagUrl, getArgentinaGradient, getArgentinaHexColor, getArgentinaPalette, getAustraliaAccent, getAustraliaColors, getAustraliaFlagUrl, getAustraliaGradient, getAustraliaHexColor, getAustraliaPalette, getBrazilAccent, getBrazilColors, getBrazilFlagUrl, getBrazilGradient, getBrazilHexColor, getBrazilPalette, getCanadaAccent, getCanadaColors, getCanadaFlagUrl, getCanadaGradient, getCanadaHexColor, getCanadaPalette, getChileAccent, getChileColors, getChileFlagUrl, getChileGradient, getChileHexColor, getChilePalette, getColombiaAccent, getColombiaColors, getColombiaFlagUrl, getColombiaGradient, getColombiaHexColor, getColombiaPalette, getCountryConfig, getEgyptAccent, getEgyptColors, getEgyptFlagUrl, getEgyptGradient, getEgyptHexColor, getEgyptPalette, getFranceAccent, getFranceColors, getFranceFlagUrl, getFranceGradient, getFranceHexColor, getFrancePalette, getGermanyAccent, getGermanyColors, getGermanyFlagUrl, getGermanyGradient, getGermanyHexColor, getGermanyPalette, getIndiaAccent, getIndiaColors, getIndiaFlagUrl, getIndiaGradient, getIndiaHexColor, getIndiaPalette, getIndonesiaAccent, getIndonesiaColors, getIndonesiaFlagUrl, getIndonesiaGradient, getIndonesiaHexColor, getIndonesiaPalette, getItalyAccent, getItalyColors, getItalyFlagUrl, getItalyGradient, getItalyHexColor, getItalyPalette, getJapanAccent, getJapanColors, getJapanFlagUrl, getJapanGradient, getJapanHexColor, getJapanPalette, getMexicoAccent, getMexicoColors, getMexicoFlagUrl, getMexicoGradient, getMexicoHexColor, getMexicoPalette, getNetherlandsAccent, getNetherlandsColors, getNetherlandsFlagUrl, getNetherlandsGradient, getNetherlandsHexColor, getNetherlandsPalette, getNewZealandAccent, getNewZealandColors, getNewZealandFlagUrl, getNewZealandGradient, getNewZealandHexColor, getNewZealandPalette, getNigeriaAccent, getNigeriaColors, getNigeriaFlagUrl, getNigeriaGradient, getNigeriaHexColor, getNigeriaPalette, getNorwayAccent, getNorwayColors, getNorwayFlagUrl, getNorwayGradient, getNorwayHexColor, getNorwayPalette, getPeruAccent, getPeruColors, getPeruFlagUrl, getPeruGradient, getPeruHexColor, getPeruPalette, getPhilippinesAccent, getPhilippinesColors, getPhilippinesFlagUrl, getPhilippinesGradient, getPhilippinesHexColor, getPhilippinesPalette, getPolandAccent, getPolandColors, getPolandFlagUrl, getPolandGradient, getPolandHexColor, getPolandPalette, getPortugalAccent, getPortugalColors, getPortugalFlagUrl, getPortugalGradient, getPortugalHexColor, getPortugalPalette, getSouthAfricaAccent, getSouthAfricaColors, getSouthAfricaFlagUrl, getSouthAfricaGradient, getSouthAfricaHexColor, getSouthAfricaPalette, getSouthKoreaAccent, getSouthKoreaColors, getSouthKoreaFlagUrl, getSouthKoreaGradient, getSouthKoreaHexColor, getSouthKoreaPalette, getSpainAccent, getSpainColors, getSpainFlagUrl, getSpainGradient, getSpainHexColor, getSpainPalette, getStatusColor, getSubdivisionAccent, getSubdivisionColors, getSubdivisionFlagUrl, getSubdivisionGradient, getSubdivisionHexColor, getSubdivisionPalette, getSwedenAccent, getSwedenColors, getSwedenFlagUrl, getSwedenGradient, getSwedenHexColor, getSwedenPalette, getThailandAccent, getThailandColors, getThailandFlagUrl, getThailandGradient, getThailandHexColor, getThailandPalette, getTransition, getTurkeyAccent, getTurkeyColors, getTurkeyFlagUrl, getTurkeyGradient, getTurkeyHexColor, getTurkeyPalette, getUKAccent, getUKColors, getUKFlagUrl, getUKGradient, getUKHexColor, getUKPalette, getUsAccent, getUsColors, getUsFlagUrl, getUsGradient, getUsHexColor, getUsPalette, getVariants, iosColors, isValidArgentinaProvince, isValidAustraliaState, isValidBrazilState, isValidCanadaProvince, isValidChileRegion, isValidColombiaDepartment, isValidEgyptGovernorate, isValidFranceRegion, isValidGermanyState, isValidIndiaState, isValidIndonesiaProvince, isValidItalyRegion, isValidJapanPrefecture, isValidMexicoState, isValidNetherlandsProvince, isValidNewZealandRegion, isValidNigeriaState, isValidNorwayCounty, isValidPeruDepartment, isValidPhilippinesProvince, isValidPolandVoivodeship, isValidPortugalDistrict, isValidSouthAfricaProvince, isValidSouthKoreaProvince, isValidSpainProvince, isValidSubdivision, isValidSwedenCounty, isValidThailandProvince, isValidTurkeyProvince, isValidUKNation, isValidUsState, listItem, listItemReduced, notificationBanner, notificationBannerReduced, pageControlDot, prefersReducedMotion, registerCountry, registerSubdivisionTheme, resolveGlassAccentRgb, selectIsAuthenticated, selectShowShellChrome, selectUserInitial, selectUserName, shimmerClass, shimmerWhiteClass, slideDown, slideRight, slideUp, springPresets, springPresetsReduced, staggerContainer, swipeActionThreshold, swipeConstraints, triggerHaptic, useGeoMapState, useHaptic, useNotifications, usePlatformShellStore, usePullToRefresh };