@skyfall_ai/aegis 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, LabelHTMLAttributes, HTMLAttributes, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes } from 'react';
2
+ import { InputHTMLAttributes, ButtonHTMLAttributes, ReactNode, HTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes, MouseEvent, TableHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes, ElementType, AnchorHTMLAttributes, LabelHTMLAttributes } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { TooltipProps as TooltipProps$1, LegendProps } from 'recharts';
5
5
 
@@ -262,6 +262,25 @@ declare const focusRing: {
262
262
  readonly outlineColor: "#2F6FE4";
263
263
  };
264
264
 
265
+ interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
266
+ /** Size of the input control */
267
+ size?: 'sm' | 'md' | 'lg';
268
+ /** Error state */
269
+ error?: boolean;
270
+ /** Full width */
271
+ fullWidth?: boolean;
272
+ }
273
+ /**
274
+ * TextField — single-line text input.
275
+ *
276
+ * Accessibility:
277
+ * - Use with <Label> and associate via htmlFor/id
278
+ * - Use aria-describedby to link to HelperText or error messages
279
+ * - aria-invalid signals error state to assistive technology
280
+ * - Visible border change + color signals error (not color alone)
281
+ */
282
+ declare const TextField: react.ForwardRefExoticComponent<TextFieldProps & react.RefAttributes<HTMLInputElement>>;
283
+
265
284
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
266
285
  /** Visual variant */
267
286
  variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
@@ -306,59 +325,25 @@ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
306
325
  */
307
326
  declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
308
327
 
309
- interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
310
- /** Size of the input control */
328
+ interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
329
+ /** Layout direction */
330
+ orientation?: 'horizontal' | 'vertical';
331
+ /** Size applied to all child buttons */
311
332
  size?: 'sm' | 'md' | 'lg';
312
- /** Error state */
313
- error?: boolean;
314
- /** Full width */
315
- fullWidth?: boolean;
316
- }
317
- /**
318
- * Input — single-line text input.
319
- *
320
- * Accessibility:
321
- * - Use with <Label> and associate via htmlFor/id
322
- * - Use aria-describedby to link to HelperText or error messages
323
- * - aria-invalid signals error state to assistive technology
324
- * - Visible border change + color signals error (not color alone)
325
- */
326
- declare const Input: react.ForwardRefExoticComponent<InputProps & react.RefAttributes<HTMLInputElement>>;
327
-
328
- interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
329
- /** Error state */
330
- error?: boolean;
331
- /** Full width */
332
- fullWidth?: boolean;
333
- /** Allow vertical resize */
334
- resize?: 'none' | 'vertical' | 'both';
333
+ /** Whether buttons should share borders (connected style) */
334
+ connected?: boolean;
335
335
  }
336
336
  /**
337
- * Textareamulti-line text input.
337
+ * ButtonGrouplayout wrapper for grouping related buttons.
338
338
  *
339
- * Accessibility:
340
- * - Associate with Label via htmlFor/id
341
- * - Link to HelperText via aria-describedby
342
- */
343
- declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
344
-
345
- interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
346
- /** Size */
347
- size?: 'sm' | 'md' | 'lg';
348
- /** Error state */
349
- error?: boolean;
350
- /** Full width */
351
- fullWidth?: boolean;
352
- }
353
- /**
354
- * Select — native dropdown select.
339
+ * Renders multiple Button children in a connected or spaced row/column.
340
+ * When connected, adjacent buttons share borders for a toolbar appearance.
355
341
  *
356
342
  * Accessibility:
357
- * - Uses native <select> for full keyboard and screen reader support
358
- * - Associate with Label via htmlFor/id
359
- * - Custom chevron is decorative (aria-hidden on the icon)
343
+ * - Uses role="group" with optional aria-label for grouping context
344
+ * - Individual buttons retain their own keyboard navigation
360
345
  */
361
- declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLSelectElement>>;
346
+ declare function ButtonGroup({ orientation, size, connected, className, children, ...props }: ButtonGroupProps): react_jsx_runtime.JSX.Element;
362
347
 
363
348
  interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
364
349
  /** Label text displayed next to the checkbox */
@@ -377,6 +362,41 @@ interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'typ
377
362
  */
378
363
  declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
379
364
 
