@a13y/react 0.1.2 → 0.1.3

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.
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { P as PressEvent } from '../use-accessible-button-B0syf-Az.js';
3
- import { ReactNode } from 'react';
3
+ import React, { ReactNode, ReactElement } from 'react';
4
4
 
5
5
  /**
6
6
  * Button variants
@@ -371,4 +371,870 @@ interface AccessibleTabsProps {
371
371
  */
372
372
  declare const AccessibleTabs: (props: AccessibleTabsProps) => react_jsx_runtime.JSX.Element;
373
373
 
374
- export { AccessibleButton, AccessibleDialog, AccessibleMenu, AccessibleModal, AccessibleTabs, type AccessibleButtonProps as ButtonComponentProps, type ButtonVariant, type AccessibleDialogProps as DialogComponentProps, type AccessibleMenuProps as MenuComponentProps, type MenuItem, type AccessibleModalProps as ModalComponentProps, type Tab, type AccessibleTabsProps as TabsComponentProps };
374
+ /**
375
+ * AccessibleTooltip Component
376
+ * A fully accessible tooltip with proper ARIA attributes and keyboard support
377
+ */
378
+
379
+ interface AccessibleTooltipProps {
380
+ /** Content to display in the tooltip */
381
+ content: string;
382
+ /** Placement of the tooltip relative to the trigger */
383
+ placement?: 'top' | 'bottom' | 'left' | 'right';
384
+ /** Delay before showing the tooltip (in milliseconds) */
385
+ delay?: number;
386
+ /** Trigger method for showing the tooltip */
387
+ trigger?: 'hover' | 'focus' | 'both';
388
+ /** The element that triggers the tooltip */
389
+ children: ReactElement;
390
+ /** Optional className for the tooltip container */
391
+ className?: string;
392
+ /** Optional styles for the tooltip container */
393
+ style?: React.CSSProperties;
394
+ }
395
+ /**
396
+ * Accessible tooltip component that properly announces content to screen readers
397
+ *
398
+ * @example
399
+ * ```tsx
400
+ * <AccessibleTooltip content="This is helpful information">
401
+ * <button>Hover me</button>
402
+ * </AccessibleTooltip>
403
+ * ```
404
+ */
405
+ declare const AccessibleTooltip: React.FC<AccessibleTooltipProps>;
406
+
407
+ /**
408
+ * AccessibleToggle Component
409
+ * A fully accessible toggle/switch component with ARIA support
410
+ */
411
+
412
+ interface AccessibleToggleProps {
413
+ /** Whether the toggle is checked */
414
+ checked: boolean;
415
+ /** Callback when the toggle state changes */
416
+ onChange: (checked: boolean) => void;
417
+ /** Label for the toggle */
418
+ label: string;
419
+ /** Optional description for additional context */
420
+ description?: string;
421
+ /** Whether the toggle is disabled */
422
+ disabled?: boolean;
423
+ /** Optional className for the container */
424
+ className?: string;
425
+ /** Optional className for the switch element */
426
+ switchClassName?: string;
427
+ /** Optional styles */
428
+ style?: React.CSSProperties;
429
+ }
430
+ /**
431
+ * Accessible toggle/switch component with proper ARIA attributes
432
+ *
433
+ * @example
434
+ * ```tsx
435
+ * const [enabled, setEnabled] = useState(false);
436
+ *
437
+ * <AccessibleToggle
438
+ * checked={enabled}
439
+ * onChange={setEnabled}
440
+ * label="Enable notifications"
441
+ * description="Receive email notifications for updates"
442
+ * />
443
+ * ```
444
+ */
445
+ declare const AccessibleToggle: React.FC<AccessibleToggleProps>;
446
+
447
+ /**
448
+ * AccessibleToast Component
449
+ * Accessible toast notifications with proper ARIA live regions
450
+ */
451
+
452
+ type ToastType = 'success' | 'error' | 'warning' | 'info';
453
+ type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
454
+ interface ToastAction {
455
+ /** Label for the action button */
456
+ label: string;
457
+ /** Callback when action is clicked */
458
+ onClick: () => void;
459
+ }
460
+ interface AccessibleToastProps {
461
+ /** The message to display */
462
+ message: string;
463
+ /** Type of toast (affects styling and ARIA role) */
464
+ type?: ToastType;
465
+ /** Duration in milliseconds (0 = no auto-dismiss) */
466
+ duration?: number;
467
+ /** Position of the toast */
468
+ position?: ToastPosition;
469
+ /** Optional action button */
470
+ action?: ToastAction;
471
+ /** Whether the toast is visible */
472
+ isOpen: boolean;
473
+ /** Callback when toast is dismissed */
474
+ onClose: () => void;
475
+ /** Optional className */
476
+ className?: string;
477
+ /** Optional styles */
478
+ style?: React.CSSProperties;
479
+ }
480
+ /**
481
+ * Accessible toast notification component with ARIA live regions
482
+ *
483
+ * @example
484
+ * ```tsx
485
+ * const [showToast, setShowToast] = useState(false);
486
+ *
487
+ * <AccessibleToast
488
+ * message="Item added to cart"
489
+ * type="success"
490
+ * duration={5000}
491
+ * isOpen={showToast}
492
+ * onClose={() => setShowToast(false)}
493
+ * action={{
494
+ * label: 'Undo',
495
+ * onClick: () => removeItem()
496
+ * }}
497
+ * />
498
+ * ```
499
+ */
500
+ declare const AccessibleToast: React.FC<AccessibleToastProps>;
501
+ /**
502
+ * ToastContainer component to manage multiple toasts
503
+ */
504
+ interface Toast {
505
+ id: string;
506
+ message: string;
507
+ type?: ToastType;
508
+ duration?: number;
509
+ action?: ToastAction;
510
+ }
511
+ interface ToastContainerProps {
512
+ /** Array of toasts to display */
513
+ toasts: Toast[];
514
+ /** Callback to remove a toast */
515
+ onRemove: (id: string) => void;
516
+ /** Position for all toasts */
517
+ position?: ToastPosition;
518
+ }
519
+ /**
520
+ * Container component to manage multiple toast notifications
521
+ *
522
+ * @example
523
+ * ```tsx
524
+ * const [toasts, setToasts] = useState<Toast[]>([]);
525
+ *
526
+ * const addToast = (message: string, type: ToastType) => {
527
+ * const id = Date.now().toString();
528
+ * setToasts(prev => [...prev, { id, message, type }]);
529
+ * };
530
+ *
531
+ * const removeToast = (id: string) => {
532
+ * setToasts(prev => prev.filter(t => t.id !== id));
533
+ * };
534
+ *
535
+ * <ToastContainer toasts={toasts} onRemove={removeToast} />
536
+ * ```
537
+ */
538
+ declare const ToastContainer: React.FC<ToastContainerProps>;
539
+
540
+ /**
541
+ * AccessibleAccordion Component
542
+ * Fully accessible accordion with ARIA attributes and keyboard navigation
543
+ */
544
+
545
+ interface AccordionItem {
546
+ /** Unique identifier for the item */
547
+ id: string;
548
+ /** Title/header for the accordion item */
549
+ title: string;
550
+ /** Content to display when expanded */
551
+ content: ReactNode;
552
+ /** Whether this item is disabled */
553
+ disabled?: boolean;
554
+ }
555
+ interface AccessibleAccordionProps {
556
+ /** Array of accordion items */
557
+ items: AccordionItem[];
558
+ /** Allow multiple items to be open at once */
559
+ allowMultiple?: boolean;
560
+ /** IDs of items that should be open by default */
561
+ defaultOpenItems?: string[];
562
+ /** Callback when item is toggled */
563
+ onToggle?: (itemId: string, isOpen: boolean) => void;
564
+ /** Optional className for the container */
565
+ className?: string;
566
+ /** Optional className for each item */
567
+ itemClassName?: string;
568
+ /** Optional className for headers */
569
+ headerClassName?: string;
570
+ /** Optional className for content */
571
+ contentClassName?: string;
572
+ /** Optional styles */
573
+ style?: React.CSSProperties;
574
+ }
575
+ /**
576
+ * Accessible accordion component with keyboard navigation
577
+ *
578
+ * @example
579
+ * ```tsx
580
+ * const items = [
581
+ * {
582
+ * id: '1',
583
+ * title: 'What is accessibility?',
584
+ * content: 'Accessibility ensures that people with disabilities can use your website.'
585
+ * },
586
+ * {
587
+ * id: '2',
588
+ * title: 'Why is it important?',
589
+ * content: 'It makes your content available to everyone, regardless of ability.'
590
+ * }
591
+ * ];
592
+ *
593
+ * <AccessibleAccordion
594
+ * items={items}
595
+ * allowMultiple={false}
596
+ * defaultOpenItems={['1']}
597
+ * />
598
+ * ```
599
+ */
600
+ declare const AccessibleAccordion: React.FC<AccessibleAccordionProps>;
601
+
602
+ /**
603
+ * AccessibleBreadcrumb Component
604
+ * Accessible breadcrumb navigation with proper ARIA attributes
605
+ */
606
+
607
+ interface BreadcrumbItem {
608
+ /** Label to display */
609
+ label: string;
610
+ /** Optional href for link */
611
+ href?: string;
612
+ /** Optional click handler (alternative to href) */
613
+ onClick?: () => void;
614
+ }
615
+ interface AccessibleBreadcrumbProps {
616
+ /** Array of breadcrumb items */
617
+ items: BreadcrumbItem[];
618
+ /** Optional separator between items */
619
+ separator?: ReactNode;
620
+ /** Optional aria-label for the navigation */
621
+ ariaLabel?: string;
622
+ /** Optional className for the nav element */
623
+ className?: string;
624
+ /** Optional className for items */
625
+ itemClassName?: string;
626
+ /** Optional styles */
627
+ style?: React.CSSProperties;
628
+ }
629
+ /**
630
+ * Accessible breadcrumb navigation component
631
+ *
632
+ * @example
633
+ * ```tsx
634
+ * const items = [
635
+ * { label: 'Home', href: '/' },
636
+ * { label: 'Products', href: '/products' },
637
+ * { label: 'Electronics', href: '/products/electronics' },
638
+ * { label: 'Laptops' }
639
+ * ];
640
+ *
641
+ * <AccessibleBreadcrumb items={items} />
642
+ * ```
643
+ */
644
+ declare const AccessibleBreadcrumb: React.FC<AccessibleBreadcrumbProps>;
645
+
646
+ /**
647
+ * AccessibleCheckboxGroup Component
648
+ * Accessible checkbox group with proper fieldset/legend and ARIA attributes
649
+ */
650
+
651
+ interface CheckboxOption {
652
+ /** Unique value for the option */
653
+ value: string;
654
+ /** Label to display */
655
+ label: string;
656
+ /** Optional description */
657
+ description?: string;
658
+ /** Whether this option is disabled */
659
+ disabled?: boolean;
660
+ }
661
+ interface AccessibleCheckboxGroupProps {
662
+ /** Array of checkbox options */
663
+ options: CheckboxOption[];
664
+ /** Currently selected values */
665
+ value: string[];
666
+ /** Callback when selection changes */
667
+ onChange: (value: string[]) => void;
668
+ /** Label for the group */
669
+ label: string;
670
+ /** Optional description for the group */
671
+ description?: string;
672
+ /** Whether the group is required */
673
+ required?: boolean;
674
+ /** Whether the group is disabled */
675
+ disabled?: boolean;
676
+ /** Error message to display */
677
+ error?: string;
678
+ /** Optional className for the fieldset */
679
+ className?: string;
680
+ /** Optional styles */
681
+ style?: React.CSSProperties;
682
+ }
683
+ /**
684
+ * Accessible checkbox group component with proper ARIA attributes
685
+ *
686
+ * @example
687
+ * ```tsx
688
+ * const [selected, setSelected] = useState<string[]>(['email']);
689
+ *
690
+ * const options = [
691
+ * { value: 'email', label: 'Email notifications' },
692
+ * { value: 'sms', label: 'SMS notifications' },
693
+ * { value: 'push', label: 'Push notifications', description: 'Requires app installation' }
694
+ * ];
695
+ *
696
+ * <AccessibleCheckboxGroup
697
+ * options={options}
698
+ * value={selected}
699
+ * onChange={setSelected}
700
+ * label="Notification preferences"
701
+ * required
702
+ * />
703
+ * ```
704
+ */
705
+ declare const AccessibleCheckboxGroup: React.FC<AccessibleCheckboxGroupProps>;
706
+
707
+ /**
708
+ * AccessibleRadioGroup Component
709
+ * Accessible radio button group with proper fieldset/legend and ARIA attributes
710
+ */
711
+
712
+ interface RadioOption {
713
+ /** Unique value for the option */
714
+ value: string;
715
+ /** Label to display */
716
+ label: string;
717
+ /** Optional description */
718
+ description?: string;
719
+ /** Whether this option is disabled */
720
+ disabled?: boolean;
721
+ }
722
+ interface AccessibleRadioGroupProps {
723
+ /** Array of radio options */
724
+ options: RadioOption[];
725
+ /** Currently selected value */
726
+ value: string | null;
727
+ /** Callback when selection changes */
728
+ onChange: (value: string) => void;
729
+ /** Name attribute for the radio group */
730
+ name: string;
731
+ /** Label for the group */
732
+ label: string;
733
+ /** Optional description for the group */
734
+ description?: string;
735
+ /** Whether the group is required */
736
+ required?: boolean;
737
+ /** Whether the group is disabled */
738
+ disabled?: boolean;
739
+ /** Error message to display */
740
+ error?: string;
741
+ /** Optional className for the fieldset */
742
+ className?: string;
743
+ /** Optional styles */
744
+ style?: React.CSSProperties;
745
+ }
746
+ /**
747
+ * Accessible radio button group component with proper ARIA attributes
748
+ *
749
+ * @example
750
+ * ```tsx
751
+ * const [selected, setSelected] = useState<string | null>(null);
752
+ *
753
+ * const options = [
754
+ * { value: 'small', label: 'Small', description: 'Up to 10 users' },
755
+ * { value: 'medium', label: 'Medium', description: 'Up to 50 users' },
756
+ * { value: 'large', label: 'Large', description: 'Unlimited users' }
757
+ * ];
758
+ *
759
+ * <AccessibleRadioGroup
760
+ * name="plan"
761
+ * options={options}
762
+ * value={selected}
763
+ * onChange={setSelected}
764
+ * label="Choose your plan"
765
+ * required
766
+ * />
767
+ * ```
768
+ */
769
+ declare const AccessibleRadioGroup: React.FC<AccessibleRadioGroupProps>;
770
+
771
+ /**
772
+ * AccessibleProgress Component
773
+ * Accessible progress bar and spinner with proper ARIA attributes
774
+ */
775
+
776
+ type ProgressVariant = 'linear' | 'circular';
777
+ interface AccessibleProgressProps {
778
+ /** Current progress value (undefined for indeterminate) */
779
+ value?: number;
780
+ /** Maximum value */
781
+ max?: number;
782
+ /** Minimum value */
783
+ min?: number;
784
+ /** Label for the progress indicator */
785
+ label: string;
786
+ /** Visual variant */
787
+ variant?: ProgressVariant;
788
+ /** Whether to show percentage text */
789
+ showValue?: boolean;
790
+ /** Whether to announce progress changes */
791
+ announceChanges?: boolean;
792
+ /** Optional className */
793
+ className?: string;
794
+ /** Optional styles */
795
+ style?: React.CSSProperties;
796
+ }
797
+ /**
798
+ * Accessible progress indicator with ARIA live regions
799
+ *
800
+ * @example
801
+ * ```tsx
802
+ * // Determinate progress
803
+ * <AccessibleProgress
804
+ * value={75}
805
+ * label="Upload progress"
806
+ * showValue
807
+ * />
808
+ *
809
+ * // Indeterminate progress
810
+ * <AccessibleProgress
811
+ * label="Loading..."
812
+ * variant="circular"
813
+ * />
814
+ * ```
815
+ */
816
+ declare const AccessibleProgress: React.FC<AccessibleProgressProps>;
817
+
818
+ /**
819
+ * SkipLinks Component
820
+ * Accessible skip navigation links for keyboard users
821
+ */
822
+
823
+ interface SkipLink {
824
+ /** Target element ID (without #) */
825
+ href: string;
826
+ /** Label for the skip link */
827
+ label: string;
828
+ }
829
+ interface SkipLinksProps {
830
+ /** Array of skip links */
831
+ links: SkipLink[];
832
+ /** Optional className for the container */
833
+ className?: string;
834
+ /** Optional styles for the container */
835
+ style?: React.CSSProperties;
836
+ /** Optional styles for individual links */
837
+ linkStyle?: React.CSSProperties;
838
+ }
839
+ /**
840
+ * Skip navigation links component, visible only on keyboard focus
841
+ * Should be the first focusable element on the page
842
+ *
843
+ * @example
844
+ * ```tsx
845
+ * const links = [
846
+ * { href: 'main-content', label: 'Skip to main content' },
847
+ * { href: 'navigation', label: 'Skip to navigation' },
848
+ * { href: 'footer', label: 'Skip to footer' }
849
+ * ];
850
+ *
851
+ * <SkipLinks links={links} />
852
+ *
853
+ * // In your page layout:
854
+ * <main id="main-content">...</main>
855
+ * <nav id="navigation">...</nav>
856
+ * <footer id="footer">...</footer>
857
+ * ```
858
+ */
859
+ declare const SkipLinks: React.FC<SkipLinksProps>;
860
+
861
+ /**
862
+ * AccessiblePagination Component
863
+ * Accessible pagination with proper ARIA attributes and keyboard navigation
864
+ */
865
+
866
+ interface AccessiblePaginationProps {
867
+ /** Current active page (1-indexed) */
868
+ currentPage: number;
869
+ /** Total number of pages */
870
+ totalPages: number;
871
+ /** Callback when page changes */
872
+ onPageChange: (page: number) => void;
873
+ /** Number of sibling pages to show on each side */
874
+ siblingCount?: number;
875
+ /** Whether to show first/last buttons */
876
+ showFirstLast?: boolean;
877
+ /** Optional aria-label for the navigation */
878
+ ariaLabel?: string;
879
+ /** Optional className */
880
+ className?: string;
881
+ /** Optional styles */
882
+ style?: React.CSSProperties;
883
+ }
884
+ /**
885
+ * Accessible pagination component with keyboard navigation
886
+ *
887
+ * @example
888
+ * ```tsx
889
+ * const [page, setPage] = useState(1);
890
+ *
891
+ * <AccessiblePagination
892
+ * currentPage={page}
893
+ * totalPages={10}
894
+ * onPageChange={setPage}
895
+ * siblingCount={1}
896
+ * showFirstLast
897
+ * />
898
+ * ```
899
+ */
900
+ declare const AccessiblePagination: React.FC<AccessiblePaginationProps>;
901
+
902
+ /**
903
+ * AccessibleCombobox Component
904
+ * Fully accessible combobox/select with autocomplete, keyboard navigation, and ARIA support
905
+ */
906
+
907
+ interface ComboboxOption<T = string> {
908
+ /** Unique value */
909
+ value: T;
910
+ /** Display label */
911
+ label: string;
912
+ /** Whether this option is disabled */
913
+ disabled?: boolean;
914
+ }
915
+ interface AccessibleComboboxProps<T = string> {
916
+ /** Array of options */
917
+ options: ComboboxOption<T>[];
918
+ /** Currently selected value */
919
+ value: T | null;
920
+ /** Callback when selection changes */
921
+ onChange: (value: T | null) => void;
922
+ /** Label for the combobox */
923
+ label: string;
924
+ /** Placeholder text */
925
+ placeholder?: string;
926
+ /** Whether search is enabled */
927
+ searchable?: boolean;
928
+ /** Whether the combobox is required */
929
+ required?: boolean;
930
+ /** Whether the combobox is disabled */
931
+ disabled?: boolean;
932
+ /** Error message */
933
+ error?: string;
934
+ /** Optional className */
935
+ className?: string;
936
+ /** Optional styles */
937
+ style?: React.CSSProperties;
938
+ }
939
+ /**
940
+ * Accessible combobox/select component with autocomplete
941
+ *
942
+ * @example
943
+ * ```tsx
944
+ * const countries = [
945
+ * { value: 'us', label: 'United States' },
946
+ * { value: 'uk', label: 'United Kingdom' },
947
+ * { value: 'ca', label: 'Canada' }
948
+ * ];
949
+ *
950
+ * const [country, setCountry] = useState<string | null>(null);
951
+ *
952
+ * <AccessibleCombobox
953
+ * options={countries}
954
+ * value={country}
955
+ * onChange={setCountry}
956
+ * label="Select country"
957
+ * searchable
958
+ * />
959
+ * ```
960
+ */
961
+ declare function AccessibleCombobox<T = string>({ options, value, onChange, label, placeholder, searchable, required, disabled, error, className, style, }: AccessibleComboboxProps<T>): React.ReactElement;
962
+
963
+ /**
964
+ * AccessibleDatePicker Component
965
+ * Fully accessible date picker with calendar grid and keyboard navigation
966
+ */
967
+
968
+ interface AccessibleDatePickerProps {
969
+ /** Currently selected date */
970
+ value: Date | null;
971
+ /** Callback when date changes */
972
+ onChange: (date: Date | null) => void;
973
+ /** Label for the date picker */
974
+ label: string;
975
+ /** Minimum selectable date */
976
+ minDate?: Date;
977
+ /** Maximum selectable date */
978
+ maxDate?: Date;
979
+ /** Array of disabled dates */
980
+ disabledDates?: Date[];
981
+ /** Whether the field is required */
982
+ required?: boolean;
983
+ /** Whether the field is disabled */
984
+ disabled?: boolean;
985
+ /** Error message */
986
+ error?: string;
987
+ /** Date format for display (default: MM/DD/YYYY) */
988
+ dateFormat?: 'MM/DD/YYYY' | 'DD/MM/YYYY' | 'YYYY-MM-DD';
989
+ /** Optional className */
990
+ className?: string;
991
+ /** Optional styles */
992
+ style?: React.CSSProperties;
993
+ }
994
+ /**
995
+ * Accessible date picker with calendar grid
996
+ *
997
+ * @example
998
+ * ```tsx
999
+ * const [date, setDate] = useState<Date | null>(null);
1000
+ *
1001
+ * <AccessibleDatePicker
1002
+ * value={date}
1003
+ * onChange={setDate}
1004
+ * label="Select date"
1005
+ * minDate={new Date()}
1006
+ * required
1007
+ * />
1008
+ * ```
1009
+ */
1010
+ declare const AccessibleDatePicker: React.FC<AccessibleDatePickerProps>;
1011
+
1012
+ /**
1013
+ * AccessibleTreeView Component
1014
+ * Accessible tree navigation with keyboard support and ARIA
1015
+ */
1016
+
1017
+ interface TreeNode<T = unknown> {
1018
+ /** Unique identifier */
1019
+ id: string;
1020
+ /** Display label */
1021
+ label: string;
1022
+ /** Optional data payload */
1023
+ data?: T;
1024
+ /** Child nodes */
1025
+ children?: TreeNode<T>[];
1026
+ /** Whether node is disabled */
1027
+ disabled?: boolean;
1028
+ }
1029
+ interface AccessibleTreeViewProps<T = unknown> {
1030
+ /** Tree data */
1031
+ data: TreeNode<T>[];
1032
+ /** Callback when node is selected */
1033
+ onSelect?: (node: TreeNode<T>) => void;
1034
+ /** IDs of expanded nodes */
1035
+ expandedNodes?: string[];
1036
+ /** Callback when node is expanded/collapsed */
1037
+ onToggle?: (nodeId: string, isExpanded: boolean) => void;
1038
+ /** Allow multiple selection */
1039
+ multiSelect?: boolean;
1040
+ /** Selected node IDs */
1041
+ selectedNodes?: string[];
1042
+ /** Optional aria-label */
1043
+ ariaLabel?: string;
1044
+ /** Optional className */
1045
+ className?: string;
1046
+ /** Optional styles */
1047
+ style?: React.CSSProperties;
1048
+ }
1049
+ /**
1050
+ * Accessible tree view component with keyboard navigation
1051
+ *
1052
+ * @example
1053
+ * ```tsx
1054
+ * const treeData = [
1055
+ * {
1056
+ * id: '1',
1057
+ * label: 'Documents',
1058
+ * children: [
1059
+ * { id: '1-1', label: 'Reports' },
1060
+ * { id: '1-2', label: 'Invoices' }
1061
+ * ]
1062
+ * },
1063
+ * { id: '2', label: 'Images' }
1064
+ * ];
1065
+ *
1066
+ * <AccessibleTreeView
1067
+ * data={treeData}
1068
+ * onSelect={(node) => console.log(node)}
1069
+ * />
1070
+ * ```
1071
+ */
1072
+ declare function AccessibleTreeView<T = unknown>({ data, onSelect, expandedNodes: controlledExpanded, onToggle, multiSelect, selectedNodes: controlledSelected, ariaLabel, className, style, }: AccessibleTreeViewProps<T>): React.ReactElement;
1073
+
1074
+ /**
1075
+ * AccessibleTable Component
1076
+ * Fully accessible data table with sorting, selection, and keyboard navigation
1077
+ */
1078
+
1079
+ interface TableColumn<T> {
1080
+ /** Unique key for the column */
1081
+ key: string;
1082
+ /** Header label */
1083
+ label: string;
1084
+ /** Render function for cell content */
1085
+ render?: (item: T, index: number) => React.ReactNode;
1086
+ /** Whether column is sortable */
1087
+ sortable?: boolean;
1088
+ /** Width of the column */
1089
+ width?: string;
1090
+ }
1091
+ type SortDirection = 'asc' | 'desc' | null;
1092
+ interface AccessibleTableProps<T> {
1093
+ /** Table data */
1094
+ data: T[];
1095
+ /** Column definitions */
1096
+ columns: TableColumn<T>[];
1097
+ /** Table caption (required for accessibility) */
1098
+ caption: string;
1099
+ /** Whether rows are selectable */
1100
+ selectable?: boolean;
1101
+ /** Selected row indices */
1102
+ selectedRows?: number[];
1103
+ /** Callback when selection changes */
1104
+ onSelectionChange?: (selectedIndices: number[]) => void;
1105
+ /** Row key extractor */
1106
+ getRowKey?: (item: T, index: number) => string;
1107
+ /** Whether table is sortable */
1108
+ sortable?: boolean;
1109
+ /** Current sort column */
1110
+ sortColumn?: string;
1111
+ /** Current sort direction */
1112
+ sortDirection?: SortDirection;
1113
+ /** Callback when sort changes */
1114
+ onSort?: (column: string, direction: SortDirection) => void;
1115
+ /** Optional className */
1116
+ className?: string;
1117
+ /** Optional styles */
1118
+ style?: React.CSSProperties;
1119
+ }
1120
+ /**
1121
+ * Accessible data table with sorting and selection
1122
+ *
1123
+ * @example
1124
+ * ```tsx
1125
+ * interface User {
1126
+ * id: number;
1127
+ * name: string;
1128
+ * email: string;
1129
+ * }
1130
+ *
1131
+ * const columns: TableColumn<User>[] = [
1132
+ * { key: 'name', label: 'Name', sortable: true },
1133
+ * { key: 'email', label: 'Email', sortable: true }
1134
+ * ];
1135
+ *
1136
+ * <AccessibleTable
1137
+ * data={users}
1138
+ * columns={columns}
1139
+ * caption="User list"
1140
+ * selectable
1141
+ * sortable
1142
+ * />
1143
+ * ```
1144
+ */
1145
+ declare function AccessibleTable<T extends Record<string, unknown>>({ data, columns, caption, selectable, selectedRows: controlledSelected, onSelectionChange, getRowKey, sortable, sortColumn: controlledSortColumn, sortDirection: controlledSortDirection, onSort, className, style, }: AccessibleTableProps<T>): React.ReactElement;
1146
+
1147
+ /**
1148
+ * AccessibleCarousel Component
1149
+ * Fully accessible carousel with keyboard navigation and proper ARIA attributes
1150
+ */
1151
+
1152
+ interface AccessibleCarouselProps {
1153
+ /** Array of carousel items */
1154
+ items: ReactNode[];
1155
+ /** Whether to auto-play the carousel */
1156
+ autoPlay?: boolean;
1157
+ /** Interval between slides in milliseconds */
1158
+ interval?: number;
1159
+ /** Whether to show navigation controls */
1160
+ controls?: boolean;
1161
+ /** Whether to show slide indicators */
1162
+ indicators?: boolean;
1163
+ /** Whether to loop back to start/end */
1164
+ loop?: boolean;
1165
+ /** Optional aria-label */
1166
+ ariaLabel?: string;
1167
+ /** Optional className */
1168
+ className?: string;
1169
+ /** Optional styles */
1170
+ style?: React.CSSProperties;
1171
+ }
1172
+ /**
1173
+ * Accessible carousel component with auto-play and keyboard navigation
1174
+ *
1175
+ * @example
1176
+ * ```tsx
1177
+ * const slides = [
1178
+ * <div>Slide 1</div>,
1179
+ * <div>Slide 2</div>,
1180
+ * <div>Slide 3</div>
1181
+ * ];
1182
+ *
1183
+ * <AccessibleCarousel
1184
+ * items={slides}
1185
+ * autoPlay
1186
+ * interval={5000}
1187
+ * controls
1188
+ * indicators
1189
+ * />
1190
+ * ```
1191
+ */
1192
+ declare const AccessibleCarousel: React.FC<AccessibleCarouselProps>;
1193
+
1194
+ /**
1195
+ * AccessibleDrawer Component
1196
+ * Accessible drawer/sidebar with focus trap and proper ARIA attributes
1197
+ */
1198
+
1199
+ type DrawerSide = 'left' | 'right' | 'top' | 'bottom';
1200
+ interface AccessibleDrawerProps {
1201
+ /** Whether the drawer is open */
1202
+ isOpen: boolean;
1203
+ /** Callback when drawer should close */
1204
+ onClose: () => void;
1205
+ /** Side from which the drawer appears */
1206
+ side?: DrawerSide;
1207
+ /** Whether drawer is modal (blocks interaction with background) */
1208
+ modal?: boolean;
1209
+ /** Drawer title */
1210
+ title?: string;
1211
+ /** Drawer content */
1212
+ children: ReactNode;
1213
+ /** Optional className for the drawer */
1214
+ className?: string;
1215
+ /** Optional className for the backdrop */
1216
+ backdropClassName?: string;
1217
+ /** Optional styles */
1218
+ style?: React.CSSProperties;
1219
+ }
1220
+ /**
1221
+ * Accessible drawer/sidebar component with focus trap
1222
+ *
1223
+ * @example
1224
+ * ```tsx
1225
+ * const [isOpen, setIsOpen] = useState(false);
1226
+ *
1227
+ * <AccessibleDrawer
1228
+ * isOpen={isOpen}
1229
+ * onClose={() => setIsOpen(false)}
1230
+ * side="right"
1231
+ * modal
1232
+ * title="Settings"
1233
+ * >
1234
+ * <div>Drawer content here</div>
1235
+ * </AccessibleDrawer>
1236
+ * ```
1237
+ */
1238
+ declare const AccessibleDrawer: React.FC<AccessibleDrawerProps>;
1239
+
1240
+ export { AccessibleAccordion, type AccessibleAccordionProps, AccessibleBreadcrumb, type AccessibleBreadcrumbProps, AccessibleButton, AccessibleCarousel, type AccessibleCarouselProps, AccessibleCheckboxGroup, type AccessibleCheckboxGroupProps, AccessibleCombobox, type AccessibleComboboxProps, AccessibleDatePicker, type AccessibleDatePickerProps, AccessibleDialog, AccessibleDrawer, type AccessibleDrawerProps, AccessibleMenu, AccessibleModal, AccessiblePagination, type AccessiblePaginationProps, AccessibleProgress, type AccessibleProgressProps, AccessibleRadioGroup, type AccessibleRadioGroupProps, AccessibleTable, type AccessibleTableProps, AccessibleTabs, AccessibleToast, type AccessibleToastProps, AccessibleToggle, type AccessibleToggleProps, AccessibleTooltip, type AccessibleTooltipProps, AccessibleTreeView, type AccessibleTreeViewProps, type AccordionItem, type BreadcrumbItem, type AccessibleButtonProps as ButtonComponentProps, type ButtonVariant, type CheckboxOption, type ComboboxOption, type AccessibleDialogProps as DialogComponentProps, type DrawerSide, type AccessibleMenuProps as MenuComponentProps, type MenuItem, type AccessibleModalProps as ModalComponentProps, type ProgressVariant, type RadioOption, type SkipLink, SkipLinks, type SkipLinksProps, type SortDirection, type Tab, type TableColumn, type AccessibleTabsProps as TabsComponentProps, type Toast, type ToastAction, ToastContainer, type ToastContainerProps, type ToastPosition, type ToastType, type TreeNode };