@almadar/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4789 @@
1
+ import * as React from 'react';
2
+ import React__default from 'react';
3
+ import { LucideIcon } from 'lucide-react';
4
+ import { SExpr } from '@orbital/shared';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import { Entity } from '../stores/index.js';
7
+ import { E as EventBusContextType } from '../event-bus-types-8-cjyMxw.js';
8
+ import { S as SlotContent, a as UISlot } from '../useUISlots-mnggE9X9.js';
9
+
10
+ type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default";
11
+ type ButtonSize = "sm" | "md" | "lg";
12
+ interface ButtonProps extends React__default.ButtonHTMLAttributes<HTMLButtonElement> {
13
+ variant?: ButtonVariant;
14
+ size?: ButtonSize;
15
+ isLoading?: boolean;
16
+ /** Left icon as ReactNode (preferred) */
17
+ leftIcon?: React__default.ReactNode;
18
+ /** Right icon as ReactNode (preferred) */
19
+ rightIcon?: React__default.ReactNode;
20
+ /** Left icon as Lucide icon component (convenience prop, renders with default size) */
21
+ icon?: LucideIcon;
22
+ /** Right icon as Lucide icon component (convenience prop) */
23
+ iconRight?: LucideIcon;
24
+ }
25
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
26
+
27
+ interface SelectOption$1 {
28
+ value: string;
29
+ label: string;
30
+ }
31
+ interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
32
+ /** Input type - supports 'select' and 'textarea' in addition to standard types */
33
+ type?: "text" | "email" | "password" | "number" | "tel" | "url" | "search" | "date" | "datetime-local" | "time" | "checkbox" | "select" | "textarea";
34
+ error?: string;
35
+ leftIcon?: React__default.ReactNode;
36
+ rightIcon?: React__default.ReactNode;
37
+ /** Lucide icon component for left side (convenience prop) */
38
+ icon?: LucideIcon;
39
+ /** Show clear button when input has value */
40
+ clearable?: boolean;
41
+ /** Callback when clear button is clicked */
42
+ onClear?: () => void;
43
+ /** Options for select type */
44
+ options?: SelectOption$1[];
45
+ /** Rows for textarea type */
46
+ rows?: number;
47
+ /** onChange handler - accepts events from input, select, or textarea */
48
+ onChange?: React__default.ChangeEventHandler<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>;
49
+ }
50
+ declare const Input: React__default.ForwardRefExoticComponent<InputProps & React__default.RefAttributes<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>;
51
+
52
+ interface LabelProps extends React__default.LabelHTMLAttributes<HTMLLabelElement> {
53
+ required?: boolean;
54
+ }
55
+ declare const Label: React__default.ForwardRefExoticComponent<LabelProps & React__default.RefAttributes<HTMLLabelElement>>;
56
+
57
+ interface TextareaProps extends React__default.TextareaHTMLAttributes<HTMLTextAreaElement> {
58
+ error?: string;
59
+ }
60
+ declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
61
+
62
+ interface SelectOption {
63
+ value: string;
64
+ label: string;
65
+ disabled?: boolean;
66
+ }
67
+ interface SelectProps extends Omit<React__default.SelectHTMLAttributes<HTMLSelectElement>, "children"> {
68
+ options: SelectOption[];
69
+ placeholder?: string;
70
+ error?: string;
71
+ }
72
+ declare const Select: React__default.ForwardRefExoticComponent<SelectProps & React__default.RefAttributes<HTMLSelectElement>>;
73
+
74
+ interface CheckboxProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type"> {
75
+ label?: string;
76
+ }
77
+ declare const Checkbox: React__default.ForwardRefExoticComponent<CheckboxProps & React__default.RefAttributes<HTMLInputElement>>;
78
+
79
+ type CardShadow = "none" | "sm" | "md" | "lg";
80
+ interface CardProps$1 extends React__default.HTMLAttributes<HTMLDivElement> {
81
+ variant?: "default" | "bordered" | "elevated" | "interactive";
82
+ padding?: "none" | "sm" | "md" | "lg";
83
+ /** Card title - renders in header if provided */
84
+ title?: string;
85
+ /** Card subtitle - renders below title */
86
+ subtitle?: string;
87
+ /** Shadow size override */
88
+ shadow?: CardShadow;
89
+ }
90
+ declare const Card$1: React__default.ForwardRefExoticComponent<CardProps$1 & React__default.RefAttributes<HTMLDivElement>>;
91
+ declare const CardHeader: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
92
+ declare const CardTitle: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLHeadingElement> & React__default.RefAttributes<HTMLHeadingElement>>;
93
+ declare const CardContent: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
94
+ declare const CardBody: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
95
+ declare const CardFooter: React__default.ForwardRefExoticComponent<React__default.HTMLAttributes<HTMLDivElement> & React__default.RefAttributes<HTMLDivElement>>;
96
+
97
+ type BadgeVariant = "default" | "primary" | "secondary" | "success" | "warning" | "danger" | "error" | "info" | "neutral";
98
+ type BadgeSize = "sm" | "md" | "lg";
99
+ interface BadgeProps extends React__default.HTMLAttributes<HTMLSpanElement> {
100
+ variant?: BadgeVariant;
101
+ size?: BadgeSize;
102
+ }
103
+ declare const Badge: React__default.ForwardRefExoticComponent<BadgeProps & React__default.RefAttributes<HTMLSpanElement>>;
104
+
105
+ type SpinnerSize = "xs" | "sm" | "md" | "lg";
106
+ interface SpinnerProps extends React__default.HTMLAttributes<HTMLDivElement> {
107
+ size?: SpinnerSize;
108
+ }
109
+ declare const Spinner: React__default.ForwardRefExoticComponent<SpinnerProps & React__default.RefAttributes<HTMLDivElement>>;
110
+
111
+ /**
112
+ * Avatar Atom Component
113
+ *
114
+ * A versatile avatar component supporting images, initials, icons, and status indicators.
115
+ */
116
+
117
+ type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
118
+ type AvatarStatus = "online" | "offline" | "away" | "busy";
119
+ interface AvatarProps {
120
+ /**
121
+ * Image source URL
122
+ */
123
+ src?: string;
124
+ /**
125
+ * Alt text for the image
126
+ */
127
+ alt?: string;
128
+ /**
129
+ * Full name - initials will be generated automatically
130
+ */
131
+ name?: string;
132
+ /**
133
+ * Initials to display (e.g., "JD" for John Doe)
134
+ * If not provided but name is, initials will be auto-generated
135
+ */
136
+ initials?: string;
137
+ /**
138
+ * Icon to display when no image or initials
139
+ */
140
+ icon?: LucideIcon;
141
+ /**
142
+ * Size of the avatar
143
+ * @default 'md'
144
+ */
145
+ size?: AvatarSize;
146
+ /**
147
+ * Status indicator
148
+ */
149
+ status?: AvatarStatus;
150
+ /**
151
+ * Badge content (e.g., notification count)
152
+ */
153
+ badge?: string | number;
154
+ /**
155
+ * Additional CSS classes
156
+ */
157
+ className?: string;
158
+ /**
159
+ * Click handler
160
+ */
161
+ onClick?: () => void;
162
+ }
163
+ declare const Avatar: React__default.FC<AvatarProps>;
164
+
165
+ /**
166
+ * Box Component
167
+ *
168
+ * A versatile layout primitive that provides spacing, background, border, and shadow controls.
169
+ * Think of it as a styled div with consistent design tokens.
170
+ */
171
+
172
+ type BoxPadding = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
173
+ type BoxMargin = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "auto";
174
+ type BoxBg = "transparent" | "primary" | "secondary" | "muted" | "accent" | "surface" | "overlay";
175
+ type BoxRounded = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
176
+ type BoxShadow = "none" | "sm" | "md" | "lg" | "xl";
177
+ interface BoxProps extends React__default.HTMLAttributes<HTMLDivElement> {
178
+ /** Padding on all sides */
179
+ padding?: BoxPadding;
180
+ /** Horizontal padding (overrides padding for x-axis) */
181
+ paddingX?: BoxPadding;
182
+ /** Vertical padding (overrides padding for y-axis) */
183
+ paddingY?: BoxPadding;
184
+ /** Margin on all sides */
185
+ margin?: BoxMargin;
186
+ /** Horizontal margin */
187
+ marginX?: BoxMargin;
188
+ /** Vertical margin */
189
+ marginY?: BoxMargin;
190
+ /** Background color */
191
+ bg?: BoxBg;
192
+ /** Show border */
193
+ border?: boolean;
194
+ /** Border radius */
195
+ rounded?: BoxRounded;
196
+ /** Box shadow */
197
+ shadow?: BoxShadow;
198
+ /** Display type */
199
+ display?: "block" | "inline" | "inline-block" | "flex" | "inline-flex" | "grid";
200
+ /** Fill available width */
201
+ fullWidth?: boolean;
202
+ /** Fill available height */
203
+ fullHeight?: boolean;
204
+ /** Overflow behavior */
205
+ overflow?: "auto" | "hidden" | "visible" | "scroll";
206
+ /** Position */
207
+ position?: "relative" | "absolute" | "fixed" | "sticky";
208
+ /** HTML element to render as */
209
+ as?: React__default.ElementType;
210
+ }
211
+ /**
212
+ * Box - Versatile container component with design tokens
213
+ */
214
+ declare const Box: React__default.ForwardRefExoticComponent<BoxProps & React__default.RefAttributes<HTMLDivElement>>;
215
+
216
+ /**
217
+ * Center Component
218
+ *
219
+ * A layout utility that centers its children horizontally and/or vertically.
220
+ */
221
+
222
+ interface CenterProps {
223
+ /** Center inline (width fits content) vs block (full width) */
224
+ inline?: boolean;
225
+ /** Center only horizontally */
226
+ horizontal?: boolean;
227
+ /** Center only vertically */
228
+ vertical?: boolean;
229
+ /** Minimum height (useful for vertical centering) */
230
+ minHeight?: string | number;
231
+ /** Fill available height */
232
+ fullHeight?: boolean;
233
+ /** Fill available width */
234
+ fullWidth?: boolean;
235
+ /** Custom class name */
236
+ className?: string;
237
+ /** Inline styles */
238
+ style?: React__default.CSSProperties;
239
+ /** Children elements */
240
+ children: React__default.ReactNode;
241
+ /** HTML element to render as */
242
+ as?: React__default.ElementType;
243
+ }
244
+ /**
245
+ * Center - Centers content horizontally and/or vertically
246
+ */
247
+ declare const Center: React__default.FC<CenterProps>;
248
+
249
+ /**
250
+ * Divider Atom Component
251
+ *
252
+ * A divider component for separating content sections.
253
+ */
254
+
255
+ type DividerOrientation = "horizontal" | "vertical";
256
+ type DividerVariant = "solid" | "dashed" | "dotted";
257
+ interface DividerProps {
258
+ /**
259
+ * Orientation of the divider
260
+ * @default 'horizontal'
261
+ */
262
+ orientation?: DividerOrientation;
263
+ /**
264
+ * Text label to display in the divider
265
+ */
266
+ label?: string;
267
+ /**
268
+ * Line style variant
269
+ * @default 'solid'
270
+ */
271
+ variant?: DividerVariant;
272
+ /**
273
+ * Additional CSS classes
274
+ */
275
+ className?: string;
276
+ }
277
+ declare const Divider: React__default.FC<DividerProps>;
278
+
279
+ /**
280
+ * Icon Atom Component
281
+ *
282
+ * A wrapper component for Lucide icons with consistent sizing and styling.
283
+ * Uses theme-aware CSS variables for stroke width and color.
284
+ *
285
+ * Supports two APIs:
286
+ * - `icon` prop: Pass a LucideIcon component directly
287
+ * - `name` prop: Pass a string icon name (resolved from iconMap)
288
+ */
289
+
290
+ type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
291
+ type IconAnimation = 'spin' | 'pulse' | 'none';
292
+ interface IconProps {
293
+ /** Lucide icon component (preferred for type-safe usage) */
294
+ icon?: LucideIcon;
295
+ /** Icon name as string (resolved from iconMap) */
296
+ name?: string;
297
+ /** Size of the icon */
298
+ size?: IconSize;
299
+ /** Color class (Tailwind color class) or 'inherit' for theme default */
300
+ color?: string;
301
+ /** Animation type */
302
+ animation?: IconAnimation;
303
+ /** Additional CSS classes */
304
+ className?: string;
305
+ /** Icon stroke width - uses theme default if not specified */
306
+ strokeWidth?: number;
307
+ /** Inline style */
308
+ style?: React__default.CSSProperties;
309
+ }
310
+ declare const Icon: React__default.FC<IconProps>;
311
+
312
+ /**
313
+ * ProgressBar Atom Component
314
+ *
315
+ * A progress bar component with linear, circular, and stepped variants.
316
+ */
317
+
318
+ type ProgressBarType = "linear" | "circular" | "stepped";
319
+ type ProgressBarVariant = "default" | "primary" | "success" | "warning" | "danger";
320
+ type ProgressBarColor = ProgressBarVariant;
321
+ interface ProgressBarProps {
322
+ /**
323
+ * Progress value (0-100)
324
+ */
325
+ value: number;
326
+ /**
327
+ * Maximum value (for calculating percentage)
328
+ * @default 100
329
+ */
330
+ max?: number;
331
+ /**
332
+ * Type of the progress bar (linear, circular, stepped)
333
+ * @default 'linear'
334
+ */
335
+ type?: ProgressBarType;
336
+ /**
337
+ * Variant/color of the progress bar
338
+ * @default 'primary'
339
+ */
340
+ variant?: ProgressBarVariant;
341
+ /**
342
+ * Color variant (alias for variant)
343
+ * @default 'primary'
344
+ */
345
+ color?: ProgressBarColor;
346
+ /**
347
+ * Show percentage text
348
+ * @default false
349
+ */
350
+ showPercentage?: boolean;
351
+ /**
352
+ * Alias for showPercentage (pattern compatibility)
353
+ */
354
+ showLabel?: boolean;
355
+ /**
356
+ * Label text
357
+ */
358
+ label?: string;
359
+ /**
360
+ * Size (for circular variant)
361
+ * @default 'md'
362
+ */
363
+ size?: "sm" | "md" | "lg";
364
+ /**
365
+ * Number of steps (for stepped variant)
366
+ * @default 5
367
+ */
368
+ steps?: number;
369
+ /**
370
+ * Additional CSS classes
371
+ */
372
+ className?: string;
373
+ }
374
+ declare const ProgressBar: React__default.FC<ProgressBarProps>;
375
+
376
+ /**
377
+ * Radio Atom Component
378
+ *
379
+ * A radio button component with label support and accessibility.
380
+ */
381
+
382
+ interface RadioProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
383
+ /**
384
+ * Label text displayed next to the radio button
385
+ */
386
+ label?: string;
387
+ /**
388
+ * Helper text displayed below the radio button
389
+ */
390
+ helperText?: string;
391
+ /**
392
+ * Error message displayed below the radio button
393
+ */
394
+ error?: string;
395
+ /**
396
+ * Size of the radio button
397
+ * @default 'md'
398
+ */
399
+ size?: "sm" | "md" | "lg";
400
+ }
401
+ declare const Radio: React__default.ForwardRefExoticComponent<RadioProps & React__default.RefAttributes<HTMLInputElement>>;
402
+
403
+ interface SwitchProps {
404
+ checked?: boolean;
405
+ defaultChecked?: boolean;
406
+ onChange?: (checked: boolean) => void;
407
+ disabled?: boolean;
408
+ label?: string;
409
+ id?: string;
410
+ name?: string;
411
+ className?: string;
412
+ }
413
+ declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLButtonElement>>;
414
+
415
+ /**
416
+ * Spacer Component
417
+ *
418
+ * A flexible spacer that expands to fill available space in a flex container.
419
+ * Useful for pushing elements apart or creating consistent spacing.
420
+ */
421
+
422
+ type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'auto';
423
+ interface SpacerProps {
424
+ /** Fixed size (auto = flex grow) */
425
+ size?: SpacerSize;
426
+ /** Orientation (for fixed sizes) */
427
+ axis?: 'horizontal' | 'vertical';
428
+ /** Custom class name */
429
+ className?: string;
430
+ }
431
+ /**
432
+ * Spacer - Flexible spacing element for flex layouts
433
+ *
434
+ * Usage:
435
+ * - size="auto" (default): Expands to fill available space (flex: 1)
436
+ * - size="md": Fixed size spacing
437
+ */
438
+ declare const Spacer: React__default.FC<SpacerProps>;
439
+
440
+ /**
441
+ * Stack Component
442
+ *
443
+ * A layout primitive for arranging children in a vertical or horizontal stack with consistent spacing.
444
+ * Includes convenience exports VStack and HStack for common use cases.
445
+ */
446
+
447
+ type StackDirection = "horizontal" | "vertical";
448
+ type StackGap = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
449
+ type StackAlign = "start" | "center" | "end" | "stretch" | "baseline";
450
+ type StackJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
451
+ interface StackProps {
452
+ /** Stack direction */
453
+ direction?: StackDirection;
454
+ /** Gap between children */
455
+ gap?: StackGap;
456
+ /** Align items on the cross axis */
457
+ align?: StackAlign;
458
+ /** Justify items on the main axis */
459
+ justify?: StackJustify;
460
+ /** Allow items to wrap */
461
+ wrap?: boolean;
462
+ /** Reverse the order of children */
463
+ reverse?: boolean;
464
+ /** Fill available space (flex: 1) */
465
+ flex?: boolean;
466
+ /** Custom class name */
467
+ className?: string;
468
+ /** Inline styles */
469
+ style?: React__default.CSSProperties;
470
+ /** Children elements */
471
+ children?: React__default.ReactNode;
472
+ /** HTML element to render as */
473
+ as?: React__default.ElementType;
474
+ /** Click handler */
475
+ onClick?: (e: React__default.MouseEvent) => void;
476
+ /** Keyboard handler */
477
+ onKeyDown?: (e: React__default.KeyboardEvent) => void;
478
+ /** Role for accessibility */
479
+ role?: string;
480
+ /** Tab index for focus management */
481
+ tabIndex?: number;
482
+ }
483
+ /**
484
+ * Stack - Flexible layout component for arranging children
485
+ */
486
+ declare const Stack: React__default.FC<StackProps>;
487
+ /**
488
+ * VStack - Vertical stack shorthand
489
+ */
490
+ interface VStackProps extends Omit<StackProps, "direction"> {
491
+ }
492
+ declare const VStack: React__default.FC<VStackProps>;
493
+ /**
494
+ * HStack - Horizontal stack shorthand
495
+ */
496
+ interface HStackProps extends Omit<StackProps, "direction"> {
497
+ }
498
+ declare const HStack: React__default.FC<HStackProps>;
499
+
500
+ /**
501
+ * TextHighlight Atom Component
502
+ *
503
+ * A styled span component for highlighting text with annotations (questions or notes).
504
+ * Uses different colors for different annotation types:
505
+ * - Questions: Blue highlight
506
+ * - Notes: Yellow highlight
507
+ */
508
+
509
+ type HighlightType = "question" | "note";
510
+ interface TextHighlightProps {
511
+ /**
512
+ * Type of highlight (determines color)
513
+ */
514
+ type: HighlightType;
515
+ /**
516
+ * Whether the highlight is currently active/focused
517
+ * @default false
518
+ */
519
+ isActive?: boolean;
520
+ /**
521
+ * Callback when highlight is clicked
522
+ */
523
+ onClick?: () => void;
524
+ /**
525
+ * Callback when highlight is hovered
526
+ */
527
+ onMouseEnter?: () => void;
528
+ /**
529
+ * Callback when hover ends
530
+ */
531
+ onMouseLeave?: () => void;
532
+ /**
533
+ * Unique ID for the annotation
534
+ */
535
+ annotationId?: string;
536
+ /**
537
+ * Additional CSS classes
538
+ */
539
+ className?: string;
540
+ /**
541
+ * Highlighted text content
542
+ */
543
+ children: React__default.ReactNode;
544
+ }
545
+ /**
546
+ * TextHighlight component for rendering highlighted text annotations
547
+ */
548
+ declare const TextHighlight: React__default.FC<TextHighlightProps>;
549
+
550
+ /**
551
+ * Typography Atom Component
552
+ *
553
+ * Text elements following the KFlow design system with theme-aware styling.
554
+ */
555
+
556
+ type TypographyVariant = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "body1" | "body2" | "body" | "caption" | "overline" | "small" | "large" | "label";
557
+ type TypographySize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
558
+ interface TypographyProps {
559
+ /** Typography variant */
560
+ variant?: TypographyVariant;
561
+ /** Heading level (1-6) - alternative to variant for headings */
562
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
563
+ /** Text color */
564
+ color?: "primary" | "secondary" | "muted" | "error" | "success" | "warning" | "inherit";
565
+ /** Text alignment */
566
+ align?: "left" | "center" | "right";
567
+ /** Font weight override */
568
+ weight?: "light" | "normal" | "medium" | "semibold" | "bold";
569
+ /** Font size override */
570
+ size?: TypographySize;
571
+ /** Truncate with ellipsis */
572
+ truncate?: boolean;
573
+ /** Custom HTML element */
574
+ as?: keyof JSX.IntrinsicElements;
575
+ /** HTML id attribute */
576
+ id?: string;
577
+ /** Additional class names */
578
+ className?: string;
579
+ /** Inline style */
580
+ style?: React__default.CSSProperties;
581
+ /** Text content (alternative to children) */
582
+ content?: React__default.ReactNode;
583
+ /** Children elements */
584
+ children?: React__default.ReactNode;
585
+ }
586
+ declare const Typography: React__default.FC<TypographyProps>;
587
+
588
+ /**
589
+ * ThemeToggle Atom Component
590
+ *
591
+ * A button that toggles between light and dark themes.
592
+ * Uses Sun and Moon icons to indicate current/target theme.
593
+ *
594
+ * @packageDocumentation
595
+ */
596
+
597
+ interface ThemeToggleProps {
598
+ /** Additional CSS classes */
599
+ className?: string;
600
+ /** Size variant */
601
+ size?: "sm" | "md" | "lg";
602
+ /** Show label text */
603
+ showLabel?: boolean;
604
+ }
605
+ /**
606
+ * ThemeToggle component for switching between light and dark modes
607
+ *
608
+ * @example
609
+ * ```tsx
610
+ * // Basic usage
611
+ * <ThemeToggle />
612
+ *
613
+ * // With label
614
+ * <ThemeToggle showLabel />
615
+ *
616
+ * // Custom size
617
+ * <ThemeToggle size="lg" />
618
+ * ```
619
+ */
620
+ declare const ThemeToggle: React__default.FC<ThemeToggleProps>;
621
+
622
+ /**
623
+ * ThemeSelector - Design theme selector component
624
+ *
625
+ * A dropdown/toggle component for switching between design themes.
626
+ *
627
+ * @packageDocumentation
628
+ */
629
+
630
+ interface ThemeSelectorProps {
631
+ /** Optional className */
632
+ className?: string;
633
+ /** Show as dropdown or buttons */
634
+ variant?: "dropdown" | "buttons";
635
+ /** Show labels */
636
+ showLabels?: boolean;
637
+ }
638
+ /**
639
+ * ThemeSelector component for switching design themes
640
+ */
641
+ declare const ThemeSelector: React__default.FC<ThemeSelectorProps>;
642
+
643
+ /**
644
+ * Overlay Atom Component
645
+ *
646
+ * A fixed backdrop for modals and drawers.
647
+ */
648
+
649
+ interface OverlayProps {
650
+ isVisible?: boolean;
651
+ onClick?: (e: React__default.MouseEvent) => void;
652
+ className?: string;
653
+ blur?: boolean;
654
+ }
655
+ declare const Overlay: React__default.FC<OverlayProps>;
656
+
657
+ /**
658
+ * ConditionalWrapper Atom Component
659
+ *
660
+ * A wrapper component that conditionally renders its children based on
661
+ * S-expression evaluation. Used for dynamic field visibility in inspection forms.
662
+ */
663
+
664
+ /**
665
+ * Context for conditional evaluation
666
+ */
667
+ interface ConditionalContext {
668
+ formValues: Record<string, unknown>;
669
+ globalVariables: Record<string, unknown>;
670
+ localVariables?: Record<string, unknown>;
671
+ entity?: Record<string, unknown>;
672
+ }
673
+ interface ConditionalWrapperProps {
674
+ /** The S-expression condition to evaluate */
675
+ condition?: SExpr;
676
+ /** Context for evaluating the condition */
677
+ context: ConditionalContext;
678
+ /** Children to render when condition is true (or when no condition is provided) */
679
+ children: React__default.ReactNode;
680
+ /** Optional fallback to render when condition is false */
681
+ fallback?: React__default.ReactNode;
682
+ /** Whether to animate the transition (uses CSS transitions) */
683
+ animate?: boolean;
684
+ }
685
+ /**
686
+ * ConditionalWrapper conditionally renders children based on S-expression evaluation.
687
+ *
688
+ * Supported bindings:
689
+ * - @entity.formValues.fieldId - Access form field values
690
+ * - @entity.globalVariables.HG_VAR - Access global inspection variables
691
+ * - @entity.localVariables.H_VAR - Access document-local variables
692
+ * - @state - Current state machine state
693
+ * - @now - Current timestamp
694
+ *
695
+ * @example
696
+ * // Simple condition - show field when another field equals a value
697
+ * <ConditionalWrapper
698
+ * condition={["=", "@entity.formValues.vehicleType", "commercial"]}
699
+ * context={{ formValues: { vehicleType: "commercial" }, globalVariables: {} }}
700
+ * >
701
+ * <Input name="commercialLicenseNumber" />
702
+ * </ConditionalWrapper>
703
+ *
704
+ * @example
705
+ * // With fallback - show message when condition not met
706
+ * <ConditionalWrapper
707
+ * condition={[">=", "@entity.formValues.loadWeight", 3500]}
708
+ * context={formContext}
709
+ * fallback={<Typography variant="small">Load weight must be at least 3500kg</Typography>}
710
+ * >
711
+ * <HeavyVehicleFields />
712
+ * </ConditionalWrapper>
713
+ *
714
+ * @example
715
+ * // Using global variables for cross-form conditions
716
+ * <ConditionalWrapper
717
+ * condition={["=", "@entity.globalVariables.HG_POTROSNIKI", "DA"]}
718
+ * context={{ formValues: {}, globalVariables: { HG_POTROSNIKI: "DA" } }}
719
+ * >
720
+ * <PriceMarkingSection />
721
+ * </ConditionalWrapper>
722
+ */
723
+ declare const ConditionalWrapper: React__default.FC<ConditionalWrapperProps>;
724
+
725
+ /**
726
+ * LawReferenceTooltip Atom Component
727
+ *
728
+ * A specialized tooltip for displaying law references in inspection forms.
729
+ * Shows law name, article number, and relevant clause text.
730
+ */
731
+
732
+ /**
733
+ * Law reference definition
734
+ */
735
+ interface LawReference {
736
+ /** Law identifier (e.g., "VVO", "TPED") */
737
+ law: string;
738
+ /** Full name of the law */
739
+ lawName?: string;
740
+ /** Article number (e.g., "§8", "Artikel 5") */
741
+ article: string;
742
+ /** Clause or paragraph text */
743
+ clause?: string;
744
+ /** Optional link to full law text */
745
+ link?: string;
746
+ }
747
+ interface LawReferenceTooltipProps {
748
+ /** The law reference to display */
749
+ reference: LawReference;
750
+ /** Children element that triggers the tooltip */
751
+ children: React__default.ReactNode;
752
+ /** Tooltip position */
753
+ position?: "top" | "bottom" | "left" | "right";
754
+ /** Additional CSS classes */
755
+ className?: string;
756
+ }
757
+ /**
758
+ * LawReferenceTooltip displays legal references with structured formatting.
759
+ *
760
+ * @example
761
+ * <LawReferenceTooltip
762
+ * reference={{
763
+ * law: "VVO",
764
+ * lawName: "Verkehrsverordnung",
765
+ * article: "§8 Abs. 3",
766
+ * clause: "Die zulässige Gesamtmasse darf 3500 kg nicht überschreiten."
767
+ * }}
768
+ * >
769
+ * <Typography variant="small" className="text-blue-600 underline cursor-help">VVO §8</Typography>
770
+ * </LawReferenceTooltip>
771
+ */
772
+ declare const LawReferenceTooltip: React__default.FC<LawReferenceTooltipProps>;
773
+
774
+ /**
775
+ * FormField Molecule Component
776
+ *
777
+ * A form field wrapper with label, hint, and error message support.
778
+ * **Atomic Design**: Composed using Label and Typography atoms.
779
+ */
780
+
781
+ interface FormFieldProps {
782
+ label: string;
783
+ required?: boolean;
784
+ error?: string;
785
+ hint?: string;
786
+ className?: string;
787
+ children: React__default.ReactNode;
788
+ }
789
+ declare const FormField: React__default.FC<FormFieldProps>;
790
+
791
+ interface EmptyStateProps {
792
+ /**
793
+ * Icon to display. Accepts either:
794
+ * - A Lucide icon component (LucideIcon)
795
+ * - A string icon name (e.g., "check-circle", "x-circle")
796
+ */
797
+ icon?: LucideIcon | string;
798
+ /** Primary text to display - use title or message (message is alias for backwards compat) */
799
+ title?: string;
800
+ /** Alias for title - used by schema patterns */
801
+ message?: string;
802
+ description?: string;
803
+ actionLabel?: string;
804
+ onAction?: () => void;
805
+ className?: string;
806
+ /** Destructive styling for confirmation dialogs */
807
+ destructive?: boolean;
808
+ /** Variant for color styling */
809
+ variant?: "default" | "success" | "error" | "warning" | "info";
810
+ }
811
+ declare const EmptyState: React__default.FC<EmptyStateProps>;
812
+
813
+ interface LoadingStateProps {
814
+ title?: string;
815
+ message?: string;
816
+ className?: string;
817
+ }
818
+ declare const LoadingState: React__default.FC<LoadingStateProps>;
819
+
820
+ interface ErrorStateProps {
821
+ title?: string;
822
+ /** Error message to display */
823
+ message?: string;
824
+ /** Alias for message (schema compatibility) */
825
+ description?: string;
826
+ onRetry?: () => void;
827
+ className?: string;
828
+ }
829
+ declare const ErrorState: React__default.FC<ErrorStateProps>;
830
+
831
+ /**
832
+ * Accordion Molecule Component
833
+ *
834
+ * A collapsible content component with single or multiple open items.
835
+ * Uses Button, Icon, Typography, and Divider atoms.
836
+ */
837
+
838
+ interface AccordionItem {
839
+ /**
840
+ * Item ID (auto-generated from header/title if not provided)
841
+ */
842
+ id?: string;
843
+ /**
844
+ * Item header/title
845
+ */
846
+ header?: React__default.ReactNode;
847
+ /**
848
+ * Alias for header (pattern compatibility)
849
+ */
850
+ title?: React__default.ReactNode;
851
+ /**
852
+ * Item content
853
+ */
854
+ content: React__default.ReactNode;
855
+ /**
856
+ * Disable item
857
+ */
858
+ disabled?: boolean;
859
+ /**
860
+ * Default open state
861
+ */
862
+ defaultOpen?: boolean;
863
+ }
864
+ interface AccordionProps {
865
+ /**
866
+ * Accordion items
867
+ */
868
+ items: AccordionItem[];
869
+ /**
870
+ * Allow multiple items open at once
871
+ * @default false
872
+ */
873
+ multiple?: boolean;
874
+ /**
875
+ * Default open items (IDs)
876
+ */
877
+ defaultOpenItems?: string[];
878
+ /**
879
+ * Default open items by index (pattern compatibility)
880
+ */
881
+ defaultOpen?: number[];
882
+ /**
883
+ * Controlled open items (IDs)
884
+ */
885
+ openItems?: string[];
886
+ /**
887
+ * Callback when item opens/closes
888
+ */
889
+ onItemToggle?: (itemId: string, isOpen: boolean) => void;
890
+ /**
891
+ * Additional CSS classes
892
+ */
893
+ className?: string;
894
+ }
895
+ declare const Accordion: React__default.FC<AccordionProps>;
896
+
897
+ /**
898
+ * Alert Molecule Component
899
+ *
900
+ * A component for displaying alert messages with different variants and actions.
901
+ * Uses theme-aware CSS variables for styling.
902
+ */
903
+
904
+ type AlertVariant = "info" | "success" | "warning" | "error";
905
+ interface AlertProps {
906
+ /** Alert content (children or message) */
907
+ children?: React__default.ReactNode;
908
+ /** Alert message (alias for children) */
909
+ message?: string;
910
+ variant?: AlertVariant;
911
+ title?: string;
912
+ dismissible?: boolean;
913
+ onDismiss?: () => void;
914
+ onClose?: () => void;
915
+ actions?: React__default.ReactNode;
916
+ className?: string;
917
+ }
918
+ declare const Alert: React__default.FC<AlertProps>;
919
+
920
+ /**
921
+ * Breadcrumb Molecule Component
922
+ *
923
+ * A breadcrumb navigation component with separators and icons.
924
+ * Uses Button, Icon, and Typography atoms.
925
+ */
926
+
927
+ interface BreadcrumbItem {
928
+ /**
929
+ * Item label
930
+ */
931
+ label: string;
932
+ /**
933
+ * Item href (if provided, renders as link)
934
+ */
935
+ href?: string;
936
+ /**
937
+ * Item path (alias for href, for schema compatibility)
938
+ */
939
+ path?: string;
940
+ /**
941
+ * Item icon
942
+ */
943
+ icon?: LucideIcon;
944
+ /**
945
+ * Click handler (if href not provided)
946
+ */
947
+ onClick?: () => void;
948
+ /**
949
+ * Is current page
950
+ */
951
+ isCurrent?: boolean;
952
+ }
953
+ interface BreadcrumbProps {
954
+ /**
955
+ * Breadcrumb items
956
+ */
957
+ items: BreadcrumbItem[];
958
+ /**
959
+ * Separator icon
960
+ */
961
+ separator?: LucideIcon;
962
+ /**
963
+ * Maximum items to show (truncates with ellipsis)
964
+ */
965
+ maxItems?: number;
966
+ /**
967
+ * Additional CSS classes
968
+ */
969
+ className?: string;
970
+ }
971
+ declare const Breadcrumb: React__default.FC<BreadcrumbProps>;
972
+
973
+ /**
974
+ * ButtonGroup Molecule Component
975
+ *
976
+ * A component for grouping buttons together with connected styling.
977
+ * Supports both children-based and form-actions pattern (primary/secondary) usage.
978
+ * Uses Button atoms.
979
+ */
980
+
981
+ type ButtonGroupVariant = 'default' | 'segmented' | 'toggle';
982
+ /** Action button config for form-actions pattern */
983
+ interface ActionButton {
984
+ label: string;
985
+ /** Action type - 'submit' renders as submit button, others render as button */
986
+ actionType?: string;
987
+ event?: string;
988
+ navigatesTo?: string;
989
+ /** Button variant - matches Button component variants. Accepts string for schema compatibility. */
990
+ variant?: string;
991
+ }
992
+ /** Filter definition for filter-group pattern */
993
+ interface FilterDefinition$1 {
994
+ field: string;
995
+ label: string;
996
+ /** Filter type (checkbox, select, etc.) */
997
+ type?: 'checkbox' | 'select' | 'toggle';
998
+ /** Options for select filters */
999
+ options?: readonly string[];
1000
+ }
1001
+ interface ButtonGroupProps {
1002
+ /**
1003
+ * Button group content (Button components) - use this OR primary/secondary
1004
+ */
1005
+ children?: React__default.ReactNode;
1006
+ /**
1007
+ * Primary action button config (for form-actions pattern)
1008
+ * Accepts Readonly for compatibility with generated const objects
1009
+ */
1010
+ primary?: Readonly<ActionButton>;
1011
+ /**
1012
+ * Secondary action buttons config (for form-actions pattern)
1013
+ * Accepts readonly array for compatibility with generated const arrays
1014
+ */
1015
+ secondary?: readonly Readonly<ActionButton>[];
1016
+ /**
1017
+ * Visual variant
1018
+ * @default 'default'
1019
+ */
1020
+ variant?: ButtonGroupVariant;
1021
+ /**
1022
+ * Orientation
1023
+ * @default 'horizontal'
1024
+ */
1025
+ orientation?: 'horizontal' | 'vertical';
1026
+ /**
1027
+ * Additional CSS classes
1028
+ */
1029
+ className?: string;
1030
+ /**
1031
+ * Entity type for filter-group pattern (schema metadata)
1032
+ */
1033
+ entity?: string;
1034
+ /**
1035
+ * Filter definitions for filter-group pattern
1036
+ */
1037
+ filters?: readonly FilterDefinition$1[];
1038
+ }
1039
+ declare const ButtonGroup: React__default.FC<ButtonGroupProps>;
1040
+
1041
+ /**
1042
+ * FilterGroup Molecule Component
1043
+ *
1044
+ * A component for filtering entity data. Composes atoms (Button, Select, Badge, HStack)
1045
+ * and follows the design system using CSS variables.
1046
+ *
1047
+ * Implements the Closed Circuit principle:
1048
+ * - FilterGroup updates QuerySingleton filters via query prop
1049
+ * - FilterGroup emits UI:FILTER events for trait state machines
1050
+ * - entity-list/entity-cards read filtered data via query prop
1051
+ *
1052
+ * Supports Query Singleton pattern via `query` prop for std/Filter behavior.
1053
+ */
1054
+
1055
+ /** Filter definition from schema */
1056
+ interface FilterDefinition {
1057
+ field: string;
1058
+ label: string;
1059
+ /** Filter type - 'date' renders a date picker, 'date-range'/'daterange' renders two date pickers */
1060
+ filterType?: "select" | "toggle" | "checkbox" | "date" | "daterange" | "date-range";
1061
+ /** Alias for filterType (schema compatibility) */
1062
+ type?: "select" | "toggle" | "checkbox" | "date" | "daterange" | "date-range";
1063
+ /** Options for select/toggle filters */
1064
+ options?: readonly string[];
1065
+ }
1066
+ interface FilterGroupProps {
1067
+ /** Entity name to filter */
1068
+ entity: string;
1069
+ /** Filter definitions from schema */
1070
+ filters: readonly FilterDefinition[];
1071
+ /** Callback when a filter changes - for EntityStore integration */
1072
+ onFilterChange?: (field: string, value: string | null) => void;
1073
+ /** Callback to clear all filters */
1074
+ onClearAll?: () => void;
1075
+ /** Additional CSS classes */
1076
+ className?: string;
1077
+ /** Variant style */
1078
+ variant?: "default" | "compact" | "pills" | "vertical";
1079
+ /** Show filter icon */
1080
+ showIcon?: boolean;
1081
+ /**
1082
+ * Query singleton binding for state management.
1083
+ * When provided, syncs filter state with the query singleton.
1084
+ * Example: "@TaskQuery"
1085
+ */
1086
+ query?: string;
1087
+ /** Loading state indicator */
1088
+ isLoading?: boolean;
1089
+ }
1090
+ /**
1091
+ * FilterGroup - Renders filter controls for entity data
1092
+ * Uses atoms: Button, Select, Badge, HStack
1093
+ */
1094
+ declare const FilterGroup: React__default.FC<FilterGroupProps>;
1095
+
1096
+ interface CardAction {
1097
+ label: string;
1098
+ onClick: () => void;
1099
+ variant?: "default" | "primary" | "danger";
1100
+ icon?: string;
1101
+ disabled?: boolean;
1102
+ }
1103
+ interface CardProps {
1104
+ /** Card title */
1105
+ title?: string;
1106
+ /** Card subtitle or description */
1107
+ subtitle?: string;
1108
+ /** Image URL to display at top of card */
1109
+ image?: string;
1110
+ /** Action buttons to display in card footer */
1111
+ actions?: CardAction[];
1112
+ /** Card content */
1113
+ children?: React__default.ReactNode;
1114
+ /** Click handler for the entire card */
1115
+ onClick?: () => void;
1116
+ /** Additional CSS classes */
1117
+ className?: string;
1118
+ }
1119
+ /**
1120
+ * Card component for displaying content in a contained box
1121
+ */
1122
+ declare function Card({ title, subtitle, image, actions, children, onClick, className, }: CardProps): react_jsx_runtime.JSX.Element;
1123
+
1124
+ /**
1125
+ * Container Component
1126
+ *
1127
+ * A max-width wrapper that centers content horizontally.
1128
+ * Essential for controlling page width and maintaining consistent margins.
1129
+ */
1130
+
1131
+ type ContainerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
1132
+ type ContainerPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';
1133
+ interface ContainerProps {
1134
+ /** Maximum width */
1135
+ size?: ContainerSize;
1136
+ /** Alias for size (pattern compatibility) */
1137
+ maxWidth?: ContainerSize;
1138
+ /** Horizontal padding */
1139
+ padding?: ContainerPadding;
1140
+ /** Center horizontally */
1141
+ center?: boolean;
1142
+ /** Custom class name */
1143
+ className?: string;
1144
+ /** Children elements */
1145
+ children?: React__default.ReactNode;
1146
+ /** HTML element to render as */
1147
+ as?: React__default.ElementType;
1148
+ }
1149
+ /**
1150
+ * Container - Centers and constrains content width
1151
+ */
1152
+ declare const Container: React__default.FC<ContainerProps>;
1153
+
1154
+ /**
1155
+ * Flex Component
1156
+ *
1157
+ * A flexbox wrapper with all common flex properties exposed as props.
1158
+ * More explicit than Stack for when you need full flex control.
1159
+ */
1160
+
1161
+ type FlexDirection = 'row' | 'row-reverse' | 'col' | 'col-reverse';
1162
+ type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';
1163
+ type FlexAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
1164
+ type FlexJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
1165
+ type FlexGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
1166
+ interface FlexProps {
1167
+ /** Flex direction */
1168
+ direction?: FlexDirection;
1169
+ /** Flex wrap */
1170
+ wrap?: FlexWrap;
1171
+ /** Align items */
1172
+ align?: FlexAlign;
1173
+ /** Justify content */
1174
+ justify?: FlexJustify;
1175
+ /** Gap between items */
1176
+ gap?: FlexGap;
1177
+ /** Inline flex */
1178
+ inline?: boolean;
1179
+ /** Flex grow */
1180
+ grow?: boolean | number;
1181
+ /** Flex shrink */
1182
+ shrink?: boolean | number;
1183
+ /** Flex basis */
1184
+ basis?: string | number;
1185
+ /** Custom class name */
1186
+ className?: string;
1187
+ /** Children elements */
1188
+ children: React__default.ReactNode;
1189
+ /** HTML element to render as */
1190
+ as?: React__default.ElementType;
1191
+ }
1192
+ /**
1193
+ * Flex - Full-featured flexbox container
1194
+ */
1195
+ declare const Flex: React__default.FC<FlexProps>;
1196
+
1197
+ /**
1198
+ * FloatingActionButton Molecule Component
1199
+ *
1200
+ * A floating action button that can expand into multiple actions vertically.
1201
+ * Uses Button atom.
1202
+ */
1203
+
1204
+ interface FloatingAction {
1205
+ /**
1206
+ * Action ID
1207
+ */
1208
+ id: string;
1209
+ /**
1210
+ * Action label
1211
+ */
1212
+ label: string;
1213
+ /**
1214
+ * Action icon
1215
+ */
1216
+ icon: LucideIcon;
1217
+ /**
1218
+ * Action click handler
1219
+ */
1220
+ onClick: () => void;
1221
+ /**
1222
+ * Action variant
1223
+ */
1224
+ variant?: "primary" | "secondary" | "success" | "danger" | "warning";
1225
+ }
1226
+ interface FloatingActionButtonProps {
1227
+ /**
1228
+ * Single action (if only one action, button will directly trigger onClick)
1229
+ */
1230
+ action?: {
1231
+ icon: LucideIcon;
1232
+ onClick: () => void;
1233
+ label?: string;
1234
+ variant?: "primary" | "secondary" | "success" | "danger" | "warning";
1235
+ };
1236
+ /**
1237
+ * Multiple actions (if provided, button will expand to show all actions)
1238
+ */
1239
+ actions?: FloatingAction[];
1240
+ /**
1241
+ * Icon name (simplified API for pattern compatibility)
1242
+ */
1243
+ icon?: string;
1244
+ /**
1245
+ * Click handler (simplified API for pattern compatibility)
1246
+ */
1247
+ onClick?: () => void;
1248
+ /**
1249
+ * Variant (simplified API for pattern compatibility)
1250
+ */
1251
+ variant?: "primary" | "secondary" | "success" | "danger" | "warning";
1252
+ /**
1253
+ * Button position
1254
+ * @default 'bottom-right'
1255
+ */
1256
+ position?: "bottom-right" | "bottom-left" | "bottom-center" | "top-right" | "top-left" | "top-center" | string;
1257
+ /**
1258
+ * Additional CSS classes
1259
+ */
1260
+ className?: string;
1261
+ }
1262
+ declare const FloatingActionButton: React__default.FC<FloatingActionButtonProps>;
1263
+
1264
+ /**
1265
+ * Grid Component
1266
+ *
1267
+ * A CSS Grid wrapper with responsive column support.
1268
+ * Useful for creating multi-column layouts.
1269
+ */
1270
+
1271
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'none';
1272
+ type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
1273
+ type GridAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
1274
+ type GridJustify = 'start' | 'center' | 'end' | 'stretch';
1275
+ interface ResponsiveGridCols {
1276
+ /** Base/mobile columns */
1277
+ base?: GridCols;
1278
+ /** Small screens (640px+) */
1279
+ sm?: GridCols;
1280
+ /** Medium screens (768px+) */
1281
+ md?: GridCols;
1282
+ /** Large screens (1024px+) */
1283
+ lg?: GridCols;
1284
+ /** Extra large screens (1280px+) */
1285
+ xl?: GridCols;
1286
+ }
1287
+ interface GridProps {
1288
+ /** Number of columns (can be responsive object) */
1289
+ cols?: GridCols | ResponsiveGridCols;
1290
+ /** Number of rows */
1291
+ rows?: number;
1292
+ /** Gap between items */
1293
+ gap?: GridGap;
1294
+ /** Row gap (overrides gap for rows) */
1295
+ rowGap?: GridGap;
1296
+ /** Column gap (overrides gap for columns) */
1297
+ colGap?: GridGap;
1298
+ /** Align items on block axis */
1299
+ alignItems?: GridAlign;
1300
+ /** Justify items on inline axis */
1301
+ justifyItems?: GridJustify;
1302
+ /** Auto-flow direction */
1303
+ flow?: 'row' | 'col' | 'row-dense' | 'col-dense';
1304
+ /** Custom class name */
1305
+ className?: string;
1306
+ /** Inline styles */
1307
+ style?: React__default.CSSProperties;
1308
+ /** Children elements */
1309
+ children: React__default.ReactNode;
1310
+ /** HTML element to render as */
1311
+ as?: React__default.ElementType;
1312
+ }
1313
+ /**
1314
+ * Grid - CSS Grid layout wrapper
1315
+ */
1316
+ declare const Grid: React__default.FC<GridProps>;
1317
+
1318
+ /**
1319
+ * InputGroup Molecule Component
1320
+ *
1321
+ * A component for grouping input with addons (icons, buttons, text).
1322
+ * Uses Input, Button, Icon, and Typography atoms.
1323
+ */
1324
+
1325
+ interface InputGroupProps extends Omit<InputProps, "icon" | "iconRight"> {
1326
+ /**
1327
+ * Left addon (icon, button, or text)
1328
+ */
1329
+ leftAddon?: React__default.ReactNode | LucideIcon;
1330
+ /**
1331
+ * Right addon (icon, button, or text)
1332
+ */
1333
+ rightAddon?: React__default.ReactNode | LucideIcon;
1334
+ /**
1335
+ * Additional CSS classes
1336
+ */
1337
+ className?: string;
1338
+ }
1339
+ declare const InputGroup: React__default.FC<InputGroupProps>;
1340
+
1341
+ /**
1342
+ * Menu Molecule Component
1343
+ *
1344
+ * A dropdown menu component with items, icons, dividers, and sub-menus.
1345
+ * Uses theme-aware CSS variables for styling.
1346
+ */
1347
+
1348
+ interface MenuItem {
1349
+ /** Item ID (auto-generated from label if not provided) */
1350
+ id?: string;
1351
+ /** Item label */
1352
+ label: string;
1353
+ /** Item icon (LucideIcon or string name) */
1354
+ icon?: LucideIcon | string;
1355
+ /** Item badge */
1356
+ badge?: string | number;
1357
+ /** Disable item */
1358
+ disabled?: boolean;
1359
+ /** Item click handler */
1360
+ onClick?: () => void;
1361
+ /** Event name for pattern compatibility */
1362
+ event?: string;
1363
+ /** Variant for styling (pattern compatibility) */
1364
+ variant?: "default" | "danger";
1365
+ /** Sub-menu items */
1366
+ subMenu?: MenuItem[];
1367
+ }
1368
+ type MenuPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right" | "top-start" | "top-end" | "bottom-start" | "bottom-end";
1369
+ interface MenuProps {
1370
+ /** Menu trigger element */
1371
+ trigger: React__default.ReactNode;
1372
+ /** Menu items */
1373
+ items: MenuItem[];
1374
+ /** Menu position */
1375
+ position?: MenuPosition;
1376
+ /** Additional CSS classes */
1377
+ className?: string;
1378
+ }
1379
+ declare const Menu: React__default.FC<MenuProps>;
1380
+
1381
+ /**
1382
+ * Modal Molecule Component
1383
+ *
1384
+ * A modal dialog component with overlay, header, content, and footer.
1385
+ * Uses theme-aware CSS variables for styling.
1386
+ */
1387
+
1388
+ type ModalSize = "sm" | "md" | "lg" | "xl" | "full";
1389
+ interface ModalProps {
1390
+ /** Whether the modal is open (defaults to true when rendered by slot wrapper) */
1391
+ isOpen?: boolean;
1392
+ /** Callback when modal should close (injected by slot wrapper) */
1393
+ onClose?: () => void;
1394
+ title?: string;
1395
+ /** Modal content (can be empty if using slot content) */
1396
+ children?: React__default.ReactNode;
1397
+ footer?: React__default.ReactNode;
1398
+ size?: ModalSize;
1399
+ showCloseButton?: boolean;
1400
+ closeOnOverlayClick?: boolean;
1401
+ closeOnEscape?: boolean;
1402
+ className?: string;
1403
+ }
1404
+ declare const Modal: React__default.FC<ModalProps>;
1405
+
1406
+ /**
1407
+ * Pagination Molecule Component
1408
+ *
1409
+ * A pagination component with page numbers, previous/next buttons, and ellipsis.
1410
+ * Uses Button, Icon, Typography, and Input atoms.
1411
+ */
1412
+
1413
+ interface PaginationProps {
1414
+ /**
1415
+ * Current page (1-indexed)
1416
+ */
1417
+ currentPage: number;
1418
+ /**
1419
+ * Total number of pages
1420
+ */
1421
+ totalPages: number;
1422
+ /**
1423
+ * Callback when page changes (optional - can be a no-op if not interactive)
1424
+ */
1425
+ onPageChange?: (page: number) => void;
1426
+ /**
1427
+ * Show page size selector
1428
+ * @default false
1429
+ */
1430
+ showPageSize?: boolean;
1431
+ /**
1432
+ * Page size options
1433
+ */
1434
+ pageSizeOptions?: number[];
1435
+ /**
1436
+ * Current page size
1437
+ */
1438
+ pageSize?: number;
1439
+ /**
1440
+ * Callback when page size changes
1441
+ */
1442
+ onPageSizeChange?: (size: number) => void;
1443
+ /**
1444
+ * Show jump to page input
1445
+ * @default false
1446
+ */
1447
+ showJumpToPage?: boolean;
1448
+ /**
1449
+ * Show total count
1450
+ * @default false
1451
+ */
1452
+ showTotal?: boolean;
1453
+ /**
1454
+ * Total items count
1455
+ */
1456
+ totalItems?: number;
1457
+ /**
1458
+ * Maximum number of page buttons to show
1459
+ * @default 7
1460
+ */
1461
+ maxVisiblePages?: number;
1462
+ /**
1463
+ * Additional CSS classes
1464
+ */
1465
+ className?: string;
1466
+ }
1467
+ declare const Pagination: React__default.FC<PaginationProps>;
1468
+
1469
+ /**
1470
+ * Popover Molecule Component
1471
+ *
1472
+ * A popover component with position variants and click/hover triggers.
1473
+ * Uses Button, Typography, and Icon atoms.
1474
+ */
1475
+
1476
+ type PopoverPosition = "top" | "bottom" | "left" | "right";
1477
+ type PopoverTrigger = "click" | "hover";
1478
+ interface PopoverProps {
1479
+ /**
1480
+ * Popover content
1481
+ */
1482
+ content: React__default.ReactNode;
1483
+ /**
1484
+ * Popover trigger element (ReactElement or ReactNode that will be wrapped in span)
1485
+ */
1486
+ children: React__default.ReactNode;
1487
+ /**
1488
+ * Popover position
1489
+ * @default 'bottom'
1490
+ */
1491
+ position?: PopoverPosition;
1492
+ /**
1493
+ * Trigger type
1494
+ * @default 'click'
1495
+ */
1496
+ trigger?: PopoverTrigger;
1497
+ /**
1498
+ * Show arrow
1499
+ * @default true
1500
+ */
1501
+ showArrow?: boolean;
1502
+ /**
1503
+ * Additional CSS classes
1504
+ */
1505
+ className?: string;
1506
+ }
1507
+ declare const Popover: React__default.FC<PopoverProps>;
1508
+
1509
+ /**
1510
+ * RelationSelect Molecule Component
1511
+ *
1512
+ * A searchable select component for relation fields.
1513
+ * Allows users to search and select from related entities.
1514
+ *
1515
+ * Composed from: Box, HStack, VStack, Input, Button, Spinner, Typography atoms
1516
+ */
1517
+
1518
+ interface RelationOption {
1519
+ /** The value to store (typically the ID) */
1520
+ value: string;
1521
+ /** The display label */
1522
+ label: string;
1523
+ /** Optional description */
1524
+ description?: string;
1525
+ /** Whether this option is disabled */
1526
+ disabled?: boolean;
1527
+ }
1528
+ interface RelationSelectProps {
1529
+ /** Current value (ID) */
1530
+ value?: string;
1531
+ /** Callback when value changes */
1532
+ onChange?: (value: string | undefined) => void;
1533
+ /** Available options - accepts readonly for compatibility with generated const arrays */
1534
+ options: readonly RelationOption[];
1535
+ /** Placeholder text */
1536
+ placeholder?: string;
1537
+ /** Whether the field is required */
1538
+ required?: boolean;
1539
+ /** Whether the field is disabled */
1540
+ disabled?: boolean;
1541
+ /** Whether data is loading */
1542
+ isLoading?: boolean;
1543
+ /** Error message */
1544
+ error?: string;
1545
+ /** Allow clearing the selection */
1546
+ clearable?: boolean;
1547
+ /** Name attribute for forms */
1548
+ name?: string;
1549
+ /** Additional CSS classes */
1550
+ className?: string;
1551
+ /** Search placeholder */
1552
+ searchPlaceholder?: string;
1553
+ /** Empty state message */
1554
+ emptyMessage?: string;
1555
+ }
1556
+ declare const RelationSelect: React__default.FC<RelationSelectProps>;
1557
+
1558
+ /**
1559
+ * SearchInput Molecule Component
1560
+ *
1561
+ * A search input component with icon, clear button, and loading state.
1562
+ * Uses Input, Icon, Button, and Spinner atoms.
1563
+ *
1564
+ * Supports Query Singleton pattern via `query` prop for std/Search behavior.
1565
+ */
1566
+
1567
+ interface SearchInputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'type'> {
1568
+ /**
1569
+ * Search value (controlled mode)
1570
+ */
1571
+ value?: string;
1572
+ /**
1573
+ * Callback when search value changes
1574
+ */
1575
+ onSearch?: (value: string) => void;
1576
+ /**
1577
+ * Debounce delay in milliseconds
1578
+ * @default 300
1579
+ */
1580
+ debounceMs?: number;
1581
+ /**
1582
+ * Show loading state
1583
+ * @default false
1584
+ */
1585
+ isLoading?: boolean;
1586
+ /**
1587
+ * Placeholder text
1588
+ * @default 'Search...'
1589
+ */
1590
+ placeholder?: string;
1591
+ /**
1592
+ * Show clear button
1593
+ * @default true
1594
+ */
1595
+ clearable?: boolean;
1596
+ /**
1597
+ * Additional CSS classes
1598
+ */
1599
+ className?: string;
1600
+ /**
1601
+ * Event name to dispatch on search (schema metadata, wired by trait)
1602
+ * This is metadata used by the trait generator, not by the component.
1603
+ */
1604
+ event?: string;
1605
+ /**
1606
+ * Entity type for context-aware search.
1607
+ * When provided, search events include entity context.
1608
+ */
1609
+ entity?: string;
1610
+ /**
1611
+ * Query singleton binding for state management.
1612
+ * When provided, syncs search state with the query singleton.
1613
+ * Example: "@TaskQuery"
1614
+ */
1615
+ query?: string;
1616
+ }
1617
+ declare const SearchInput: React__default.FC<SearchInputProps>;
1618
+
1619
+ /**
1620
+ * SidePanel Molecule Component
1621
+ *
1622
+ * A side panel that slides in from the right (or left) with header and content.
1623
+ * Uses Button, Typography atoms.
1624
+ */
1625
+
1626
+ interface SidePanelProps {
1627
+ /**
1628
+ * Panel title
1629
+ */
1630
+ title: string;
1631
+ /**
1632
+ * Panel content
1633
+ */
1634
+ children: React__default.ReactNode;
1635
+ /**
1636
+ * Is panel open
1637
+ */
1638
+ isOpen: boolean;
1639
+ /**
1640
+ * On close handler
1641
+ */
1642
+ onClose: () => void;
1643
+ /**
1644
+ * Panel width
1645
+ * @default 'w-96'
1646
+ */
1647
+ width?: string;
1648
+ /**
1649
+ * Panel position
1650
+ * @default 'right'
1651
+ */
1652
+ position?: "left" | "right";
1653
+ /**
1654
+ * Show overlay on mobile
1655
+ * @default true
1656
+ */
1657
+ showOverlay?: boolean;
1658
+ /**
1659
+ * Additional CSS classes
1660
+ */
1661
+ className?: string;
1662
+ }
1663
+ declare const SidePanel: React__default.FC<SidePanelProps>;
1664
+
1665
+ /**
1666
+ * SimpleGrid Component
1667
+ *
1668
+ * A simplified grid that automatically adjusts columns based on available space.
1669
+ * Perfect for card layouts and item collections.
1670
+ */
1671
+
1672
+ type SimpleGridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1673
+ interface SimpleGridProps {
1674
+ /** Minimum width of each child (e.g., 200, "200px", "15rem") */
1675
+ minChildWidth?: number | string;
1676
+ /** Maximum number of columns */
1677
+ maxCols?: 1 | 2 | 3 | 4 | 5 | 6;
1678
+ /** Exact number of columns (disables auto-fit) */
1679
+ cols?: 1 | 2 | 3 | 4 | 5 | 6;
1680
+ /** Gap between items */
1681
+ gap?: SimpleGridGap;
1682
+ /** Custom class name */
1683
+ className?: string;
1684
+ /** Children elements */
1685
+ children: React__default.ReactNode;
1686
+ }
1687
+ /**
1688
+ * SimpleGrid - Auto-responsive grid layout
1689
+ */
1690
+ declare const SimpleGrid: React__default.FC<SimpleGridProps>;
1691
+
1692
+ /**
1693
+ * Tabs Molecule Component
1694
+ *
1695
+ * A tabbed interface component with keyboard navigation and badge support.
1696
+ * Uses theme-aware CSS variables for styling.
1697
+ */
1698
+
1699
+ interface TabItem {
1700
+ /** Tab ID */
1701
+ id: string;
1702
+ /** Tab label */
1703
+ label: string;
1704
+ /** Tab content - optional for event-driven tabs */
1705
+ content?: React__default.ReactNode;
1706
+ /** Tab icon */
1707
+ icon?: LucideIcon;
1708
+ /** Tab badge */
1709
+ badge?: string | number;
1710
+ /** Disable tab */
1711
+ disabled?: boolean;
1712
+ /** Event to emit when tab is clicked (for trait state machine integration) */
1713
+ event?: string;
1714
+ /** Whether this tab is currently active (for controlled tabs) */
1715
+ active?: boolean;
1716
+ }
1717
+ interface TabsProps {
1718
+ /** Tab items */
1719
+ items?: TabItem[];
1720
+ /** Tab items (alias for items - used by generated code) */
1721
+ tabs?: TabItem[];
1722
+ /** Default active tab ID */
1723
+ defaultActiveTab?: string;
1724
+ /** Controlled active tab ID */
1725
+ activeTab?: string;
1726
+ /** Callback when tab changes */
1727
+ onTabChange?: (tabId: string) => void;
1728
+ /** Tab variant */
1729
+ variant?: 'default' | 'pills' | 'underline';
1730
+ /** Tab orientation */
1731
+ orientation?: 'horizontal' | 'vertical';
1732
+ /** Additional CSS classes */
1733
+ className?: string;
1734
+ }
1735
+ declare const Tabs: React__default.FC<TabsProps>;
1736
+
1737
+ /**
1738
+ * Toast Molecule Component
1739
+ *
1740
+ * A toast notification component with auto-dismiss and action buttons.
1741
+ * Uses theme-aware CSS variables for styling.
1742
+ */
1743
+
1744
+ type ToastVariant = "success" | "error" | "info" | "warning";
1745
+ interface ToastProps {
1746
+ /** Toast variant */
1747
+ variant?: ToastVariant;
1748
+ /** Toast message */
1749
+ message: string;
1750
+ /** Toast title (optional) */
1751
+ title?: string;
1752
+ /** Auto-dismiss duration in milliseconds (0 = no auto-dismiss) */
1753
+ duration?: number;
1754
+ /** Show dismiss button */
1755
+ dismissible?: boolean;
1756
+ /** Callback when toast is dismissed */
1757
+ onDismiss?: () => void;
1758
+ /** Action button label */
1759
+ actionLabel?: string;
1760
+ /** Action button click handler */
1761
+ onAction?: () => void;
1762
+ /** Badge count (optional) */
1763
+ badge?: string | number;
1764
+ /** Additional CSS classes */
1765
+ className?: string;
1766
+ }
1767
+ declare const Toast: React__default.FC<ToastProps>;
1768
+
1769
+ /**
1770
+ * Tooltip Molecule Component
1771
+ *
1772
+ * A tooltip component with position variants and delay options.
1773
+ * Uses theme-aware CSS variables for styling.
1774
+ */
1775
+
1776
+ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
1777
+ interface TooltipProps {
1778
+ /** Tooltip content */
1779
+ content: React__default.ReactNode;
1780
+ /** Tooltip trigger element (ReactElement or ReactNode that will be wrapped in span) */
1781
+ children: React__default.ReactNode;
1782
+ /** Tooltip position */
1783
+ position?: TooltipPosition;
1784
+ /** Show delay in milliseconds */
1785
+ delay?: number;
1786
+ /** Hide delay in milliseconds */
1787
+ hideDelay?: number;
1788
+ /** Show arrow */
1789
+ showArrow?: boolean;
1790
+ /** Additional CSS classes */
1791
+ className?: string;
1792
+ }
1793
+ declare const Tooltip: React__default.FC<TooltipProps>;
1794
+
1795
+ /**
1796
+ * Drawer Molecule Component
1797
+ *
1798
+ * A slide-in drawer component for displaying secondary content.
1799
+ * Used by the UI Slot system for render_ui effects targeting the drawer slot.
1800
+ *
1801
+ * Features:
1802
+ * - Left/right positioning
1803
+ * - Configurable width
1804
+ * - Overlay backdrop
1805
+ * - Click-outside to dismiss
1806
+ * - Slide animation
1807
+ * - Escape key to close
1808
+ *
1809
+ * @packageDocumentation
1810
+ */
1811
+
1812
+ type DrawerPosition = "left" | "right";
1813
+ type DrawerSize = "sm" | "md" | "lg" | "xl" | "full";
1814
+ interface DrawerProps {
1815
+ /** Whether the drawer is open (defaults to true when rendered by slot wrapper) */
1816
+ isOpen?: boolean;
1817
+ /** Callback when drawer should close (injected by slot wrapper) */
1818
+ onClose?: () => void;
1819
+ /** Drawer title */
1820
+ title?: string;
1821
+ /** Drawer content (can be empty if using slot content) */
1822
+ children?: React__default.ReactNode;
1823
+ /** Footer content */
1824
+ footer?: React__default.ReactNode;
1825
+ /** Position (left or right) */
1826
+ position?: DrawerPosition;
1827
+ /** Width (CSS value or preset size) */
1828
+ width?: string | DrawerSize;
1829
+ /** Show close button */
1830
+ showCloseButton?: boolean;
1831
+ /** Close on overlay click */
1832
+ closeOnOverlayClick?: boolean;
1833
+ /** Close on escape key */
1834
+ closeOnEscape?: boolean;
1835
+ /** Additional class name */
1836
+ className?: string;
1837
+ }
1838
+ declare const Drawer: React__default.FC<DrawerProps>;
1839
+
1840
+ /**
1841
+ * WizardProgress Component
1842
+ *
1843
+ * Step progress indicator for multi-step wizards.
1844
+ * Shows current step, completed steps, and allows navigation to completed steps.
1845
+ *
1846
+ * Uses wireframe theme styling (high contrast, sharp edges).
1847
+ */
1848
+
1849
+ /**
1850
+ * Step info needed by WizardProgress.
1851
+ * Compatible with WizardContainer's WizardStep (subset of fields).
1852
+ */
1853
+ interface WizardProgressStep {
1854
+ /** Step identifier */
1855
+ id: string;
1856
+ /** Step title */
1857
+ title: string;
1858
+ /** Step description (optional) */
1859
+ description?: string;
1860
+ }
1861
+ interface WizardProgressProps {
1862
+ /** Step definitions (compatible with WizardContainer's WizardStep) */
1863
+ steps: WizardProgressStep[];
1864
+ /** Current step index (0-based) */
1865
+ currentStep: number;
1866
+ /** Callback when a completed step is clicked */
1867
+ onStepClick?: (stepIndex: number) => void;
1868
+ /** Allow clicking on completed steps to navigate back */
1869
+ allowNavigation?: boolean;
1870
+ /** Compact mode (smaller, no titles) */
1871
+ compact?: boolean;
1872
+ /** Additional CSS classes */
1873
+ className?: string;
1874
+ }
1875
+ /**
1876
+ * WizardProgress - Step progress indicator
1877
+ */
1878
+ declare const WizardProgress: React__default.FC<WizardProgressProps>;
1879
+
1880
+ /**
1881
+ * WizardNavigation Component
1882
+ *
1883
+ * Navigation buttons for multi-step wizards.
1884
+ * Includes Back, Next, and Complete buttons with proper state handling.
1885
+ *
1886
+ * Emits events via useEventBus for trait integration.
1887
+ * Uses wireframe theme styling (high contrast, sharp edges).
1888
+ */
1889
+
1890
+ interface WizardNavigationProps {
1891
+ /** Current step index (0-based) */
1892
+ currentStep: number;
1893
+ /** Total number of steps */
1894
+ totalSteps: number;
1895
+ /** Whether the current step is valid (enables Next/Complete) */
1896
+ isValid?: boolean;
1897
+ /** Show the Back button */
1898
+ showBack?: boolean;
1899
+ /** Show the Next button */
1900
+ showNext?: boolean;
1901
+ /** Show the Complete button (on last step) */
1902
+ showComplete?: boolean;
1903
+ /** Custom label for Back button */
1904
+ backLabel?: string;
1905
+ /** Custom label for Next button */
1906
+ nextLabel?: string;
1907
+ /** Custom label for Complete button */
1908
+ completeLabel?: string;
1909
+ /** Event to emit on Back click */
1910
+ onBack?: string;
1911
+ /** Event to emit on Next click */
1912
+ onNext?: string;
1913
+ /** Event to emit on Complete click */
1914
+ onComplete?: string;
1915
+ /** Direct callback for Back (alternative to event) */
1916
+ onBackClick?: () => void;
1917
+ /** Direct callback for Next (alternative to event) */
1918
+ onNextClick?: () => void;
1919
+ /** Direct callback for Complete (alternative to event) */
1920
+ onCompleteClick?: () => void;
1921
+ /** Compact mode (smaller padding) */
1922
+ compact?: boolean;
1923
+ /** Additional CSS classes */
1924
+ className?: string;
1925
+ }
1926
+ /**
1927
+ * WizardNavigation - Wizard navigation buttons
1928
+ */
1929
+ declare const WizardNavigation: React__default.FC<WizardNavigationProps>;
1930
+
1931
+ /**
1932
+ * RepeatableFormSection
1933
+ *
1934
+ * A form section that can be repeated multiple times.
1935
+ * Used for collecting multiple entries (participants, findings, etc.)
1936
+ *
1937
+ * Enhanced with trackAddedInState for inspection audit trails.
1938
+ *
1939
+ * Event Contract:
1940
+ * - Emits: UI:SECTION_ADDED { sectionType, index, addedInState? }
1941
+ * - Emits: UI:SECTION_REMOVED { sectionType, index, itemId }
1942
+ */
1943
+
1944
+ interface RepeatableItem {
1945
+ id: string;
1946
+ /** State in which this item was added (for audit trails) */
1947
+ addedInState?: string;
1948
+ /** Timestamp when item was added */
1949
+ addedAt?: string;
1950
+ [key: string]: unknown;
1951
+ }
1952
+ interface RepeatableFormSectionProps {
1953
+ /** Section type identifier */
1954
+ sectionType: string;
1955
+ /** Section title */
1956
+ title: string;
1957
+ /** Items in the section */
1958
+ items: RepeatableItem[];
1959
+ /** Render function for each item */
1960
+ renderItem: (item: RepeatableItem, index: number) => React__default.ReactNode;
1961
+ /** Minimum items required */
1962
+ minItems?: number;
1963
+ /** Maximum items allowed */
1964
+ maxItems?: number;
1965
+ /** Allow reordering */
1966
+ allowReorder?: boolean;
1967
+ /** Add button label */
1968
+ addLabel?: string;
1969
+ /** Empty state message */
1970
+ emptyMessage?: string;
1971
+ /** Read-only mode */
1972
+ readOnly?: boolean;
1973
+ /** Additional CSS classes */
1974
+ className?: string;
1975
+ /** Add handler */
1976
+ onAdd?: () => void;
1977
+ /** Remove handler */
1978
+ onRemove?: (itemId: string, index: number) => void;
1979
+ /** Reorder handler */
1980
+ onReorder?: (fromIndex: number, toIndex: number) => void;
1981
+ /** Track the state in which items are added (for inspection audit) */
1982
+ trackAddedInState?: boolean;
1983
+ /** Current inspection state (used when trackAddedInState is true) */
1984
+ currentState?: string;
1985
+ /** Show audit metadata (addedInState, addedAt) */
1986
+ showAuditInfo?: boolean;
1987
+ }
1988
+ declare const RepeatableFormSection: React__default.FC<RepeatableFormSectionProps>;
1989
+
1990
+ /**
1991
+ * ViolationAlert
1992
+ *
1993
+ * Displays inspection violations with law references and action types.
1994
+ * Used in inspection forms to show detected compliance violations.
1995
+ *
1996
+ * Action Types:
1997
+ * - measure: Corrective measure required (warning)
1998
+ * - admin: Administrative action (error)
1999
+ * - penalty: Penalty proceedings (error, severe)
2000
+ */
2001
+
2002
+ interface ViolationRecord {
2003
+ /** Unique violation identifier */
2004
+ id: string;
2005
+ /** Law reference (e.g., "ZVPOT-1") */
2006
+ law: string;
2007
+ /** Article reference (e.g., "14/1") */
2008
+ article: string;
2009
+ /** Violation message */
2010
+ message: string;
2011
+ /** Action type determines severity */
2012
+ actionType: "measure" | "admin" | "penalty";
2013
+ /** Administrative action reference (e.g., "ZVPOT-1 234/1-4") */
2014
+ adminAction?: string;
2015
+ /** Penalty action reference (e.g., "ZVPOT-1 240/1-9") */
2016
+ penaltyAction?: string;
2017
+ /** Field that triggered this violation */
2018
+ fieldId?: string;
2019
+ /** Tab/form where violation occurred */
2020
+ tabId?: string;
2021
+ }
2022
+ interface ViolationAlertProps {
2023
+ /** Violation data */
2024
+ violation: ViolationRecord;
2025
+ /** Visual severity (derived from actionType if not specified) */
2026
+ severity?: "warning" | "error";
2027
+ /** Dismissible alert */
2028
+ dismissible?: boolean;
2029
+ /** Dismiss handler */
2030
+ onDismiss?: () => void;
2031
+ /** Navigate to the field that caused violation */
2032
+ onNavigateToField?: (fieldId: string) => void;
2033
+ /** Compact display mode */
2034
+ compact?: boolean;
2035
+ /** Additional CSS classes */
2036
+ className?: string;
2037
+ }
2038
+ declare const ViolationAlert: React__default.FC<ViolationAlertProps>;
2039
+
2040
+ /**
2041
+ * FormSectionHeader
2042
+ *
2043
+ * Header component for collapsible form sections.
2044
+ * Provides consistent styling and interaction for section headers.
2045
+ */
2046
+
2047
+ interface FormSectionHeaderProps {
2048
+ /** Section title */
2049
+ title: string;
2050
+ /** Section subtitle */
2051
+ subtitle?: string;
2052
+ /** Whether section is collapsed */
2053
+ isCollapsed?: boolean;
2054
+ /** Toggle collapse handler (makes header clickable) */
2055
+ onToggle?: () => void;
2056
+ /** Badge text (e.g., "3 fields", "Required", "Complete") */
2057
+ badge?: string;
2058
+ /** Badge variant */
2059
+ badgeVariant?: "default" | "primary" | "success" | "warning" | "danger";
2060
+ /** Icon name to show before title */
2061
+ icon?: string;
2062
+ /** Whether section has validation errors */
2063
+ hasErrors?: boolean;
2064
+ /** Whether section is complete */
2065
+ isComplete?: boolean;
2066
+ /** Additional CSS classes */
2067
+ className?: string;
2068
+ }
2069
+ declare const FormSectionHeader: React__default.FC<FormSectionHeaderProps>;
2070
+
2071
+ interface Column<T> {
2072
+ key: keyof T | string;
2073
+ header: string;
2074
+ width?: string;
2075
+ sortable?: boolean;
2076
+ render?: (value: unknown, row: T, index: number) => React__default.ReactNode;
2077
+ }
2078
+ interface RowAction<T> {
2079
+ label: string;
2080
+ icon?: LucideIcon;
2081
+ onClick: (row: T) => void;
2082
+ variant?: "default" | "danger";
2083
+ show?: (row: T) => boolean;
2084
+ /** Event name for testability (data-event attribute) */
2085
+ event?: string;
2086
+ }
2087
+ interface DataTableProps<T extends {
2088
+ id: string | number;
2089
+ }> {
2090
+ /** Fields to display - accepts string[] or Column[] for unified interface. Alias for columns */
2091
+ fields?: readonly Column<T>[] | readonly string[];
2092
+ /** Columns can be Column objects or simple string field names - accepts readonly for generated const arrays */
2093
+ columns?: readonly Column<T>[] | readonly string[];
2094
+ /** Data array - primary prop for data. Accepts readonly or mutable arrays, and unknown for generated components */
2095
+ data?: readonly T[] | T[] | readonly unknown[] | unknown[] | unknown;
2096
+ /** Entity name for auto-fetch OR data array (backwards compatible) */
2097
+ entity?: string | readonly T[] | T[];
2098
+ /** Item actions from generated code - maps to rowActions */
2099
+ itemActions?: readonly {
2100
+ label: string;
2101
+ event?: string;
2102
+ /** Navigation URL - supports template interpolation like "/products/{{id}}" or "/products/:id" */
2103
+ navigatesTo?: string;
2104
+ /** Action used by generated code - alternative to event */
2105
+ action?: string;
2106
+ /** Placement accepts string for compatibility with generated code */
2107
+ placement?: "row" | "bulk" | string;
2108
+ icon?: LucideIcon;
2109
+ /** Variant accepts all button variants for compatibility */
2110
+ variant?: "default" | "primary" | "secondary" | "ghost" | "danger" | string;
2111
+ /** Click handler from generated code */
2112
+ onClick?: (row: T) => void;
2113
+ }[];
2114
+ /** Loading state indicator */
2115
+ isLoading?: boolean;
2116
+ /** Error state */
2117
+ error?: Error | null;
2118
+ emptyIcon?: LucideIcon;
2119
+ emptyTitle?: string;
2120
+ emptyDescription?: string;
2121
+ emptyAction?: {
2122
+ label: string;
2123
+ onClick: () => void;
2124
+ };
2125
+ selectable?: boolean;
2126
+ selectedIds?: readonly (string | number)[];
2127
+ onSelectionChange?: (ids: (string | number)[]) => void;
2128
+ sortBy?: string;
2129
+ sortDirection?: "asc" | "desc";
2130
+ onSort?: (key: string, direction: "asc" | "desc") => void;
2131
+ pagination?: {
2132
+ page: number;
2133
+ pageSize: number;
2134
+ total: number;
2135
+ onPageChange: (page: number) => void;
2136
+ onPageSizeChange?: (size: number) => void;
2137
+ };
2138
+ enablePagination?: boolean;
2139
+ /** Items per page for automatic pagination (default: 20) */
2140
+ defaultPageSize?: number;
2141
+ /** Show total count in pagination */
2142
+ showTotal?: boolean;
2143
+ searchable?: boolean;
2144
+ searchValue?: string;
2145
+ onSearch?: (value: string) => void;
2146
+ searchPlaceholder?: string;
2147
+ onRowClick?: (row: T) => void;
2148
+ rowActions?: readonly RowAction<T>[];
2149
+ bulkActions?: ReadonlyArray<{
2150
+ label: string;
2151
+ icon?: LucideIcon;
2152
+ onClick: (selectedRows: T[]) => void;
2153
+ variant?: "default" | "danger";
2154
+ }>;
2155
+ headerActions?: React__default.ReactNode;
2156
+ /**
2157
+ * Query singleton binding for filter/sort state.
2158
+ * When provided, syncs with the query singleton for filtering and sorting.
2159
+ * Example: "@TaskQuery"
2160
+ */
2161
+ query?: string;
2162
+ className?: string;
2163
+ }
2164
+ declare function DataTable<T extends {
2165
+ id: string | number;
2166
+ }>({ fields, columns, data, entity, itemActions, isLoading, error: externalError, emptyIcon, emptyTitle, emptyDescription, emptyAction, selectable, selectedIds, onSelectionChange, sortBy: externalSortBy, sortDirection: externalSortDirection, onSort, pagination, enablePagination, defaultPageSize, showTotal, searchable, searchValue, onSearch, searchPlaceholder, onRowClick, rowActions: externalRowActions, bulkActions, headerActions, query, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
2167
+
2168
+ /**
2169
+ * Schema metric definition
2170
+ * Supports both computed metrics (with field) and static metrics (with value)
2171
+ */
2172
+ interface MetricDefinition {
2173
+ /** Field name for computed metrics (optional if value is provided) */
2174
+ field?: string;
2175
+ /** Display label */
2176
+ label: string;
2177
+ /** Static value for display (alternative to field-based computation) */
2178
+ value?: string | number;
2179
+ /** Icon name for display */
2180
+ icon?: string;
2181
+ /** Value format (e.g., 'currency', 'percent', 'number') */
2182
+ format?: "currency" | "percent" | "number" | string;
2183
+ }
2184
+ interface StatCardProps {
2185
+ /** Main label */
2186
+ label?: string;
2187
+ /** Title (alias for label) */
2188
+ title?: string;
2189
+ /** Primary value - accepts array/unknown from generated code (will use first element or length) */
2190
+ value?: string | number | (string | number | undefined)[] | unknown;
2191
+ /** Previous value for comparison */
2192
+ previousValue?: number;
2193
+ /** Current value as number for trend calculation */
2194
+ currentValue?: number;
2195
+ /** Manual trend percentage (overrides calculation) */
2196
+ trend?: number;
2197
+ /** Trend direction (overrides calculation) */
2198
+ trendDirection?: "up" | "down" | "neutral";
2199
+ /** Whether up is good (green) or bad (red) */
2200
+ invertTrend?: boolean;
2201
+ /** Icon to display */
2202
+ icon?: LucideIcon;
2203
+ /** Icon background color */
2204
+ iconBg?: string;
2205
+ /** Icon color */
2206
+ iconColor?: string;
2207
+ /** Subtitle or description */
2208
+ subtitle?: string;
2209
+ /** Action button */
2210
+ action?: {
2211
+ label: string;
2212
+ /** Event to dispatch via event bus (for trait state machine integration) */
2213
+ event?: string;
2214
+ /** Navigation URL - supports template interpolation */
2215
+ navigatesTo?: string;
2216
+ /** Legacy onClick callback */
2217
+ onClick?: () => void;
2218
+ };
2219
+ className?: string;
2220
+ /** Entity name for schema-driven stats */
2221
+ entity?: string;
2222
+ /** Metrics to display (schema format) - accepts readonly for compatibility with generated const arrays */
2223
+ metrics?: readonly MetricDefinition[];
2224
+ /** Data to calculate stats from - accepts readonly for compatibility with generated const arrays */
2225
+ data?: readonly Record<string, unknown>[];
2226
+ /** Loading state indicator */
2227
+ isLoading?: boolean;
2228
+ /** Error state */
2229
+ error?: Error | null;
2230
+ }
2231
+ declare const StatCard: React__default.FC<StatCardProps>;
2232
+
2233
+ interface PageBreadcrumb {
2234
+ label: string;
2235
+ href?: string;
2236
+ }
2237
+ /**
2238
+ * Schema-based action definition
2239
+ */
2240
+ interface SchemaAction {
2241
+ label: string;
2242
+ /** Navigate to URL when clicked */
2243
+ navigatesTo?: string;
2244
+ /** Custom click handler */
2245
+ onClick?: () => void;
2246
+ /** Event to dispatch via event bus (for trait state machine integration) */
2247
+ event?: string;
2248
+ variant?: "primary" | "secondary" | "ghost" | "danger";
2249
+ icon?: LucideIcon;
2250
+ loading?: boolean;
2251
+ disabled?: boolean;
2252
+ }
2253
+ interface PageHeaderProps {
2254
+ /** Page title - accepts unknown to handle generated code accessing dynamic entity data */
2255
+ title?: string | number | unknown;
2256
+ /** Optional subtitle/description */
2257
+ subtitle?: string | number | unknown;
2258
+ /** Show back button */
2259
+ showBack?: boolean;
2260
+ /** Event to emit when back is clicked (default: BACK) */
2261
+ backEvent?: string;
2262
+ /** Breadcrumbs */
2263
+ breadcrumbs?: readonly PageBreadcrumb[];
2264
+ /** Status badge */
2265
+ status?: {
2266
+ label: string;
2267
+ variant?: "default" | "success" | "warning" | "danger" | "info";
2268
+ };
2269
+ /** Actions array - first action with variant='primary' (or first action) is the main action */
2270
+ actions?: readonly Readonly<SchemaAction>[];
2271
+ /** Loading state indicator */
2272
+ isLoading?: boolean;
2273
+ /** Tabs for sub-navigation */
2274
+ tabs?: ReadonlyArray<{
2275
+ label: string;
2276
+ value: string;
2277
+ count?: number;
2278
+ }>;
2279
+ activeTab?: string;
2280
+ onTabChange?: (value: string) => void;
2281
+ /** Custom content in the header */
2282
+ children?: React__default.ReactNode;
2283
+ className?: string;
2284
+ }
2285
+ declare const PageHeader: React__default.FC<PageHeaderProps>;
2286
+
2287
+ /**
2288
+ * DetailPanel Organism Component
2289
+ *
2290
+ * Composes atoms and molecules to create a professional detail view.
2291
+ *
2292
+ * When `entity` prop is provided without `data`, automatically fetches data
2293
+ * using the useEntityDetail hook with ID from URL params.
2294
+ */
2295
+
2296
+ interface DetailField {
2297
+ label: string;
2298
+ value: React__default.ReactNode;
2299
+ icon?: LucideIcon;
2300
+ copyable?: boolean;
2301
+ }
2302
+ interface DetailSection {
2303
+ title: string;
2304
+ fields: DetailField[];
2305
+ }
2306
+ /**
2307
+ * Action definition for DetailPanel
2308
+ */
2309
+ interface DetailPanelAction {
2310
+ label: string;
2311
+ icon?: LucideIcon;
2312
+ onClick?: () => void;
2313
+ /** Event to emit via event bus */
2314
+ event?: string;
2315
+ /** Navigation URL */
2316
+ navigatesTo?: string;
2317
+ /** Button variant (primary for main action, others for secondary) */
2318
+ variant?: "primary" | "secondary" | "ghost" | "danger";
2319
+ }
2320
+ /**
2321
+ * Field definition for unified interface - can be a simple string or object
2322
+ */
2323
+ type FieldDef$2 = string | {
2324
+ key: string;
2325
+ header?: string;
2326
+ };
2327
+ interface DetailPanelProps {
2328
+ title?: string;
2329
+ subtitle?: string;
2330
+ status?: {
2331
+ label: string;
2332
+ variant?: "default" | "success" | "warning" | "danger" | "info";
2333
+ };
2334
+ avatar?: React__default.ReactNode;
2335
+ sections?: readonly DetailSection[];
2336
+ /** Unified actions array - first action with variant='primary' is the main action */
2337
+ actions?: readonly DetailPanelAction[];
2338
+ footer?: React__default.ReactNode;
2339
+ slideOver?: boolean;
2340
+ onClose?: () => void;
2341
+ className?: string;
2342
+ entity?: string;
2343
+ /** Fields to display - accepts string[] or {key, header}[] for unified interface */
2344
+ fields?: readonly FieldDef$2[] | readonly DetailField[];
2345
+ /** Alias for fields - backwards compatibility */
2346
+ fieldNames?: readonly string[];
2347
+ data?: Record<string, unknown> | unknown;
2348
+ isLoading?: boolean;
2349
+ error?: Error | null;
2350
+ /** Panel position (for drawer/sidebar placement) */
2351
+ position?: "left" | "right";
2352
+ /** Panel width (CSS value, e.g., '400px', '50%') */
2353
+ width?: string;
2354
+ }
2355
+ declare const DetailPanel: React__default.FC<DetailPanelProps>;
2356
+
2357
+ interface FormSectionProps {
2358
+ /** Section title */
2359
+ title?: string;
2360
+ /** Section description */
2361
+ description?: string;
2362
+ /** Form fields */
2363
+ children: React__default.ReactNode;
2364
+ /** Collapsible */
2365
+ collapsible?: boolean;
2366
+ /** Default collapsed state */
2367
+ defaultCollapsed?: boolean;
2368
+ /** Use card wrapper */
2369
+ card?: boolean;
2370
+ /** Grid columns for fields */
2371
+ columns?: 1 | 2 | 3;
2372
+ className?: string;
2373
+ }
2374
+ declare const FormSection$1: React__default.FC<FormSectionProps>;
2375
+ /**
2376
+ * Form layout with multiple sections
2377
+ */
2378
+ interface FormLayoutProps {
2379
+ children: React__default.ReactNode;
2380
+ /** Show section dividers */
2381
+ dividers?: boolean;
2382
+ className?: string;
2383
+ }
2384
+ declare const FormLayout: React__default.FC<FormLayoutProps>;
2385
+ /**
2386
+ * Form actions bar (submit/cancel buttons)
2387
+ */
2388
+ interface FormActionsProps {
2389
+ children: React__default.ReactNode;
2390
+ /** Sticky at bottom */
2391
+ sticky?: boolean;
2392
+ /** Alignment */
2393
+ align?: "left" | "right" | "between" | "center";
2394
+ className?: string;
2395
+ }
2396
+ declare const FormActions: React__default.FC<FormActionsProps>;
2397
+
2398
+ /**
2399
+ * Form Organism Component
2400
+ *
2401
+ * A form container component with submit/reset handling.
2402
+ * Supports both children-based and schema-based form generation.
2403
+ * Renders correct input types based on field definitions including relations.
2404
+ *
2405
+ * Extended for inspection forms with:
2406
+ * - Conditional field visibility via S-expressions
2407
+ * - Hidden calculations that emit GLOBAL_VARIABLE_SET events
2408
+ * - Violation triggers that emit VIOLATION_DETECTED events
2409
+ * - Nested sections with collapsible support
2410
+ */
2411
+
2412
+ /**
2413
+ * S-Expression type for conditional logic (re-export from @orbital/shared)
2414
+ */
2415
+ type SExpression = SExpr;
2416
+ /**
2417
+ * Form-specific evaluation context
2418
+ */
2419
+ interface FormEvaluationContext {
2420
+ formValues: Record<string, unknown>;
2421
+ globalVariables: Record<string, unknown>;
2422
+ localVariables?: Record<string, unknown>;
2423
+ entity?: Record<string, unknown>;
2424
+ }
2425
+ /**
2426
+ * Hidden calculation definition
2427
+ */
2428
+ interface HiddenCalculation {
2429
+ variableName: string;
2430
+ expression: SExpression;
2431
+ triggerFields: string[];
2432
+ }
2433
+ /**
2434
+ * Violation definition
2435
+ */
2436
+ interface ViolationDefinition {
2437
+ law: string;
2438
+ article: string;
2439
+ actionType: "measure" | "admin" | "penalty";
2440
+ message: string;
2441
+ }
2442
+ /**
2443
+ * Violation trigger definition
2444
+ */
2445
+ interface ViolationTrigger {
2446
+ condition: SExpression;
2447
+ violation: ViolationDefinition;
2448
+ fieldId?: string;
2449
+ }
2450
+ /**
2451
+ * Form section definition for nested sections
2452
+ */
2453
+ interface FormSection {
2454
+ id: string;
2455
+ title: string;
2456
+ condition?: SExpression;
2457
+ fields: SchemaField[];
2458
+ collapsible?: boolean;
2459
+ }
2460
+ /**
2461
+ * Relation configuration for foreign key fields
2462
+ */
2463
+ interface RelationConfig {
2464
+ /** Target entity name (e.g., 'User', 'Project') */
2465
+ entity: string;
2466
+ /** Field on target entity to display (defaults to 'name') */
2467
+ displayField?: string;
2468
+ /** Cardinality: one-to-one or one-to-many */
2469
+ cardinality?: "one" | "many";
2470
+ }
2471
+ /**
2472
+ * Schema field definition
2473
+ * Supports both 'name' and 'field' for compatibility with different schema formats
2474
+ */
2475
+ interface SchemaField {
2476
+ /** Field name (primary) */
2477
+ name?: string;
2478
+ /** Field name (alias for compatibility) */
2479
+ field?: string;
2480
+ /** Display label */
2481
+ label?: string;
2482
+ /** Field type (string, number, email, date, boolean, enum, relation, etc.) */
2483
+ type?: string;
2484
+ /** Input type for rendering (text, select, textarea, checkbox, etc.) */
2485
+ inputType?: string;
2486
+ /** Placeholder text */
2487
+ placeholder?: string;
2488
+ /** Whether field is required */
2489
+ required?: boolean;
2490
+ /** Default value */
2491
+ defaultValue?: unknown;
2492
+ /** Options for select/enum fields - accepts readonly for generated const arrays */
2493
+ options?: readonly SelectOption[];
2494
+ /** Enum values (alternative to options, just strings) - accepts readonly for generated const arrays */
2495
+ values?: readonly string[];
2496
+ /** Relation configuration for foreign key references */
2497
+ relation?: RelationConfig;
2498
+ /** Minimum value (for number) or length (for string) */
2499
+ min?: number;
2500
+ /** Maximum value or length */
2501
+ max?: number;
2502
+ /** Pattern for validation */
2503
+ pattern?: string;
2504
+ /** Validation rules */
2505
+ validation?: Record<string, unknown>;
2506
+ /** Whether field is readonly (displays value but cannot edit) */
2507
+ readonly?: boolean;
2508
+ /** Whether field is disabled (alternative to readonly for compatibility) */
2509
+ disabled?: boolean;
2510
+ }
2511
+ interface FormProps extends Omit<React__default.FormHTMLAttributes<HTMLFormElement>, "onSubmit"> {
2512
+ /** Form fields (traditional React children) */
2513
+ children?: React__default.ReactNode;
2514
+ /** Submit handler - receives form data, or event name string for trait dispatch */
2515
+ onSubmit?: ((e: React__default.FormEvent<HTMLFormElement>, data?: Record<string, unknown>) => void) | string;
2516
+ /** Cancel handler - function or event name string for trait dispatch */
2517
+ onCancel?: (() => void) | string;
2518
+ /** Form layout */
2519
+ layout?: "vertical" | "horizontal" | "inline";
2520
+ /** Gap between fields */
2521
+ gap?: "sm" | "md" | "lg";
2522
+ /** Additional CSS classes */
2523
+ className?: string;
2524
+ /** Entity type name (schema format) */
2525
+ entity?: string;
2526
+ /** Form mode - 'create' for new records, 'edit' for updating existing */
2527
+ mode?: "create" | "edit";
2528
+ /** Fields definition (schema format) - accepts readonly for generated const arrays */
2529
+ fields?: readonly Readonly<SchemaField>[];
2530
+ /** Initial form data */
2531
+ initialData?: Record<string, unknown> | unknown;
2532
+ /** Loading state */
2533
+ isLoading?: boolean;
2534
+ /** Error state */
2535
+ error?: Error | null;
2536
+ /** Submit button label */
2537
+ submitLabel?: string;
2538
+ /** Cancel button label (if provided, shows cancel button) */
2539
+ cancelLabel?: string;
2540
+ /** Show cancel button (defaults to true for schema forms) */
2541
+ showCancel?: boolean;
2542
+ /** Form title (used by ModalSlot to extract title) */
2543
+ title?: string;
2544
+ /** Event to dispatch on successful submit (defaults to 'SAVE') */
2545
+ submitEvent?: string;
2546
+ /** Event to dispatch on cancel (defaults to 'CANCEL') */
2547
+ cancelEvent?: string;
2548
+ /** Data for relation fields: { fieldName: RelationOption[] } */
2549
+ relationsData?: Record<string, readonly RelationOption[]>;
2550
+ /** Loading state for relation data: { fieldName: boolean } */
2551
+ relationsLoading?: Record<string, boolean>;
2552
+ /** Map of fieldId → S-expression condition for conditional field display (boolean true means enabled but config loaded separately) */
2553
+ conditionalFields?: Record<string, SExpression> | boolean;
2554
+ /** Hidden calculations that emit GLOBAL_VARIABLE_SET on field change (boolean true means enabled but config loaded separately) */
2555
+ hiddenCalculations?: HiddenCalculation[] | boolean;
2556
+ /** Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately) */
2557
+ violationTriggers?: ViolationTrigger[] | boolean;
2558
+ /** Context for S-expression evaluation - accepts flexible types from generated code */
2559
+ evaluationContext?: FormEvaluationContext | Record<string, unknown>;
2560
+ /** Nested form sections with optional conditions */
2561
+ sections?: FormSection[];
2562
+ /** Callback when any field value changes */
2563
+ onFieldChange?: (change: {
2564
+ fieldId: string;
2565
+ value: unknown;
2566
+ formValues: Record<string, unknown>;
2567
+ }) => void;
2568
+ /** Config path for form configuration (schema-driven) */
2569
+ configPath?: string;
2570
+ /** Whether the form supports repeatable entries */
2571
+ repeatable?: boolean;
2572
+ }
2573
+ declare const Form: React__default.FC<FormProps>;
2574
+
2575
+ /**
2576
+ * Header Organism Component
2577
+ *
2578
+ * A header component for mobile/responsive layouts with menu toggle, brand, and user avatar.
2579
+ * Styled to match the main Layout component's mobile header.
2580
+ */
2581
+
2582
+ interface HeaderProps {
2583
+ /**
2584
+ * Logo/Brand content
2585
+ */
2586
+ logo?: React__default.ReactNode;
2587
+ /**
2588
+ * Logo image source
2589
+ */
2590
+ logoSrc?: string;
2591
+ /**
2592
+ * Brand/App name
2593
+ */
2594
+ brandName?: string;
2595
+ /**
2596
+ * Navigation items (for desktop header variant)
2597
+ */
2598
+ navigationItems?: Array<{
2599
+ label: string;
2600
+ href?: string;
2601
+ onClick?: () => void;
2602
+ icon?: LucideIcon;
2603
+ badge?: string | number;
2604
+ active?: boolean;
2605
+ }>;
2606
+ /**
2607
+ * Show menu toggle button
2608
+ * @default true
2609
+ */
2610
+ showMenuToggle?: boolean;
2611
+ /**
2612
+ * Is menu open (for toggle icon)
2613
+ */
2614
+ isMenuOpen?: boolean;
2615
+ /**
2616
+ * Menu toggle callback
2617
+ */
2618
+ onMenuToggle?: () => void;
2619
+ /**
2620
+ * Show search input
2621
+ * @default false
2622
+ */
2623
+ showSearch?: boolean;
2624
+ /**
2625
+ * Search placeholder
2626
+ */
2627
+ searchPlaceholder?: string;
2628
+ /**
2629
+ * Search callback
2630
+ */
2631
+ onSearch?: (value: string) => void;
2632
+ /**
2633
+ * User avatar configuration
2634
+ */
2635
+ userAvatar?: {
2636
+ src?: string;
2637
+ alt?: string;
2638
+ initials?: string;
2639
+ };
2640
+ /**
2641
+ * User name (display name or email)
2642
+ */
2643
+ userName?: string;
2644
+ /**
2645
+ * Callback when user avatar is clicked
2646
+ */
2647
+ onUserClick?: () => void;
2648
+ /**
2649
+ * Action buttons (right side)
2650
+ */
2651
+ actions?: React__default.ReactNode;
2652
+ /**
2653
+ * Sticky header
2654
+ * @default true
2655
+ */
2656
+ sticky?: boolean;
2657
+ /**
2658
+ * Variant - mobile shows menu toggle, desktop shows full nav
2659
+ * @default 'mobile'
2660
+ */
2661
+ variant?: "mobile" | "desktop";
2662
+ /**
2663
+ * Callback when logo/brand is clicked
2664
+ */
2665
+ onLogoClick?: () => void;
2666
+ /**
2667
+ * Additional CSS classes
2668
+ */
2669
+ className?: string;
2670
+ }
2671
+ declare const Header: React__default.FC<HeaderProps>;
2672
+
2673
+ /**
2674
+ * Navigation Organism Component
2675
+ *
2676
+ * A navigation component with items, active indicators, icons, and badges.
2677
+ * Uses Menu, ButtonGroup molecules and Button, Icon, Badge, Typography, Divider atoms.
2678
+ */
2679
+
2680
+ interface NavigationItem {
2681
+ /**
2682
+ * Item ID
2683
+ */
2684
+ id: string;
2685
+ /**
2686
+ * Item label
2687
+ */
2688
+ label: string;
2689
+ /**
2690
+ * Item icon
2691
+ */
2692
+ icon?: LucideIcon;
2693
+ /**
2694
+ * Item badge
2695
+ */
2696
+ badge?: string | number;
2697
+ /**
2698
+ * Item href
2699
+ */
2700
+ href?: string;
2701
+ /**
2702
+ * Item click handler
2703
+ */
2704
+ onClick?: () => void;
2705
+ /**
2706
+ * Is active
2707
+ */
2708
+ isActive?: boolean;
2709
+ /**
2710
+ * Disable item
2711
+ */
2712
+ disabled?: boolean;
2713
+ /**
2714
+ * Sub-menu items
2715
+ */
2716
+ subMenu?: NavigationItem[];
2717
+ }
2718
+ interface NavigationProps {
2719
+ /**
2720
+ * Navigation items
2721
+ */
2722
+ items: NavigationItem[];
2723
+ /**
2724
+ * Navigation orientation
2725
+ * @default 'horizontal'
2726
+ */
2727
+ orientation?: 'horizontal' | 'vertical';
2728
+ /**
2729
+ * Additional CSS classes
2730
+ */
2731
+ className?: string;
2732
+ }
2733
+ declare const Navigation: React__default.FC<NavigationProps>;
2734
+
2735
+ /**
2736
+ * Section Component
2737
+ *
2738
+ * A semantic section wrapper with optional title, description, and action.
2739
+ * Perfect for grouping related content with consistent spacing.
2740
+ */
2741
+
2742
+ type SectionPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';
2743
+ type SectionVariant = 'default' | 'card' | 'bordered' | 'filled';
2744
+ interface SectionProps {
2745
+ /** Section title */
2746
+ title?: string;
2747
+ /** Section subtitle/description */
2748
+ description?: string;
2749
+ /** Action element (e.g., button, link) */
2750
+ action?: React__default.ReactNode;
2751
+ /** Padding amount */
2752
+ padding?: SectionPadding;
2753
+ /** Visual variant */
2754
+ variant?: SectionVariant;
2755
+ /** Show divider below header */
2756
+ divider?: boolean;
2757
+ /** Custom class name */
2758
+ className?: string;
2759
+ /** Children elements */
2760
+ children: React__default.ReactNode;
2761
+ /** Header custom class name */
2762
+ headerClassName?: string;
2763
+ /** Content custom class name */
2764
+ contentClassName?: string;
2765
+ /** HTML element to render as */
2766
+ as?: React__default.ElementType;
2767
+ }
2768
+ /**
2769
+ * Section - Semantic content grouping with header
2770
+ */
2771
+ declare const Section: React__default.FC<SectionProps>;
2772
+
2773
+ /**
2774
+ * Sidebar Organism Component
2775
+ *
2776
+ * A sidebar component with logo, navigation items, user section, and collapse/expand.
2777
+ * Styled to match the main Layout component with theme-aware CSS variables.
2778
+ */
2779
+
2780
+ interface SidebarItem {
2781
+ /** Item ID */
2782
+ id: string;
2783
+ /** Item label */
2784
+ label: string;
2785
+ /** Item icon */
2786
+ icon?: LucideIcon;
2787
+ /** Item badge */
2788
+ badge?: string | number;
2789
+ /** Item href */
2790
+ href?: string;
2791
+ /** Item click handler */
2792
+ onClick?: () => void;
2793
+ /** Is active */
2794
+ active?: boolean;
2795
+ /** @deprecated Use `active` instead */
2796
+ isActive?: boolean;
2797
+ /** Sub-items (for nested navigation) */
2798
+ subItems?: SidebarItem[];
2799
+ }
2800
+ interface SidebarProps {
2801
+ /** Logo/Brand content - can be a ReactNode or logo config */
2802
+ logo?: React__default.ReactNode;
2803
+ /** Logo image source */
2804
+ logoSrc?: string;
2805
+ /** Brand/App name */
2806
+ brandName?: string;
2807
+ /** Navigation items */
2808
+ items: SidebarItem[];
2809
+ /** User section content */
2810
+ userSection?: React__default.ReactNode;
2811
+ /** Footer content (e.g., theme toggle) */
2812
+ footerContent?: React__default.ReactNode;
2813
+ /** Collapsed state (controlled) */
2814
+ collapsed?: boolean;
2815
+ /** Default collapsed state */
2816
+ defaultCollapsed?: boolean;
2817
+ /** Callback when collapse state changes */
2818
+ onCollapseChange?: (collapsed: boolean) => void;
2819
+ /** Hide the collapse/expand button */
2820
+ hideCollapseButton?: boolean;
2821
+ /** Show a close button (for mobile) */
2822
+ showCloseButton?: boolean;
2823
+ /** Callback when close button is clicked */
2824
+ onClose?: () => void;
2825
+ /** Callback when logo/brand is clicked */
2826
+ onLogoClick?: () => void;
2827
+ /** Additional CSS classes */
2828
+ className?: string;
2829
+ }
2830
+ declare const Sidebar: React__default.FC<SidebarProps>;
2831
+
2832
+ /**
2833
+ * Split Component
2834
+ *
2835
+ * A two-column layout with configurable ratios.
2836
+ * Perfect for sidebar/content layouts or side-by-side comparisons.
2837
+ */
2838
+
2839
+ type SplitRatio = '1:1' | '1:2' | '2:1' | '1:3' | '3:1' | '1:4' | '4:1' | '2:3' | '3:2';
2840
+ type SplitGap = 'none' | 'sm' | 'md' | 'lg' | 'xl';
2841
+ interface SplitProps {
2842
+ /** Size ratio between left and right panels */
2843
+ ratio?: SplitRatio;
2844
+ /** Gap between panels */
2845
+ gap?: SplitGap;
2846
+ /** Reverse the order (right first) */
2847
+ reverse?: boolean;
2848
+ /** Stack vertically on mobile */
2849
+ stackOnMobile?: boolean;
2850
+ /** Breakpoint to switch from stacked to side-by-side */
2851
+ stackBreakpoint?: 'sm' | 'md' | 'lg' | 'xl';
2852
+ /** Align items vertically */
2853
+ align?: 'start' | 'center' | 'end' | 'stretch';
2854
+ /** Custom class name */
2855
+ className?: string;
2856
+ /** Left/first panel class name */
2857
+ leftClassName?: string;
2858
+ /** Right/second panel class name */
2859
+ rightClassName?: string;
2860
+ /** Exactly two children: [left, right] */
2861
+ children: [React__default.ReactNode, React__default.ReactNode];
2862
+ }
2863
+ /**
2864
+ * Split - Two-column layout with flexible ratios
2865
+ */
2866
+ declare const Split: React__default.FC<SplitProps>;
2867
+
2868
+ type SortDirection = "asc" | "desc" | null;
2869
+ interface TableColumn<T = any> {
2870
+ /**
2871
+ * Column key
2872
+ */
2873
+ key: string;
2874
+ /**
2875
+ * Column header label
2876
+ */
2877
+ label: string;
2878
+ /**
2879
+ * Sortable column
2880
+ * @default false
2881
+ */
2882
+ sortable?: boolean;
2883
+ /**
2884
+ * Custom cell renderer
2885
+ */
2886
+ render?: (value: any, row: T, index: number) => React__default.ReactNode;
2887
+ /**
2888
+ * Column width
2889
+ */
2890
+ width?: string;
2891
+ }
2892
+ interface TableProps<T = any> {
2893
+ /**
2894
+ * Table columns
2895
+ */
2896
+ columns: TableColumn<T>[];
2897
+ /**
2898
+ * Table entity data
2899
+ */
2900
+ entity: T[];
2901
+ /**
2902
+ * Row key getter
2903
+ */
2904
+ getRowKey: (row: T, index: number) => string;
2905
+ /**
2906
+ * Enable row selection
2907
+ * @default false
2908
+ */
2909
+ selectable?: boolean;
2910
+ /**
2911
+ * Selected row keys
2912
+ */
2913
+ selectedRows?: string[];
2914
+ /**
2915
+ * Callback when selection changes
2916
+ */
2917
+ onSelectionChange?: (selectedKeys: string[]) => void;
2918
+ /**
2919
+ * Enable sorting
2920
+ * @default false
2921
+ */
2922
+ sortable?: boolean;
2923
+ /**
2924
+ * Current sort column
2925
+ */
2926
+ sortColumn?: string;
2927
+ /**
2928
+ * Current sort direction
2929
+ */
2930
+ sortDirection?: SortDirection;
2931
+ /**
2932
+ * Callback when sort changes
2933
+ */
2934
+ onSortChange?: (column: string, direction: SortDirection) => void;
2935
+ /**
2936
+ * Enable search/filter
2937
+ * @default false
2938
+ */
2939
+ searchable?: boolean;
2940
+ /**
2941
+ * Search placeholder
2942
+ */
2943
+ searchPlaceholder?: string;
2944
+ /**
2945
+ * Enable pagination
2946
+ * @default false
2947
+ */
2948
+ paginated?: boolean;
2949
+ /**
2950
+ * Current page
2951
+ */
2952
+ currentPage?: number;
2953
+ /**
2954
+ * Total pages
2955
+ */
2956
+ totalPages?: number;
2957
+ /**
2958
+ * Callback when page changes
2959
+ */
2960
+ onPageChange?: (page: number) => void;
2961
+ /**
2962
+ * Row actions menu items
2963
+ */
2964
+ rowActions?: (row: T) => MenuItem[];
2965
+ /**
2966
+ * Empty state message
2967
+ */
2968
+ emptyMessage?: string;
2969
+ /**
2970
+ * Loading state
2971
+ * @default false
2972
+ */
2973
+ loading?: boolean;
2974
+ /**
2975
+ * Additional CSS classes
2976
+ */
2977
+ className?: string;
2978
+ }
2979
+ declare const Table: {
2980
+ <T extends Record<string, any>>({ columns, entity, getRowKey, selectable, selectedRows, onSelectionChange, sortable, sortColumn, sortDirection, onSortChange, searchable, searchPlaceholder, paginated, currentPage, totalPages, onPageChange, rowActions, emptyMessage, loading, className, }: TableProps<T>): react_jsx_runtime.JSX.Element;
2981
+ displayName: string;
2982
+ };
2983
+
2984
+ /**
2985
+ * List Organism Component
2986
+ *
2987
+ * A beautifully designed, scannable list view.
2988
+ *
2989
+ * Design inspiration: Linear, Notion, Apple Reminders
2990
+ * - Soft, harmonious color palette
2991
+ * - Refined typography with proper hierarchy
2992
+ * - Subtle shadows and depth
2993
+ * - Delightful hover micro-interactions
2994
+ * - Elegant status indicators
2995
+ *
2996
+ * Orbital Component Interface Compliance:
2997
+ * - Entity binding with auto-fetch when entity is a string
2998
+ * - Event emission via useEventBus (UI:* events)
2999
+ * - Event listening for UI:SEARCH and UI:CLEAR_SEARCH
3000
+ * - isLoading and error state props
3001
+ */
3002
+
3003
+ interface ListItem {
3004
+ id: string;
3005
+ title?: string;
3006
+ description?: string;
3007
+ icon?: LucideIcon;
3008
+ avatar?: {
3009
+ src?: string;
3010
+ alt?: string;
3011
+ initials?: string;
3012
+ };
3013
+ badge?: string | number;
3014
+ metadata?: React__default.ReactNode;
3015
+ onClick?: () => void;
3016
+ disabled?: boolean;
3017
+ completed?: boolean;
3018
+ [key: string]: unknown;
3019
+ _fields?: Record<string, unknown>;
3020
+ }
3021
+ interface SchemaItemAction {
3022
+ label: string;
3023
+ /** Event to dispatch on click */
3024
+ event?: string;
3025
+ navigatesTo?: string;
3026
+ /** Action placement - accepts all common placement values */
3027
+ placement?: "row" | "bulk" | "card" | "footer" | string;
3028
+ action?: string;
3029
+ variant?: "primary" | "secondary" | "ghost" | "danger" | "default";
3030
+ /** Click handler from generated code */
3031
+ onClick?: (row: unknown) => void;
3032
+ }
3033
+ /**
3034
+ * Field definition - can be a simple string or object with key/header
3035
+ */
3036
+ type FieldDef$1 = string | {
3037
+ key: string;
3038
+ header?: string;
3039
+ };
3040
+ interface ListProps {
3041
+ /** Entity name for auto-fetch OR data array (backwards compatible) */
3042
+ entity?: ListItem[] | readonly {
3043
+ id: string;
3044
+ }[] | readonly unknown[] | string;
3045
+ /** Data array - primary prop for data */
3046
+ data?: ListItem[] | readonly {
3047
+ id: string;
3048
+ }[] | readonly unknown[] | unknown;
3049
+ /** Entity type name for display */
3050
+ type?: string;
3051
+ /** Loading state */
3052
+ isLoading?: boolean;
3053
+ /** Error state */
3054
+ error?: Error | null;
3055
+ selectable?: boolean;
3056
+ selectedItems?: readonly string[];
3057
+ onSelectionChange?: (selectedIds: string[]) => void;
3058
+ /** Item actions - schema-driven or function-based */
3059
+ itemActions?: ((item: ListItem) => MenuItem[]) | readonly SchemaItemAction[];
3060
+ showDividers?: boolean;
3061
+ variant?: "default" | "card";
3062
+ emptyMessage?: string;
3063
+ className?: string;
3064
+ renderItem?: (item: ListItem, index: number) => React__default.ReactNode;
3065
+ children?: React__default.ReactNode;
3066
+ onItemAction?: (action: string, item: ListItem, index: number) => void;
3067
+ onRowClick?: (item: ListItem) => void;
3068
+ /** Fields to display - accepts string[] or {key, header}[] for unified interface */
3069
+ fields?: readonly FieldDef$1[];
3070
+ /** Alias for fields - backwards compatibility */
3071
+ fieldNames?: readonly string[];
3072
+ /**
3073
+ * Query singleton binding for filter/sort state.
3074
+ * When provided, syncs with the query singleton for filtering and sorting.
3075
+ * Example: "@TaskQuery"
3076
+ */
3077
+ query?: string;
3078
+ }
3079
+ declare const List: React__default.FC<ListProps>;
3080
+
3081
+ /**
3082
+ * CardGrid Component
3083
+ *
3084
+ * A responsive grid specifically designed for card layouts.
3085
+ * Uses CSS Grid auto-fit for automatic responsive columns.
3086
+ *
3087
+ * When `entity` prop is provided without `data`, automatically fetches data
3088
+ * using the useEntityList hook. Supports server-side pagination and search.
3089
+ */
3090
+
3091
+ type CardGridGap = 'none' | 'sm' | 'md' | 'lg' | 'xl';
3092
+ /**
3093
+ * Action configuration for card items (schema-driven)
3094
+ */
3095
+ interface CardItemAction {
3096
+ /** Action button label */
3097
+ label: string;
3098
+ /** Event to dispatch on click (schema metadata) */
3099
+ event?: string;
3100
+ /** Navigation URL - supports template interpolation like "/products/{{row.id}}" */
3101
+ navigatesTo?: string;
3102
+ /** Callback on click */
3103
+ onClick?: (item: unknown) => void;
3104
+ /** Action used by generated code - alternative to event */
3105
+ action?: string;
3106
+ /** Action placement - accepts string for compatibility with generated code */
3107
+ placement?: 'card' | 'footer' | 'row' | string;
3108
+ /** Button variant - accepts string for compatibility with generated code */
3109
+ variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | string;
3110
+ }
3111
+ /**
3112
+ * Field definition - can be a simple string or object with key/header
3113
+ */
3114
+ type FieldDef = string | {
3115
+ key: string;
3116
+ header?: string;
3117
+ };
3118
+ interface CardGridProps {
3119
+ /** Minimum width of each card (default: 280px) */
3120
+ minCardWidth?: number;
3121
+ /** Maximum number of columns */
3122
+ maxCols?: 1 | 2 | 3 | 4 | 5 | 6;
3123
+ /** Gap between cards */
3124
+ gap?: CardGridGap;
3125
+ /** Align cards vertically in their cells */
3126
+ alignItems?: 'start' | 'center' | 'end' | 'stretch';
3127
+ /** Custom class name */
3128
+ className?: string;
3129
+ /** Children elements (cards) - optional when using entity/data props */
3130
+ children?: React__default.ReactNode;
3131
+ /** Entity type for data-bound usage */
3132
+ entity?: string;
3133
+ /** Fields to display - accepts string[] or {key, header}[] for unified interface */
3134
+ fields?: readonly FieldDef[];
3135
+ /** Alias for fields - backwards compatibility */
3136
+ fieldNames?: readonly string[];
3137
+ /** Alias for fields - backwards compatibility */
3138
+ columns?: readonly FieldDef[];
3139
+ /** Data array for data-bound usage - accepts readonly for generated const arrays */
3140
+ data?: readonly unknown[] | unknown;
3141
+ /** Loading state indicator */
3142
+ isLoading?: boolean;
3143
+ /** Error state */
3144
+ error?: Error | null;
3145
+ /** Actions for each card item (schema-driven) */
3146
+ itemActions?: readonly CardItemAction[];
3147
+ /** Callback when a card is clicked */
3148
+ onCardClick?: (item: unknown) => void;
3149
+ /** Enable server-side pagination */
3150
+ enablePagination?: boolean;
3151
+ /** Items per page (default: 20) */
3152
+ pageSize?: number;
3153
+ /** Show total count in pagination */
3154
+ showTotal?: boolean;
3155
+ /** Filter configuration for entity data */
3156
+ filter?: {
3157
+ field: string;
3158
+ value?: string;
3159
+ };
3160
+ /**
3161
+ * Query singleton binding for filter/sort state.
3162
+ * When provided, syncs with the query singleton for filtering and sorting.
3163
+ * Example: "@TaskQuery"
3164
+ */
3165
+ query?: string;
3166
+ }
3167
+ /**
3168
+ * CardGrid - Responsive card collection layout
3169
+ *
3170
+ * Can be used in two ways:
3171
+ * 1. With children: <CardGrid><Card>...</Card></CardGrid>
3172
+ * 2. With data: <CardGrid entity="Task" fieldNames={['title']} data={tasks} />
3173
+ *
3174
+ * Supports server-side pagination when enablePagination is true.
3175
+ */
3176
+ declare const CardGrid: React__default.FC<CardGridProps>;
3177
+
3178
+ /**
3179
+ * MasterDetail Component
3180
+ *
3181
+ * A layout pattern that shows a list/table of entities.
3182
+ * This is a thin wrapper around DataTable that accepts master-detail specific props.
3183
+ *
3184
+ * When `entity` prop is provided without `data`, automatically fetches data
3185
+ * using the useEntityList hook.
3186
+ *
3187
+ * The "detail" part is typically rendered separately via another render_ui effect
3188
+ * to a sidebar or detail panel when an item is selected.
3189
+ */
3190
+
3191
+ interface MasterDetailProps<T extends {
3192
+ id: string | number;
3193
+ } = {
3194
+ id: string | number;
3195
+ }> {
3196
+ /** Entity type name - when provided without data, auto-fetches from API */
3197
+ entity?: string;
3198
+ /** Fields to show in the master list (maps to DataTable columns) */
3199
+ masterFields?: readonly string[];
3200
+ /** Fields for detail view (passed through but typically handled by separate render_ui) */
3201
+ detailFields?: readonly string[];
3202
+ /** Data array - if not provided and entity is set, data is auto-fetched */
3203
+ data?: readonly T[] | T[];
3204
+ /** Loading state */
3205
+ loading?: boolean;
3206
+ /** Loading state alias */
3207
+ isLoading?: boolean;
3208
+ /** Error state */
3209
+ error?: Error | null;
3210
+ /** Row click handler */
3211
+ onRowClick?: (row: T) => void;
3212
+ /** Selection change handler */
3213
+ onSelectionChange?: (ids: (string | number)[]) => void;
3214
+ /** Additional class name */
3215
+ className?: string;
3216
+ }
3217
+ declare function MasterDetail<T extends {
3218
+ id: string | number;
3219
+ }>({ entity, masterFields, detailFields: _detailFields, // Captured but not used here - detail handled separately
3220
+ data: externalData, loading: externalLoading, isLoading: externalIsLoading, error: externalError, onRowClick, onSelectionChange, className, ...rest }: MasterDetailProps<T>): React__default.ReactElement;
3221
+ declare namespace MasterDetail {
3222
+ var displayName: string;
3223
+ }
3224
+
3225
+ /**
3226
+ * ConfirmDialog Component
3227
+ *
3228
+ * Confirmation dialog for destructive or important actions.
3229
+ * Composes Modal molecule with Button atoms.
3230
+ *
3231
+ * Uses wireframe theme styling (high contrast, sharp edges).
3232
+ */
3233
+
3234
+ type ConfirmDialogVariant = "danger" | "warning" | "info" | "default";
3235
+ interface ConfirmDialogProps {
3236
+ /** Whether the dialog is open (defaults to true when rendered by slot wrapper) */
3237
+ isOpen?: boolean;
3238
+ /** Callback when dialog is closed (injected by slot wrapper) */
3239
+ onClose?: () => void;
3240
+ /** Callback when action is confirmed (injected by slot wrapper) */
3241
+ onConfirm?: () => void;
3242
+ /** Dialog title */
3243
+ title: string;
3244
+ /** Dialog message/description */
3245
+ message?: string | React__default.ReactNode;
3246
+ /** Alias for message (schema compatibility) */
3247
+ description?: string | React__default.ReactNode;
3248
+ /** Confirm button text */
3249
+ confirmText?: string;
3250
+ /** Alias for confirmText (schema compatibility) */
3251
+ confirmLabel?: string;
3252
+ /** Cancel button text */
3253
+ cancelText?: string;
3254
+ /** Alias for cancelText (schema compatibility) */
3255
+ cancelLabel?: string;
3256
+ /** Dialog variant */
3257
+ variant?: ConfirmDialogVariant;
3258
+ /** Dialog size */
3259
+ size?: ModalSize;
3260
+ /** Loading state for confirm button */
3261
+ isLoading?: boolean;
3262
+ /** Additional CSS classes */
3263
+ className?: string;
3264
+ }
3265
+ /**
3266
+ * ConfirmDialog - Confirmation dialog for important actions
3267
+ */
3268
+ declare const ConfirmDialog: React__default.FC<ConfirmDialogProps>;
3269
+
3270
+ /**
3271
+ * WizardContainer Component
3272
+ *
3273
+ * Multi-step wizard pattern with progress indicator.
3274
+ * Composes Box, Typography, and Button atoms.
3275
+ *
3276
+ * Uses wireframe theme styling (high contrast, sharp edges).
3277
+ */
3278
+
3279
+ /** Form field definition for wizard sections */
3280
+ interface WizardField {
3281
+ id: string;
3282
+ type: string;
3283
+ label?: string;
3284
+ required?: boolean;
3285
+ repeatable?: boolean;
3286
+ options?: Array<{
3287
+ value: string;
3288
+ label: string;
3289
+ isDefault?: boolean;
3290
+ }>;
3291
+ defaultValue?: unknown;
3292
+ condition?: unknown[];
3293
+ placeholder?: string;
3294
+ entityField?: string;
3295
+ minLength?: number;
3296
+ maxLength?: number;
3297
+ dataSource?: Record<string, unknown>;
3298
+ displayFields?: string[];
3299
+ searchConfig?: Record<string, unknown>;
3300
+ hiddenCalculations?: Array<{
3301
+ variable: string;
3302
+ expression: unknown;
3303
+ scope?: string;
3304
+ }>;
3305
+ signatureConfig?: Record<string, unknown>;
3306
+ displayTemplate?: Record<string, unknown>;
3307
+ lawReference?: Record<string, unknown>;
3308
+ contextMenu?: string[];
3309
+ calculated?: Record<string, unknown>;
3310
+ readOnly?: boolean;
3311
+ minDate?: unknown;
3312
+ stats?: Array<{
3313
+ label: string;
3314
+ value: unknown;
3315
+ icon?: string;
3316
+ }>;
3317
+ items?: Array<{
3318
+ id: string;
3319
+ label: string;
3320
+ autoCheck?: unknown;
3321
+ }>;
3322
+ [key: string]: unknown;
3323
+ }
3324
+ /** Section within a wizard step */
3325
+ interface WizardSection {
3326
+ id: string;
3327
+ title?: string;
3328
+ description?: string;
3329
+ fields?: WizardField[];
3330
+ subsections?: WizardSection[];
3331
+ condition?: unknown[];
3332
+ repeatable?: boolean;
3333
+ minItems?: number;
3334
+ addButtonLabel?: string;
3335
+ hiddenCalculations?: Array<{
3336
+ variable: string;
3337
+ expression: unknown;
3338
+ scope?: string;
3339
+ }>;
3340
+ dataSource?: Record<string, unknown>;
3341
+ readOnly?: boolean;
3342
+ [key: string]: unknown;
3343
+ }
3344
+ /** Entity mapping configuration */
3345
+ interface WizardEntityMapping {
3346
+ entity: string;
3347
+ mode: "search_or_create" | "create_multiple" | "select_one" | "update" | string;
3348
+ parentField?: string;
3349
+ idField?: string;
3350
+ [key: string]: unknown;
3351
+ }
3352
+ /** Validation rule for wizard steps */
3353
+ interface WizardValidationRule {
3354
+ condition: unknown[];
3355
+ message: string;
3356
+ }
3357
+ /** Law reference for compliance */
3358
+ interface WizardLawReference {
3359
+ law: string;
3360
+ article: string;
3361
+ description?: string;
3362
+ }
3363
+ interface WizardStep {
3364
+ /** Step identifier */
3365
+ id?: string;
3366
+ /** Tab identifier (schema-driven) */
3367
+ tabId?: string;
3368
+ /** Step title */
3369
+ title?: string;
3370
+ /** Step name (schema-driven, used as title if title not provided) */
3371
+ name?: string;
3372
+ /** Step description (optional) */
3373
+ description?: string;
3374
+ /** Step content (React component mode) */
3375
+ content?: React__default.ReactNode;
3376
+ /** Whether this step can be skipped */
3377
+ optional?: boolean;
3378
+ /** Custom validation for this step */
3379
+ isValid?: () => boolean;
3380
+ /** Form sections within this step */
3381
+ sections?: WizardSection[];
3382
+ /** Global variables required before entering this step */
3383
+ globalVariablesRequired?: string[];
3384
+ /** Global variables set by this step */
3385
+ globalVariablesSet?: string[];
3386
+ /** Local variables scoped to this step */
3387
+ localVariables?: string[];
3388
+ /** Entity mapping configuration */
3389
+ entityMapping?: WizardEntityMapping;
3390
+ /** Validation rules for this step */
3391
+ validationRules?: WizardValidationRule[];
3392
+ /** Law references for compliance */
3393
+ lawReferences?: WizardLawReference[];
3394
+ /** Phase of the inspection process */
3395
+ phase?: string;
3396
+ /** Context menu actions */
3397
+ contextMenu?: string[];
3398
+ /** Allow additional properties from schema */
3399
+ [key: string]: unknown;
3400
+ }
3401
+ interface WizardContainerProps {
3402
+ /** Wizard steps */
3403
+ steps: WizardStep[];
3404
+ /** Current step index (controlled) - accepts unknown for generated code compatibility */
3405
+ currentStep?: number | string | unknown;
3406
+ /** Callback when step changes */
3407
+ onStepChange?: (stepIndex: number) => void;
3408
+ /** Callback when wizard is completed */
3409
+ onComplete?: () => void;
3410
+ /** Show progress indicator */
3411
+ showProgress?: boolean;
3412
+ /** Allow navigation to previous steps */
3413
+ allowBack?: boolean;
3414
+ /** Modal mode (compact header, no padding) */
3415
+ compact?: boolean;
3416
+ /** Additional CSS classes */
3417
+ className?: string;
3418
+ /** Entity type name (schema-driven) */
3419
+ entity?: string;
3420
+ }
3421
+ /**
3422
+ * WizardContainer - Multi-step wizard
3423
+ */
3424
+ declare const WizardContainer: React__default.FC<WizardContainerProps>;
3425
+
3426
+ /**
3427
+ * OrbitalVisualization Component
3428
+ *
3429
+ * Visualizes KFlow schemas as atomic orbitals based on complexity.
3430
+ * Uses CSS 3D transforms for lightweight rendering without Three.js.
3431
+ *
3432
+ * Orbital Types (based on complexity score):
3433
+ * - 1s (1-3): Simple sphere - Red
3434
+ * - 2s (4-8): Larger sphere - Orange
3435
+ * - 2p (9-15): Dumbbell shape - Yellow
3436
+ * - 3s (16-25): Sphere with node - Green
3437
+ * - 3p (26-40): Complex dumbbell - Blue
3438
+ * - 3d (41-60): Cloverleaf - Indigo
3439
+ * - 4f (61+): Multi-lobe - Violet
3440
+ */
3441
+
3442
+ interface OrbitalVisualizationProps {
3443
+ /** Full KFlow schema object */
3444
+ schema?: {
3445
+ dataEntities?: unknown[];
3446
+ ui?: {
3447
+ pages?: {
3448
+ sections?: unknown[];
3449
+ }[];
3450
+ };
3451
+ traits?: unknown[];
3452
+ };
3453
+ /** Direct complexity override (1-100+) */
3454
+ complexity?: number;
3455
+ /** Size of the visualization */
3456
+ size?: "sm" | "md" | "lg" | "xl";
3457
+ /** Show complexity label */
3458
+ showLabel?: boolean;
3459
+ /** Animation enabled */
3460
+ animated?: boolean;
3461
+ /** Click handler */
3462
+ onClick?: () => void;
3463
+ /** Additional CSS classes */
3464
+ className?: string;
3465
+ }
3466
+ declare const OrbitalVisualization: React__default.FC<OrbitalVisualizationProps>;
3467
+
3468
+ /**
3469
+ * SplitPane Component
3470
+ *
3471
+ * Two-pane resizable split layout for master-detail views,
3472
+ * dual-pane editors, and code + preview layouts.
3473
+ *
3474
+ * Uses wireframe theme styling (high contrast, sharp edges).
3475
+ */
3476
+
3477
+ interface SplitPaneProps {
3478
+ /** Direction of the split */
3479
+ direction?: "horizontal" | "vertical";
3480
+ /** Initial ratio (0-100, percentage of first pane) */
3481
+ ratio?: number;
3482
+ /** Minimum size of either pane in pixels */
3483
+ minSize?: number;
3484
+ /** Allow user resizing */
3485
+ resizable?: boolean;
3486
+ /** Content for the left/top pane */
3487
+ left: React__default.ReactNode;
3488
+ /** Content for the right/bottom pane */
3489
+ right: React__default.ReactNode;
3490
+ /** Additional CSS classes */
3491
+ className?: string;
3492
+ /** Class for left/top pane */
3493
+ leftClassName?: string;
3494
+ /** Class for right/bottom pane */
3495
+ rightClassName?: string;
3496
+ }
3497
+ /**
3498
+ * SplitPane - Two-pane resizable layout
3499
+ */
3500
+ declare const SplitPane: React__default.FC<SplitPaneProps>;
3501
+
3502
+ /**
3503
+ * DashboardGrid Component
3504
+ *
3505
+ * Multi-column grid for widgets and stats cards.
3506
+ * Supports cell spanning for flexible dashboard layouts.
3507
+ *
3508
+ * Uses wireframe theme styling (high contrast, sharp edges).
3509
+ */
3510
+
3511
+ interface DashboardGridCell {
3512
+ /** Unique cell ID */
3513
+ id: string;
3514
+ /** Content to render in the cell */
3515
+ content: React__default.ReactNode;
3516
+ /** Number of columns this cell spans (1-4) */
3517
+ colSpan?: 1 | 2 | 3 | 4;
3518
+ /** Number of rows this cell spans (1-2) */
3519
+ rowSpan?: 1 | 2;
3520
+ }
3521
+ interface DashboardGridProps {
3522
+ /** Number of columns */
3523
+ columns?: 2 | 3 | 4;
3524
+ /** Gap between cells */
3525
+ gap?: "sm" | "md" | "lg";
3526
+ /** Cell definitions */
3527
+ cells: DashboardGridCell[];
3528
+ /** Additional CSS classes */
3529
+ className?: string;
3530
+ }
3531
+ /**
3532
+ * DashboardGrid - Multi-column widget grid
3533
+ */
3534
+ declare const DashboardGrid: React__default.FC<DashboardGridProps>;
3535
+
3536
+ /**
3537
+ * TabbedContainer Component
3538
+ *
3539
+ * Tabbed content areas with shared header/context.
3540
+ * Wraps the Tabs molecule with layout-specific styling.
3541
+ *
3542
+ * Uses wireframe theme styling (high contrast, sharp edges).
3543
+ */
3544
+
3545
+ interface TabDefinition {
3546
+ /** Tab identifier */
3547
+ id: string;
3548
+ /** Tab label */
3549
+ label: string;
3550
+ /** Tab content (optional if using sectionId) */
3551
+ content?: React__default.ReactNode;
3552
+ /** Section ID to render (alternative to content) */
3553
+ sectionId?: string;
3554
+ /** Optional badge/count */
3555
+ badge?: string | number;
3556
+ /** Disable this tab */
3557
+ disabled?: boolean;
3558
+ }
3559
+ interface TabbedContainerProps {
3560
+ /** Tab definitions */
3561
+ tabs: TabDefinition[];
3562
+ /** Default active tab ID */
3563
+ defaultTab?: string;
3564
+ /** Controlled active tab */
3565
+ activeTab?: string;
3566
+ /** Callback when tab changes */
3567
+ onTabChange?: (tabId: string) => void;
3568
+ /** Tab position */
3569
+ position?: "top" | "left";
3570
+ /** Additional CSS classes */
3571
+ className?: string;
3572
+ }
3573
+ /**
3574
+ * TabbedContainer - Tabbed content areas
3575
+ */
3576
+ declare const TabbedContainer: React__default.FC<TabbedContainerProps>;
3577
+
3578
+ /**
3579
+ * Game entity with position and rendering data
3580
+ */
3581
+ interface GameEntity extends Entity {
3582
+ x: number;
3583
+ y: number;
3584
+ vx?: number;
3585
+ vy?: number;
3586
+ width?: number;
3587
+ height?: number;
3588
+ layer?: number;
3589
+ sprite?: string;
3590
+ color?: string;
3591
+ rotation?: number;
3592
+ scale?: number;
3593
+ visible?: boolean;
3594
+ collider?: {
3595
+ width: number;
3596
+ height: number;
3597
+ offsetX?: number;
3598
+ offsetY?: number;
3599
+ };
3600
+ }
3601
+ /**
3602
+ * Entity renderer function type
3603
+ */
3604
+ type EntityRenderer = (ctx: CanvasRenderingContext2D, entity: GameEntity) => void;
3605
+ /** Input key bindings - supports both field-based and event-based formats */
3606
+ interface InputBinding$1 {
3607
+ key: string;
3608
+ /** Direct field mapping (e.g., 'left', 'right', 'jump') */
3609
+ field?: 'left' | 'right' | 'jump' | 'attack';
3610
+ /** Event-based mapping (e.g., 'MOVE_LEFT', 'JUMP') - mapped to fields */
3611
+ event?: string;
3612
+ /** Whether to hold the input (continuous) or trigger once */
3613
+ hold?: boolean;
3614
+ }
3615
+ /** Collision definition from schema */
3616
+ interface CollisionDef {
3617
+ /** Entity types that collide [typeA, typeB] */
3618
+ between: [string, string];
3619
+ /** Collision type: 'solid' resolves overlap, 'trigger' emits event */
3620
+ type: 'solid' | 'trigger';
3621
+ /** Event to emit for trigger collisions */
3622
+ emits?: string;
3623
+ }
3624
+ interface GameCanvasProps {
3625
+ /** Entity type names to render (optional filter) */
3626
+ renderEntities?: string[];
3627
+ /** Rendering functions per entity type */
3628
+ renderers?: Record<string, EntityRenderer>;
3629
+ /**
3630
+ * Renderer type hint from schema (e.g., 'phaser', 'canvas').
3631
+ * Currently ignored - component uses Canvas2D.
3632
+ * Reserved for future multi-renderer support.
3633
+ */
3634
+ renderer?: string;
3635
+ /** Background color or gradient */
3636
+ background?: string;
3637
+ /** Canvas width in pixels or 'full' for responsive */
3638
+ width?: number | 'full';
3639
+ /** Canvas height in pixels or 'auto' for aspect ratio */
3640
+ height?: number | 'auto';
3641
+ /** Aspect ratio (e.g., '16:9', '4:3') */
3642
+ aspectRatio?: string;
3643
+ /** Camera offset for scrolling */
3644
+ cameraOffset?: {
3645
+ x: number;
3646
+ y: number;
3647
+ };
3648
+ /** Debug mode shows hitboxes and entity info */
3649
+ debug?: boolean;
3650
+ /** Additional CSS classes */
3651
+ className?: string;
3652
+ /** Click handler for canvas */
3653
+ onClick?: (x: number, y: number, entity?: GameEntity) => void;
3654
+ /** Enable keyboard input handling (updates Input entity) */
3655
+ enableInput?: boolean;
3656
+ /** Custom input key bindings */
3657
+ inputBindings?: InputBinding$1[];
3658
+ /** Collision definitions from schema */
3659
+ collisions?: CollisionDef[];
3660
+ /** Event bus for emitting collision events */
3661
+ eventBus?: {
3662
+ emit: (event: string, payload?: unknown) => void;
3663
+ };
3664
+ }
3665
+ declare function GameCanvas({ renderEntities, renderers, background, width, height, aspectRatio, cameraOffset, debug, className, onClick, enableInput, inputBindings, collisions, eventBus, }: GameCanvasProps): react_jsx_runtime.JSX.Element;
3666
+ declare namespace GameCanvas {
3667
+ var displayName: string;
3668
+ }
3669
+
3670
+ interface StatBadgeProps {
3671
+ /** Stat label */
3672
+ label: string;
3673
+ /** Current value (defaults to 0 if not provided) */
3674
+ value?: number | string;
3675
+ /** Maximum value (for bar/hearts format) */
3676
+ max?: number;
3677
+ /** Data source entity name (for schema config) */
3678
+ source?: string;
3679
+ /** Field name in the source (for schema config) */
3680
+ field?: string;
3681
+ /** Display format */
3682
+ format?: 'number' | 'hearts' | 'bar' | 'text' | string;
3683
+ /** Icon component or emoji */
3684
+ icon?: React.ReactNode;
3685
+ /** Size variant */
3686
+ size?: 'sm' | 'md' | 'lg' | string;
3687
+ /** Visual variant */
3688
+ variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | string;
3689
+ /** Additional CSS classes */
3690
+ className?: string;
3691
+ }
3692
+
3693
+ interface GameHudStat extends Omit<StatBadgeProps, "size"> {
3694
+ /** Data source entity name */
3695
+ source?: string;
3696
+ /** Field name in the source */
3697
+ field?: string;
3698
+ }
3699
+ /**
3700
+ * Schema-style HUD element definition.
3701
+ * Used when elements are passed from schema render_ui effects.
3702
+ */
3703
+ interface GameHudElement {
3704
+ type: string;
3705
+ bind?: string;
3706
+ position?: string;
3707
+ label?: string;
3708
+ }
3709
+ interface GameHudProps {
3710
+ /** Position of the HUD */
3711
+ position?: "top" | "bottom" | "corners" | string;
3712
+ /** Stats to display - accepts readonly for compatibility with generated const arrays */
3713
+ stats?: readonly GameHudStat[];
3714
+ /** Alias for stats (schema compatibility) */
3715
+ items?: readonly GameHudStat[];
3716
+ /**
3717
+ * Schema-style elements array (alternative to stats).
3718
+ * Converted to stats internally for backwards compatibility.
3719
+ */
3720
+ elements?: readonly GameHudElement[];
3721
+ /** Size variant */
3722
+ size?: "sm" | "md" | "lg";
3723
+ /** Additional CSS classes */
3724
+ className?: string;
3725
+ /** Whether to use a semi-transparent background */
3726
+ transparent?: boolean;
3727
+ }
3728
+ declare function GameHud({ position: propPosition, stats: propStats, items, elements, size, className, transparent, }: GameHudProps): react_jsx_runtime.JSX.Element;
3729
+ declare namespace GameHud {
3730
+ var displayName: string;
3731
+ }
3732
+
3733
+ interface GameControl {
3734
+ /** Unique identifier */
3735
+ id?: string;
3736
+ /** Alias for id (schema compatibility) */
3737
+ key?: string;
3738
+ /** Event to emit on press */
3739
+ event: string;
3740
+ /** Display label */
3741
+ label?: string;
3742
+ /** Icon component or emoji */
3743
+ icon?: React.ReactNode;
3744
+ /** Button variant */
3745
+ variant?: "primary" | "secondary" | "ghost" | string;
3746
+ }
3747
+ interface GameControlsProps {
3748
+ /** Control layout type */
3749
+ layout: "dpad" | "joystick" | "buttons" | "custom" | string;
3750
+ /** Position on screen */
3751
+ position: "bottom-left" | "bottom-right" | "bottom-center" | "split" | string;
3752
+ /** Controls to display - accepts readonly for compatibility with generated const arrays */
3753
+ controls?: readonly GameControl[];
3754
+ /** Called when control is pressed/released */
3755
+ onControl?: (event: string, pressed: boolean) => void;
3756
+ /** Size variant */
3757
+ size?: "sm" | "md" | "lg";
3758
+ /** Additional CSS classes */
3759
+ className?: string;
3760
+ /** Whether controls are visible */
3761
+ visible?: boolean;
3762
+ /** Opacity when visible */
3763
+ opacity?: number;
3764
+ }
3765
+ declare function GameControls({ layout, position, controls, onControl, size, className, visible, opacity, }: GameControlsProps): react_jsx_runtime.JSX.Element | null;
3766
+ declare namespace GameControls {
3767
+ var displayName: string;
3768
+ }
3769
+
3770
+ interface MenuOption {
3771
+ /** Optional ID (generated from index if not provided) */
3772
+ id?: string;
3773
+ /** Display label */
3774
+ label: string;
3775
+ /** Event to emit on click */
3776
+ event?: string;
3777
+ /** Page to navigate to */
3778
+ navigatesTo?: string;
3779
+ /** Button variant */
3780
+ variant?: "primary" | "secondary" | "ghost" | string;
3781
+ /** Whether the option is disabled */
3782
+ disabled?: boolean;
3783
+ /** Sub-label or description */
3784
+ subLabel?: string;
3785
+ /** Action identifier (alternative to event) */
3786
+ action?: string;
3787
+ }
3788
+ interface GameMenuProps {
3789
+ /** Menu title */
3790
+ title: string;
3791
+ /** Optional subtitle or version */
3792
+ subtitle?: string;
3793
+ /** Menu options - accepts readonly for compatibility with generated const arrays */
3794
+ options?: readonly MenuOption[];
3795
+ /** Alias for options (schema compatibility) */
3796
+ menuItems?: readonly MenuOption[];
3797
+ /** Called when an option is selected (legacy callback, prefer event bus) */
3798
+ onSelect?: (option: MenuOption) => void;
3799
+ /** Event bus for emitting UI events (optional, uses hook if not provided) */
3800
+ eventBus?: EventBusContextType;
3801
+ /** Background image or gradient */
3802
+ background?: string;
3803
+ /** Logo image URL */
3804
+ logo?: string;
3805
+ /** Additional CSS classes */
3806
+ className?: string;
3807
+ }
3808
+ declare function GameMenu({ title, subtitle, options, menuItems, onSelect, eventBus: eventBusProp, background, logo, className, }: GameMenuProps): react_jsx_runtime.JSX.Element;
3809
+ declare namespace GameMenu {
3810
+ var displayName: string;
3811
+ }
3812
+
3813
+ interface PauseOption {
3814
+ /** Display label */
3815
+ label: string;
3816
+ /** Event to emit on click */
3817
+ event?: string;
3818
+ /** Page to navigate to */
3819
+ navigatesTo?: string;
3820
+ /** Button variant */
3821
+ variant?: "primary" | "secondary" | "ghost" | "destructive";
3822
+ }
3823
+ interface GamePauseOverlayProps {
3824
+ /** Pause menu options */
3825
+ options?: PauseOption[];
3826
+ /** Alias for options (schema compatibility) */
3827
+ menuItems?: PauseOption[];
3828
+ /** Called when an option is selected (legacy callback, prefer event bus) */
3829
+ onSelect?: (option: PauseOption) => void;
3830
+ /** Event bus for emitting UI events (optional, uses hook if not provided) */
3831
+ eventBus?: EventBusContextType;
3832
+ /** Title (default: "PAUSED") */
3833
+ title?: string;
3834
+ /** Additional CSS classes */
3835
+ className?: string;
3836
+ /** Whether the pause menu is visible */
3837
+ visible?: boolean;
3838
+ /** Called when clicking outside the menu */
3839
+ onDismiss?: () => void;
3840
+ }
3841
+ declare function GamePauseOverlay({ options, menuItems, onSelect, eventBus: eventBusProp, title, className, visible, onDismiss, }: GamePauseOverlayProps): react_jsx_runtime.JSX.Element | null;
3842
+ declare namespace GamePauseOverlay {
3843
+ var displayName: string;
3844
+ }
3845
+
3846
+ interface GameOverStat {
3847
+ /** Stat label */
3848
+ label: string;
3849
+ /** Stat value (required if bind is not provided) */
3850
+ value?: number | string;
3851
+ /**
3852
+ * Schema-style data binding (e.g., "player.score").
3853
+ * Alternative to value - used when stats come from schema render_ui effects.
3854
+ * Component will display 0 as placeholder since runtime binding is not implemented.
3855
+ */
3856
+ bind?: string;
3857
+ /** Display format */
3858
+ format?: "number" | "time" | "text";
3859
+ /** Icon */
3860
+ icon?: React.ReactNode;
3861
+ }
3862
+ interface GameOverAction {
3863
+ /** Display label */
3864
+ label: string;
3865
+ /** Event to emit on click */
3866
+ event?: string;
3867
+ /** Page to navigate to */
3868
+ navigatesTo?: string;
3869
+ /** Button variant */
3870
+ variant?: "primary" | "secondary" | "ghost";
3871
+ }
3872
+ interface GameOverScreenProps {
3873
+ /** Screen title (e.g., "Game Over", "Victory!") */
3874
+ title: string;
3875
+ /** Optional message */
3876
+ message?: string;
3877
+ /** Stats to display */
3878
+ stats?: GameOverStat[];
3879
+ /** Action buttons */
3880
+ actions?: GameOverAction[];
3881
+ /** Alias for actions (schema compatibility) */
3882
+ menuItems?: GameOverAction[];
3883
+ /** Called when an action is selected (legacy callback, prefer event bus) */
3884
+ onAction?: (action: GameOverAction) => void;
3885
+ /** Event bus for emitting UI events (optional, uses hook if not provided) */
3886
+ eventBus?: EventBusContextType;
3887
+ /** Victory or defeat variant */
3888
+ variant?: "victory" | "defeat" | "neutral";
3889
+ /** High score (optional, shows "NEW HIGH SCORE!" if exceeded) */
3890
+ highScore?: number | string;
3891
+ /** Current score for high score comparison (accepts string for schema bindings) */
3892
+ currentScore?: number | string;
3893
+ /** Additional CSS classes */
3894
+ className?: string;
3895
+ }
3896
+ declare function GameOverScreen({ title, message, stats, actions, menuItems, onAction, eventBus: eventBusProp, variant, highScore, currentScore, className, }: GameOverScreenProps): react_jsx_runtime.JSX.Element;
3897
+ declare namespace GameOverScreen {
3898
+ var displayName: string;
3899
+ }
3900
+
3901
+ interface LevelData {
3902
+ /** Unique level identifier */
3903
+ id: string;
3904
+ /** Level ID (alternative to id) */
3905
+ levelId?: string;
3906
+ /** Level number */
3907
+ number?: number;
3908
+ /** Level name/title */
3909
+ name?: string;
3910
+ /** Stars earned (0-3) */
3911
+ stars?: number;
3912
+ /** Difficulty level */
3913
+ difficulty?: 'easy' | 'medium' | 'hard' | string;
3914
+ /** Whether the level is locked */
3915
+ isLocked?: boolean;
3916
+ /** Best score on this level */
3917
+ bestScore?: number;
3918
+ /** Thumbnail image URL */
3919
+ thumbnail?: string;
3920
+ /** Allow additional properties from schema */
3921
+ [key: string]: unknown;
3922
+ }
3923
+ interface LevelFieldDisplay {
3924
+ /** Field name */
3925
+ field?: string;
3926
+ /** Display type */
3927
+ display?: 'title' | 'number' | 'stars' | 'locked' | 'thumbnail' | string;
3928
+ }
3929
+ interface LevelSelectProps {
3930
+ /** Level data */
3931
+ levels?: LevelData[];
3932
+ /** Entity name (schema config) */
3933
+ entity?: string;
3934
+ /** Layout variant */
3935
+ layout?: 'grid' | 'list' | 'carousel' | string;
3936
+ /** Fields to display per level */
3937
+ fields?: LevelFieldDisplay[];
3938
+ /** Event to emit on selection (schema config) */
3939
+ selectEvent?: string;
3940
+ /** Called when a level is selected */
3941
+ onSelect?: (level: LevelData) => void;
3942
+ /** Path to navigate to on selection. Supports :id, :levelId, :number placeholders */
3943
+ navigatesTo?: string;
3944
+ /** Currently selected level ID */
3945
+ selectedId?: string;
3946
+ /** Maximum stars possible per level */
3947
+ maxStars?: number;
3948
+ /** Additional CSS classes */
3949
+ className?: string;
3950
+ /** Title above the level grid */
3951
+ title?: string;
3952
+ }
3953
+ declare function LevelSelect({ levels, entity: _entity, layout, fields, selectEvent: _selectEvent, onSelect, navigatesTo, selectedId, maxStars, className, title, }: LevelSelectProps): react_jsx_runtime.JSX.Element;
3954
+ declare namespace LevelSelect {
3955
+ var displayName: string;
3956
+ }
3957
+
3958
+ /**
3959
+ * TilemapRenderer Component
3960
+ *
3961
+ * Canvas-based tilemap renderer with culling and parallax support.
3962
+ */
3963
+ interface TileLayer {
3964
+ name: string;
3965
+ data: number[];
3966
+ width: number;
3967
+ height: number;
3968
+ visible?: boolean;
3969
+ }
3970
+ interface Tileset {
3971
+ url: string;
3972
+ tileWidth: number;
3973
+ tileHeight: number;
3974
+ columns: number;
3975
+ }
3976
+ interface ParallaxConfig {
3977
+ layer: string;
3978
+ factor: number;
3979
+ }
3980
+ interface TilemapRendererProps {
3981
+ /** Tile layers to render */
3982
+ layers: TileLayer[];
3983
+ /** Tileset configuration */
3984
+ tileset: Tileset;
3985
+ /** Camera position */
3986
+ camera: {
3987
+ x: number;
3988
+ y: number;
3989
+ };
3990
+ /** Viewport width in pixels */
3991
+ viewportWidth: number;
3992
+ /** Viewport height in pixels */
3993
+ viewportHeight: number;
3994
+ /** Enable pixel art rendering (no smoothing) */
3995
+ pixelArt?: boolean;
3996
+ /** Parallax configuration per layer */
3997
+ parallaxLayers?: ParallaxConfig[];
3998
+ /** Optional className */
3999
+ className?: string;
4000
+ /** Scale factor for rendering */
4001
+ scale?: number;
4002
+ /** Show debug grid */
4003
+ debug?: boolean;
4004
+ }
4005
+ /**
4006
+ * Tilemap renderer component with efficient canvas-based rendering
4007
+ *
4008
+ * @example
4009
+ * ```tsx
4010
+ * <TilemapRenderer
4011
+ * layers={levelData.layers}
4012
+ * tileset={{
4013
+ * url: '/tilesets/terrain.png',
4014
+ * tileWidth: 16,
4015
+ * tileHeight: 16,
4016
+ * columns: 16
4017
+ * }}
4018
+ * camera={{ x: playerX - 160, y: playerY - 120 }}
4019
+ * viewportWidth={320}
4020
+ * viewportHeight={240}
4021
+ * pixelArt
4022
+ * scale={2}
4023
+ * />
4024
+ * ```
4025
+ */
4026
+ declare function TilemapRenderer({ layers, tileset, camera, viewportWidth, viewportHeight, pixelArt, parallaxLayers, className, scale, debug, }: TilemapRendererProps): JSX.Element;
4027
+
4028
+ /**
4029
+ * InventoryPanel Component
4030
+ *
4031
+ * Grid-based inventory UI with item selection and tooltips.
4032
+ */
4033
+ interface InventoryItem {
4034
+ id: string;
4035
+ type: string;
4036
+ quantity: number;
4037
+ sprite?: string;
4038
+ name?: string;
4039
+ description?: string;
4040
+ }
4041
+ interface InventoryPanelProps {
4042
+ /** Array of items in inventory */
4043
+ items: InventoryItem[];
4044
+ /** Total number of slots */
4045
+ slots: number;
4046
+ /** Number of columns in grid */
4047
+ columns: number;
4048
+ /** Currently selected slot index */
4049
+ selectedSlot?: number;
4050
+ /** Called when a slot is selected */
4051
+ onSelectSlot: (index: number) => void;
4052
+ /** Called when an item is used (double-click or Enter) */
4053
+ onUseItem?: (item: InventoryItem) => void;
4054
+ /** Called when an item is dropped */
4055
+ onDropItem?: (item: InventoryItem) => void;
4056
+ /** Show item tooltips on hover */
4057
+ showTooltips?: boolean;
4058
+ /** Optional className */
4059
+ className?: string;
4060
+ /** Slot size in pixels */
4061
+ slotSize?: number;
4062
+ }
4063
+ /**
4064
+ * Inventory panel component with grid layout
4065
+ *
4066
+ * @example
4067
+ * ```tsx
4068
+ * <InventoryPanel
4069
+ * items={playerInventory}
4070
+ * slots={20}
4071
+ * columns={5}
4072
+ * selectedSlot={selectedSlot}
4073
+ * onSelectSlot={setSelectedSlot}
4074
+ * onUseItem={(item) => console.log('Used:', item.name)}
4075
+ * showTooltips
4076
+ * />
4077
+ * ```
4078
+ */
4079
+ declare function InventoryPanel({ items, slots, columns, selectedSlot, onSelectSlot, onUseItem, onDropItem, showTooltips, className, slotSize, }: InventoryPanelProps): JSX.Element;
4080
+
4081
+ /**
4082
+ * DialogueBox Component
4083
+ *
4084
+ * NPC dialogue display with typewriter effect and choices.
4085
+ */
4086
+ interface DialogueChoice {
4087
+ text: string;
4088
+ action?: string;
4089
+ next?: string;
4090
+ disabled?: boolean;
4091
+ }
4092
+ interface DialogueNode {
4093
+ id?: string;
4094
+ speaker: string;
4095
+ text: string;
4096
+ portrait?: string;
4097
+ choices?: DialogueChoice[];
4098
+ autoAdvance?: number;
4099
+ }
4100
+ interface DialogueBoxProps {
4101
+ /** Current dialogue node to display */
4102
+ dialogue: DialogueNode;
4103
+ /** Typewriter speed in ms per character (0 = instant) */
4104
+ typewriterSpeed?: number;
4105
+ /** Position of dialogue box */
4106
+ position?: 'top' | 'bottom';
4107
+ /** Called when text animation completes */
4108
+ onComplete?: () => void;
4109
+ /** Called when a choice is selected */
4110
+ onChoice?: (choice: DialogueChoice) => void;
4111
+ /** Called when dialogue is advanced (no choices) */
4112
+ onAdvance?: () => void;
4113
+ /** Optional className */
4114
+ className?: string;
4115
+ }
4116
+ /**
4117
+ * Dialogue box component with typewriter effect
4118
+ *
4119
+ * @example
4120
+ * ```tsx
4121
+ * <DialogueBox
4122
+ * dialogue={{
4123
+ * speaker: "Old Man",
4124
+ * text: "It's dangerous to go alone! Take this.",
4125
+ * portrait: "/portraits/oldman.png",
4126
+ * choices: [
4127
+ * { text: "Thank you!", action: "ACCEPT_ITEM" },
4128
+ * { text: "No thanks", next: "decline_node" }
4129
+ * ]
4130
+ * }}
4131
+ * typewriterSpeed={30}
4132
+ * onChoice={(choice) => handleChoice(choice)}
4133
+ * position="bottom"
4134
+ * />
4135
+ * ```
4136
+ */
4137
+ declare function DialogueBox({ dialogue, typewriterSpeed, position, onComplete, onChoice, onAdvance, className, }: DialogueBoxProps): JSX.Element;
4138
+
4139
+ /**
4140
+ * InputListener - Invisible component that captures keyboard input
4141
+ *
4142
+ * Rendered by InputCapture trait via render_ui effect.
4143
+ * Listens for keydown/keyup events and:
4144
+ * 1. Updates the Input singleton entity
4145
+ * 2. Emits INPUT:* events via event bus
4146
+ *
4147
+ * This follows the closed circuit pattern:
4148
+ * Trait (render_ui) → Component (InputListener) → Events (INPUT:*) → Trait (state machine)
4149
+ *
4150
+ * @generated pattern component
4151
+ */
4152
+
4153
+ /**
4154
+ * Input binding configuration
4155
+ */
4156
+ interface InputBinding {
4157
+ /** Key code or key value (e.g., 'ArrowLeft', 'KeyA', 'Space') */
4158
+ key: string;
4159
+ /** Field name in the Input singleton (e.g., 'left', 'right', 'jump') */
4160
+ field: string;
4161
+ /** Optional custom event name (defaults to INPUT:{FIELD}_DOWN/UP) */
4162
+ event?: string;
4163
+ }
4164
+ /**
4165
+ * InputListener props
4166
+ */
4167
+ interface InputListenerProps {
4168
+ /** Key bindings configuration */
4169
+ bindings?: readonly InputBinding[];
4170
+ /** Whether input listening is enabled */
4171
+ enabled?: boolean;
4172
+ /** Event bus for emitting events (optional, uses hook if not provided) */
4173
+ eventBus?: EventBusContextType;
4174
+ }
4175
+ /**
4176
+ * InputListener Component
4177
+ *
4178
+ * Invisible component that captures keyboard input and emits events.
4179
+ * Designed to be rendered by the InputCapture trait via render_ui effect.
4180
+ */
4181
+ declare function InputListener({ bindings, enabled, eventBus: eventBusProp, }: InputListenerProps): null;
4182
+ declare namespace InputListener {
4183
+ var displayName: string;
4184
+ }
4185
+
4186
+ /**
4187
+ * CollisionDetector - Invisible component that runs collision detection
4188
+ *
4189
+ * Rendered by Collision2DSystem trait via render_ui effect.
4190
+ * Runs AABB collision checks each frame and emits collision events.
4191
+ *
4192
+ * This follows the closed circuit pattern:
4193
+ * Trait (render_ui) → Component (CollisionDetector) → Events (COLLISION_*) → Trait (state machine)
4194
+ *
4195
+ * @generated pattern component
4196
+ */
4197
+
4198
+ /**
4199
+ * Collision rule configuration
4200
+ */
4201
+ interface CollisionRule {
4202
+ /** Entity type A */
4203
+ typeA: string;
4204
+ /** Entity type B */
4205
+ typeB: string;
4206
+ /** Whether this is a trigger (pass-through) or solid collision */
4207
+ isTrigger?: boolean;
4208
+ /** Custom event name to emit (defaults to COLLISION_ENTER/TRIGGER_ENTER) */
4209
+ event?: string;
4210
+ }
4211
+ /**
4212
+ * CollisionDetector props
4213
+ */
4214
+ interface CollisionDetectorProps {
4215
+ /** Collision detection algorithm */
4216
+ algorithm?: 'aabb' | 'circle';
4217
+ /** Collision rules to check */
4218
+ rules?: readonly CollisionRule[];
4219
+ /** Whether collision detection is enabled */
4220
+ enabled?: boolean;
4221
+ /** Event bus for emitting events (optional, uses hook if not provided) */
4222
+ eventBus?: EventBusContextType;
4223
+ }
4224
+ /**
4225
+ * CollisionDetector Component
4226
+ *
4227
+ * Invisible component that runs collision detection each frame and emits events.
4228
+ * Designed to be rendered by the Collision2DSystem trait via render_ui effect.
4229
+ */
4230
+ declare function CollisionDetector({ algorithm, rules, enabled, eventBus: eventBusProp, }: CollisionDetectorProps): null;
4231
+ declare namespace CollisionDetector {
4232
+ var displayName: string;
4233
+ }
4234
+
4235
+ /**
4236
+ * UISlotRenderer Component
4237
+ *
4238
+ * Renders all UI slots. This is the central component that displays
4239
+ * content rendered by traits via render_ui effects.
4240
+ *
4241
+ * Slots are rendered as:
4242
+ * - Layout slots: Inline in the page flow (main, sidebar)
4243
+ * - Portal slots: Rendered via portals (modal, drawer, toast, etc.)
4244
+ * - HUD slots: Fixed position overlays (hud-top, hud-bottom)
4245
+ *
4246
+ * @packageDocumentation
4247
+ */
4248
+
4249
+ interface UISlotComponentProps {
4250
+ slot: UISlot;
4251
+ portal?: boolean;
4252
+ position?: "left" | "right" | "top-right" | "top-left" | "bottom-right" | "bottom-left";
4253
+ className?: string;
4254
+ draggable?: boolean;
4255
+ }
4256
+ /**
4257
+ * Individual slot renderer.
4258
+ *
4259
+ * Handles different slot types with appropriate wrappers.
4260
+ */
4261
+ declare function UISlotComponent({ slot, portal, position, className, }: UISlotComponentProps): React__default.ReactElement | null;
4262
+ interface SlotContentRendererProps {
4263
+ content: SlotContent;
4264
+ onDismiss: () => void;
4265
+ }
4266
+ /**
4267
+ * Renders the actual content of a slot.
4268
+ *
4269
+ * Dynamically renders pattern components from the registry.
4270
+ * For layout patterns with `hasChildren`, recursively renders nested patterns.
4271
+ */
4272
+ declare function SlotContentRenderer({ content, onDismiss, }: SlotContentRendererProps): React__default.ReactElement;
4273
+ interface UISlotRendererProps {
4274
+ /** Include HUD slots */
4275
+ includeHud?: boolean;
4276
+ /** Include floating slot */
4277
+ includeFloating?: boolean;
4278
+ /** Additional class name for the container */
4279
+ className?: string;
4280
+ }
4281
+ /**
4282
+ * Main UI Slot Renderer component.
4283
+ *
4284
+ * Renders all slot containers. Place this in your page/layout component.
4285
+ *
4286
+ * @example
4287
+ * ```tsx
4288
+ * function PageLayout() {
4289
+ * return (
4290
+ * <div className="page-layout">
4291
+ * <UISlotRenderer />
4292
+ * </div>
4293
+ * );
4294
+ * }
4295
+ * ```
4296
+ */
4297
+ declare function UISlotRenderer({ includeHud, includeFloating, className, }: UISlotRendererProps): React__default.ReactElement;
4298
+ declare namespace UISlotRenderer {
4299
+ var displayName: string;
4300
+ }
4301
+
4302
+ /**
4303
+ * ModalSlot Component
4304
+ *
4305
+ * Wraps modal slot content in a proper Modal component.
4306
+ * Used by trait-driven pages to display modal UI from render_ui effects.
4307
+ *
4308
+ * Handles:
4309
+ * - Auto-open when content is present
4310
+ * - Dispatches CLOSE/CANCEL events when closed
4311
+ * - Extracts title from Form components
4312
+ */
4313
+
4314
+ interface ModalSlotProps {
4315
+ /** Content to display in the modal */
4316
+ children?: React__default.ReactNode;
4317
+ /** Override modal title (extracted from children if not provided) */
4318
+ title?: string;
4319
+ /** Modal size */
4320
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
4321
+ /** Custom class name */
4322
+ className?: string;
4323
+ }
4324
+ /**
4325
+ * ModalSlot - Wrapper for modal slot content
4326
+ *
4327
+ * Automatically shows modal when children are present,
4328
+ * and dispatches close events when modal is dismissed.
4329
+ */
4330
+ declare const ModalSlot: React__default.FC<ModalSlotProps>;
4331
+
4332
+ /**
4333
+ * DrawerSlot Component
4334
+ *
4335
+ * Wraps drawer slot content in a proper Drawer component.
4336
+ * Used by trait-driven pages to display drawer UI from render_ui effects.
4337
+ *
4338
+ * Handles:
4339
+ * - Auto-open when content is present
4340
+ * - Dispatches CLOSE/CANCEL events when closed
4341
+ * - Extracts title from Form or DetailPanel components
4342
+ * - Configurable position and size
4343
+ */
4344
+
4345
+ interface DrawerSlotProps {
4346
+ /** Content to display in the drawer */
4347
+ children?: React__default.ReactNode;
4348
+ /** Override drawer title (extracted from children if not provided) */
4349
+ title?: string;
4350
+ /** Drawer position */
4351
+ position?: DrawerPosition;
4352
+ /** Drawer size */
4353
+ size?: DrawerSize;
4354
+ /** Custom class name */
4355
+ className?: string;
4356
+ }
4357
+ /**
4358
+ * DrawerSlot - Wrapper for drawer slot content
4359
+ *
4360
+ * Automatically shows drawer when children are present,
4361
+ * and dispatches close events when drawer is dismissed.
4362
+ */
4363
+ declare const DrawerSlot: React__default.FC<DrawerSlotProps>;
4364
+
4365
+ /**
4366
+ * ToastSlot Component
4367
+ *
4368
+ * Wraps toast slot content in a proper Toast component with positioning.
4369
+ * Used by trait-driven pages to display toast UI from render_ui effects.
4370
+ *
4371
+ * Handles:
4372
+ * - Auto-show when content is present
4373
+ * - Dispatches DISMISS event when dismissed
4374
+ * - Fixed positioning in corner of screen
4375
+ */
4376
+
4377
+ interface ToastSlotProps {
4378
+ /** Content to display in the toast (message or ReactNode) */
4379
+ children?: React__default.ReactNode;
4380
+ /** Toast variant */
4381
+ variant?: ToastVariant;
4382
+ /** Toast title */
4383
+ title?: string;
4384
+ /** Auto-dismiss duration in ms (0 = no auto-dismiss) */
4385
+ duration?: number;
4386
+ /** Custom class name */
4387
+ className?: string;
4388
+ }
4389
+ /**
4390
+ * ToastSlot - Wrapper for toast slot content
4391
+ *
4392
+ * Automatically shows toast when children are present,
4393
+ * and dispatches dismiss events when toast is dismissed.
4394
+ */
4395
+ declare const ToastSlot: React__default.FC<ToastSlotProps>;
4396
+
4397
+ interface NavItem {
4398
+ label: string;
4399
+ href: string;
4400
+ icon: LucideIcon;
4401
+ badge?: string | number;
4402
+ children?: NavItem[];
4403
+ }
4404
+ interface DashboardLayoutProps {
4405
+ /** App name shown in sidebar */
4406
+ appName?: string;
4407
+ /** Logo component or URL */
4408
+ logo?: React__default.ReactNode;
4409
+ /** Navigation items */
4410
+ navItems?: NavItem[];
4411
+ /** Current user info (optional - auto-populated from auth context if not provided) */
4412
+ user?: {
4413
+ name: string;
4414
+ email: string;
4415
+ avatar?: string;
4416
+ };
4417
+ /** Header actions (notifications, etc.) */
4418
+ headerActions?: React__default.ReactNode;
4419
+ /** Show search in header */
4420
+ showSearch?: boolean;
4421
+ /** Custom sidebar footer */
4422
+ sidebarFooter?: React__default.ReactNode;
4423
+ /** Callback when user clicks sign out (optional - uses auth context signOut if not provided) */
4424
+ onSignOut?: () => void;
4425
+ }
4426
+ declare const DashboardLayout: React__default.FC<DashboardLayoutProps>;
4427
+
4428
+ interface AuthLayoutProps {
4429
+ /** App name */
4430
+ appName?: string;
4431
+ /** Logo component or URL */
4432
+ logo?: React__default.ReactNode;
4433
+ /** Background image URL */
4434
+ backgroundImage?: string;
4435
+ /** Show branding panel on the side */
4436
+ showBranding?: boolean;
4437
+ /** Branding panel content */
4438
+ brandingContent?: React__default.ReactNode;
4439
+ }
4440
+ declare const AuthLayout: React__default.FC<AuthLayoutProps>;
4441
+
4442
+ /**
4443
+ * CounterTemplate
4444
+ *
4445
+ * A presentational template for counter/incrementer features.
4446
+ * Supports increment, decrement, and reset operations.
4447
+ */
4448
+
4449
+ type CounterSize = "sm" | "md" | "lg";
4450
+ type CounterVariant = "minimal" | "standard" | "full";
4451
+ interface CounterTemplateProps {
4452
+ /** Current count value */
4453
+ count: number;
4454
+ /** Minimum allowed value */
4455
+ min?: number;
4456
+ /** Maximum allowed value */
4457
+ max?: number;
4458
+ /** Step size for increment/decrement */
4459
+ step?: number;
4460
+ /** Called when increment is clicked */
4461
+ onIncrement?: () => void;
4462
+ /** Called when decrement is clicked */
4463
+ onDecrement?: () => void;
4464
+ /** Called when reset is clicked */
4465
+ onReset?: () => void;
4466
+ /** Title displayed above the counter */
4467
+ title?: string;
4468
+ /** Show reset button */
4469
+ showReset?: boolean;
4470
+ /** Counter display size */
4471
+ size?: CounterSize;
4472
+ /** Template variant */
4473
+ variant?: CounterVariant;
4474
+ /** Additional class name */
4475
+ className?: string;
4476
+ }
4477
+ declare const CounterTemplate: React__default.FC<CounterTemplateProps>;
4478
+
4479
+ /**
4480
+ * ListTemplate
4481
+ *
4482
+ * A presentational template for list-based features like todos, shopping lists, notes.
4483
+ * Supports add, toggle, delete, and filter operations.
4484
+ */
4485
+
4486
+ type FilterValue = "all" | "active" | "completed";
4487
+ type ListVariant = "minimal" | "standard" | "full";
4488
+ interface ListTemplateItem {
4489
+ id: string;
4490
+ title: string;
4491
+ completed?: boolean;
4492
+ [key: string]: unknown;
4493
+ }
4494
+ interface ListTemplateProps {
4495
+ /** Array of list items */
4496
+ items: ListTemplateItem[];
4497
+ /** Whether data is loading */
4498
+ isLoading?: boolean;
4499
+ /** Error object if loading failed */
4500
+ error?: Error | string | null;
4501
+ /** Current filter value */
4502
+ filter?: FilterValue;
4503
+ /** Called when a new item is added */
4504
+ onAdd?: (title: string) => void;
4505
+ /** Called when an item is toggled */
4506
+ onToggle?: (id: string) => void;
4507
+ /** Called when an item is deleted */
4508
+ onDelete?: (id: string) => void;
4509
+ /** Called when filter changes */
4510
+ onFilterChange?: (filter: FilterValue) => void;
4511
+ /** Called to retry loading */
4512
+ onRetry?: () => void;
4513
+ /** Title displayed above the list */
4514
+ title?: string;
4515
+ /** Placeholder for the input field */
4516
+ placeholder?: string;
4517
+ /** Whether to show filter buttons */
4518
+ showFilters?: boolean;
4519
+ /** Whether to show item count */
4520
+ showCount?: boolean;
4521
+ /** Message shown when list is empty */
4522
+ emptyMessage?: string;
4523
+ /** Template variant */
4524
+ variant?: ListVariant;
4525
+ /** Additional class name */
4526
+ className?: string;
4527
+ }
4528
+ declare const ListTemplate: React__default.FC<ListTemplateProps>;
4529
+
4530
+ /**
4531
+ * FormTemplate
4532
+ *
4533
+ * A presentational template for form-based features like contact forms, feedback, surveys.
4534
+ * Supports submission, validation, and success/error states.
4535
+ */
4536
+
4537
+ type FormVariant = "minimal" | "standard" | "full";
4538
+ interface FormFieldConfig {
4539
+ name: string;
4540
+ label: string;
4541
+ type: "text" | "email" | "password" | "tel" | "url" | "number" | "textarea" | "select" | "checkbox";
4542
+ placeholder?: string;
4543
+ required?: boolean;
4544
+ options?: Array<{
4545
+ value: string;
4546
+ label: string;
4547
+ }>;
4548
+ rows?: number;
4549
+ }
4550
+ interface FormTemplateProps {
4551
+ /** Current form field values */
4552
+ formData: Record<string, unknown>;
4553
+ /** Whether form is being submitted */
4554
+ isSubmitting?: boolean;
4555
+ /** Whether submission was successful */
4556
+ isSuccess?: boolean;
4557
+ /** Error object if submission failed */
4558
+ error?: Error | string | null;
4559
+ /** Field-level validation errors */
4560
+ validationErrors?: Record<string, string>;
4561
+ /** Called when form is submitted */
4562
+ onSubmit?: (formData: Record<string, unknown>) => void;
4563
+ /** Called when a field value changes */
4564
+ onFieldChange?: (field: string, value: unknown) => void;
4565
+ /** Called to reset the form */
4566
+ onReset?: () => void;
4567
+ /** Called to dismiss success message */
4568
+ onDismissSuccess?: () => void;
4569
+ /** Form title */
4570
+ title?: string;
4571
+ /** Form subtitle/description */
4572
+ subtitle?: string;
4573
+ /** Submit button label */
4574
+ submitLabel?: string;
4575
+ /** Success message */
4576
+ successMessage?: string;
4577
+ /** Whether to show reset button */
4578
+ showReset?: boolean;
4579
+ /** Form field definitions */
4580
+ fields?: FormFieldConfig[];
4581
+ /** Template variant */
4582
+ variant?: FormVariant;
4583
+ /** Additional class name */
4584
+ className?: string;
4585
+ }
4586
+ declare const FormTemplate: React__default.FC<FormTemplateProps>;
4587
+
4588
+ /**
4589
+ * CrudTemplate
4590
+ *
4591
+ * A presentational template for CRUD (Create, Read, Update, Delete) features.
4592
+ * Includes data table, search, and modal forms for create/edit.
4593
+ */
4594
+
4595
+ type CrudVariant = "minimal" | "standard" | "full";
4596
+ interface CrudItem {
4597
+ id: string;
4598
+ [key: string]: unknown;
4599
+ }
4600
+ interface ColumnConfig {
4601
+ key: string;
4602
+ label: string;
4603
+ sortable?: boolean;
4604
+ width?: string;
4605
+ render?: (value: unknown, row: CrudItem) => React__default.ReactNode;
4606
+ }
4607
+ interface FieldConfig {
4608
+ key: string;
4609
+ label: string;
4610
+ type?: "text" | "email" | "number" | "textarea" | "select";
4611
+ required?: boolean;
4612
+ placeholder?: string;
4613
+ options?: Array<{
4614
+ value: string;
4615
+ label: string;
4616
+ }>;
4617
+ }
4618
+ interface CrudTemplateProps {
4619
+ /** Array of items to display */
4620
+ items: CrudItem[];
4621
+ /** Whether data is loading */
4622
+ isLoading?: boolean;
4623
+ /** Error object if loading failed */
4624
+ error?: Error | string | null;
4625
+ /** Currently selected item for editing */
4626
+ selectedItem?: CrudItem | null;
4627
+ /** Whether the create/edit modal is open */
4628
+ isModalOpen?: boolean;
4629
+ /** Current search query */
4630
+ searchQuery?: string;
4631
+ /** Current sort field */
4632
+ sortBy?: string;
4633
+ /** Current sort order */
4634
+ sortOrder?: "asc" | "desc";
4635
+ /** Called to load/refresh items */
4636
+ onLoad?: () => void;
4637
+ /** Called when creating a new item */
4638
+ onCreate?: (data: Record<string, unknown>) => void;
4639
+ /** Called when updating an item */
4640
+ onUpdate?: (id: string, data: Record<string, unknown>) => void;
4641
+ /** Called when deleting an item */
4642
+ onDelete?: (id: string) => void;
4643
+ /** Called when selecting an item for editing */
4644
+ onSelect?: (id: string) => void;
4645
+ /** Called when viewing an item */
4646
+ onView?: (id: string) => void;
4647
+ /** Called when search query changes */
4648
+ onSearch?: (query: string) => void;
4649
+ /** Called when sort changes */
4650
+ onSort?: (field: string, order: "asc" | "desc") => void;
4651
+ /** Called to open create/edit modal */
4652
+ onOpenModal?: () => void;
4653
+ /** Called to close modal */
4654
+ onCloseModal?: () => void;
4655
+ /** Page title */
4656
+ title?: string;
4657
+ /** Singular entity name for labels */
4658
+ entityName?: string;
4659
+ /** Table column definitions */
4660
+ columns?: ColumnConfig[];
4661
+ /** Form field definitions for create/edit */
4662
+ fields?: FieldConfig[];
4663
+ /** Whether to show search input */
4664
+ showSearch?: boolean;
4665
+ /** Search input placeholder */
4666
+ searchPlaceholder?: string;
4667
+ /** Whether to show view action */
4668
+ showViewAction?: boolean;
4669
+ /** Template variant */
4670
+ variant?: CrudVariant;
4671
+ /** Additional class name */
4672
+ className?: string;
4673
+ }
4674
+ declare const CrudTemplate: React__default.FC<CrudTemplateProps>;
4675
+
4676
+ /**
4677
+ * SettingsTemplate
4678
+ *
4679
+ * A presentational template for settings/preferences features.
4680
+ * Supports sections with various input types and save/reset operations.
4681
+ */
4682
+
4683
+ type SettingsVariant = "minimal" | "standard" | "full";
4684
+ interface SettingsFieldConfig {
4685
+ key: string;
4686
+ label: string;
4687
+ type: "text" | "email" | "number" | "select" | "toggle" | "checkbox";
4688
+ description?: string;
4689
+ placeholder?: string;
4690
+ options?: string[] | Array<{
4691
+ value: string;
4692
+ label: string;
4693
+ }>;
4694
+ }
4695
+ interface SettingsSectionConfig {
4696
+ title: string;
4697
+ description?: string;
4698
+ fields: SettingsFieldConfig[];
4699
+ }
4700
+ interface SettingsTemplateProps {
4701
+ /** Current settings values */
4702
+ settings: Record<string, unknown>;
4703
+ /** Whether settings are being saved */
4704
+ isSaving?: boolean;
4705
+ /** Whether there are unsaved changes */
4706
+ hasChanges?: boolean;
4707
+ /** Error object if save failed */
4708
+ error?: Error | string | null;
4709
+ /** Success message after save */
4710
+ successMessage?: string | null;
4711
+ /** Called when saving settings */
4712
+ onSave?: (settings: Record<string, unknown>) => void;
4713
+ /** Called when a setting value changes */
4714
+ onChange?: (key: string, value: unknown) => void;
4715
+ /** Called to reset to default settings */
4716
+ onReset?: () => void;
4717
+ /** Called to revert unsaved changes */
4718
+ onRevert?: () => void;
4719
+ /** Called to dismiss success message */
4720
+ onDismissSuccess?: () => void;
4721
+ /** Page title */
4722
+ title?: string;
4723
+ /** Settings sections */
4724
+ sections?: SettingsSectionConfig[];
4725
+ /** Whether to show reset to defaults button */
4726
+ showResetToDefaults?: boolean;
4727
+ /** Template variant */
4728
+ variant?: SettingsVariant;
4729
+ /** Additional class name */
4730
+ className?: string;
4731
+ }
4732
+ declare const SettingsTemplate: React__default.FC<SettingsTemplateProps>;
4733
+
4734
+ /**
4735
+ * GameTemplate
4736
+ *
4737
+ * A presentational template for game applications.
4738
+ * Includes a main game canvas/area, HUD overlay, and an optional debug sidebar.
4739
+ * **Atomic Design**: Composed using Box, Typography, and Layout molecules/atoms.
4740
+ */
4741
+
4742
+ interface GameTemplateProps {
4743
+ /** Title of the game */
4744
+ title?: string;
4745
+ /** The main game canvas or content */
4746
+ children: React__default.ReactNode;
4747
+ /** HUD overlay content (scores, health, etc.) */
4748
+ hud?: React__default.ReactNode;
4749
+ /** Debug panel content */
4750
+ debugPanel?: React__default.ReactNode;
4751
+ /** Whether the debug panel is visible */
4752
+ showDebugPanel?: boolean;
4753
+ /** Game controls */
4754
+ controls?: {
4755
+ onPlay?: () => void;
4756
+ onPause?: () => void;
4757
+ onReset?: () => void;
4758
+ isPlaying?: boolean;
4759
+ };
4760
+ /** Additional class name */
4761
+ className?: string;
4762
+ }
4763
+ declare const GameTemplate: React__default.FC<GameTemplateProps>;
4764
+
4765
+ /**
4766
+ * GenericAppTemplate
4767
+ *
4768
+ * A simple, generic template for any application.
4769
+ * Includes a header with title and actions, and a main content area.
4770
+ * **Atomic Design**: Composed using Box, Typography, and Button atoms.
4771
+ */
4772
+
4773
+ interface GenericAppTemplateProps {
4774
+ /** Page title */
4775
+ title: string;
4776
+ /** Subtitle or description */
4777
+ subtitle?: string;
4778
+ /** Main content */
4779
+ children: React__default.ReactNode;
4780
+ /** Header actions (buttons, links) */
4781
+ headerActions?: React__default.ReactNode;
4782
+ /** Footer content */
4783
+ footer?: React__default.ReactNode;
4784
+ /** Additional class name */
4785
+ className?: string;
4786
+ }
4787
+ declare const GenericAppTemplate: React__default.FC<GenericAppTemplateProps>;
4788
+
4789
+ export { Accordion, type AccordionItem, type AccordionProps, Card as ActionCard, type CardProps as ActionCardProps, Alert, type AlertProps, type AlertVariant, AuthLayout, type AuthLayoutProps, Avatar, type AvatarProps, type AvatarSize, type AvatarStatus, Badge, type BadgeProps, Box, type BoxBg, type BoxMargin, type BoxPadding, type BoxProps, type BoxRounded, type BoxShadow, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, Card$1 as Card, type CardAction, CardBody, CardContent, CardFooter, CardGrid, type CardGridGap, type CardGridProps, CardHeader, type CardProps$1 as CardProps, CardTitle, Center, type CenterProps, Checkbox, type CheckboxProps, type CollisionDef, CollisionDetector, type CollisionDetectorProps, type CollisionRule, type Column, type ColumnConfig, type ConditionalContext, ConditionalWrapper, type ConditionalWrapperProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmDialogVariant, Container, type ContainerProps, type CounterSize, CounterTemplate, type CounterTemplateProps, type CounterVariant, type CrudItem, CrudTemplate, type CrudTemplateProps, type CrudVariant, DashboardGrid, type DashboardGridCell, type DashboardGridProps, DashboardLayout, type DashboardLayoutProps, DataTable, type DataTableProps, type DetailField, DetailPanel, type DetailPanelProps, type DetailSection, DialogueBox, type DialogueBoxProps, type DialogueChoice, type DialogueNode, Divider, type DividerOrientation, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, type DrawerSize, DrawerSlot, type DrawerSlotProps, EmptyState, type EmptyStateProps, type EntityRenderer, ErrorState, type ErrorStateProps, type FieldConfig, type FilterDefinition, FilterGroup, type FilterGroupProps, type FilterValue, Flex, type FlexProps, FloatingActionButton, type FloatingActionButtonProps, Form, FormActions, type FormActionsProps, FormField, type FormFieldConfig, type FormFieldProps, FormLayout, type FormLayoutProps, type FormProps, FormSection$1 as FormSection, FormSectionHeader, type FormSectionHeaderProps, type FormSectionProps, FormTemplate, type FormTemplateProps, type FormVariant, GameCanvas, type GameCanvasProps, type GameControl, GameControls, type GameControlsProps, type GameEntity, GameHud, type GameHudElement, type GameHudProps, type GameHudStat, GameMenu, type GameMenuProps, type GameOverAction, GameOverScreen, type GameOverScreenProps, type GameOverStat, GamePauseOverlay, type GamePauseOverlayProps, GameTemplate, type GameTemplateProps, GenericAppTemplate, type GenericAppTemplateProps, Grid, type GridProps, HStack, type HStackProps, Header, type HeaderProps, type HighlightType, Icon, type IconAnimation, type IconProps, type IconSize, Input, type InputBinding, InputGroup, type InputGroupProps, InputListener, type InputListenerProps, type InputProps, type InventoryItem, InventoryPanel, type InventoryPanelProps, Label, type LabelProps, type LawReference, LawReferenceTooltip, type LawReferenceTooltipProps, type LevelData, type LevelFieldDisplay, LevelSelect, type LevelSelectProps, List, type ListItem, type ListProps, ListTemplate, type ListTemplateItem, type ListTemplateProps, type ListVariant, LoadingState, type LoadingStateProps, MasterDetail, type MasterDetailProps, Menu, type MenuItem, type MenuOption, type MenuProps, Modal, type ModalProps, type ModalSize, ModalSlot, type ModalSlotProps, type NavItem, Navigation, type NavigationItem, type NavigationProps, OrbitalVisualization, type OrbitalVisualizationProps, Overlay, type OverlayProps, type PageBreadcrumb, PageHeader, type PageHeaderProps, Pagination, type PaginationProps, type ParallaxConfig, type PauseOption, Popover, type PopoverProps, ProgressBar, type ProgressBarColor, type ProgressBarProps, type ProgressBarVariant, Radio, type RadioProps, type RelationOption, RelationSelect, type RelationSelectProps, RepeatableFormSection, type RepeatableFormSectionProps, type RepeatableItem, type RowAction, SearchInput, type SearchInputProps, Section, type SectionProps, Select, type SelectOption, type SelectProps, type SettingsFieldConfig, type SettingsSectionConfig, SettingsTemplate, type SettingsTemplateProps, type SettingsVariant, SidePanel, type SidePanelProps, Sidebar, type SidebarItem, type SidebarProps, SimpleGrid, type SimpleGridProps, SlotContentRenderer, type SortDirection, Spacer, type SpacerProps, type SpacerSize, Spinner, type SpinnerProps, Split, SplitPane, type SplitPaneProps, type SplitProps, Stack, type StackAlign, type StackDirection, type StackGap, type StackJustify, type StackProps, StatCard, type StatCardProps, Switch, type SwitchProps, type TabDefinition, type TabItem, TabbedContainer, type TabbedContainerProps, Table, type TableColumn, type TableProps, Tabs, type TabsProps, TextHighlight, type TextHighlightProps, Textarea, type TextareaProps, ThemeSelector, ThemeToggle, type ThemeToggleProps, TilemapRenderer, type TilemapRendererProps, type TileLayer as TilemapTileLayer, type Tileset as TilemapTileset, Toast, type ToastProps, ToastSlot, type ToastSlotProps, type ToastVariant, Tooltip, type TooltipProps, Typography, type TypographyProps, type TypographyVariant, UISlotComponent, UISlotRenderer, type UISlotRendererProps, VStack, type VStackProps, ViolationAlert, type ViolationAlertProps, type ViolationRecord, WizardContainer, type WizardContainerProps, WizardNavigation, type WizardNavigationProps, WizardProgress, type WizardProgressProps, type WizardProgressStep, type WizardStep };