365
+ interface CheckboxGroupOption {
366
+ value: string;
367
+ label: string;
368
+ disabled?: boolean;
369
+ }
370
+ interface CheckboxGroupProps {
371
+ /** Group label rendered as fieldset legend */
372
+ label: string;
373
+ /** Shared name attribute for all checkboxes */
374
+ name: string;
375
+ /** Array of checkbox options */
376
+ options: CheckboxGroupOption[];
377
+ /** Currently selected values */
378
+ value?: string[];
379
+ /** Change handler — receives updated array of selected values */
380
+ onChange?: (value: string[]) => void;
381
+ /** Error message */
382
+ error?: string;
383
+ /** Layout direction */
384
+ orientation?: 'vertical' | 'horizontal';
385
+ /** Disabled state for all checkboxes */
386
+ disabled?: boolean;
387
+ /** Additional CSS class */
388
+ className?: string;
389
+ }
390
+ /**
391
+ * CheckboxGroup — group of checkboxes with fieldset/legend for accessibility.
392
+ *
393
+ * Accessibility:
394
+ * - Uses <fieldset> and <legend> for semantic grouping
395
+ * - Error message linked via role="alert"
396
+ * - Each checkbox is individually focusable
397
+ */
398
+ declare function CheckboxGroup({ label, name, options, value, onChange, error, orientation, disabled, className, }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
399
+
380
400
  interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
381
401
  /** Label text */
382
402
  label?: string;
@@ -393,6 +413,59 @@ interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'>
393
413
  */
394
414
  declare const Radio: react.ForwardRefExoticComponent<RadioProps & react.RefAttributes<HTMLInputElement>>;
395
415
 
416
+ interface RadioGroupOption {
417
+ value: string;
418
+ label: string;
419
+ disabled?: boolean;
420
+ }
421
+ interface RadioGroupProps {
422
+ /** Group label rendered as fieldset legend */
423
+ label: string;
424
+ /** Shared name attribute for all radios */
425
+ name: string;
426
+ /** Array of radio options */
427
+ options: RadioGroupOption[];
428
+ /** Currently selected value */
429
+ value?: string;
430
+ /** Change handler — receives the selected value */
431
+ onChange?: (value: string) => void;
432
+ /** Error message */
433
+ error?: string;
434
+ /** Layout direction */
435
+ orientation?: 'vertical' | 'horizontal';
436
+ /** Disabled state for all radios */
437
+ disabled?: boolean;
438
+ /** Additional CSS class */
439
+ className?: string;
440
+ }
441
+ /**
442
+ * RadioGroup — group of radio buttons with fieldset/legend for accessibility.
443
+ *
444
+ * Accessibility:
445
+ * - Uses <fieldset> and <legend> for semantic grouping
446
+ * - Arrow keys navigate between radios within the group
447
+ * - Error message rendered with role="alert"
448
+ */
449
+ declare function RadioGroup({ label, name, options, value, onChange, error, orientation, disabled, className, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
450
+
451
+ interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {
452
+ /** Size */
453
+ size?: 'sm' | 'md' | 'lg';
454
+ /** Error state */
455
+ error?: boolean;
456
+ /** Full width */
457
+ fullWidth?: boolean;
458
+ }
459
+ /**
460
+ * Select — native dropdown select.
461
+ *
462
+ * Accessibility:
463
+ * - Uses native <select> for full keyboard and screen reader support
464
+ * - Associate with Label via htmlFor/id
465
+ * - Custom chevron is decorative (aria-hidden on the icon)
466
+ */
467
+ declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLSelectElement>>;
468
+
396
469
  interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
397
470
  /** Label text */
398
471
  label?: string;
@@ -410,257 +483,328 @@ interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'
410
483
  */
411
484
  declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLInputElement>>;
412
485
 
413
- interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
414
- /** Mark the field as required — adds visual indicator */
415
- required?: boolean;
486
+ interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
487
+ /** Error state */
488
+ error?: boolean;
489
+ /** Full width */
490
+ fullWidth?: boolean;
491
+ /** Allow vertical resize */
492
+ resize?: 'none' | 'vertical' | 'both';
416
493
  }
417
494
  /**
418
- * Labelform field label.
495
+ * Textareamulti-line text input.
419
496
  *
420
497
  * Accessibility:
421
- * - Always associate with an input via htmlFor
422
- * - Required indicator uses both visual (*) and sr-only text
498
+ * - Associate with Label via htmlFor/id
499
+ * - Link to HelperText via aria-describedby
423
500
  */
424
- declare function Label({ required, className, children, ...props }: LabelProps): react_jsx_runtime.JSX.Element;
501
+ declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.RefAttributes<HTMLTextAreaElement>>;
425
502
 
426
- interface HelperTextProps extends HTMLAttributes<HTMLParagraphElement> {
427
- /** Render as error message */
428
- error?: boolean;
503
+ interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange' | 'value'> {
504
+ /** Current value */
505
+ value?: number;
506
+ /** Change handler */
507
+ onChange?: (value: number) => void;
508
+ /** Minimum value */
509
+ min?: number;
510
+ /** Maximum value */
511
+ max?: number;
512
+ /** Step increment */
513
+ step?: number;
514
+ /** Disabled state */
515
+ disabled?: boolean;
516
+ /** Size variant */
517
+ size?: 'sm' | 'md';
518
+ /** Accessible label text */
519
+ label?: string;
520
+ /** Show current value next to the slider */
521
+ showValue?: boolean;
522
+ /** Additional CSS class */
523
+ className?: string;
429
524
  }
430
525
  /**
431
- * HelperTextdescriptive or error text beneath a form field.
526
+ * Sliderrange input with custom styling.
432
527
  *
433
528
  * Accessibility:
434
- * - Link to input via aria-describedby on the input, matching this element's id
435
- * - Error messages use role="alert" for immediate screen reader announcement
436
- * - Error state uses both color and icon (not color alone)
529
+ * - Uses native input[type="range"] for full keyboard and AT support
530
+ * - Label linked via htmlFor/id
531
+ * - aria-valuemin, aria-valuemax, aria-valuenow communicated natively
532
+ * - showValue provides visual readout of current value
437
533
  */
438
- declare function HelperText({ error, className, children, ...props }: HelperTextProps): react_jsx_runtime.JSX.Element;
534
+ declare const Slider: react.ForwardRefExoticComponent<SliderProps & react.RefAttributes<HTMLInputElement>>;
439
535
 
440
- interface CardProps extends HTMLAttributes<HTMLDivElement> {
441
- /** Elevation level */
442
- elevation?: 'flat' | 'raised';
443
- /** Padding size */
444
- padding?: 'none' | 'sm' | 'md' | 'lg';
536
+ interface NumberFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange' | 'value' | 'prefix'> {
537
+ /** Current numeric value */
538
+ value?: number;
539
+ /** Change handler */
540
+ onChange?: (value: number) => void;
541
+ /** Minimum allowed value */
542
+ min?: number;
543
+ /** Maximum allowed value */
544
+ max?: number;
545
+ /** Increment step */
546
+ step?: number;
547
+ /** Size variant */
548
+ size?: 'sm' | 'md' | 'lg';
549
+ /** Error state */
550
+ error?: boolean;
551
+ /** Prefix text (e.g., "$") */
552
+ prefix?: string;
553
+ /** Suffix text (e.g., "mg") */
554
+ suffix?: string;
445
555
  }
446
556
  /**
447
- * Cardsurface container for grouping related content.
557
+ * NumberFieldnumeric input with increment/decrement buttons.
448
558
  *
449
559
  * Accessibility:
450
- * - Uses semantic HTML; add role="region" + aria-label when card
451
- * represents a distinct content section
452
- * - Border provides separation independent of shadow (not shadow alone)
560
+ * - Uses native input[type="number"] for spinbutton role
561
+ * - Increment/decrement buttons have aria-labels
562
+ * - Buttons are hidden from tab order (input handles keyboard)
563
+ * - min/max constraints are communicated to AT
453
564
  */
454
- declare function Card({ elevation, padding, className, children, ...props }: CardProps): react_jsx_runtime.JSX.Element;
565
+ declare const NumberField: react.ForwardRefExoticComponent<NumberFieldProps & react.RefAttributes<HTMLInputElement>>;
455
566
 
456
- interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
457
- /** Status variant */
458
- status?: 'neutral' | 'success' | 'warning' | 'error' | 'info';
567
+ interface SearchFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
568
+ /** Size of the search control */
569
+ size?: 'sm' | 'md' | 'lg';
570
+ /** Error state */
571
+ error?: boolean;
572
+ /** Full width */
573
+ fullWidth?: boolean;
574
+ /** Callback when clear button is clicked */
575
+ onClear?: () => void;
576
+ /** Show the clear button when input has a value */
577
+ showClearButton?: boolean;
459
578
  }
460
579
  /**
461
- * Badge / StatusChip small label for status or metadata.
580
+ * SearchField search input with magnifying glass icon and optional clear button.
462
581
  *
463
582
  * Accessibility:
464
- * - Always include meaningful text content (not color alone)
465
- * - In healthcare contexts, pair with text like "Active", "Pending",
466
- * "Critical" rather than relying on color to communicate status
467
- */
468
- declare function Badge({ status, className, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
469
-
470
- interface AlertProps extends HTMLAttributes<HTMLDivElement> {
471
- /** Semantic status */
472
- status?: 'info' | 'success' | 'warning' | 'error';
473
- /** Optional title */
474
- title?: string;
475
- /** Optional action element (e.g., a close button) */
476
- action?: ReactNode;
477
- }
478
- /**
479
- * Alert — contextual message banner.
480
- *
481
- * Accessibility:
482
- * - Uses role="alert" for errors/warnings (live region, immediately announced)
483
- * - Uses role="status" for info/success (polite announcement)
484
- * - Icon + color + text ensures meaning is communicated multiple ways
583
+ * - Uses role="searchbox" for semantic search intent
584
+ * - Clear button has aria-label for screen readers
585
+ * - Search icon is decorative (aria-hidden)
485
586
  */
486
- declare function Alert({ status, title, action, className, children, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
587
+ declare const SearchField: react.ForwardRefExoticComponent<SearchFieldProps & react.RefAttributes<HTMLInputElement>>;
487
588
 
488
- interface Tab {
489
- id: string;
589
+ interface AutocompleteOption {
590
+ value: string;
490
591
  label: string;
491
- content: ReactNode;
492
- disabled?: boolean;
493
592
  }
494
- interface TabsProps {
495
- /** Tab definitions */
496
- tabs: Tab[];
497
- /** Controlled active tab id */
498
- activeTab?: string;
499
- /** Callback when tab changes */
500
- onTabChange?: (id: string) => void;
501
- /** Additional className for the wrapper */
593
+ interface AutocompleteProps {
594
+ /** Available options */
595
+ options: AutocompleteOption[];
596
+ /** Selected value */
597
+ value?: string;
598
+ /** Change handler receives the selected value */
599
+ onChange?: (value: string) => void;
600
+ /** Callback when the text input changes */
601
+ onInputChange?: (inputValue: string) => void;
602
+ /** Placeholder text */
603
+ placeholder?: string;
604
+ /** Disabled state */
605
+ disabled?: boolean;
606
+ /** Error state */
607
+ error?: boolean;
608
+ /** Size variant */
609
+ size?: 'sm' | 'md' | 'lg';
610
+ /** Show a loading spinner in the dropdown */
611
+ loading?: boolean;
612
+ /** Text shown when no results match */
613
+ noResultsText?: string;
614
+ /** Additional CSS class */
502
615
  className?: string;
503
616
  }
504
617
  /**
505
- * Tabstabbed interface for switching between content panels.
618
+ * Autocompletecombobox input with filtered suggestions dropdown.
506
619
  *
507
620
  * Accessibility:
508
- * - Full WAI-ARIA tabs pattern: role="tablist", role="tab", role="tabpanel"
509
- * - Arrow key navigation between tabs
510
- * - Home/End keys jump to first/last tab
511
- * - aria-selected, aria-controls, aria-labelledby for AT relationships
512
- * - Only active panel is in the tab order (tabIndex=0 on active tab)
621
+ * - role="combobox" on input with aria-expanded, aria-controls, aria-activedescendant
622
+ * - Dropdown uses role="listbox" with role="option" items
623
+ * - Arrow keys navigate options, Enter selects, Escape closes
624
+ * - Full ARIA combobox pattern per WAI-ARIA 1.2
513
625
  */
514
- declare function Tabs({ tabs, activeTab, onTabChange, className }: TabsProps): react_jsx_runtime.JSX.Element;
626
+ declare function Autocomplete({ options, value, onChange, onInputChange, placeholder, disabled, error, size, loading, noResultsText, className, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
515
627
 
516
- interface ModalProps {
517
- /** Additional className */
628
+ interface MultiSelectOption {
629
+ value: string;
630
+ label: string;
631
+ }
632
+ interface MultiSelectProps {
633
+ /** Available options */
634
+ options: MultiSelectOption[];
635
+ /** Currently selected values */
636
+ value?: string[];
637
+ /** Change handler — receives updated array of selected values */
638
+ onChange?: (value: string[]) => void;
639
+ /** Placeholder text */
640
+ placeholder?: string;
641
+ /** Disabled state */
642
+ disabled?: boolean;
643
+ /** Error state */
644
+ error?: boolean;
645
+ /** Size variant */
646
+ size?: 'sm' | 'md' | 'lg';
647
+ /** Maximum number of tags visible before showing "+N more" */
648
+ maxDisplayedTags?: number;
649
+ /** Additional CSS class */
518
650
  className?: string;
519
- /** Whether the modal is visible */
520
- open: boolean;
521
- /** Called when the modal should close */
522
- onClose: () => void;
523
- /** Modal title (rendered in header) */
524
- title: ReactNode;
525
- /** Max width */
526
- size?: 'sm' | 'md' | 'lg' | 'xl';
527
- /** Footer actions */
528
- footer?: ReactNode;
529
651
  }
530
652
  /**
531
- * Modal / Dialog overlay dialog for focused interactions.
653
+ * MultiSelect multi-value select with tags and dropdown checkboxes.
532
654
  *
533
655
  * Accessibility:
534
- * - Uses native <dialog> element for built-in focus trapping and Escape handling
535
- * - aria-labelledby links to the title
536
- * - Focus is moved into the dialog on open
537
- * - Escape key closes the dialog
538
- * - Scrim click closes the dialog
539
- * - Healthcare note: for destructive actions (e.g., cancel appointment,
540
- * delete record), always include clear confirmation language in the
541
- * dialog and use danger-variant buttons
656
+ * - Uses role="combobox" with aria-expanded
657
+ * - Dropdown uses role="listbox" with role="option" items
658
+ * - Tags are removable via keyboard (Backspace removes last)
659
+ * - Escape closes dropdown, focus remains on control
542
660
  */
543
- declare function Modal({ open, onClose, title, size, footer, className, children }: ModalProps & {
544
- children?: ReactNode;
545
- }): react_jsx_runtime.JSX.Element;
661
+ declare function MultiSelect({ options, value, onChange, placeholder, disabled, error, size, maxDisplayedTags, className, }: MultiSelectProps): react_jsx_runtime.JSX.Element;
546
662
 
547
- interface TableProps extends TableHTMLAttributes<HTMLTableElement> {
548
- /** Compact density for admin/operational views */
549
- density?: 'default' | 'compact';
550
- /** Striped rows for scan-ability */
551
- striped?: boolean;
663
+ interface FileUploadProps {
664
+ /** Accepted file types (e.g., ".pdf,.jpg,image/*") */
665
+ accept?: string;
666
+ /** Allow multiple files */
667
+ multiple?: boolean;
668
+ /** Max file size in bytes */
669
+ maxSize?: number;
670
+ /** Callback when files are selected or dropped */
671
+ onFilesSelected?: (files: File[]) => void;
672
+ /** Disabled state */
673
+ disabled?: boolean;
674
+ /** Error message */
675
+ error?: string;
676
+ /** Additional CSS class */
677
+ className?: string;
552
678
  }
553
679
  /**
554
- * Tabledata table with accessible defaults.
680
+ * FileUploaddropzone for file upload with click and drag support.
555
681
  *
556
682
  * Accessibility:
557
- * - Semantic <table> / <thead> / <tbody> / <th> structure
558
- * - Use scope="col" on header cells
559
- * - For complex tables, use aria-describedby to link to a caption
560
- * - Healthcare note: clinical data tables should use tabular numerals
561
- * (monospace) and adequate row height for readability under stress
683
+ * - Keyboard accessible via Enter/Space to open file dialog
684
+ * - Uses role="button" on the dropzone
685
+ * - aria-describedby links to instructions
686
+ * - File list announced after selection
562
687
  */
563
- declare function Table({ density, striped, className, children, ...props }: TableProps): react_jsx_runtime.JSX.Element;
564
- declare function TableHead({ className, children, ...props }: HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
565
- declare function TableBody({ className, children, ...props }: HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
566
- declare function TableRow({ className, children, ...props }: HTMLAttributes<HTMLTableRowElement>): react_jsx_runtime.JSX.Element;
567
- declare function TableHeaderCell({ className, children, ...props }: ThHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
568
- declare function TableCell({ className, children, ...props }: TdHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
688
+ declare function FileUpload({ accept, multiple, maxSize, onFilesSelected, disabled, error, className, }: FileUploadProps): react_jsx_runtime.JSX.Element;
569
689
 
570
- interface TooltipProps {
571
- /** Tooltip content */
572
- content: ReactNode;
573
- /** Trigger element */
574
- children: ReactNode;
575
- /** Placement */
576
- placement?: 'top' | 'bottom';
577
- /** Delay before showing (ms) */
578
- delay?: number;
579
- /** Additional className */
690
+ interface OTPInputProps {
691
+ /** Number of OTP digits */
692
+ length?: number;
693
+ /** Current value string */
694
+ value?: string;
695
+ /** Change handler — receives the full OTP string */
696
+ onChange?: (value: string) => void;
697
+ /** Error state */
698
+ error?: boolean;
699
+ /** Disabled state */
700
+ disabled?: boolean;
701
+ /** Auto-focus first input on mount */
702
+ autoFocus?: boolean;
703
+ /** Additional CSS class */
580
704
  className?: string;
581
705
  }
582
706
  /**
583
- * Tooltipsupplementary text on hover/focus.
707
+ * OTPInputcode/OTP input with separate boxes that auto-advance.
584
708
  *
585
709
  * Accessibility:
586
- * - Shows on both hover and keyboard focus
587
- * - Uses role="tooltip" with aria-describedby linking
588
- * - Respects reduced motion preferences (no animation)
589
- * - Healthcare note: never put critical information in tooltips alone.
590
- * Use for supplementary context only, since tooltips are easy to miss
591
- * and not accessible on touch devices.
710
+ * - Each digit input has aria-label describing its position
711
+ * - Supports keyboard navigation (Backspace moves to previous)
712
+ * - Paste support fills all boxes at once
713
+ * - Error state communicated via aria-invalid
592
714
  */
593
- declare function Tooltip({ content, children, placement, delay, className }: TooltipProps): react_jsx_runtime.JSX.Element;
715
+ declare function OTPInput({ length, value, onChange, error, disabled, autoFocus, className, }: OTPInputProps): react_jsx_runtime.JSX.Element;
594
716
 
595
- interface DividerProps extends HTMLAttributes<HTMLHRElement> {
596
- /** Spacing above and below */
597
- spacing?: 'none' | 'sm' | 'md' | 'lg';
717
+ interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
718
+ /** Current color value (hex) */
719
+ value?: string;
720
+ /** Called when color changes */
721
+ onChange?: (color: string) => void;
722
+ /** Predefined color swatches */
723
+ swatches?: string[];
724
+ /** Label */
725
+ label?: string;
726
+ /** Disabled state */
727
+ disabled?: boolean;
728
+ /** Size variant */
729
+ size?: 'sm' | 'md';
598
730
  }
599
731
  /**
600
- * Dividerhorizontal rule for visual separation.
732
+ * ColorPickercolor selection input with swatch palette and native picker.
733
+ *
734
+ * Provides a swatch grid for quick selection plus a native `<input type="color">`
735
+ * fallback for custom colors.
601
736
  *
602
737
  * Accessibility:
603
- * - Uses semantic <hr> which conveys a thematic break
604
- * - role="separator" is implicit for <hr>
738
+ * - Swatch buttons have aria-label with hex value
739
+ * - Selected swatch indicated with aria-pressed
740
+ * - Native color input provides full keyboard + assistive tech support
605
741
  */
606
- declare function Divider({ spacing, className, ...props }: DividerProps): react_jsx_runtime.JSX.Element;
742
+ declare const ColorPicker: react.ForwardRefExoticComponent<ColorPickerProps & react.RefAttributes<HTMLDivElement>>;
607
743
 
608
- interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
609
- /** Size */
744
+ interface RatingProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
745
+ /** Current rating value (0 = no rating) */
746
+ value?: number;
747
+ /** Called when rating changes */
748
+ onChange?: (value: number) => void;
749
+ /** Maximum rating value */
750
+ max?: number;
751
+ /** Size variant */
610
752
  size?: 'sm' | 'md' | 'lg';
611
- /** Accessible label */
753
+ /** Whether the rating is read-only */
754
+ readOnly?: boolean;
755
+ /** Disabled state */
756
+ disabled?: boolean;
757
+ /** Label for accessibility */
612
758
  label?: string;
759
+ /** Custom icon renderer — receives filled state */
760
+ renderIcon?: (filled: boolean, index: number) => React.ReactNode;
613
761
  }
614
762
  /**
615
- * Spinner / LoadingIndicator visual loading state.
763
+ * Rating star-based rating input with keyboard navigation.
764
+ *
765
+ * Supports custom max values, read-only display, and custom icon rendering.
616
766
  *
617
767
  * Accessibility:
618
- * - role="status" with aria-label for screen reader announcement
619
- * - aria-live="polite" so loading state is announced without interrupting
620
- * - Healthcare note: in clinical workflows, always pair with text
621
- * context ("Loading patient records...") so users understand what
622
- * they are waiting for
768
+ * - Uses radio group pattern with arrow key navigation
769
+ * - Each star has aria-label with its value
770
+ * - Supports keyboard: ArrowLeft/Right to navigate, Enter/Space to select
623
771
  */
624
- declare function Spinner({ size, label, className, ...props }: SpinnerProps): react_jsx_runtime.JSX.Element;
772
+ declare const Rating: react.ForwardRefExoticComponent<RatingProps & react.RefAttributes<HTMLDivElement>>;
625
773
 
626
- interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
627
- /** Shape variant */
628
- variant?: 'text' | 'circular' | 'rectangular';
629
- /** Width (CSS value) */
630
- width?: string | number;
631
- /** Height (CSS value) */
632
- height?: string | number;
633
- /** Number of text lines (only for text variant) */
634
- lines?: number;
774
+ interface TagInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
775
+ /** Current tag values */
776
+ value?: string[];
777
+ /** Called when tags change */
778
+ onChange?: (tags: string[]) => void;
779
+ /** Placeholder for the text input */
780
+ placeholder?: string;
781
+ /** Label */
782
+ label?: string;
783
+ /** Maximum number of tags allowed */
784
+ max?: number;
785
+ /** Size variant */
786
+ size?: 'sm' | 'md';
787
+ /** Disabled state */
788
+ disabled?: boolean;
789
+ /** Error state */
790
+ error?: boolean;
791
+ /** Characters that trigger tag creation (default: Enter, comma) */
792
+ separators?: string[];
793
+ /** Whether duplicates are allowed */
794
+ allowDuplicates?: boolean;
635
795
  }
636
796
  /**
637
- * Skeletonplaceholder loading indicator with shimmer animation.
797
+ * TagInputmulti-value text input that creates tag chips.
798
+ *
799
+ * Users type text and press Enter or comma to create tags.
800
+ * Tags can be removed with Backspace or by clicking the remove button.
638
801
  *
639
802
  * Accessibility:
640
- * - aria-hidden="true" since it is purely decorative
641
- * - Healthcare note: use Skeleton loaders in clinical dashboards to
642
- * indicate data is loading, reducing perceived wait time
803
+ * - Tags have aria-label and remove button with aria-label
804
+ * - Backspace removes last tag when input is empty
805
+ * - Screen readers announce tag count via aria-describedby
643
806
  */
644
- declare function Skeleton({ variant, width, height, lines, className, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
645
-
646
- type StatusBadgeStatus = 'active' | 'inactive' | 'pending' | 'critical' | 'discharged' | 'scheduled' | 'cancelled' | 'in-progress';
647
- interface StatusBadgeProps extends HTMLAttributes<HTMLSpanElement> {
648
- /** Healthcare status */
649
- status: StatusBadgeStatus;
650
- /** Size variant */
651
- size?: 'sm' | 'md';
652
- /** Show a colored status dot before the label */
653
- dot?: boolean;
654
- }
655
- /**
656
- * StatusBadge — enhanced badge for healthcare workflow statuses.
657
- *
658
- * Accessibility:
659
- * - Always displays text label alongside color to avoid color-only indication
660
- * - Healthcare note: maps each clinical status to an appropriate semantic
661
- * color (critical = red, active = green, pending = amber, etc.)
662
- */
663
- declare function StatusBadge({ status, size, dot, className, children, ...props }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
807
+ declare const TagInput: react.ForwardRefExoticComponent<TagInputProps & react.RefAttributes<HTMLDivElement>>;
664
808
 
665
809
  interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
666
810
  /** Image source URL */
@@ -686,27 +830,145 @@ interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
686
830
  */
687
831
  declare function Avatar({ src, alt, name, size, status, className, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
688
832
 
689
- interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {
690
- /** Optional icon displayed above the title */
833
+ interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
834
+ /** Status variant */
835
+ status?: 'neutral' | 'success' | 'warning' | 'error' | 'info';
836
+ }
837
+ /**
838
+ * Badge / StatusChip — small label for status or metadata.
839
+ *
840
+ * Accessibility:
841
+ * - Always include meaningful text content (not color alone)
842
+ * - In healthcare contexts, pair with text like "Active", "Pending",
843
+ * "Critical" rather than relying on color to communicate status
844
+ */
845
+ declare function Badge({ status, className, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
846
+
847
+ interface ChipProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'onClick'> {
848
+ /** Visual color variant */
849
+ color?: 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';
850
+ /** Size */
851
+ size?: 'sm' | 'md';
852
+ /** Chip style */
853
+ variant?: 'filled' | 'outlined';
854
+ /** Icon or avatar slot (leading) */
691
855
  icon?: ReactNode;
692
- /** Title text */
693
- title: string;
694
- /** Descriptive text below the title */
856
+ /** Whether the chip is clickable */
857
+ onClick?: (e: MouseEvent<HTMLSpanElement>) => void;
858
+ /** Show a delete/dismiss button */
859
+ onDelete?: (e: MouseEvent<HTMLButtonElement>) => void;
860
+ /** Disabled state */
861
+ disabled?: boolean;
862
+ }
863
+ /**
864
+ * Chip — compact interactive element for tags, filters, and selections.
865
+ *
866
+ * Distinct from Badge: Chip is interactive (clickable, deletable) and
867
+ * larger; Badge is a read-only status label.
868
+ *
869
+ * Accessibility:
870
+ * - Clickable chips render with role="button" and tabIndex
871
+ * - Delete button has an accessible aria-label
872
+ * - Disabled state applies aria-disabled
873
+ * - Healthcare note: useful for allergy tags, condition labels,
874
+ * insurance plan tags, filter selections
875
+ */
876
+ declare const Chip: react.ForwardRefExoticComponent<ChipProps & react.RefAttributes<HTMLSpanElement>>;
877
+
878
+ interface DividerProps extends HTMLAttributes<HTMLHRElement> {
879
+ /** Spacing above and below */
880
+ spacing?: 'none' | 'sm' | 'md' | 'lg';
881
+ }
882
+ /**
883
+ * Divider — horizontal rule for visual separation.
884
+ *
885
+ * Accessibility:
886
+ * - Uses semantic <hr> which conveys a thematic break
887
+ * - role="separator" is implicit for <hr>
888
+ */
889
+ declare function Divider({ spacing, className, ...props }: DividerProps): react_jsx_runtime.JSX.Element;
890
+
891
+ interface ListProps extends HTMLAttributes<HTMLUListElement> {
892
+ /** Show dividers between items */
893
+ divided?: boolean;
894
+ /** Padding inside list items */
895
+ padding?: 'none' | 'sm' | 'md';
896
+ }
897
+ /**
898
+ * List — composable list container for displaying groups of items.
899
+ *
900
+ * Accessibility:
901
+ * - Uses semantic <ul>/<li> structure
902
+ * - Interactive items rendered as buttons for keyboard access
903
+ * - Disabled items use aria-disabled
904
+ * - Selected items use aria-selected
905
+ */
906
+ declare const List: react.ForwardRefExoticComponent<ListProps & react.RefAttributes<HTMLUListElement>>;
907
+ interface ListItemProps extends Omit<HTMLAttributes<HTMLLIElement>, 'prefix'> {
908
+ /** Click handler — makes the item interactive */
909
+ onClick?: () => void;
910
+ /** Whether this item is selected */
911
+ selected?: boolean;
912
+ /** Whether this item is disabled */
913
+ disabled?: boolean;
914
+ /** Leading element (icon, avatar, etc.) */
915
+ prefix?: ReactNode;
916
+ /** Trailing element (badge, action button, etc.) */
917
+ suffix?: ReactNode;
918
+ /** Secondary description text */
695
919
  description?: string;
696
- /** Optional action element (e.g., a button) */
697
- action?: ReactNode;
920
+ }
921
+ declare const ListItem: react.ForwardRefExoticComponent<ListItemProps & react.RefAttributes<HTMLLIElement>>;
922
+
923
+ interface TableProps extends TableHTMLAttributes<HTMLTableElement> {
924
+ /** Compact density for admin/operational views */
925
+ density?: 'default' | 'compact';
926
+ /** Striped rows for scan-ability */
927
+ striped?: boolean;
698
928
  }
699
929
  /**
700
- * EmptyStatecentered placeholder for empty tables, lists, or views.
930
+ * Tabledata table with accessible defaults.
701
931
  *
702
932
  * Accessibility:
703
- * - Uses semantic heading and paragraph elements
704
- * - Healthcare note: provide clear, actionable guidance in empty states
705
- * (e.g., "No patients match your filters. Try adjusting your search.")
933
+ * - Semantic <table> / <thead> / <tbody> / <th> structure
934
+ * - Use scope="col" on header cells
935
+ * - For complex tables, use aria-describedby to link to a caption
936
+ * - Healthcare note: clinical data tables should use tabular numerals
937
+ * (monospace) and adequate row height for readability under stress
706
938
  */
707
- declare function EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
939
+ declare function Table({ density, striped, className, children, ...props }: TableProps): react_jsx_runtime.JSX.Element;
940
+ declare function TableHead({ className, children, ...props }: HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
941
+ declare function TableBody({ className, children, ...props }: HTMLAttributes<HTMLTableSectionElement>): react_jsx_runtime.JSX.Element;
942
+ declare function TableRow({ className, children, ...props }: HTMLAttributes<HTMLTableRowElement>): react_jsx_runtime.JSX.Element;
943
+ declare function TableHeaderCell({ className, children, ...props }: ThHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
944
+ declare function TableCell({ className, children, ...props }: TdHTMLAttributes<HTMLTableCellElement>): react_jsx_runtime.JSX.Element;
945
+
946
+ interface TooltipProps {
947
+ /** Tooltip content */
948
+ content: ReactNode;
949
+ /** Trigger element */
950
+ children: ReactNode;
951
+ /** Placement */
952
+ placement?: 'top' | 'bottom';
953
+ /** Delay before showing (ms) */
954
+ delay?: number;
955
+ /** Additional className */
956
+ className?: string;
957
+ }
958
+ /**
959
+ * Tooltip — supplementary text on hover/focus.
960
+ *
961
+ * Accessibility:
962
+ * - Shows on both hover and keyboard focus
963
+ * - Uses role="tooltip" with aria-describedby linking
964
+ * - Respects reduced motion preferences (no animation)
965
+ * - Healthcare note: never put critical information in tooltips alone.
966
+ * Use for supplementary context only, since tooltips are easy to miss
967
+ * and not accessible on touch devices.
968
+ */
969
+ declare function Tooltip({ content, children, placement, delay, className }: TooltipProps): react_jsx_runtime.JSX.Element;
708
970
 
709
- interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
971
+ interface ProgressProps extends HTMLAttributes<HTMLDivElement> {
710
972
  /** Current value (0-100) */
711
973
  value: number;
712
974
  /** Maximum value (defaults to 100) */
@@ -721,7 +983,7 @@ interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
721
983
  showValue?: boolean;
722
984
  }
723
985
  /**
724
- * ProgressBar — horizontal bar indicating completion or progress.
986
+ * Progress — horizontal bar indicating completion or progress.
725
987
  *
726
988
  * Accessibility:
727
989
  * - role="progressbar" with aria-valuenow, aria-valuemin, aria-valuemax
@@ -729,31 +991,93 @@ interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
729
991
  * - Healthcare note: useful for treatment progress, form completion,
730
992
  * or patient intake steps
731
993
  */
732
- declare function ProgressBar({ value, max, size, variant, label, showValue, className, ...props }: ProgressBarProps): react_jsx_runtime.JSX.Element;
994
+ declare function Progress({ value, max, size, variant, label, showValue, className, ...props }: ProgressProps): react_jsx_runtime.JSX.Element;
733
995
 
734
- interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {
735
- /** Current active page (1-based) */
736
- currentPage: number;
737
- /** Total number of pages */
738
- totalPages: number;
739
- /** Callback when page changes */
740
- onPageChange: (page: number) => void;
741
- /** Number of sibling pages to show around the current page */
742
- siblingCount?: number;
996
+ interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
997
+ /** Shape variant */
998
+ variant?: 'text' | 'circular' | 'rectangular';
999
+ /** Width (CSS value) */
1000
+ width?: string | number;
1001
+ /** Height (CSS value) */
1002
+ height?: string | number;
1003
+ /** Number of text lines (only for text variant) */
1004
+ lines?: number;
1005
+ }
1006
+ /**
1007
+ * Skeleton — placeholder loading indicator with shimmer animation.
1008
+ *
1009
+ * Accessibility:
1010
+ * - aria-hidden="true" since it is purely decorative
1011
+ * - Healthcare note: use Skeleton loaders in clinical dashboards to
1012
+ * indicate data is loading, reducing perceived wait time
1013
+ */
1014
+ declare function Skeleton({ variant, width, height, lines, className, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
1015
+
1016
+ interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
1017
+ /** Size */
1018
+ size?: 'sm' | 'md' | 'lg';
1019
+ /** Accessible label */
1020
+ label?: string;
1021
+ }
1022
+ /**
1023
+ * Spinner / LoadingIndicator — visual loading state.
1024
+ *
1025
+ * Accessibility:
1026
+ * - role="status" with aria-label for screen reader announcement
1027
+ * - aria-live="polite" so loading state is announced without interrupting
1028
+ * - Healthcare note: in clinical workflows, always pair with text
1029
+ * context ("Loading patient records...") so users understand what
1030
+ * they are waiting for
1031
+ */
1032
+ declare function Spinner({ size, label, className, ...props }: SpinnerProps): react_jsx_runtime.JSX.Element;
1033
+
1034
+ type StatusBadgeStatus = 'active' | 'inactive' | 'pending' | 'critical' | 'discharged' | 'scheduled' | 'cancelled' | 'in-progress';
1035
+ interface StatusBadgeProps extends HTMLAttributes<HTMLSpanElement> {
1036
+ /** Healthcare status */
1037
+ status: StatusBadgeStatus;
743
1038
  /** Size variant */
744
1039
  size?: 'sm' | 'md';
1040
+ /** Show a colored status dot before the label */
1041
+ dot?: boolean;
745
1042
  }
746
1043
  /**
747
- * Paginationpage navigation for paginated data.
1044
+ * StatusBadgeenhanced badge for healthcare workflow statuses.
748
1045
  *
749
1046
  * Accessibility:
750
- * - Wraps in <nav> with aria-label="Pagination"
751
- * - Current page indicated with aria-current="page"
752
- * - Previous/Next buttons disabled at boundaries
753
- * - Healthcare note: use pagination for patient lists, lab results,
754
- * and audit logs to keep pages manageable
1047
+ * - Always displays text label alongside color to avoid color-only indication
1048
+ * - Healthcare note: maps each clinical status to an appropriate semantic
1049
+ * color (critical = red, active = green, pending = amber, etc.)
755
1050
  */
756
- declare function Pagination({ currentPage, totalPages, onPageChange, siblingCount, size, className, ...props }: PaginationProps): react_jsx_runtime.JSX.Element | null;
1051
+ declare function StatusBadge({ status, size, dot, className, children, ...props }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
1052
+
1053
+ type TimelineItemVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
1054
+ interface TimelineItem {
1055
+ /** Unique identifier */
1056
+ id: string;
1057
+ /** Event title */
1058
+ title: string;
1059
+ /** Optional description */
1060
+ description?: string;
1061
+ /** Timestamp display string */
1062
+ timestamp: string;
1063
+ /** Optional icon to replace the default dot */
1064
+ icon?: ReactNode;
1065
+ /** Visual variant */
1066
+ variant?: TimelineItemVariant;
1067
+ }
1068
+ interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
1069
+ /** Timeline items in chronological order */
1070
+ items: TimelineItem[];
1071
+ }
1072
+ /**
1073
+ * Timeline — vertical timeline for displaying sequential events.
1074
+ *
1075
+ * Accessibility:
1076
+ * - Uses semantic <ol> for ordered event sequence
1077
+ * - Each event is an <li> for proper list semantics
1078
+ * - Icons are decorative (aria-hidden)
1079
+ */
1080
+ declare function Timeline({ items, className, ...props }: TimelineProps): react_jsx_runtime.JSX.Element;
757
1081
 
758
1082
  interface DescriptionListItem {
759
1083
  /** Label / term */
@@ -780,456 +1104,644 @@ interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {
780
1104
  */
781
1105
  declare function DescriptionList({ items, layout, columns, className, style, ...props }: DescriptionListProps): react_jsx_runtime.JSX.Element;
782
1106
 
783
- interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
784
- /** Trigger element that opens the popover */
785
- trigger: ReactNode;
786
- /** Content rendered inside the popover */
787
- content: ReactNode;
788
- /** Controlled open state */
789
- open?: boolean;
790
- /** Callback when open state changes */
791
- onOpenChange?: (open: boolean) => void;
792
- /** Placement relative to the trigger */
793
- placement?: 'top' | 'bottom' | 'left' | 'right';
794
- /** Alignment along the placement axis */
795
- align?: 'start' | 'center' | 'end';
1107
+ interface KbdProps extends HTMLAttributes<HTMLElement> {
1108
+ /** Size variant */
1109
+ size?: 'sm' | 'md';
796
1110
  }
797
1111
  /**
798
- * Popoverpositioned overlay content triggered by a reference element.
1112
+ * Kbdkeyboard shortcut / key indicator.
1113
+ *
1114
+ * Renders an inline `<kbd>` element styled to look like a physical key.
1115
+ * Use to display keyboard shortcuts in menus, tooltips, and documentation.
799
1116
  *
800
1117
  * Accessibility:
801
- * - Escape key closes the popover
802
- * - Focus is managed: moves into popover on open, returns on close
803
- * - Click outside closes the popover
804
- * - Healthcare note: use for additional context like patient quick-view,
805
- * medication details, or field-level help without navigating away
1118
+ * - Uses semantic <kbd> element for screen readers
1119
+ * - Screen readers will announce the content as keyboard input
806
1120
  */
807
- declare function Popover({ trigger, content, open: controlledOpen, onOpenChange, placement, align, className, ...props }: PopoverProps): react_jsx_runtime.JSX.Element;
1121
+ declare function Kbd({ size, className, children, ...props }: KbdProps): react_jsx_runtime.JSX.Element;
808
1122
 
809
- interface DrawerProps {
810
- /** Additional className */
811
- className?: string;
812
- /** Whether the drawer is visible */
1123
+ interface TreeNode {
1124
+ /** Unique identifier */
1125
+ id: string;
1126
+ /** Display label */
1127
+ label: string;
1128
+ /** Optional icon */
1129
+ icon?: ReactNode;
1130
+ /** Child nodes */
1131
+ children?: TreeNode[];
1132
+ /** Whether the node is disabled */
1133
+ disabled?: boolean;
1134
+ }
1135
+ interface TreeViewProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
1136
+ /** Tree data */
1137
+ data: TreeNode[];
1138
+ /** IDs of initially expanded nodes (uncontrolled) */
1139
+ defaultExpanded?: string[];
1140
+ /** IDs of expanded nodes (controlled) */
1141
+ expanded?: string[];
1142
+ /** Called when a node is expanded/collapsed */
1143
+ onExpandChange?: (expanded: string[]) => void;
1144
+ /** Currently selected node ID */
1145
+ selected?: string | null;
1146
+ /** Called when a node is selected */
1147
+ onSelect?: (nodeId: string, node: TreeNode) => void;
1148
+ /** Size variant */
1149
+ size?: 'sm' | 'md';
1150
+ /** Show connecting lines between levels */
1151
+ showLines?: boolean;
1152
+ }
1153
+ /**
1154
+ * TreeView — hierarchical data display with expand/collapse.
1155
+ *
1156
+ * Renders nested tree data with keyboard navigation, selection,
1157
+ * and optional connecting guide lines.
1158
+ *
1159
+ * Accessibility:
1160
+ * - Uses tree/treeitem/group ARIA roles
1161
+ * - Arrow keys expand/collapse nodes
1162
+ * - Enter/Space selects nodes
1163
+ * - aria-expanded on branch nodes
1164
+ */
1165
+ declare const TreeView: react.ForwardRefExoticComponent<TreeViewProps & react.RefAttributes<HTMLDivElement>>;
1166
+
1167
+ type TypographyVariant = 'display-lg' | 'display-md' | 'heading-xl' | 'heading-lg' | 'heading-md' | 'heading-sm' | 'body-lg' | 'body-md' | 'body-sm' | 'label-lg' | 'label-md' | 'caption' | 'data' | 'code';
1168
+ type TypographyColor = 'primary' | 'secondary' | 'muted' | 'inverse' | 'success' | 'warning' | 'error' | 'info' | 'inherit';
1169
+ type TypographyWeight = 'regular' | 'medium' | 'semibold' | 'bold';
1170
+ type TypographyAlign = 'left' | 'center' | 'right';
1171
+ interface TypographyProps extends HTMLAttributes<HTMLElement> {
1172
+ /** Typographic scale variant */
1173
+ variant?: TypographyVariant;
1174
+ /** Text color */
1175
+ color?: TypographyColor;
1176
+ /** Font weight override */
1177
+ weight?: TypographyWeight;
1178
+ /** Text alignment */
1179
+ align?: TypographyAlign;
1180
+ /** Render as a specific HTML element (overrides the variant default) */
1181
+ as?: ElementType;
1182
+ /** Truncate with ellipsis */
1183
+ truncate?: boolean;
1184
+ /** Clamp to N lines */
1185
+ lineClamp?: number;
1186
+ }
1187
+ /**
1188
+ * Typography — text rendering primitive.
1189
+ *
1190
+ * Maps directly to the Aegis type scale tokens and provides a consistent
1191
+ * API for rendering text at any level of the hierarchy.
1192
+ *
1193
+ * Accessibility:
1194
+ * - Defaults to the semantically correct HTML element for each variant
1195
+ * (h1–h4 for headings, p for body, code for code, span for labels)
1196
+ * - Use `as` to override when the visual style and semantic level differ
1197
+ * - `color="inherit"` defers to the parent color
1198
+ */
1199
+ declare const Typography: react.ForwardRefExoticComponent<TypographyProps & react.RefAttributes<HTMLElement>>;
1200
+
1201
+ interface AlertProps extends HTMLAttributes<HTMLDivElement> {
1202
+ /** Semantic status */
1203
+ status?: 'info' | 'success' | 'warning' | 'error';
1204
+ /** Optional title */
1205
+ title?: string;
1206
+ /** Optional action element (e.g., a close button) */
1207
+ action?: ReactNode;
1208
+ }
1209
+ /**
1210
+ * Alert — contextual message banner.
1211
+ *
1212
+ * Accessibility:
1213
+ * - Uses role="alert" for errors/warnings (live region, immediately announced)
1214
+ * - Uses role="status" for info/success (polite announcement)
1215
+ * - Icon + color + text ensures meaning is communicated multiple ways
1216
+ */
1217
+ declare function Alert({ status, title, action, className, children, ...props }: AlertProps): react_jsx_runtime.JSX.Element;
1218
+
1219
+ interface BackdropProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick'> {
1220
+ /** Whether the backdrop is visible */
813
1221
  open: boolean;
814
- /** Called when the drawer should close */
815
- onClose: () => void;
816
- /** Drawer title */
817
- title: ReactNode;
818
- /** Width preset */
819
- size?: 'sm' | 'md' | 'lg';
820
- /** Which side the drawer slides from */
821
- position?: 'left' | 'right';
822
- /** Footer actions */
823
- footer?: ReactNode;
824
- /** Drawer body content */
825
- children?: ReactNode;
1222
+ /** Called when the backdrop is clicked */
1223
+ onClick?: (e: MouseEvent<HTMLDivElement>) => void;
1224
+ /** Whether clicking the backdrop should be ignored (e.g. mandatory dialog) */
1225
+ disableClick?: boolean;
1226
+ /** Whether to lock body scroll while open */
1227
+ lockScroll?: boolean;
1228
+ /** Visual intensity */
1229
+ variant?: 'default' | 'light' | 'opaque';
826
1230
  }
827
1231
  /**
828
- * Drawerside panel overlay for detail views and forms.
1232
+ * Backdropfullscreen overlay primitive.
1233
+ *
1234
+ * Backdrop provides the scrim layer behind Modal, Drawer, and Dialog.
1235
+ * It handles body scroll locking, click-to-dismiss, and fade animation.
829
1236
  *
830
1237
  * Accessibility:
831
- * - Uses native <dialog> element for focus trapping
832
- * - Escape key closes the drawer
1238
+ * - aria-hidden="true" the backdrop itself is not interactive content
1239
+ * - Focus management is the responsibility of the surface component (Modal, Drawer)
1240
+ * - Body scroll lock prevents background content from scrolling under the overlay
1241
+ */
1242
+ declare function Backdrop({ open, onClick, disableClick, lockScroll, variant, className, children, ...props }: BackdropProps): react_jsx_runtime.JSX.Element | null;
1243
+
1244
+ interface DialogProps {
1245
+ /** Whether the dialog is open */
1246
+ open: boolean;
1247
+ /** Called when the user confirms */
1248
+ onConfirm: () => void;
1249
+ /** Called when the user cancels */
1250
+ onCancel: () => void;
1251
+ /** Dialog title */
1252
+ title: string;
1253
+ /** Message or content */
1254
+ message: string | ReactNode;
1255
+ /** Confirm button label */
1256
+ confirmLabel?: string;
1257
+ /** Cancel button label */
1258
+ cancelLabel?: string;
1259
+ /** Visual variant */
1260
+ variant?: 'default' | 'danger';
1261
+ /** Show loading state on confirm button */
1262
+ loading?: boolean;
1263
+ /** Additional class name */
1264
+ className?: string;
1265
+ }
1266
+ /**
1267
+ * Dialog — confirmation dialog built on native <dialog>.
1268
+ *
1269
+ * Accessibility:
1270
+ * - Uses native <dialog> for built-in focus trapping and Escape handling
833
1271
  * - aria-labelledby links to the title
834
- * - Scrim click closes the drawer
835
- * - Healthcare note: use drawers for patient detail views, order entry,
836
- * and contextual forms that don't require full-page navigation
1272
+ * - aria-describedby links to the message
1273
+ * - Focus moves to cancel button on open (safe default)
1274
+ * - Escape key closes the dialog
1275
+ * - Backdrop click cancels
837
1276
  */
838
- declare function Drawer({ open, onClose, title, size, position, footer, className, children, }: DrawerProps): react_jsx_runtime.JSX.Element;
1277
+ declare function Dialog({ open, onConfirm, onCancel, title, message, confirmLabel, cancelLabel, variant, loading, className, }: DialogProps): react_jsx_runtime.JSX.Element;
839
1278
 
840
- interface DataGridColumn<T = Record<string, unknown>> {
841
- /** Unique key for the column, used as the data accessor */
842
- key: string;
843
- /** Column header label */
844
- header: ReactNode;
845
- /** Custom render function for cell content */
846
- render?: (value: unknown, row: T, rowIndex: number) => ReactNode;
847
- /** Whether this column is sortable */
848
- sortable?: boolean;
849
- /** Column width (CSS value) */
850
- width?: string | number;
851
- /** Text alignment */
852
- align?: 'left' | 'center' | 'right';
1279
+ interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {
1280
+ /** Optional icon displayed above the title */
1281
+ icon?: ReactNode;
1282
+ /** Title text */
1283
+ title: string;
1284
+ /** Descriptive text below the title */
1285
+ description?: string;
1286
+ /** Optional action element (e.g., a button) */
1287
+ action?: ReactNode;
853
1288
  }
854
- type SortDirection = 'asc' | 'desc';
855
- interface DataGridProps<T = Record<string, unknown>> extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
856
- /** Column definitions */
857
- columns: DataGridColumn<T>[];
858
- /** Data array */
859
- data: T[];
860
- /** Enable row selection with checkboxes */
861
- selectable?: boolean;
862
- /** Callback when selection changes, receives array of selected row indices */
863
- onSelectionChange?: (selectedIndices: number[]) => void;
864
- /** Currently selected row indices (controlled) */
865
- selectedRows?: number[];
866
- /** Current sort column key */
867
- sortColumn?: string;
868
- /** Current sort direction */
869
- sortDirection?: SortDirection;
870
- /** Callback when a sortable column header is clicked */
871
- onSort?: (column: string, direction: SortDirection) => void;
872
- /** Show loading skeleton */
873
- loading?: boolean;
874
- /** Message shown when data is empty */
875
- emptyMessage?: string;
876
- /** Row density */
877
- density?: 'default' | 'compact' | 'comfortable';
878
- /** Sticky header */
879
- stickyHeader?: boolean;
880
- /** Striped rows */
881
- striped?: boolean;
882
- /** Callback when a row is clicked */
883
- onRowClick?: (row: T, index: number) => void;
1289
+ /**
1290
+ * EmptyState centered placeholder for empty tables, lists, or views.
1291
+ *
1292
+ * Accessibility:
1293
+ * - Uses semantic heading and paragraph elements
1294
+ * - Healthcare note: provide clear, actionable guidance in empty states
1295
+ * (e.g., "No patients match your filters. Try adjusting your search.")
1296
+ */
1297
+ declare function EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
1298
+
1299
+ interface ErrorStateProps extends HTMLAttributes<HTMLDivElement> {
1300
+ /** Error title */
1301
+ title?: string;
1302
+ /** Descriptive message */
1303
+ description?: string;
1304
+ /** Custom icon (defaults to a warning icon) */
1305
+ icon?: ReactNode;
1306
+ /** Retry action element (e.g., a button) */
1307
+ action?: ReactNode;
1308
+ /** Error code or reference for support */
1309
+ errorCode?: string;
884
1310
  }
885
1311
  /**
886
- * DataGridcomposable data grid built on Table primitives.
1312
+ * ErrorStatecentered error placeholder with retry action.
1313
+ *
1314
+ * Composes: Typography
1315
+ *
1316
+ * Use in place of content when a data fetch fails, a page errors,
1317
+ * or a section cannot render. Provides clear messaging, an optional
1318
+ * error code for support, and a retry action.
887
1319
  *
888
1320
  * Accessibility:
889
- * - Built on semantic Table components (table/thead/tbody/tr/th/td)
890
- * - Sortable columns use aria-sort
891
- * - Selection checkboxes include accessible labels
892
- * - Loading state announced via aria-busy
893
- * - Healthcare note: designed for patient lists, lab results,
894
- * appointment schedules, and other clinical data views
1321
+ * - Uses role="alert" to announce the error to screen readers
1322
+ * - Action button receives focus for quick retry
895
1323
  */
896
- declare function DataGrid<T extends Record<string, unknown>>({ columns, data, selectable, onSelectionChange, selectedRows, sortColumn, sortDirection, onSort, loading, emptyMessage, density, stickyHeader, striped, onRowClick, className, ...props }: DataGridProps<T>): react_jsx_runtime.JSX.Element;
1324
+ declare function ErrorState({ title, description, icon, action, errorCode, className, ...props }: ErrorStateProps): react_jsx_runtime.JSX.Element;
897
1325
 
898
- interface FormFieldProps {
899
- /** Label text for the field */
900
- label?: string;
901
- /** HTML for attribute to associate label with input */
902
- htmlFor?: string;
903
- /** Mark field as required */
904
- required?: boolean;
905
- /** Error message string — renders HelperText in error state */
906
- error?: string;
907
- /** Helper text displayed below the input */
908
- helperText?: string;
909
- /** The form control element (Input, Select, Textarea, etc.) */
910
- children: ReactNode;
911
- /** Disabled state — visually dims the field */
912
- disabled?: boolean;
913
- /** Additional CSS class */
1326
+ type ToastStatus = 'info' | 'success' | 'warning' | 'error';
1327
+ interface ToastProps {
1328
+ /** Toast message */
1329
+ message: string;
1330
+ /** Optional title */
1331
+ title?: string;
1332
+ /** Status variant */
1333
+ status?: ToastStatus;
1334
+ /** Optional action element */
1335
+ action?: ReactNode;
1336
+ /** Called when toast is closed */
1337
+ onClose: () => void;
1338
+ /** Auto-dismiss duration in ms (0 to disable) */
1339
+ duration?: number;
1340
+ /** Additional class name */
914
1341
  className?: string;
915
1342
  }
916
1343
  /**
917
- * FormFieldcomposable wrapper that renders Label + input + HelperText/error.
1344
+ * Toasttransient notification that auto-dismisses.
918
1345
  *
919
1346
  * Accessibility:
920
- * - Generates aria-describedby linking between input and helper/error text
921
- * - Error messages use role="alert" via HelperText
922
- * - Required indicator on Label
923
- * - Disabled state dims the entire field
1347
+ * - Uses role="alert" for error/warning (assertive), role="status" for info/success (polite)
1348
+ * - Close button has accessible label
1349
+ * - Auto-dismiss can be disabled for important messages
1350
+ * - Icon + color + text ensures meaning is communicated multiple ways
924
1351
  */
925
- declare function FormField({ label, htmlFor, required, error, helperText, children, disabled, className, }: FormFieldProps): react_jsx_runtime.JSX.Element;
1352
+ declare function Toast({ message, title, status, action, onClose, duration, className, }: ToastProps): react_jsx_runtime.JSX.Element;
926
1353
 
927
- interface SearchFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
928
- /** Size of the search control */
929
- size?: 'sm' | 'md' | 'lg';
930
- /** Error state */
931
- error?: boolean;
932
- /** Full width */
933
- fullWidth?: boolean;
934
- /** Callback when clear button is clicked */
935
- onClear?: () => void;
936
- /** Show the clear button when input has a value */
937
- showClearButton?: boolean;
1354
+ type BannerStatus = 'info' | 'success' | 'warning' | 'error';
1355
+ interface BannerProps extends HTMLAttributes<HTMLDivElement> {
1356
+ /** Status variant */
1357
+ status?: BannerStatus;
1358
+ /** Whether the banner can be dismissed */
1359
+ dismissible?: boolean;
1360
+ /** Called when dismiss button is clicked */
1361
+ onDismiss?: () => void;
1362
+ /** Optional action element */
1363
+ action?: ReactNode;
1364
+ /** Banner content */
1365
+ children: ReactNode;
938
1366
  }
939
1367
  /**
940
- * SearchFieldsearch input with magnifying glass icon and optional clear button.
1368
+ * Bannerfull-width banner for page-level messages.
941
1369
  *
942
1370
  * Accessibility:
943
- * - Uses role="searchbox" for semantic search intent
944
- * - Clear button has aria-label for screen readers
945
- * - Search icon is decorative (aria-hidden)
1371
+ * - Uses role="alert" for error/warning (assertive announcement)
1372
+ * - Uses role="status" for info/success (polite announcement)
1373
+ * - Icon + color + text ensures meaning is communicated multiple ways
1374
+ * - Dismiss button has accessible label
946
1375
  */
947
- declare const SearchField: react.ForwardRefExoticComponent<SearchFieldProps & react.RefAttributes<HTMLInputElement>>;
1376
+ declare function Banner({ status, dismissible, onDismiss, action, children, className, ...props }: BannerProps): react_jsx_runtime.JSX.Element;
948
1377
 
949
- interface NumberFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange' | 'value' | 'prefix'> {
950
- /** Current numeric value */
951
- value?: number;
952
- /** Change handler */
953
- onChange?: (value: number) => void;
954
- /** Minimum allowed value */
955
- min?: number;
956
- /** Maximum allowed value */
957
- max?: number;
958
- /** Increment step */
959
- step?: number;
960
- /** Size variant */
961
- size?: 'sm' | 'md' | 'lg';
962
- /** Error state */
963
- error?: boolean;
964
- /** Prefix text (e.g., "$") */
965
- prefix?: string;
966
- /** Suffix text (e.g., "mg") */
967
- suffix?: string;
1378
+ interface AccordionItem {
1379
+ /** Unique identifier */
1380
+ id: string;
1381
+ /** Header title */
1382
+ title: string;
1383
+ /** Panel content */
1384
+ content: ReactNode;
1385
+ }
1386
+ interface AccordionProps {
1387
+ /** Accordion items */
1388
+ items: AccordionItem[];
1389
+ /** Allow multiple panels to be open simultaneously */
1390
+ allowMultiple?: boolean;
1391
+ /** IDs of panels open by default */
1392
+ defaultOpenIds?: string[];
1393
+ /** Additional className */
1394
+ className?: string;
968
1395
  }
969
1396
  /**
970
- * NumberFieldnumeric input with increment/decrement buttons.
1397
+ * Accordionexpandable/collapsible content sections.
971
1398
  *
972
1399
  * Accessibility:
973
- * - Uses native input[type="number"] for spinbutton role
974
- * - Increment/decrement buttons have aria-labels
975
- * - Buttons are hidden from tab order (input handles keyboard)
976
- * - min/max constraints are communicated to AT
1400
+ * - Button triggers with aria-expanded and aria-controls
1401
+ * - Content panels have role="region" and aria-labelledby
1402
+ * - Animated expand/collapse with proper height transitions
1403
+ * - Supports single or multiple open panels
977
1404
  */
978
- declare const NumberField: react.ForwardRefExoticComponent<NumberFieldProps & react.RefAttributes<HTMLInputElement>>;
1405
+ declare function Accordion({ items, allowMultiple, defaultOpenIds, className }: AccordionProps): react_jsx_runtime.JSX.Element;
979
1406
 
980
- interface CheckboxGroupOption {
981
- value: string;
982
- label: string;
983
- disabled?: boolean;
1407
+ interface AppBarProps extends HTMLAttributes<HTMLElement> {
1408
+ /** Logo or brand element */
1409
+ logo?: ReactNode;
1410
+ /** Navigation items (center/left area) */
1411
+ children?: ReactNode;
1412
+ /** Action elements on the right (profile, notifications, etc.) */
1413
+ actions?: ReactNode;
984
1414
  }
985
- interface CheckboxGroupProps {
986
- /** Group label rendered as fieldset legend */
987
- label: string;
988
- /** Shared name attribute for all checkboxes */
989
- name: string;
990
- /** Array of checkbox options */
991
- options: CheckboxGroupOption[];
992
- /** Currently selected values */
993
- value?: string[];
994
- /** Change handler — receives updated array of selected values */
995
- onChange?: (value: string[]) => void;
996
- /** Error message */
997
- error?: string;
998
- /** Layout direction */
999
- orientation?: 'vertical' | 'horizontal';
1000
- /** Disabled state for all checkboxes */
1001
- disabled?: boolean;
1002
- /** Additional CSS class */
1415
+ /**
1416
+ * AppBar horizontal top navigation bar for application headers.
1417
+ *
1418
+ * Accessibility:
1419
+ * - Uses <header> with <nav> for semantic structure
1420
+ * - Navigation items should be provided as links or buttons
1421
+ * - Fixed height with clean horizontal layout
1422
+ */
1423
+ declare function AppBar({ logo, children, actions, className, ...props }: AppBarProps): react_jsx_runtime.JSX.Element;
1424
+
1425
+ interface CardProps extends HTMLAttributes<HTMLDivElement> {
1426
+ /** Elevation level */
1427
+ elevation?: 'flat' | 'raised';
1428
+ /** Padding size */
1429
+ padding?: 'none' | 'sm' | 'md' | 'lg';
1430
+ }
1431
+ /**
1432
+ * Card surface container for grouping related content.
1433
+ *
1434
+ * Composes: Paper
1435
+ *
1436
+ * Card is a constrained Paper preset with two elevation levels and
1437
+ * opinionated padding. Use Paper directly when you need full control
1438
+ * over surface, elevation, and radius.
1439
+ *
1440
+ * Accessibility:
1441
+ * - Uses semantic HTML; add role="region" + aria-label when card
1442
+ * represents a distinct content section
1443
+ * - Border provides separation independent of shadow (not shadow alone)
1444
+ */
1445
+ declare function Card({ elevation, padding, className, children, ...props }: CardProps): react_jsx_runtime.JSX.Element;
1446
+
1447
+ interface ModalProps {
1448
+ /** Additional className */
1003
1449
  className?: string;
1450
+ /** Whether the modal is visible */
1451
+ open: boolean;
1452
+ /** Called when the modal should close */
1453
+ onClose: () => void;
1454
+ /** Modal title (rendered in header) */
1455
+ title: ReactNode;
1456
+ /** Max width */
1457
+ size?: 'sm' | 'md' | 'lg' | 'xl';
1458
+ /** Footer actions */
1459
+ footer?: ReactNode;
1460
+ }
1461
+ /**
1462
+ * Modal / Dialog — overlay dialog for focused interactions.
1463
+ *
1464
+ * Accessibility:
1465
+ * - Uses native <dialog> element for built-in focus trapping and Escape handling
1466
+ * - aria-labelledby links to the title
1467
+ * - Focus is moved into the dialog on open
1468
+ * - Escape key closes the dialog
1469
+ * - Scrim click closes the dialog
1470
+ * - Healthcare note: for destructive actions (e.g., cancel appointment,
1471
+ * delete record), always include clear confirmation language in the
1472
+ * dialog and use danger-variant buttons
1473
+ */
1474
+ declare function Modal({ open, onClose, title, size, footer, className, children }: ModalProps & {
1475
+ children?: ReactNode;
1476
+ }): react_jsx_runtime.JSX.Element;
1477
+
1478
+ interface PaperProps extends HTMLAttributes<HTMLDivElement> {
1479
+ /** Surface background */
1480
+ surface?: 'default' | 'subtle' | 'canvas' | 'raised' | 'overlay';
1481
+ /** Elevation level (shadow depth) */
1482
+ elevation?: 0 | 1 | 2 | 3 | 4;
1483
+ /** Border radius preset */
1484
+ radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
1485
+ /** Whether to render a border */
1486
+ bordered?: boolean;
1487
+ /** Padding preset */
1488
+ padding?: 'none' | 'sm' | 'md' | 'lg';
1489
+ /** Render as a different HTML element */
1490
+ as?: 'div' | 'section' | 'article' | 'aside' | 'header' | 'footer';
1004
1491
  }
1005
1492
  /**
1006
- * CheckboxGroupgroup of checkboxes with fieldset/legend for accessibility.
1493
+ * Paperthe foundational surface primitive.
1494
+ *
1495
+ * Paper provides a styled surface (background, border, shadow, radius)
1496
+ * without any layout opinions. It is the atom from which Card, Modal
1497
+ * content areas, Drawer panels, and other surface components compose.
1007
1498
  *
1008
1499
  * Accessibility:
1009
- * - Uses <fieldset> and <legend> for semantic grouping
1010
- * - Error message linked via role="alert"
1011
- * - Each checkbox is individually focusable
1500
+ * - Paper is a visual primitive with no semantic role by default
1501
+ * - Use the `as` prop to select the correct semantic element
1502
+ * - Add `role` and `aria-label` when the surface represents a landmark
1012
1503
  */
1013
- declare function CheckboxGroup({ label, name, options, value, onChange, error, orientation, disabled, className, }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
1504
+ declare const Paper: react.ForwardRefExoticComponent<PaperProps & react.RefAttributes<HTMLDivElement>>;
1014
1505
 
1015
- interface RadioGroupOption {
1016
- value: string;
1017
- label: string;
1018
- disabled?: boolean;
1019
- }
1020
- interface RadioGroupProps {
1021
- /** Group label rendered as fieldset legend */
1022
- label: string;
1023
- /** Shared name attribute for all radios */
1024
- name: string;
1025
- /** Array of radio options */
1026
- options: RadioGroupOption[];
1027
- /** Currently selected value */
1028
- value?: string;
1029
- /** Change handler — receives the selected value */
1030
- onChange?: (value: string) => void;
1031
- /** Error message */
1032
- error?: string;
1033
- /** Layout direction */
1034
- orientation?: 'vertical' | 'horizontal';
1035
- /** Disabled state for all radios */
1036
- disabled?: boolean;
1037
- /** Additional CSS class */
1038
- className?: string;
1506
+ interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
1507
+ /** Trigger element that opens the popover */
1508
+ trigger: ReactNode;
1509
+ /** Content rendered inside the popover */
1510
+ content: ReactNode;
1511
+ /** Controlled open state */
1512
+ open?: boolean;
1513
+ /** Callback when open state changes */
1514
+ onOpenChange?: (open: boolean) => void;
1515
+ /** Placement relative to the trigger */
1516
+ placement?: 'top' | 'bottom' | 'left' | 'right';
1517
+ /** Alignment along the placement axis */
1518
+ align?: 'start' | 'center' | 'end';
1039
1519
  }
1040
1520
  /**
1041
- * RadioGroupgroup of radio buttons with fieldset/legend for accessibility.
1521
+ * Popoverpositioned overlay content triggered by a reference element.
1042
1522
  *
1043
1523
  * Accessibility:
1044
- * - Uses <fieldset> and <legend> for semantic grouping
1045
- * - Arrow keys navigate between radios within the group
1046
- * - Error message rendered with role="alert"
1524
+ * - Escape key closes the popover
1525
+ * - Focus is managed: moves into popover on open, returns on close
1526
+ * - Click outside closes the popover
1527
+ * - Healthcare note: use for additional context like patient quick-view,
1528
+ * medication details, or field-level help without navigating away
1047
1529
  */
1048
- declare function RadioGroup({ label, name, options, value, onChange, error, orientation, disabled, className, }: RadioGroupProps): react_jsx_runtime.JSX.Element;
1530
+ declare function Popover({ trigger, content, open: controlledOpen, onOpenChange, placement, align, className, ...props }: PopoverProps): react_jsx_runtime.JSX.Element;
1049
1531
 
1050
- interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'onChange' | 'value'> {
1051
- /** Current value */
1052
- value?: number;
1053
- /** Change handler */
1054
- onChange?: (value: number) => void;
1055
- /** Minimum value */
1056
- min?: number;
1057
- /** Maximum value */
1058
- max?: number;
1059
- /** Step increment */
1060
- step?: number;
1061
- /** Disabled state */
1062
- disabled?: boolean;
1063
- /** Size variant */
1064
- size?: 'sm' | 'md';
1065
- /** Accessible label text */
1066
- label?: string;
1067
- /** Show current value next to the slider */
1068
- showValue?: boolean;
1069
- /** Additional CSS class */
1532
+ interface CollapsiblePanelProps {
1533
+ /** Panel title */
1534
+ title: string;
1535
+ /** Whether panel is open by default (uncontrolled) */
1536
+ defaultOpen?: boolean;
1537
+ /** Controlled open state */
1538
+ open?: boolean;
1539
+ /** Callback when open state changes */
1540
+ onToggle?: (open: boolean) => void;
1541
+ /** Panel content */
1542
+ children: ReactNode;
1543
+ /** Additional className */
1070
1544
  className?: string;
1071
1545
  }
1072
1546
  /**
1073
- * Sliderrange input with custom styling.
1547
+ * CollapsiblePanela single collapsible section with animated expand/collapse.
1074
1548
  *
1075
1549
  * Accessibility:
1076
- * - Uses native input[type="range"] for full keyboard and AT support
1077
- * - Label linked via htmlFor/id
1078
- * - aria-valuemin, aria-valuemax, aria-valuenow communicated natively
1079
- * - showValue provides visual readout of current value
1550
+ * - Button trigger with aria-expanded
1551
+ * - Content region with aria-labelledby linking to the trigger
1552
+ * - Chevron icon rotates on expand/collapse
1553
+ * - Supports both controlled and uncontrolled modes
1080
1554
  */
1081
- declare const Slider: react.ForwardRefExoticComponent<SliderProps & react.RefAttributes<HTMLInputElement>>;
1555
+ declare function CollapsiblePanel({ title, defaultOpen, open: controlledOpen, onToggle, children, className, }: CollapsiblePanelProps): react_jsx_runtime.JSX.Element;
1082
1556
 
1083
- interface FileUploadProps {
1084
- /** Accepted file types (e.g., ".pdf,.jpg,image/*") */
1085
- accept?: string;
1086
- /** Allow multiple files */
1087
- multiple?: boolean;
1088
- /** Max file size in bytes */
1089
- maxSize?: number;
1090
- /** Callback when files are selected or dropped */
1091
- onFilesSelected?: (files: File[]) => void;
1092
- /** Disabled state */
1093
- disabled?: boolean;
1094
- /** Error message */
1095
- error?: string;
1096
- /** Additional CSS class */
1557
+ interface BreadcrumbItem {
1558
+ /** Display label */
1559
+ label: string;
1560
+ /** Optional URL for link items */
1561
+ href?: string;
1562
+ /** Optional click handler */
1563
+ onClick?: () => void;
1564
+ }
1565
+ interface BreadcrumbsProps {
1566
+ /** Breadcrumb path items */
1567
+ items: BreadcrumbItem[];
1568
+ /** Separator between items */
1569
+ separator?: ReactNode;
1570
+ /** Additional className */
1097
1571
  className?: string;
1098
1572
  }
1099
1573
  /**
1100
- * FileUploaddropzone for file upload with click and drag support.
1574
+ * Breadcrumbsnavigational aid showing the current location within a hierarchy.
1101
1575
  *
1102
1576
  * Accessibility:
1103
- * - Keyboard accessible via Enter/Space to open file dialog
1104
- * - Uses role="button" on the dropzone
1105
- * - aria-describedby links to instructions
1106
- * - File list announced after selection
1577
+ * - Wrapped in <nav> with aria-label="Breadcrumb"
1578
+ * - Uses semantic <ol>/<li> list structure
1579
+ * - Last item has aria-current="page" to indicate current location
1580
+ * - Separator is aria-hidden so screen readers skip it
1107
1581
  */
1108
- declare function FileUpload({ accept, multiple, maxSize, onFilesSelected, disabled, error, className, }: FileUploadProps): react_jsx_runtime.JSX.Element;
1582
+ declare function Breadcrumbs({ items, separator, className }: BreadcrumbsProps): react_jsx_runtime.JSX.Element;
1109
1583
 
1110
- interface OTPInputProps {
1111
- /** Number of OTP digits */
1112
- length?: number;
1113
- /** Current value string */
1114
- value?: string;
1115
- /** Change handler — receives the full OTP string */
1116
- onChange?: (value: string) => void;
1117
- /** Error state */
1118
- error?: boolean;
1119
- /** Disabled state */
1120
- disabled?: boolean;
1121
- /** Auto-focus first input on mount */
1122
- autoFocus?: boolean;
1123
- /** Additional CSS class */
1584
+ interface DrawerProps {
1585
+ /** Additional className */
1124
1586
  className?: string;
1587
+ /** Whether the drawer is visible */
1588
+ open: boolean;
1589
+ /** Called when the drawer should close */
1590
+ onClose: () => void;
1591
+ /** Drawer title */
1592
+ title: ReactNode;
1593
+ /** Width preset */
1594
+ size?: 'sm' | 'md' | 'lg';
1595
+ /** Which side the drawer slides from */
1596
+ position?: 'left' | 'right';
1597
+ /** Footer actions */
1598
+ footer?: ReactNode;
1599
+ /** Drawer body content */
1600
+ children?: ReactNode;
1125
1601
  }
1126
1602
  /**
1127
- * OTPInputcode/OTP input with separate boxes that auto-advance.
1603
+ * Drawerside panel overlay for detail views and forms.
1128
1604
  *
1129
1605
  * Accessibility:
1130
- * - Each digit input has aria-label describing its position
1131
- * - Supports keyboard navigation (Backspace moves to previous)
1132
- * - Paste support fills all boxes at once
1133
- * - Error state communicated via aria-invalid
1606
+ * - Uses native <dialog> element for focus trapping
1607
+ * - Escape key closes the drawer
1608
+ * - aria-labelledby links to the title
1609
+ * - Scrim click closes the drawer
1610
+ * - Healthcare note: use drawers for patient detail views, order entry,
1611
+ * and contextual forms that don't require full-page navigation
1134
1612
  */
1135
- declare function OTPInput({ length, value, onChange, error, disabled, autoFocus, className, }: OTPInputProps): react_jsx_runtime.JSX.Element;
1613
+ declare function Drawer({ open, onClose, title, size, position, footer, className, children, }: DrawerProps): react_jsx_runtime.JSX.Element;
1136
1614
 
1137
- interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
1138
- /** Size variant */
1139
- size?: 'sm' | 'md' | 'lg';
1140
- /** Error state */
1141
- error?: boolean;
1142
- /** Full width */
1143
- fullWidth?: boolean;
1144
- /** Minimum date (ISO format YYYY-MM-DD) */
1145
- min?: string;
1146
- /** Maximum date (ISO format YYYY-MM-DD) */
1147
- max?: string;
1615
+ interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
1616
+ /** Visual variant */
1617
+ variant?: 'default' | 'subtle' | 'standalone';
1618
+ /** Color */
1619
+ color?: 'primary' | 'secondary' | 'inherit';
1620
+ /** Whether to show an external indicator */
1621
+ external?: boolean;
1622
+ /** Icon slot (leading) */
1623
+ startIcon?: ReactNode;
1624
+ /** Disabled state (prevents navigation) */
1625
+ disabled?: boolean;
1148
1626
  }
1149
1627
  /**
1150
- * DatePicker — styled native date input for consistent appearance.
1628
+ * Link — styled anchor primitive for navigation.
1629
+ *
1630
+ * Variants:
1631
+ * - `default` — underlined inline link
1632
+ * - `subtle` — underline on hover only
1633
+ * - `standalone` — no underline, bolder weight, for navigation items
1151
1634
  *
1152
1635
  * Accessibility:
1153
- * - Uses native input[type="date"] for built-in AT support
1154
- * - Date picker popup provided by the browser
1155
- * - aria-invalid signals error state
1156
- * - Consistent sizing with other Aegis form controls
1636
+ * - Uses native <a> element for full keyboard + screen reader support
1637
+ * - External links get target="_blank" with rel="noopener noreferrer"
1638
+ * - aria-disabled prevents interaction without removing from tab order
1157
1639
  */
1158
- declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
1640
+ declare const Link: react.ForwardRefExoticComponent<LinkProps & react.RefAttributes<HTMLAnchorElement>>;
1159
1641
 
1160
- interface MultiSelectOption {
1161
- value: string;
1162
- label: string;
1163
- }
1164
- interface MultiSelectProps {
1165
- /** Available options */
1166
- options: MultiSelectOption[];
1167
- /** Currently selected values */
1168
- value?: string[];
1169
- /** Change handler — receives updated array of selected values */
1170
- onChange?: (value: string[]) => void;
1171
- /** Placeholder text */
1172
- placeholder?: string;
1642
+ interface MenuItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick'> {
1643
+ /** Leading icon */
1644
+ icon?: ReactNode;
1645
+ /** Trailing content (shortcut, badge, etc.) */
1646
+ trailing?: ReactNode;
1173
1647
  /** Disabled state */
1174
1648
  disabled?: boolean;
1175
- /** Error state */
1176
- error?: boolean;
1177
- /** Size variant */
1178
- size?: 'sm' | 'md' | 'lg';
1179
- /** Maximum number of tags visible before showing "+N more" */
1180
- maxDisplayedTags?: number;
1181
- /** Additional CSS class */
1182
- className?: string;
1649
+ /** Destructive / danger styling */
1650
+ danger?: boolean;
1651
+ /** Click handler */
1652
+ onClick?: (e: MouseEvent<HTMLDivElement>) => void;
1653
+ }
1654
+ declare function MenuItem({ icon, trailing, disabled, danger, onClick, className, children, ...props }: MenuItemProps): react_jsx_runtime.JSX.Element;
1655
+ declare function MenuDivider(): react_jsx_runtime.JSX.Element;
1656
+ interface MenuGroupProps {
1657
+ /** Group label */
1658
+ label: string;
1659
+ children: ReactNode;
1660
+ }
1661
+ declare function MenuGroup({ label, children }: MenuGroupProps): react_jsx_runtime.JSX.Element;
1662
+ interface MenuProps extends HTMLAttributes<HTMLDivElement> {
1663
+ /** The trigger element — a single React element */
1664
+ trigger: ReactNode;
1665
+ /** Horizontal alignment relative to trigger */
1666
+ align?: 'start' | 'end';
1667
+ /** Menu width */
1668
+ width?: number | 'trigger';
1183
1669
  }
1184
1670
  /**
1185
- * MultiSelectmulti-value select with tags and dropdown checkboxes.
1671
+ * Menudropdown action menu surface.
1672
+ *
1673
+ * Composes MenuItem, MenuDivider, and MenuGroup as children.
1186
1674
  *
1187
1675
  * Accessibility:
1188
- * - Uses role="combobox" with aria-expanded
1189
- * - Dropdown uses role="listbox" with role="option" items
1190
- * - Tags are removable via keyboard (Backspace removes last)
1191
- * - Escape closes dropdown, focus remains on control
1676
+ * - role="menu" on the dropdown, role="menuitem" on each item
1677
+ * - Arrow-key navigation between items
1678
+ * - Escape closes the menu
1679
+ * - Focus returns to trigger on close
1680
+ * - Click outside closes the menu
1681
+ * - Healthcare note: ideal for patient action menus, record options,
1682
+ * context menus on rows
1683
+ */
1684
+ declare function Menu({ trigger, align, width, className, children, ...props }: MenuProps): react_jsx_runtime.JSX.Element;
1685
+
1686
+ interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {
1687
+ /** Current active page (1-based) */
1688
+ currentPage: number;
1689
+ /** Total number of pages */
1690
+ totalPages: number;
1691
+ /** Callback when page changes */
1692
+ onPageChange: (page: number) => void;
1693
+ /** Number of sibling pages to show around the current page */
1694
+ siblingCount?: number;
1695
+ /** Size variant */
1696
+ size?: 'sm' | 'md';
1697
+ }
1698
+ /**
1699
+ * Pagination — page navigation for paginated data.
1700
+ *
1701
+ * Accessibility:
1702
+ * - Wraps in <nav> with aria-label="Pagination"
1703
+ * - Current page indicated with aria-current="page"
1704
+ * - Previous/Next buttons disabled at boundaries
1705
+ * - Healthcare note: use pagination for patient lists, lab results,
1706
+ * and audit logs to keep pages manageable
1192
1707
  */
1193
- declare function MultiSelect({ options, value, onChange, placeholder, disabled, error, size, maxDisplayedTags, className, }: MultiSelectProps): react_jsx_runtime.JSX.Element;
1708
+ declare function Pagination({ currentPage, totalPages, onPageChange, siblingCount, size, className, ...props }: PaginationProps): react_jsx_runtime.JSX.Element | null;
1194
1709
 
1195
- interface AutocompleteOption {
1196
- value: string;
1710
+ interface SideNavItem {
1711
+ /** Display label */
1197
1712
  label: string;
1713
+ /** Optional URL */
1714
+ href?: string;
1715
+ /** Optional click handler */
1716
+ onClick?: () => void;
1717
+ /** Optional icon element */
1718
+ icon?: ReactNode;
1719
+ /** Whether this item is the active/current page */
1720
+ active?: boolean;
1721
+ /** Nested child items */
1722
+ children?: SideNavItem[];
1198
1723
  }
1199
- interface AutocompleteProps {
1200
- /** Available options */
1201
- options: AutocompleteOption[];
1202
- /** Selected value */
1203
- value?: string;
1204
- /** Change handler receives the selected value */
1205
- onChange?: (value: string) => void;
1206
- /** Callback when the text input changes */
1207
- onInputChange?: (inputValue: string) => void;
1208
- /** Placeholder text */
1209
- placeholder?: string;
1210
- /** Disabled state */
1211
- disabled?: boolean;
1212
- /** Error state */
1213
- error?: boolean;
1214
- /** Size variant */
1215
- size?: 'sm' | 'md' | 'lg';
1216
- /** Show a loading spinner in the dropdown */
1217
- loading?: boolean;
1218
- /** Text shown when no results match */
1219
- noResultsText?: string;
1220
- /** Additional CSS class */
1724
+ interface SideNavProps {
1725
+ /** Navigation items */
1726
+ items: SideNavItem[];
1727
+ /** Whether the sidebar is collapsed to icon-only mode */
1728
+ collapsed?: boolean;
1729
+ /** Callback when collapse state changes */
1730
+ onCollapse?: (collapsed: boolean) => void;
1731
+ /** Additional className */
1221
1732
  className?: string;
1222
1733
  }
1223
1734
  /**
1224
- * Autocompletecombobox input with filtered suggestions dropdown.
1735
+ * SideNavvertical sidebar navigation for dashboard layouts.
1225
1736
  *
1226
1737
  * Accessibility:
1227
- * - role="combobox" on input with aria-expanded, aria-controls, aria-activedescendant
1228
- * - Dropdown uses role="listbox" with role="option" items
1229
- * - Arrow keys navigate options, Enter selects, Escape closes
1230
- * - Full ARIA combobox pattern per WAI-ARIA 1.2
1738
+ * - Semantic <nav> with <ul>/<li> structure
1739
+ * - aria-current="page" on the active item
1740
+ * - Collapse toggle button with aria-label
1741
+ * - Title attribute on items when collapsed for tooltip-style labels
1742
+ * - Nested items rendered as sub-lists for proper hierarchy
1231
1743
  */
1232
- declare function Autocomplete({ options, value, onChange, onInputChange, placeholder, disabled, error, size, loading, noResultsText, className, }: AutocompleteProps): react_jsx_runtime.JSX.Element;
1744
+ declare function SideNav({ items, collapsed, onCollapse, className }: SideNavProps): react_jsx_runtime.JSX.Element;
1233
1745
 
1234
1746
  interface StepperStep {
1235
1747
  label: string;
@@ -1258,196 +1770,389 @@ interface StepperProps {
1258
1770
  */
1259
1771
  declare function Stepper({ steps, activeStep, orientation, onStepClick, className, }: StepperProps): react_jsx_runtime.JSX.Element;
1260
1772
 
1261
- interface AccordionItem {
1262
- /** Unique identifier */
1773
+ interface Tab {
1263
1774
  id: string;
1264
- /** Header title */
1265
- title: string;
1266
- /** Panel content */
1775
+ label: string;
1267
1776
  content: ReactNode;
1777
+ disabled?: boolean;
1268
1778
  }
1269
- interface AccordionProps {
1270
- /** Accordion items */
1271
- items: AccordionItem[];
1272
- /** Allow multiple panels to be open simultaneously */
1273
- allowMultiple?: boolean;
1274
- /** IDs of panels open by default */
1275
- defaultOpenIds?: string[];
1276
- /** Additional className */
1779
+ interface TabsProps {
1780
+ /** Tab definitions */
1781
+ tabs: Tab[];
1782
+ /** Controlled active tab id */
1783
+ activeTab?: string;
1784
+ /** Callback when tab changes */
1785
+ onTabChange?: (id: string) => void;
1786
+ /** Additional className for the wrapper */
1277
1787
  className?: string;
1278
1788
  }
1279
1789
  /**
1280
- * Accordionexpandable/collapsible content sections.
1790
+ * Tabstabbed interface for switching between content panels.
1281
1791
  *
1282
1792
  * Accessibility:
1283
- * - Button triggers with aria-expanded and aria-controls
1284
- * - Content panels have role="region" and aria-labelledby
1285
- * - Animated expand/collapse with proper height transitions
1286
- * - Supports single or multiple open panels
1793
+ * - Full WAI-ARIA tabs pattern: role="tablist", role="tab", role="tabpanel"
1794
+ * - Arrow key navigation between tabs
1795
+ * - Home/End keys jump to first/last tab
1796
+ * - aria-selected, aria-controls, aria-labelledby for AT relationships
1797
+ * - Only active panel is in the tab order (tabIndex=0 on active tab)
1287
1798
  */
1288
- declare function Accordion({ items, allowMultiple, defaultOpenIds, className }: AccordionProps): react_jsx_runtime.JSX.Element;
1799
+ declare function Tabs({ tabs, activeTab, onTabChange, className }: TabsProps): react_jsx_runtime.JSX.Element;
1289
1800
 
1290
- interface BreadcrumbItem {
1801
+ interface CommandItem {
1802
+ /** Unique identifier */
1803
+ id: string;
1291
1804
  /** Display label */
1292
1805
  label: string;
1293
- /** Optional URL for link items */
1294
- href?: string;
1295
- /** Optional click handler */
1296
- onClick?: () => void;
1806
+ /** Optional description shown below the label */
1807
+ description?: string;
1808
+ /** Leading icon */
1809
+ icon?: ReactNode;
1810
+ /** Group/category name */
1811
+ group?: string;
1812
+ /** Keyboard shortcut hint */
1813
+ shortcut?: string;
1814
+ /** Whether the item is disabled */
1815
+ disabled?: boolean;
1816
+ /** Custom search keywords (in addition to label) */
1817
+ keywords?: string[];
1297
1818
  }
1298
- interface BreadcrumbsProps {
1299
- /** Breadcrumb path items */
1300
- items: BreadcrumbItem[];
1301
- /** Separator between items */
1302
- separator?: ReactNode;
1303
- /** Additional className */
1819
+ interface CommandPaletteProps {
1820
+ /** Whether the palette is open */
1821
+ open: boolean;
1822
+ /** Called when the palette should close */
1823
+ onClose: () => void;
1824
+ /** Available commands */
1825
+ items: CommandItem[];
1826
+ /** Called when a command is selected */
1827
+ onSelect: (item: CommandItem) => void;
1828
+ /** Placeholder text for the search input */
1829
+ placeholder?: string;
1830
+ /** Empty state message */
1831
+ emptyMessage?: string;
1832
+ /** Additional className for the overlay */
1304
1833
  className?: string;
1305
1834
  }
1306
1835
  /**
1307
- * Breadcrumbsnavigational aid showing the current location within a hierarchy.
1836
+ * CommandPalettekeyboard-driven command search dialog (Cmd+K pattern).
1837
+ *
1838
+ * Renders a modal search input with filterable command list,
1839
+ * grouped results, keyboard navigation, and shortcut hints.
1308
1840
  *
1309
1841
  * Accessibility:
1310
- * - Wrapped in <nav> with aria-label="Breadcrumb"
1311
- * - Uses semantic <ol>/<li> list structure
1312
- * - Last item has aria-current="page" to indicate current location
1313
- * - Separator is aria-hidden so screen readers skip it
1842
+ * - Uses combobox + listbox ARIA pattern
1843
+ * - Arrow keys navigate items, Enter selects
1844
+ * - Escape closes the palette
1845
+ * - Focus is trapped within the dialog
1846
+ * - aria-activedescendant tracks highlighted item
1314
1847
  */
1315
- declare function Breadcrumbs({ items, separator, className }: BreadcrumbsProps): react_jsx_runtime.JSX.Element;
1848
+ declare const CommandPalette: react.ForwardRefExoticComponent<CommandPaletteProps & react.RefAttributes<HTMLDivElement>>;
1316
1849
 
1317
- interface SideNavItem {
1318
- /** Display label */
1319
- label: string;
1320
- /** Optional URL */
1321
- href?: string;
1322
- /** Optional click handler */
1323
- onClick?: () => void;
1324
- /** Optional icon element */
1325
- icon?: ReactNode;
1326
- /** Whether this item is the active/current page */
1327
- active?: boolean;
1328
- /** Nested child items */
1329
- children?: SideNavItem[];
1850
+ interface FormFieldProps {
1851
+ /** Label text for the field */
1852
+ label?: string;
1853
+ /** HTML for attribute to associate label with input */
1854
+ htmlFor?: string;
1855
+ /** Mark field as required */
1856
+ required?: boolean;
1857
+ /** Error message string — renders HelperText in error state */
1858
+ error?: string;
1859
+ /** Helper text displayed below the input */
1860
+ helperText?: string;
1861
+ /** The form control element (Input, Select, Textarea, etc.) */
1862
+ children: ReactNode;
1863
+ /** Disabled state — visually dims the field */
1864
+ disabled?: boolean;
1865
+ /** Additional CSS class */
1866
+ className?: string;
1330
1867
  }
1331
- interface SideNavProps {
1332
- /** Navigation items */
1333
- items: SideNavItem[];
1334
- /** Whether the sidebar is collapsed to icon-only mode */
1335
- collapsed?: boolean;
1336
- /** Callback when collapse state changes */
1337
- onCollapse?: (collapsed: boolean) => void;
1868
+ /**
1869
+ * FormField — composable wrapper that renders Label + input + HelperText/error.
1870
+ *
1871
+ * Accessibility:
1872
+ * - Generates aria-describedby linking between input and helper/error text
1873
+ * - Error messages use role="alert" via HelperText
1874
+ * - Required indicator on Label
1875
+ * - Disabled state dims the entire field
1876
+ */
1877
+ declare function FormField({ label, htmlFor, required, error, helperText, children, disabled, className, }: FormFieldProps): react_jsx_runtime.JSX.Element;
1878
+
1879
+ interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
1880
+ /** Max-width preset */
1881
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
1882
+ /** Horizontal padding */
1883
+ padding?: 'none' | 'sm' | 'md' | 'lg';
1884
+ /** Center the container horizontally */
1885
+ centered?: boolean;
1886
+ /** Render as a different HTML element */
1887
+ as?: ElementType;
1888
+ }
1889
+ /**
1890
+ * Container — max-width content wrapper with responsive padding.
1891
+ *
1892
+ * Provides consistent horizontal padding and a constrained max-width
1893
+ * for page-level content sections.
1894
+ *
1895
+ * Accessibility:
1896
+ * - Purely presentational — no ARIA roles needed
1897
+ * - Use semantic HTML elements via the `as` prop (e.g., main, section)
1898
+ */
1899
+ declare const Container: react.ForwardRefExoticComponent<ContainerProps & react.RefAttributes<HTMLDivElement>>;
1900
+
1901
+ interface GridProps extends HTMLAttributes<HTMLDivElement> {
1902
+ /** Number of columns (1-12) or 'auto' for auto-fill */
1903
+ columns?: number | 'auto';
1904
+ /** Gap between grid items */
1905
+ gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
1906
+ /** Minimum item width when columns='auto' */
1907
+ minItemWidth?: number;
1908
+ /** Align items vertically */
1909
+ alignItems?: 'start' | 'center' | 'end' | 'stretch';
1910
+ }
1911
+ /**
1912
+ * Grid — CSS grid layout primitive.
1913
+ *
1914
+ * Provides a responsive grid with preset column counts or auto-fill
1915
+ * behavior based on minimum item width.
1916
+ *
1917
+ * Accessibility:
1918
+ * - Purely presentational — no ARIA roles needed
1919
+ * - Grid layout does not affect reading order for screen readers
1920
+ */
1921
+ declare const Grid: react.ForwardRefExoticComponent<GridProps & react.RefAttributes<HTMLDivElement>>;
1922
+
1923
+ interface StackProps extends HTMLAttributes<HTMLDivElement> {
1924
+ /** Stack direction */
1925
+ direction?: 'vertical' | 'horizontal';
1926
+ /** Gap between items */
1927
+ gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1928
+ /** Align items on the cross axis */
1929
+ align?: 'start' | 'center' | 'end' | 'stretch';
1930
+ /** Justify items on the main axis */
1931
+ justify?: 'start' | 'center' | 'end' | 'between' | 'around';
1932
+ /** Whether items should wrap */
1933
+ wrap?: boolean;
1934
+ /** Render as a different HTML element */
1935
+ as?: ElementType;
1936
+ }
1937
+ /**
1938
+ * Stack — flex layout primitive for vertical or horizontal spacing.
1939
+ *
1940
+ * The most common layout component: arranges children with consistent
1941
+ * gaps. Defaults to a vertical stack (column).
1942
+ *
1943
+ * Accessibility:
1944
+ * - Purely presentational — no ARIA roles needed
1945
+ * - Use semantic HTML via `as` prop when appropriate
1946
+ */
1947
+ declare const Stack: react.ForwardRefExoticComponent<StackProps & react.RefAttributes<HTMLDivElement>>;
1948
+
1949
+ interface InputGroupProps {
1950
+ /** Content rendered before the input (e.g., icon, label, currency symbol) */
1951
+ startAddon?: ReactNode;
1952
+ /** Content rendered after the input (e.g., icon, button, unit label) */
1953
+ endAddon?: ReactNode;
1954
+ /** Size variant — matches TextField sizes */
1955
+ size?: 'sm' | 'md' | 'lg';
1956
+ /** Error state */
1957
+ error?: boolean;
1958
+ /** Disabled state */
1959
+ disabled?: boolean;
1338
1960
  /** Additional className */
1339
1961
  className?: string;
1962
+ /** Input element */
1963
+ children: ReactNode;
1340
1964
  }
1341
1965
  /**
1342
- * SideNavvertical sidebar navigation for dashboard layouts.
1966
+ * InputGroupwrapper that adds prefix/suffix addons to an input.
1967
+ *
1968
+ * Wraps a TextField (or other input) with leading/trailing elements
1969
+ * like icons, currency symbols, units, or action buttons.
1343
1970
  *
1344
1971
  * Accessibility:
1345
- * - Semantic <nav> with <ul>/<li> structure
1346
- * - aria-current="page" on the active item
1347
- * - Collapse toggle button with aria-label
1348
- * - Title attribute on items when collapsed for tooltip-style labels
1349
- * - Nested items rendered as sub-lists for proper hierarchy
1972
+ * - Addons are presentational and should not duplicate input labels
1973
+ * - Use aria-describedby on the input to associate addon context
1350
1974
  */
1351
- declare function SideNav({ items, collapsed, onCollapse, className }: SideNavProps): react_jsx_runtime.JSX.Element;
1975
+ declare function InputGroup({ startAddon, endAddon, size, error, disabled, className, children, }: InputGroupProps): react_jsx_runtime.JSX.Element;
1352
1976
 
1353
- interface TopNavProps extends HTMLAttributes<HTMLElement> {
1354
- /** Logo or brand element */
1355
- logo?: ReactNode;
1356
- /** Navigation items (center/left area) */
1357
- children?: ReactNode;
1358
- /** Action elements on the right (profile, notifications, etc.) */
1359
- actions?: ReactNode;
1977
+ interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {
1978
+ /** Size variant affects padding and child button sizing */
1979
+ size?: 'sm' | 'md';
1980
+ /** Visual variant */
1981
+ variant?: 'default' | 'outlined';
1982
+ /** Toolbar content (buttons, groups, dividers) */
1983
+ children: ReactNode;
1984
+ }
1985
+ interface ToolbarGroupProps extends HTMLAttributes<HTMLDivElement> {
1986
+ /** Group content */
1987
+ children: ReactNode;
1988
+ }
1989
+ interface ToolbarDividerProps extends HTMLAttributes<HTMLDivElement> {
1990
+ }
1991
+ /**
1992
+ * Toolbar — horizontal action bar with grouped controls.
1993
+ *
1994
+ * Use with ToolbarGroup to visually separate related actions
1995
+ * and ToolbarDivider for explicit separators.
1996
+ *
1997
+ * Accessibility:
1998
+ * - Uses toolbar ARIA role
1999
+ * - Children should be buttons or controls with labels
2000
+ */
2001
+ declare const Toolbar: react.ForwardRefExoticComponent<ToolbarProps & react.RefAttributes<HTMLDivElement>>;
2002
+ declare const ToolbarGroup: react.ForwardRefExoticComponent<ToolbarGroupProps & react.RefAttributes<HTMLDivElement>>;
2003
+ declare const ToolbarDivider: react.ForwardRefExoticComponent<ToolbarDividerProps & react.RefAttributes<HTMLDivElement>>;
2004
+
2005
+ interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {
2006
+ /** Mark the field as required — adds visual indicator */
2007
+ required?: boolean;
2008
+ }
2009
+ /**
2010
+ * Label — form field label.
2011
+ *
2012
+ * Accessibility:
2013
+ * - Always associate with an input via htmlFor
2014
+ * - Required indicator uses both visual (*) and sr-only text
2015
+ */
2016
+ declare function Label({ required, className, children, ...props }: LabelProps): react_jsx_runtime.JSX.Element;
2017
+
2018
+ interface HelperTextProps extends HTMLAttributes<HTMLParagraphElement> {
2019
+ /** Render as error message */
2020
+ error?: boolean;
2021
+ }
2022
+ /**
2023
+ * HelperText — descriptive or error text beneath a form field.
2024
+ *
2025
+ * Accessibility:
2026
+ * - Link to input via aria-describedby on the input, matching this element's id
2027
+ * - Error messages use role="alert" for immediate screen reader announcement
2028
+ * - Error state uses both color and icon (not color alone)
2029
+ */
2030
+ declare function HelperText({ error, className, children, ...props }: HelperTextProps): react_jsx_runtime.JSX.Element;
2031
+
2032
+ interface VisuallyHiddenProps extends HTMLAttributes<HTMLSpanElement> {
2033
+ /** Render as a different element */
2034
+ as?: 'span' | 'div' | 'label';
1360
2035
  }
1361
2036
  /**
1362
- * TopNavhorizontal top navigation bar for application headers.
2037
+ * VisuallyHiddenrenders content that is hidden visually but accessible
2038
+ * to screen readers and other assistive technology.
1363
2039
  *
1364
- * Accessibility:
1365
- * - Uses <header> with <nav> for semantic structure
1366
- * - Navigation items should be provided as links or buttons
1367
- * - Fixed height with clean horizontal layout
2040
+ * Use for:
2041
+ * - Labels for icon-only buttons
2042
+ * - Additional context for screen readers
2043
+ * - Skip navigation links
2044
+ * - Form labels that are visually unnecessary but needed for a11y
2045
+ *
2046
+ * This uses the standard screen-reader-only CSS technique that keeps
2047
+ * content in the document flow for assistive tech while hiding it
2048
+ * from sighted users.
1368
2049
  */
1369
- declare function TopNav({ logo, children, actions, className, ...props }: TopNavProps): react_jsx_runtime.JSX.Element;
2050
+ declare function VisuallyHidden({ as: Component, children, ...props }: VisuallyHiddenProps): react_jsx_runtime.JSX.Element;
1370
2051
 
1371
- interface StatCardProps extends HTMLAttributes<HTMLDivElement> {
1372
- /** Metric label */
1373
- label: string;
1374
- /** Metric value */
1375
- value: string | number;
1376
- /** Percentage change */
1377
- change?: number;
1378
- /** Label for the change (e.g. "vs last month") */
1379
- changeLabel?: string;
1380
- /** Trend direction */
1381
- trend?: 'up' | 'down' | 'neutral';
1382
- /** Optional icon */
1383
- icon?: ReactNode;
2052
+ interface PortalProps {
2053
+ /** Content to render in the portal */
2054
+ children: ReactNode;
2055
+ /** Target container element (defaults to document.body) */
2056
+ container?: Element | null;
2057
+ /** Whether the portal is active (renders inline when false) */
2058
+ disabled?: boolean;
1384
2059
  }
1385
2060
  /**
1386
- * StatCarddisplays a key metric with optional trend indicator.
2061
+ * Portalrenders children into a DOM node outside the parent hierarchy.
2062
+ *
2063
+ * Use for overlays, tooltips, modals, and other floating content that
2064
+ * needs to escape stacking context or overflow constraints.
2065
+ *
2066
+ * Falls back to inline rendering during SSR or when disabled.
1387
2067
  *
1388
2068
  * Accessibility:
1389
- * - Trend icons are aria-hidden; meaning conveyed via visible text
1390
- * - Uses semantic structure with clear label/value relationship
1391
- * - sr-only text describes trend for screen readers
2069
+ * - Portal does not affect the accessibility tree
2070
+ * - Focus management is the responsibility of the portal content
2071
+ * - Ensure ARIA relationships (aria-describedby, aria-labelledby)
2072
+ * still work across the portal boundary
1392
2073
  */
1393
- declare function StatCard({ label, value, change, changeLabel, trend, icon, className, ...props }: StatCardProps): react_jsx_runtime.JSX.Element;
2074
+ declare function Portal({ children, container, disabled }: PortalProps): react_jsx_runtime.JSX.Element;
1394
2075
 
1395
- interface ListProps extends HTMLAttributes<HTMLUListElement> {
1396
- /** Show dividers between items */
1397
- divided?: boolean;
1398
- /** Padding inside list items */
1399
- padding?: 'none' | 'sm' | 'md';
2076
+ interface DataGridColumn<T = Record<string, unknown>> {
2077
+ /** Unique key for the column, used as the data accessor */
2078
+ key: string;
2079
+ /** Column header label */
2080
+ header: ReactNode;
2081
+ /** Custom render function for cell content */
2082
+ render?: (value: unknown, row: T, rowIndex: number) => ReactNode;
2083
+ /** Whether this column is sortable */
2084
+ sortable?: boolean;
2085
+ /** Column width (CSS value) */
2086
+ width?: string | number;
2087
+ /** Text alignment */
2088
+ align?: 'left' | 'center' | 'right';
2089
+ }
2090
+ type SortDirection = 'asc' | 'desc';
2091
+ interface DataGridProps<T = Record<string, unknown>> extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
2092
+ /** Column definitions */
2093
+ columns: DataGridColumn<T>[];
2094
+ /** Data array */
2095
+ data: T[];
2096
+ /** Enable row selection with checkboxes */
2097
+ selectable?: boolean;
2098
+ /** Callback when selection changes, receives array of selected row indices */
2099
+ onSelectionChange?: (selectedIndices: number[]) => void;
2100
+ /** Currently selected row indices (controlled) */
2101
+ selectedRows?: number[];
2102
+ /** Current sort column key */
2103
+ sortColumn?: string;
2104
+ /** Current sort direction */
2105
+ sortDirection?: SortDirection;
2106
+ /** Callback when a sortable column header is clicked */
2107
+ onSort?: (column: string, direction: SortDirection) => void;
2108
+ /** Show loading skeleton */
2109
+ loading?: boolean;
2110
+ /** Message shown when data is empty */
2111
+ emptyMessage?: string;
2112
+ /** Row density */
2113
+ density?: 'default' | 'compact' | 'comfortable';
2114
+ /** Sticky header */
2115
+ stickyHeader?: boolean;
2116
+ /** Striped rows */
2117
+ striped?: boolean;
2118
+ /** Callback when a row is clicked */
2119
+ onRowClick?: (row: T, index: number) => void;
1400
2120
  }
1401
2121
  /**
1402
- * List — composable list container for displaying groups of items.
2122
+ * DataGrid — composable data grid built on Table primitives.
1403
2123
  *
1404
2124
  * Accessibility:
1405
- * - Uses semantic <ul>/<li> structure
1406
- * - Interactive items rendered as buttons for keyboard access
1407
- * - Disabled items use aria-disabled
1408
- * - Selected items use aria-selected
2125
+ * - Built on semantic Table components (table/thead/tbody/tr/th/td)
2126
+ * - Sortable columns use aria-sort
2127
+ * - Selection checkboxes include accessible labels
2128
+ * - Loading state announced via aria-busy
2129
+ * - Healthcare note: designed for patient lists, lab results,
2130
+ * appointment schedules, and other clinical data views
1409
2131
  */
1410
- declare const List: react.ForwardRefExoticComponent<ListProps & react.RefAttributes<HTMLUListElement>>;
1411
- interface ListItemProps extends Omit<HTMLAttributes<HTMLLIElement>, 'prefix'> {
1412
- /** Click handler — makes the item interactive */
1413
- onClick?: () => void;
1414
- /** Whether this item is selected */
1415
- selected?: boolean;
1416
- /** Whether this item is disabled */
1417
- disabled?: boolean;
1418
- /** Leading element (icon, avatar, etc.) */
1419
- prefix?: ReactNode;
1420
- /** Trailing element (badge, action button, etc.) */
1421
- suffix?: ReactNode;
1422
- /** Secondary description text */
1423
- description?: string;
1424
- }
1425
- declare const ListItem: react.ForwardRefExoticComponent<ListItemProps & react.RefAttributes<HTMLLIElement>>;
2132
+ declare function DataGrid<T extends Record<string, unknown>>({ columns, data, selectable, onSelectionChange, selectedRows, sortColumn, sortDirection, onSort, loading, emptyMessage, density, stickyHeader, striped, onRowClick, className, ...props }: DataGridProps<T>): react_jsx_runtime.JSX.Element;
1426
2133
 
1427
- interface CollapsiblePanelProps {
1428
- /** Panel title */
1429
- title: string;
1430
- /** Whether panel is open by default (uncontrolled) */
1431
- defaultOpen?: boolean;
1432
- /** Controlled open state */
1433
- open?: boolean;
1434
- /** Callback when open state changes */
1435
- onToggle?: (open: boolean) => void;
1436
- /** Panel content */
1437
- children: ReactNode;
1438
- /** Additional className */
1439
- className?: string;
2134
+ interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
2135
+ /** Size variant */
2136
+ size?: 'sm' | 'md' | 'lg';
2137
+ /** Error state */
2138
+ error?: boolean;
2139
+ /** Full width */
2140
+ fullWidth?: boolean;
2141
+ /** Minimum date (ISO format YYYY-MM-DD) */
2142
+ min?: string;
2143
+ /** Maximum date (ISO format YYYY-MM-DD) */
2144
+ max?: string;
1440
2145
  }
1441
2146
  /**
1442
- * CollapsiblePanela single collapsible section with animated expand/collapse.
2147
+ * DatePickerstyled native date input for consistent appearance.
1443
2148
  *
1444
2149
  * Accessibility:
1445
- * - Button trigger with aria-expanded
1446
- * - Content region with aria-labelledby linking to the trigger
1447
- * - Chevron icon rotates on expand/collapse
1448
- * - Supports both controlled and uncontrolled modes
2150
+ * - Uses native input[type="date"] for built-in AT support
2151
+ * - Date picker popup provided by the browser
2152
+ * - aria-invalid signals error state
2153
+ * - Consistent sizing with other Aegis form controls
1449
2154
  */
1450
- declare function CollapsiblePanel({ title, defaultOpen, open: controlledOpen, onToggle, children, className, }: CollapsiblePanelProps): react_jsx_runtime.JSX.Element;
2155
+ declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
1451
2156
 
1452
2157
  type PatientStatus = 'active' | 'inactive' | 'critical';
1453
2158
  interface PatientCardProps extends HTMLAttributes<HTMLDivElement> {
@@ -1461,7 +2166,12 @@ interface PatientCardProps extends HTMLAttributes<HTMLDivElement> {
1461
2166
  age: number;
1462
2167
  /** Patient gender */
1463
2168
  gender: string;
1464
- /** Avatar element */
2169
+ /** Avatar image URL (preferred) */
2170
+ avatarSrc?: string;
2171
+ /**
2172
+ * @deprecated Use `avatarSrc` instead. Accepts a custom ReactNode for the avatar slot.
2173
+ * When both `avatar` and `avatarSrc` are provided, `avatarSrc` takes precedence.
2174
+ */
1465
2175
  avatar?: ReactNode;
1466
2176
  /** Patient status */
1467
2177
  status?: PatientStatus;
@@ -1473,12 +2183,14 @@ interface PatientCardProps extends HTMLAttributes<HTMLDivElement> {
1473
2183
  /**
1474
2184
  * PatientCard — summary card displaying patient demographics and key info.
1475
2185
  *
2186
+ * Composes: Card, Avatar, Badge, Typography, Chip, Divider
2187
+ *
1476
2188
  * Accessibility:
1477
2189
  * - Uses role="region" with aria-label for screen readers
1478
2190
  * - Status communicated via text, not color alone
1479
- * - Allergy list uses semantic <ul> element
2191
+ * - Allergy list uses Chip components with semantic markup
1480
2192
  */
1481
- declare function PatientCard({ name, mrn, dob, age, gender, avatar, status, allergies, primaryPhysician, className, ...props }: PatientCardProps): react_jsx_runtime.JSX.Element;
2193
+ declare function PatientCard({ name, mrn, dob, age, gender, avatarSrc, avatar, status, allergies, primaryPhysician, className, ...props }: PatientCardProps): react_jsx_runtime.JSX.Element;
1482
2194
 
1483
2195
  type AppointmentStatus = 'scheduled' | 'checked-in' | 'in-progress' | 'completed' | 'cancelled' | 'no-show';
1484
2196
  interface AppointmentCardProps extends HTMLAttributes<HTMLDivElement> {
@@ -1500,41 +2212,14 @@ interface AppointmentCardProps extends HTMLAttributes<HTMLDivElement> {
1500
2212
  /**
1501
2213
  * AppointmentCard — displays appointment summary with status indicator.
1502
2214
  *
2215
+ * Composes: Card, StatusBadge, Typography
2216
+ *
1503
2217
  * Accessibility:
1504
2218
  * - Uses role="region" with aria-label for context
1505
2219
  * - Status conveyed via text label, not color alone
1506
2220
  */
1507
2221
  declare function AppointmentCard({ patientName, date, time, type, provider, status, location, className, ...props }: AppointmentCardProps): react_jsx_runtime.JSX.Element;
1508
2222
 
1509
- type TimelineItemVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
1510
- interface TimelineItem {
1511
- /** Unique identifier */
1512
- id: string;
1513
- /** Event title */
1514
- title: string;
1515
- /** Optional description */
1516
- description?: string;
1517
- /** Timestamp display string */
1518
- timestamp: string;
1519
- /** Optional icon to replace the default dot */
1520
- icon?: ReactNode;
1521
- /** Visual variant */
1522
- variant?: TimelineItemVariant;
1523
- }
1524
- interface TimelineProps extends HTMLAttributes<HTMLOListElement> {
1525
- /** Timeline items in chronological order */
1526
- items: TimelineItem[];
1527
- }
1528
- /**
1529
- * Timeline — vertical timeline for displaying sequential events.
1530
- *
1531
- * Accessibility:
1532
- * - Uses semantic <ol> for ordered event sequence
1533
- * - Each event is an <li> for proper list semantics
1534
- * - Icons are decorative (aria-hidden)
1535
- */
1536
- declare function Timeline({ items, className, ...props }: TimelineProps): react_jsx_runtime.JSX.Element;
1537
-
1538
2223
  type ClinicalSeverity = 'critical' | 'high' | 'moderate' | 'low';
1539
2224
  interface ClinicalBannerProps extends HTMLAttributes<HTMLDivElement> {
1540
2225
  /** Severity level */
@@ -1551,10 +2236,14 @@ interface ClinicalBannerProps extends HTMLAttributes<HTMLDivElement> {
1551
2236
  /**
1552
2237
  * ClinicalBanner — prominent banner for critical clinical alerts.
1553
2238
  *
2239
+ * Composes: Banner, Typography
2240
+ *
2241
+ * Wraps the core Banner component with healthcare-specific severity semantics
2242
+ * (critical / high / moderate / low) and an enhanced left-border accent.
2243
+ *
1554
2244
  * Accessibility:
1555
- * - Uses role="alert" for immediate screen reader announcement
2245
+ * - Inherits Banner's role="alert" for urgent statuses
1556
2246
  * - Icon + color + text ensures meaning is communicated multiple ways
1557
- * - Dismiss button has accessible label
1558
2247
  */
1559
2248
  declare function ClinicalBanner({ severity, title, dismissible, onDismiss, children, className, ...props }: ClinicalBannerProps): react_jsx_runtime.JSX.Element;
1560
2249
 
@@ -1580,8 +2269,9 @@ interface MedicationRowProps extends HTMLAttributes<HTMLDivElement> {
1580
2269
  /**
1581
2270
  * MedicationRow — compact horizontal display of medication details.
1582
2271
  *
2272
+ * Composes: StatusBadge, Typography
2273
+ *
1583
2274
  * Accessibility:
1584
- * - Uses role="row" semantics through div structure
1585
2275
  * - Status communicated via text label, not color alone
1586
2276
  * - All information is available as text content for screen readers
1587
2277
  */
@@ -1605,6 +2295,8 @@ interface LabResultRowProps extends HTMLAttributes<HTMLDivElement> {
1605
2295
  /**
1606
2296
  * LabResultRow — displays a single lab test result with visual status indicator.
1607
2297
  *
2298
+ * Composes: Badge, Typography
2299
+ *
1608
2300
  * Accessibility:
1609
2301
  * - Status conveyed via text label ("High", "Low", "Critical"), not color alone
1610
2302
  * - Arrow indicators are supplementary (aria-hidden)
@@ -1633,100 +2325,15 @@ interface InsuranceCardProps extends HTMLAttributes<HTMLDivElement> {
1633
2325
  /**
1634
2326
  * InsuranceCard — displays insurance plan summary information.
1635
2327
  *
2328
+ * Composes: Card, Badge, Typography, DescriptionList, Divider
2329
+ *
1636
2330
  * Accessibility:
1637
2331
  * - Uses role="region" with aria-label for screen reader context
1638
2332
  * - Status communicated via text label, not color alone
1639
- * - Structured layout for easy scanning
2333
+ * - DescriptionList provides semantic label-value pairs
1640
2334
  */
1641
2335
  declare function InsuranceCard({ planName, memberId, groupNumber, planType, status, effectiveDate, expirationDate, className, ...props }: InsuranceCardProps): react_jsx_runtime.JSX.Element;
1642
2336
 
1643
- type ToastStatus = 'info' | 'success' | 'warning' | 'error';
1644
- interface ToastProps {
1645
- /** Toast message */
1646
- message: string;
1647
- /** Optional title */
1648
- title?: string;
1649
- /** Status variant */
1650
- status?: ToastStatus;
1651
- /** Optional action element */
1652
- action?: ReactNode;
1653
- /** Called when toast is closed */
1654
- onClose: () => void;
1655
- /** Auto-dismiss duration in ms (0 to disable) */
1656
- duration?: number;
1657
- /** Additional class name */
1658
- className?: string;
1659
- }
1660
- /**
1661
- * Toast — transient notification that auto-dismisses.
1662
- *
1663
- * Accessibility:
1664
- * - Uses role="alert" for error/warning (assertive), role="status" for info/success (polite)
1665
- * - Close button has accessible label
1666
- * - Auto-dismiss can be disabled for important messages
1667
- * - Icon + color + text ensures meaning is communicated multiple ways
1668
- */
1669
- declare function Toast({ message, title, status, action, onClose, duration, className, }: ToastProps): react_jsx_runtime.JSX.Element;
1670
-
1671
- interface ConfirmDialogProps {
1672
- /** Whether the dialog is open */
1673
- open: boolean;
1674
- /** Called when the user confirms */
1675
- onConfirm: () => void;
1676
- /** Called when the user cancels */
1677
- onCancel: () => void;
1678
- /** Dialog title */
1679
- title: string;
1680
- /** Message or content */
1681
- message: string | ReactNode;
1682
- /** Confirm button label */
1683
- confirmLabel?: string;
1684
- /** Cancel button label */
1685
- cancelLabel?: string;
1686
- /** Visual variant */
1687
- variant?: 'default' | 'danger';
1688
- /** Show loading state on confirm button */
1689
- loading?: boolean;
1690
- /** Additional class name */
1691
- className?: string;
1692
- }
1693
- /**
1694
- * ConfirmDialog — confirmation dialog built on native <dialog>.
1695
- *
1696
- * Accessibility:
1697
- * - Uses native <dialog> for built-in focus trapping and Escape handling
1698
- * - aria-labelledby links to the title
1699
- * - aria-describedby links to the message
1700
- * - Focus moves to cancel button on open (safe default)
1701
- * - Escape key closes the dialog
1702
- * - Backdrop click cancels
1703
- */
1704
- declare function ConfirmDialog({ open, onConfirm, onCancel, title, message, confirmLabel, cancelLabel, variant, loading, className, }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
1705
-
1706
- type BannerStatus = 'info' | 'success' | 'warning' | 'error';
1707
- interface BannerProps extends HTMLAttributes<HTMLDivElement> {
1708
- /** Status variant */
1709
- status?: BannerStatus;
1710
- /** Whether the banner can be dismissed */
1711
- dismissible?: boolean;
1712
- /** Called when dismiss button is clicked */
1713
- onDismiss?: () => void;
1714
- /** Optional action element */
1715
- action?: ReactNode;
1716
- /** Banner content */
1717
- children: ReactNode;
1718
- }
1719
- /**
1720
- * Banner — full-width banner for page-level messages.
1721
- *
1722
- * Accessibility:
1723
- * - Uses role="alert" for error/warning (assertive announcement)
1724
- * - Uses role="status" for info/success (polite announcement)
1725
- * - Icon + color + text ensures meaning is communicated multiple ways
1726
- * - Dismiss button has accessible label
1727
- */
1728
- declare function Banner({ status, dismissible, onDismiss, action, children, className, ...props }: BannerProps): react_jsx_runtime.JSX.Element;
1729
-
1730
2337
  type ChartCardState = 'ready' | 'loading' | 'empty' | 'error';
1731
2338
  interface ChartCardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
1732
2339
  /** Card title (e.g. "30-day patient adherence") */
@@ -2068,4 +2675,4 @@ type Size = 'sm' | 'md' | 'lg';
2068
2675
  type Status = 'success' | 'warning' | 'error' | 'info';
2069
2676
  type Variant = 'primary' | 'secondary' | 'ghost' | 'danger';
2070
2677
 
2071
- export { Accordion, type AccordionItem, type AccordionProps, Alert, type AlertProps, AppointmentCard, type AppointmentCardProps, type AppointmentStatus, AreaChart, type AreaChartProps, Autocomplete, type AutocompleteOption, type AutocompleteProps, Avatar, type AvatarProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerStatus, BarChart, type BarChartProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, type ButtonProps, Card, type CardProps, ChartCard, type ChartCardProps, type ChartCardState, ChartLegend, type ChartSeries, ChartTooltip, type ChartTooltipProps, Checkbox, CheckboxGroup, type CheckboxGroupOption, type CheckboxGroupProps, type CheckboxProps, ClinicalBanner, type ClinicalBannerProps, type ClinicalSeverity, CollapsiblePanel, type CollapsiblePanelProps, ConfirmDialog, type ConfirmDialogProps, DataGrid, type DataGridColumn, type DataGridProps, DatePicker, type DatePickerProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, FileUpload, type FileUploadProps, FormField, type FormFieldProps, HelperText, type HelperTextProps, IconButton, type IconButtonProps, Input, type InputProps, InsuranceCard, type InsuranceCardProps, type InsurancePlanType, type InsuranceStatus, KpiStatCard, type KpiStatCardProps, LabResultRow, type LabResultRowProps, type LabResultStatus, Label, type LabelProps, LineChart, type LineChartProps, List, ListItem, type ListItemProps, type ListProps, MedicationRow, type MedicationRowProps, type MedicationStatus, Modal, type ModalProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberField, type NumberFieldProps, OTPInput, type OTPInputProps, Pagination, type PaginationProps, PatientCard, type PatientCardProps, type PatientStatus, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, SearchField, type SearchFieldProps, Select, type SelectProps, SideNav, type SideNavItem, type SideNavProps, type Size, Skeleton, type SkeletonProps, Slider, type SliderProps, type SortDirection, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StackedBarChart, type BarChartProps as StackedBarChartProps, StatCard, type StatCardProps, type Status, StatusBadge, type StatusBadgeProps, type StatusBadgeStatus, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, type Tab, Table, TableBody, TableCell, TableHead, TableHeaderCell, type TableProps, TableRow, Tabs, type TabsProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineItemVariant, type TimelineProps, Toast, type ToastProps, type ToastStatus, Tooltip, type TooltipProps, TopNav, type TopNavProps, type TrendDirection, TrendStatCard, type TrendStatCardProps, type ValueFormatter, type Variant, accentTeal, aegisChartTheme, aegisSeriesPalette, border, borderStyle, borderWidth, brandPrimary, cn, container, controlSize, dataVis, defaultValueFormatter, duration, easing, focusRing, fontFamily, fontSize, fontWeight, getSeriesColor, grid, iconSize, lineHeight, modalSize, neutral, opacity, radius, semantic, shadow, sidebarDefault, space, surface, text, touchMin, tracking, zIndex };
2678
+ export { Accordion, type AccordionItem, type AccordionProps, Alert, type AlertProps, AppBar, type AppBarProps, AppointmentCard, type AppointmentCardProps, type AppointmentStatus, AreaChart, type AreaChartProps, Autocomplete, type AutocompleteOption, type AutocompleteProps, Avatar, type AvatarProps, Backdrop, type BackdropProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerStatus, BarChart, type BarChartProps, type BreadcrumbItem, Breadcrumbs, type BreadcrumbsProps, Button, ButtonGroup, type ButtonGroupProps, type ButtonProps, Card, type CardProps, ChartCard, type ChartCardProps, type ChartCardState, ChartLegend, type ChartSeries, ChartTooltip, type ChartTooltipProps, Checkbox, CheckboxGroup, type CheckboxGroupOption, type CheckboxGroupProps, type CheckboxProps, Chip, type ChipProps, ClinicalBanner, type ClinicalBannerProps, type ClinicalSeverity, CollapsiblePanel, type CollapsiblePanelProps, ColorPicker, type ColorPickerProps, type CommandItem, CommandPalette, type CommandPaletteProps, Container, type ContainerProps, DataGrid, type DataGridColumn, type DataGridProps, DatePicker, type DatePickerProps, DescriptionList, type DescriptionListItem, type DescriptionListProps, Dialog, type DialogProps, Divider, type DividerProps, DonutChart, type DonutChartDatum, type DonutChartProps, Drawer, type DrawerProps, EmptyState, type EmptyStateProps, ErrorState, type ErrorStateProps, FileUpload, type FileUploadProps, FormField, type FormFieldProps, Grid, type GridProps, HelperText, type HelperTextProps, IconButton, type IconButtonProps, InputGroup, type InputGroupProps, InsuranceCard, type InsuranceCardProps, type InsurancePlanType, type InsuranceStatus, Kbd, type KbdProps, KpiStatCard, type KpiStatCardProps, LabResultRow, type LabResultRowProps, type LabResultStatus, Label, type LabelProps, LineChart, type LineChartProps, Link, type LinkProps, List, ListItem, type ListItemProps, type ListProps, MedicationRow, type MedicationRowProps, type MedicationStatus, Menu, MenuDivider, MenuGroup, type MenuGroupProps, MenuItem, type MenuItemProps, type MenuProps, Modal, type ModalProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NumberField, type NumberFieldProps, OTPInput, type OTPInputProps, Pagination, type PaginationProps, Paper, type PaperProps, PatientCard, type PatientCardProps, type PatientStatus, Popover, type PopoverProps, Portal, type PortalProps, Progress, type ProgressProps, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, Rating, type RatingProps, SearchField, type SearchFieldProps, Select, type SelectProps, SideNav, type SideNavItem, type SideNavProps, type Size, Skeleton, type SkeletonProps, Slider, type SliderProps, type SortDirection, Sparkline, type SparklineProps, Spinner, type SpinnerProps, Stack, type StackProps, StackedBarChart, type BarChartProps as StackedBarChartProps, type Status, StatusBadge, type StatusBadgeProps, type StatusBadgeStatus, Stepper, type StepperProps, type StepperStep, Switch, type SwitchProps, type Tab, Table, TableBody, TableCell, TableHead, TableHeaderCell, type TableProps, TableRow, Tabs, type TabsProps, TagInput, type TagInputProps, TextField, type TextFieldProps, Textarea, type TextareaProps, Timeline, type TimelineItem, type TimelineItemVariant, type TimelineProps, Toast, type ToastProps, type ToastStatus, Toolbar, ToolbarDivider, type ToolbarDividerProps, ToolbarGroup, type ToolbarGroupProps, type ToolbarProps, Tooltip, type TooltipProps, type TreeNode, TreeView, type TreeViewProps, type TrendDirection, TrendStatCard, type TrendStatCardProps, Typography, type TypographyAlign, type TypographyColor, type TypographyProps, type TypographyVariant, type TypographyWeight, type ValueFormatter, type Variant, VisuallyHidden, type VisuallyHiddenProps, accentTeal, aegisChartTheme, aegisSeriesPalette, border, borderStyle, borderWidth, brandPrimary, cn, container, controlSize, dataVis, defaultValueFormatter, duration, easing, focusRing, fontFamily, fontSize, fontWeight, getSeriesColor, grid, iconSize, lineHeight, modalSize, neutral, opacity, radius, semantic, shadow, sidebarDefault, space, surface, text, touchMin, tracking, zIndex };