@shohojdhara/atomix 0.1.4 → 0.1.5
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/css/{atomix-0.1.4.css → atomix-0.1.5.css} +1 -1
- package/dist/css/{atomix-0.1.4.css.map → atomix-0.1.5.css.map} +1 -1
- package/dist/css/{atomix-0.1.4.min.css → atomix-0.1.5.min.css} +1 -1
- package/dist/css/{atomix-0.1.4.min.css.map → atomix-0.1.5.min.css.map} +1 -1
- package/dist/js/202.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/202.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/202.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/202.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/202.atomix-0.1.5.react.js +2 -0
- package/dist/js/202.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/308.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/308.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/308.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/308.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/308.atomix-0.1.5.react.js +2 -0
- package/dist/js/308.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/34.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/34.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/34.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/34.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/34.atomix-0.1.5.react.js +2 -0
- package/dist/js/34.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/471.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/471.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/471.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/471.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/471.atomix-0.1.5.react.js +2 -0
- package/dist/js/471.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/54.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/54.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/54.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/54.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/54.atomix-0.1.5.react.js +2 -0
- package/dist/js/54.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/619.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/619.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/619.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/619.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/619.atomix-0.1.5.react.js +2 -0
- package/dist/js/619.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/690.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/690.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/690.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/690.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/690.atomix-0.1.5.react.js +2 -0
- package/dist/js/690.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/894.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/894.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/894.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/894.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/894.atomix-0.1.5.react.js +2 -0
- package/dist/js/894.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/897.atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/897.atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/897.atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/897.atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/897.atomix-0.1.5.react.js +2 -0
- package/dist/js/897.atomix-0.1.5.react.js.map +1 -0
- package/dist/js/atomix-0.1.5.react.cjs.js +2 -0
- package/dist/js/atomix-0.1.5.react.cjs.js.map +1 -0
- package/dist/js/atomix-0.1.5.react.esm.js +2 -0
- package/dist/js/atomix-0.1.5.react.esm.js.map +1 -0
- package/dist/js/atomix-0.1.5.react.js +2 -0
- package/dist/js/atomix-0.1.5.react.js.map +1 -0
- package/package.json +13 -13
- package/src/components/Accordion/Accordion.tsx +11 -2
- package/src/components/Avatar/Avatar.tsx +12 -2
- package/src/components/Avatar/AvatarGroup.tsx +11 -2
- package/src/components/Badge/Badge.tsx +13 -2
- package/src/components/Badge/index.tsx +2 -4
- package/src/components/Breadcrumb/Breadcrumb.tsx +9 -3
- package/src/components/Callout/Callout.tsx +13 -2
- package/src/components/Card/Card.tsx +12 -2
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +11 -2
- package/src/components/ColorModeToggle/index.ts +2 -1
- package/src/components/Countdown/Countdown.tsx +13 -3
- package/src/components/DataTable/DataTable.tsx +11 -2
- package/src/components/DatePicker/DatePicker.tsx +5 -0
- package/src/components/Dropdown/Dropdown.tsx +14 -1
- package/src/components/EdgePanel/EdgePanel.tsx +15 -2
- package/src/components/Form/Checkbox.tsx +12 -2
- package/src/components/Form/Form.tsx +11 -2
- package/src/components/Form/FormGroup.tsx +11 -2
- package/src/components/Form/Input.tsx +11 -2
- package/src/components/Form/Radio.tsx +11 -2
- package/src/components/Form/Select.tsx +11 -2
- package/src/components/Form/Textarea.tsx +11 -2
- package/src/components/Form/index.ts +7 -7
- package/src/components/Hero/Hero.tsx +13 -4
- package/src/components/Hero/index.ts +2 -2
- package/src/components/Icon/Icon.tsx +12 -3
- package/src/components/List/List.tsx +13 -2
- package/src/components/Messages/Messages.tsx +11 -4
- package/src/components/Messages/index.ts +1 -1
- package/src/components/Modal/Modal.tsx +11 -2
- package/src/components/Navbar/Menu.tsx +12 -1
- package/src/components/Navbar/Nav.tsx +12 -2
- package/src/components/Navbar/Navbar.tsx +14 -2
- package/src/components/Pagination/Pagination.tsx +14 -2
- package/src/components/PhotoViewer/PhotoViewer.tsx +10 -1
- package/src/components/Popover/Popover.tsx +13 -2
- package/src/components/ProductReview/ProductReview.tsx +11 -2
- package/src/components/Progress/Progress.tsx +10 -2
- package/src/components/Rating/Rating.tsx +9 -2
- package/src/components/River/River.tsx +11 -4
- package/src/components/River/index.ts +1 -3
- package/src/components/SectionIntro/SectionIntro.tsx +11 -2
- package/src/components/Spinner/Spinner.tsx +12 -2
- package/src/components/Spinner/index.ts +2 -1
- package/src/components/Steps/Steps.tsx +13 -4
- package/src/components/Tab/Tab.tsx +14 -4
- package/src/components/Testimonial/Testimonial.tsx +13 -4
- package/src/components/Todo/Todo.tsx +11 -2
- package/src/components/Toggle/Toggle.tsx +13 -3
- package/src/components/Tooltip/Tooltip.tsx +14 -3
- package/src/components/Upload/Upload.tsx +12 -3
- package/src/components/index.ts +81 -40
- package/src/index.ts +5 -9
- package/dist/js/13.atomix-0.1.4.react.cjs.js +0 -2
- package/dist/js/13.atomix-0.1.4.react.cjs.js.map +0 -1
- package/dist/js/13.atomix-0.1.4.react.esm.js +0 -2
- package/dist/js/13.atomix-0.1.4.react.esm.js.map +0 -1
- package/dist/js/13.atomix-0.1.4.react.js +0 -2
- package/dist/js/13.atomix-0.1.4.react.js.map +0 -1
- package/dist/js/646.atomix-0.1.4.react.cjs.js +0 -2
- package/dist/js/646.atomix-0.1.4.react.cjs.js.map +0 -1
- package/dist/js/646.atomix-0.1.4.react.esm.js +0 -2
- package/dist/js/646.atomix-0.1.4.react.esm.js.map +0 -1
- package/dist/js/646.atomix-0.1.4.react.js +0 -2
- package/dist/js/646.atomix-0.1.4.react.js.map +0 -1
- package/dist/js/979.atomix-0.1.4.react.cjs.js +0 -2
- package/dist/js/979.atomix-0.1.4.react.cjs.js.map +0 -1
- package/dist/js/979.atomix-0.1.4.react.esm.js +0 -2
- package/dist/js/979.atomix-0.1.4.react.esm.js.map +0 -1
- package/dist/js/979.atomix-0.1.4.react.js +0 -2
- package/dist/js/979.atomix-0.1.4.react.js.map +0 -1
- package/dist/js/989.atomix-0.1.4.react.cjs.js +0 -2
- package/dist/js/989.atomix-0.1.4.react.cjs.js.map +0 -1
- package/dist/js/989.atomix-0.1.4.react.esm.js +0 -2
- package/dist/js/989.atomix-0.1.4.react.esm.js.map +0 -1
- package/dist/js/989.atomix-0.1.4.react.js +0 -2
- package/dist/js/989.atomix-0.1.4.react.js.map +0 -1
- package/dist/js/atomix-0.1.4.react.cjs.js +0 -2
- package/dist/js/atomix-0.1.4.react.cjs.js.map +0 -1
- package/dist/js/atomix-0.1.4.react.esm.js +0 -2
- package/dist/js/atomix-0.1.4.react.esm.js.map +0 -1
- package/dist/js/atomix-0.1.4.react.js +0 -2
- package/dist/js/atomix-0.1.4.react.js.map +0 -1
- package/dist/types/components/Accordion/Accordion.d.ts +0 -17
- package/dist/types/components/Accordion/index.d.ts +0 -2
- package/dist/types/components/Accordion/scripts/accordionInteractions.d.ts +0 -19
- package/dist/types/components/Accordion/scripts/constants.d.ts +0 -24
- package/dist/types/components/Accordion/scripts/index.d.ts +0 -100
- package/dist/types/components/AtomixLogo/AtomixLogo.d.ts +0 -8
- package/dist/types/components/AtomixLogo/index.d.ts +0 -3
- package/dist/types/components/AtomixLogo.d.ts +0 -8
- package/dist/types/components/Avatar/Avatar.d.ts +0 -4
- package/dist/types/components/Avatar/AvatarGroup.d.ts +0 -4
- package/dist/types/components/Avatar/index.d.ts +0 -2
- package/dist/types/components/Avatar/scripts/index.d.ts +0 -105
- package/dist/types/components/Badge/Badge.d.ts +0 -3
- package/dist/types/components/Badge/index.d.ts +0 -3
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +0 -43
- package/dist/types/components/Breadcrumb/index.d.ts +0 -2
- package/dist/types/components/Breadcrumb/scripts/breadcrumb.d.ts +0 -43
- package/dist/types/components/Breadcrumb/scripts/index.d.ts +0 -4
- package/dist/types/components/Breadcrumb/scripts/types.d.ts +0 -59
- package/dist/types/components/Button/Button.d.ts +0 -10
- package/dist/types/components/Button/index.d.ts +0 -5
- package/dist/types/components/Button/scripts/buttonInteractions.d.ts +0 -20
- package/dist/types/components/Button/scripts/index.d.ts +0 -1
- package/dist/types/components/Callout/Callout.d.ts +0 -6
- package/dist/types/components/Callout/index.d.ts +0 -1
- package/dist/types/components/Callout/scripts/CalloutInteractions.d.ts +0 -92
- package/dist/types/components/Callout/scripts/index.d.ts +0 -53
- package/dist/types/components/Card/Card.d.ts +0 -4
- package/dist/types/components/Card/ElevationCard.d.ts +0 -4
- package/dist/types/components/Card/index.d.ts +0 -9
- package/dist/types/components/Card/scripts/cardInteractions.d.ts +0 -37
- package/dist/types/components/Card/scripts/index.d.ts +0 -80
- package/dist/types/components/ColorModeToggle/ColorModeToggle.d.ts +0 -6
- package/dist/types/components/ColorModeToggle/index.d.ts +0 -1
- package/dist/types/components/Countdown/Countdown.d.ts +0 -17
- package/dist/types/components/Countdown/index.d.ts +0 -2
- package/dist/types/components/Countdown/scripts/index.d.ts +0 -71
- package/dist/types/components/DataTable/DataTable.d.ts +0 -17
- package/dist/types/components/DataTable/index.d.ts +0 -2
- package/dist/types/components/DataTable/scripts/index.d.ts +0 -174
- package/dist/types/components/DatePicker/DatePicker.d.ts +0 -8
- package/dist/types/components/DatePicker/index.d.ts +0 -4
- package/dist/types/components/DatePicker/scripts/componentInteractions.d.ts +0 -28
- package/dist/types/components/DatePicker/scripts/index.d.ts +0 -153
- package/dist/types/components/DatePicker/types.d.ts +0 -127
- package/dist/types/components/DatePicker/utils.d.ts +0 -39
- package/dist/types/components/Dropdown/Dropdown.d.ts +0 -18
- package/dist/types/components/Dropdown/index.d.ts +0 -5
- package/dist/types/components/Dropdown/scripts/componentInteractions.d.ts +0 -26
- package/dist/types/components/Dropdown/scripts/index.d.ts +0 -114
- package/dist/types/components/EdgePanel/EdgePanel.d.ts +0 -3
- package/dist/types/components/EdgePanel/index.d.ts +0 -1
- package/dist/types/components/EdgePanel/scripts/edgePanelInteractions.d.ts +0 -35
- package/dist/types/components/EdgePanel/scripts/index.d.ts +0 -126
- package/dist/types/components/Form/Checkbox.d.ts +0 -7
- package/dist/types/components/Form/Form.d.ts +0 -7
- package/dist/types/components/Form/FormGroup.d.ts +0 -7
- package/dist/types/components/Form/Input.d.ts +0 -7
- package/dist/types/components/Form/Radio.d.ts +0 -7
- package/dist/types/components/Form/Select.d.ts +0 -7
- package/dist/types/components/Form/Textarea.d.ts +0 -7
- package/dist/types/components/Form/index.d.ts +0 -7
- package/dist/types/components/Hero/Hero.d.ts +0 -4
- package/dist/types/components/Hero/index.d.ts +0 -5
- package/dist/types/components/Hero/scripts/heroInteractions.d.ts +0 -29
- package/dist/types/components/Hero/scripts/index.d.ts +0 -47
- package/dist/types/components/Icon/Icon.d.ts +0 -36
- package/dist/types/components/Icon/index.d.ts +0 -2
- package/dist/types/components/List/List.d.ts +0 -4
- package/dist/types/components/List/ListGroup.d.ts +0 -4
- package/dist/types/components/List/index.d.ts +0 -2
- package/dist/types/components/Messages/Messages.d.ts +0 -8
- package/dist/types/components/Messages/index.d.ts +0 -2
- package/dist/types/components/Messages/scripts/componentInteractions.d.ts +0 -49
- package/dist/types/components/Messages/scripts/index.d.ts +0 -110
- package/dist/types/components/Modal/Modal.d.ts +0 -7
- package/dist/types/components/Modal/index.d.ts +0 -1
- package/dist/types/components/Modal/scripts/index.d.ts +0 -83
- package/dist/types/components/Modal/scripts/modalInteractions.d.ts +0 -28
- package/dist/types/components/Navbar/MegaMenu.d.ts +0 -5
- package/dist/types/components/Navbar/Menu.d.ts +0 -13
- package/dist/types/components/Navbar/Nav.d.ts +0 -3
- package/dist/types/components/Navbar/NavDropdown.d.ts +0 -3
- package/dist/types/components/Navbar/NavItem.d.ts +0 -3
- package/dist/types/components/Navbar/Navbar.d.ts +0 -3
- package/dist/types/components/Navbar/index.d.ts +0 -6
- package/dist/types/components/Pagination/Pagination.d.ts +0 -6
- package/dist/types/components/Pagination/index.d.ts +0 -1
- package/dist/types/components/Pagination/scripts/index.d.ts +0 -52
- package/dist/types/components/PhotoViewer/PhotoViewer.d.ts +0 -21
- package/dist/types/components/PhotoViewer/PhotoViewerHeader.d.ts +0 -45
- package/dist/types/components/PhotoViewer/PhotoViewerImage.d.ts +0 -51
- package/dist/types/components/PhotoViewer/PhotoViewerInfo.d.ts +0 -21
- package/dist/types/components/PhotoViewer/PhotoViewerNavigation.d.ts +0 -28
- package/dist/types/components/PhotoViewer/PhotoViewerThumbnails.d.ts +0 -21
- package/dist/types/components/PhotoViewer/examples/ImageGallery.d.ts +0 -11
- package/dist/types/components/PhotoViewer/examples/SimpleGallery.d.ts +0 -3
- package/dist/types/components/PhotoViewer/examples/index.d.ts +0 -2
- package/dist/types/components/PhotoViewer/index.d.ts +0 -12
- package/dist/types/components/PhotoViewer/scripts/PhotoViewerInteractions.d.ts +0 -44
- package/dist/types/components/PhotoViewer/scripts/index.d.ts +0 -110
- package/dist/types/components/Popover/Popover.d.ts +0 -10
- package/dist/types/components/Popover/index.d.ts +0 -4
- package/dist/types/components/Popover/scripts/componentInteractions.d.ts +0 -60
- package/dist/types/components/Popover/scripts/index.d.ts +0 -89
- package/dist/types/components/ProductReview/ProductReview.d.ts +0 -41
- package/dist/types/components/ProductReview/index.d.ts +0 -2
- package/dist/types/components/ProductReview/scripts/bundle.d.ts +0 -2
- package/dist/types/components/ProductReview/scripts/componentInteractions.d.ts +0 -43
- package/dist/types/components/ProductReview/scripts/index.d.ts +0 -2
- package/dist/types/components/Progress/Progress.d.ts +0 -3
- package/dist/types/components/Progress/index.d.ts +0 -1
- package/dist/types/components/Progress/scripts/componentInteractions.d.ts +0 -29
- package/dist/types/components/Progress/scripts/index.d.ts +0 -64
- package/dist/types/components/Rating/Rating.d.ts +0 -21
- package/dist/types/components/Rating/index.d.ts +0 -4
- package/dist/types/components/Rating/scripts/bundle.d.ts +0 -3
- package/dist/types/components/Rating/scripts/index.d.ts +0 -74
- package/dist/types/components/Rating/scripts/ratingInteractions.d.ts +0 -28
- package/dist/types/components/River/River.d.ts +0 -8
- package/dist/types/components/River/index.d.ts +0 -4
- package/dist/types/components/River/scripts/index.d.ts +0 -40
- package/dist/types/components/SectionIntro/SectionIntro.d.ts +0 -62
- package/dist/types/components/SectionIntro/index.d.ts +0 -4
- package/dist/types/components/SectionIntro/scripts/componentInteractions.d.ts +0 -13
- package/dist/types/components/SectionIntro/scripts/index.d.ts +0 -36
- package/dist/types/components/Spinner/Spinner.d.ts +0 -3
- package/dist/types/components/Spinner/index.d.ts +0 -1
- package/dist/types/components/Steps/Steps.d.ts +0 -42
- package/dist/types/components/Steps/index.d.ts +0 -4
- package/dist/types/components/Steps/scripts/index.d.ts +0 -58
- package/dist/types/components/Tab/Tab.d.ts +0 -41
- package/dist/types/components/Tab/index.d.ts +0 -2
- package/dist/types/components/Tab/scripts/index.d.ts +0 -61
- package/dist/types/components/Testimonial/Testimonial.d.ts +0 -46
- package/dist/types/components/Testimonial/index.d.ts +0 -4
- package/dist/types/components/Testimonial/scripts/index.d.ts +0 -36
- package/dist/types/components/Todo/Todo.d.ts +0 -4
- package/dist/types/components/Todo/index.d.ts +0 -1
- package/dist/types/components/Todo/scripts/index.d.ts +0 -115
- package/dist/types/components/Todo/scripts/todoInteractions.d.ts +0 -38
- package/dist/types/components/Todo/scripts/types.d.ts +0 -17
- package/dist/types/components/Toggle/Toggle.d.ts +0 -27
- package/dist/types/components/Toggle/index.d.ts +0 -2
- package/dist/types/components/Toggle/scripts/index.d.ts +0 -50
- package/dist/types/components/Toggle/scripts/toggleInteractions.d.ts +0 -23
- package/dist/types/components/Tooltip/Tooltip.d.ts +0 -32
- package/dist/types/components/Tooltip/index.d.ts +0 -3
- package/dist/types/components/Tooltip/scripts/index.d.ts +0 -123
- package/dist/types/components/Tooltip/scripts/tooltipInteractions.d.ts +0 -23
- package/dist/types/components/Upload/Upload.d.ts +0 -64
- package/dist/types/components/Upload/index.d.ts +0 -4
- package/dist/types/components/Upload/scripts/index.d.ts +0 -118
- package/dist/types/components/index.d.ts +0 -37
- package/dist/types/htmlComponentsEntry.d.ts +0 -160
- package/dist/types/index.d.ts +0 -3
- package/dist/types/layouts/Grid/Container.d.ts +0 -38
- package/dist/types/layouts/Grid/Grid.d.ts +0 -37
- package/dist/types/layouts/Grid/GridCol.d.ts +0 -64
- package/dist/types/layouts/Grid/Row.d.ts +0 -38
- package/dist/types/layouts/Grid/index.d.ts +0 -8
- package/dist/types/layouts/MasonryGrid/MasonryGrid.d.ts +0 -71
- package/dist/types/layouts/MasonryGrid/MasonryGridItem.d.ts +0 -24
- package/dist/types/layouts/MasonryGrid/index.d.ts +0 -4
- package/dist/types/lib/composables/index.d.ts +0 -21
- package/dist/types/lib/composables/useAccordion.d.ts +0 -30
- package/dist/types/lib/composables/useBadge.d.ts +0 -10
- package/dist/types/lib/composables/useBreadcrumb.d.ts +0 -13
- package/dist/types/lib/composables/useButton.d.ts +0 -11
- package/dist/types/lib/composables/useCallout.d.ts +0 -11
- package/dist/types/lib/composables/useCard.d.ts +0 -8
- package/dist/types/lib/composables/useCheckbox.d.ts +0 -11
- package/dist/types/lib/composables/useDataTable.d.ts +0 -66
- package/dist/types/lib/composables/useDatePicker.d.ts +0 -91
- package/dist/types/lib/composables/useDropdown.d.ts +0 -26
- package/dist/types/lib/composables/useEdgePanel.d.ts +0 -15
- package/dist/types/lib/composables/useForm.d.ts +0 -12
- package/dist/types/lib/composables/useFormGroup.d.ts +0 -10
- package/dist/types/lib/composables/useHero.d.ts +0 -53
- package/dist/types/lib/composables/useInput.d.ts +0 -12
- package/dist/types/lib/composables/useMessages.d.ts +0 -38
- package/dist/types/lib/composables/useModal.d.ts +0 -40
- package/dist/types/lib/composables/useNavbar.d.ts +0 -59
- package/dist/types/lib/composables/usePagination.d.ts +0 -13
- package/dist/types/lib/composables/usePhotoViewer.d.ts +0 -57
- package/dist/types/lib/composables/usePopover.d.ts +0 -30
- package/dist/types/lib/composables/useProgress.d.ts +0 -38
- package/dist/types/lib/composables/useRadio.d.ts +0 -10
- package/dist/types/lib/composables/useRating.d.ts +0 -52
- package/dist/types/lib/composables/useRiver.d.ts +0 -107
- package/dist/types/lib/composables/useSelect.d.ts +0 -10
- package/dist/types/lib/composables/useSpinner.d.ts +0 -10
- package/dist/types/lib/composables/useTextarea.d.ts +0 -10
- package/dist/types/lib/composables/useTodo.d.ts +0 -19
- package/dist/types/lib/constants/components.d.ts +0 -921
- package/dist/types/lib/constants/index.d.ts +0 -1
- package/dist/types/lib/index.d.ts +0 -4
- package/dist/types/lib/types/components.d.ts +0 -1947
- package/dist/types/lib/types/index.d.ts +0 -2
- package/dist/types/lib/utils/dom.d.ts +0 -26
- package/dist/types/lib/utils/icons.d.ts +0 -20
- package/dist/types/lib/utils/index.d.ts +0 -2
- package/dist/types/lib/utils/useForkRef.d.ts +0 -10
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/atomix-0.1.4.react.esm.js","mappings":"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","sources":["webpack://@shohojdhara/atomix/webpack/runtime/import chunk loading","webpack://@shohojdhara/atomix/./src/components/Steps/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/Testimonial/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/River/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/SectionIntro/scripts/index.ts","webpack://@shohojdhara/atomix/./src/lib/constants/components.ts","webpack://@shohojdhara/atomix/./src/components/Upload/scripts/index.ts","webpack://@shohojdhara/atomix/webpack/bootstrap","webpack://@shohojdhara/atomix/webpack/runtime/compat get default export","webpack://@shohojdhara/atomix/webpack/runtime/define property getters","webpack://@shohojdhara/atomix/webpack/runtime/ensure chunk","webpack://@shohojdhara/atomix/webpack/runtime/get javascript chunk filename","webpack://@shohojdhara/atomix/webpack/runtime/hasOwnProperty shorthand","webpack://@shohojdhara/atomix/webpack/runtime/make namespace object","webpack://@shohojdhara/atomix/external commonjs \"react\"","webpack://@shohojdhara/atomix/./src/lib/composables/useAccordion.ts","webpack://@shohojdhara/atomix/external commonjs \"react/jsx-runtime\"","webpack://@shohojdhara/atomix/./src/components/Accordion/Accordion.tsx","webpack://@shohojdhara/atomix/external commonjs \"phosphor-react\"","webpack://@shohojdhara/atomix/./src/components/Icon/Icon.tsx","webpack://@shohojdhara/atomix/./src/components/Avatar/Avatar.tsx","webpack://@shohojdhara/atomix/./src/components/Avatar/AvatarGroup.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useBadge.ts","webpack://@shohojdhara/atomix/./src/components/Badge/Badge.tsx","webpack://@shohojdhara/atomix/./src/components/Breadcrumb/Breadcrumb.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useButton.ts","webpack://@shohojdhara/atomix/./src/components/Button/Button.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useCallout.ts","webpack://@shohojdhara/atomix/./src/components/Callout/Callout.tsx","webpack://@shohojdhara/atomix/./src/components/Card/Card.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useCard.ts","webpack://@shohojdhara/atomix/./src/components/Card/ElevationCard.tsx","webpack://@shohojdhara/atomix/./src/components/Countdown/Countdown.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useDataTable.ts","webpack://@shohojdhara/atomix/./src/lib/composables/useSpinner.ts","webpack://@shohojdhara/atomix/./src/components/Spinner/Spinner.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/usePagination.ts","webpack://@shohojdhara/atomix/./src/components/Pagination/Pagination.tsx","webpack://@shohojdhara/atomix/./src/components/DataTable/DataTable.tsx","webpack://@shohojdhara/atomix/./src/components/DatePicker/utils.ts","webpack://@shohojdhara/atomix/./src/lib/composables/useDatePicker.ts","webpack://@shohojdhara/atomix/./src/components/DatePicker/DatePicker.tsx","webpack://@shohojdhara/atomix/./src/components/Dropdown/Dropdown.tsx","webpack://@shohojdhara/atomix/./src/components/Dropdown/scripts/index.ts","webpack://@shohojdhara/atomix/./src/lib/composables/useEdgePanel.ts","webpack://@shohojdhara/atomix/./src/components/EdgePanel/EdgePanel.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useForm.ts","webpack://@shohojdhara/atomix/./src/components/Form/Form.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useFormGroup.ts","webpack://@shohojdhara/atomix/./src/components/Form/FormGroup.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useInput.ts","webpack://@shohojdhara/atomix/./src/components/Form/Input.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useSelect.ts","webpack://@shohojdhara/atomix/./src/components/Form/Select.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useCheckbox.ts","webpack://@shohojdhara/atomix/./src/components/Form/Checkbox.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useRadio.ts","webpack://@shohojdhara/atomix/./src/components/Form/Radio.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useTextarea.ts","webpack://@shohojdhara/atomix/./src/components/Form/Textarea.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useHero.ts","webpack://@shohojdhara/atomix/./src/components/Hero/Hero.tsx","webpack://@shohojdhara/atomix/./src/components/List/List.tsx","webpack://@shohojdhara/atomix/external commonjs \"classnames\"","webpack://@shohojdhara/atomix/./src/components/List/ListGroup.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useMessages.ts","webpack://@shohojdhara/atomix/./src/components/Messages/Messages.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useNavbar.ts","webpack://@shohojdhara/atomix/./src/components/Navbar/Navbar.tsx","webpack://@shohojdhara/atomix/./src/components/Navbar/Nav.tsx","webpack://@shohojdhara/atomix/./src/components/Navbar/NavItem.tsx","webpack://@shohojdhara/atomix/./src/components/Navbar/NavDropdown.tsx","webpack://@shohojdhara/atomix/./src/components/Navbar/Menu.tsx","webpack://@shohojdhara/atomix/./src/components/Navbar/MegaMenu.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/usePhotoViewer.ts","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewerHeader.tsx","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewerNavigation.tsx","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewerImage.tsx","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewerThumbnails.tsx","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewerInfo.tsx","webpack://@shohojdhara/atomix/./src/components/PhotoViewer/PhotoViewer.tsx","webpack://@shohojdhara/atomix/external commonjs \"react-dom\"","webpack://@shohojdhara/atomix/./src/lib/composables/usePopover.ts","webpack://@shohojdhara/atomix/./src/components/Popover/Popover.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useRating.ts","webpack://@shohojdhara/atomix/./src/lib/utils/useForkRef.ts","webpack://@shohojdhara/atomix/./src/components/Rating/Rating.tsx","webpack://@shohojdhara/atomix/./src/components/ProductReview/ProductReview.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useProgress.ts","webpack://@shohojdhara/atomix/./src/components/Progress/Progress.tsx","webpack://@shohojdhara/atomix/./src/lib/composables/useRiver.ts","webpack://@shohojdhara/atomix/./src/components/River/River.tsx","webpack://@shohojdhara/atomix/./src/components/SectionIntro/SectionIntro.tsx","webpack://@shohojdhara/atomix/./src/components/Steps/Steps.tsx","webpack://@shohojdhara/atomix/./src/components/Tab/Tab.tsx","webpack://@shohojdhara/atomix/./src/components/Testimonial/Testimonial.tsx","webpack://@shohojdhara/atomix/./src/components/Toggle/Toggle.tsx","webpack://@shohojdhara/atomix/./src/components/Tooltip/scripts/index.ts","webpack://@shohojdhara/atomix/./src/components/Tooltip/Tooltip.tsx","webpack://@shohojdhara/atomix/./src/components/Upload/Upload.tsx","webpack://@shohojdhara/atomix/./src/components/AtomixLogo.tsx","webpack://@shohojdhara/atomix/external commonjs \"uuid\"","webpack://@shohojdhara/atomix/./src/lib/composables/useTodo.ts","webpack://@shohojdhara/atomix/./src/lib/composables/useModal.ts","webpack://@shohojdhara/atomix/./src/lib/composables/useBreadcrumb.ts","webpack://@shohojdhara/atomix/./src/lib/utils/dom.ts","webpack://@shohojdhara/atomix/./src/lib/utils/icons.ts","webpack://@shohojdhara/atomix/./src/index.ts"],"sourcesContent":["// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\nvar installChunk = (data) => {\n\tvar {__webpack_ids__, __webpack_modules__, __webpack_runtime__} = data;\n\t// add \"modules\" to the modules object,\n\t// then flag all \"ids\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in __webpack_modules__) {\n\t\tif(__webpack_require__.o(__webpack_modules__, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = __webpack_modules__[moduleId];\n\t\t}\n\t}\n\tif(__webpack_runtime__) __webpack_runtime__(__webpack_require__);\n\tfor(;i < __webpack_ids__.length; i++) {\n\t\tchunkId = __webpack_ids__[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[__webpack_ids__[i]] = 0;\n\t}\n\n}\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// import() chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[1]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = import(\"../\" + __webpack_require__.u(chunkId)).then(installChunk, (e) => {\n\t\t\t\t\t\tif(installedChunks[chunkId] !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t\tvar promise = Promise.race([promise, new Promise((resolve) => (installedChunkData = installedChunks[chunkId] = [resolve]))])\n\t\t\t\t\tpromises.push(installedChunkData[1] = promise);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no external install chunk\n\n// no on chunks loaded","import { STEPS } from '../../../lib/constants/components';\n\n/**\n * Interface for Steps options\n */\ninterface StepsOptions {\n activeIndex?: number;\n vertical?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Steps instance\n */\ninterface StepsInstance {\n setActive: (index: number) => void;\n next: () => void;\n previous: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Steps component\n */\nconst DEFAULT_OPTIONS: StepsOptions = {\n activeIndex: 0,\n vertical: false\n};\n\n/**\n * Class representing a Steps component\n */\nclass Steps implements StepsInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: StepsOptions;\n private $items: NodeListOf<HTMLElement> | null;\n private activeIndex: number;\n\n /**\n * Creates an instance of Steps\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || STEPS.SELECTORS.STEPS;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as StepsOptions;\n this.$items = null;\n this.activeIndex = this.options.activeIndex || 0;\n this._initialize();\n }\n\n /**\n * Initialize the steps component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n \n // Set vertical mode if specified\n if (this.options.vertical && !this.$element.classList.contains(STEPS.CLASSES.VERTICAL)) {\n this.$element.classList.add(STEPS.CLASSES.VERTICAL);\n }\n \n this.setActive(this.activeIndex);\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n this.$items = this.$element.querySelectorAll<HTMLElement>(STEPS.SELECTORS.ITEM);\n }\n\n /**\n * Sets the active step\n * @param index - The index of the step to make active\n */\n public setActive(index: number): void {\n if (!this.$items || index < 0 || index >= this.$items.length) return;\n \n // Update all items\n this.$items.forEach((item, i) => {\n if (i < index) {\n // Steps before active are completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.add(STEPS.CLASSES.COMPLETED);\n } else if (i === index) {\n // Current step is active but not completed\n item.classList.add(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n } else {\n // Future steps are neither active nor completed\n item.classList.remove(STEPS.CLASSES.ACTIVE);\n item.classList.remove(STEPS.CLASSES.COMPLETED);\n }\n });\n \n this.activeIndex = index;\n }\n\n /**\n * Moves to the next step\n */\n public next(): void {\n if (this.activeIndex < (this.$items?.length || 0) - 1) {\n this.setActive(this.activeIndex + 1);\n }\n }\n\n /**\n * Moves to the previous step\n */\n public previous(): void {\n if (this.activeIndex > 0) {\n this.setActive(this.activeIndex - 1);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for steps component\n }\n}\n\n/**\n * Initialize all steps in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {StepsInstance[]} Array of Steps instances\n */\nexport function initializeSteps(selector = STEPS.SELECTORS.STEPS, options = {}): StepsInstance[] {\n const stepsInstances: StepsInstance[] = [];\n const stepsElements = document.querySelectorAll<HTMLElement>(selector);\n\n if (!stepsElements.length) return stepsInstances;\n\n stepsElements.forEach((element) => {\n try {\n const instance = new Steps(element, options);\n stepsInstances.push(instance);\n } catch (error) {\n console.error('Error initializing steps:', error);\n }\n });\n\n return stepsInstances;\n}\n\nexport default Steps; ","import { TESTIMONIAL } from '../../../lib/constants/components';\n\n/**\n * Interface for Testimonial options\n */\ninterface TestimonialOptions {\n size?: 'sm' | 'lg' | '';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for Testimonial instance\n */\ninterface TestimonialInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the Testimonial component\n */\nconst DEFAULT_OPTIONS: TestimonialOptions = {\n size: '',\n skeleton: false\n};\n\n/**\n * Class representing a Testimonial component\n */\nclass Testimonial implements TestimonialInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: TestimonialOptions;\n\n /**\n * Creates an instance of Testimonial\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TESTIMONIAL.SELECTORS.TESTIMONIAL;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TestimonialOptions;\n this._initialize();\n }\n\n /**\n * Initialize the testimonial component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.SMALL)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(TESTIMONIAL.CLASSES.LARGE)) {\n this.$element.classList.add(TESTIMONIAL.CLASSES.LARGE);\n }\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n // No specific cleanup needed for testimonial component\n }\n}\n\n/**\n * Initialize all testimonials in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {TestimonialInstance[]} Array of Testimonial instances\n */\nexport function initializeTestimonials(selector = TESTIMONIAL.SELECTORS.TESTIMONIAL, options = {}): TestimonialInstance[] {\n const testimonialInstances: TestimonialInstance[] = [];\n const testimonialElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : TESTIMONIAL.SELECTORS.TESTIMONIAL);\n\n if (!testimonialElements.length) return testimonialInstances;\n\n testimonialElements.forEach((element) => {\n try {\n const instance = new Testimonial(element, options);\n testimonialInstances.push(instance);\n } catch (error) {\n console.error('Error initializing testimonial:', error);\n }\n });\n\n return testimonialInstances;\n}\n\nexport default Testimonial; ","import { RIVER } from '../../../lib/constants/components';\n\n/**\n * Interface for River options\n */\ninterface RiverOptions {\n center?: boolean;\n breakout?: boolean;\n reverse?: boolean;\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n contentWidth?: string;\n [key: string]: any;\n}\n\n/**\n * Interface for River instance\n */\ninterface RiverInstance {\n init(): void;\n destroy(): void;\n}\n\n/**\n * Default options for the River component\n */\nconst DEFAULT_OPTIONS: RiverOptions = {\n center: false,\n breakout: false,\n reverse: false,\n showOverlay: true\n};\n\n/**\n * Class representing a River component\n */\nclass River implements RiverInstance {\n private $element: HTMLElement;\n private options: RiverOptions;\n\n /**\n * Creates an instance of River\n * @param element - The river element\n * @param options - Custom options to override defaults\n */\n constructor(element: HTMLElement, options = {}) {\n this.$element = element;\n this.options = { ...DEFAULT_OPTIONS, ...options };\n this.init();\n }\n\n /**\n * Initialize the river component\n */\n init(): void {\n if (this.options.contentWidth) {\n this.$element.style.setProperty(\n RIVER.ATTRIBUTES.CONTENT_WIDTH,\n this.options.contentWidth\n );\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n this.setupBackgroundImage();\n }\n }\n\n /**\n * Setup background image\n */\n private setupBackgroundImage(): void {\n if (!this.$element || !this.options.backgroundImageSrc) return;\n\n // Check if background already exists\n let $bg = this.$element.querySelector(RIVER.SELECTORS.BG);\n \n if (!$bg) {\n // Create background container\n $bg = document.createElement('div');\n $bg.className = RIVER.SELECTORS.BG.replace('.', '');\n \n // Create background image\n const $bgImage = document.createElement('img');\n $bgImage.src = this.options.backgroundImageSrc;\n $bgImage.alt = 'Background';\n $bgImage.className = RIVER.SELECTORS.BG_IMAGE.replace('.', '');\n $bg.appendChild($bgImage);\n \n // Create overlay if needed\n if (this.options.showOverlay) {\n const $overlay = document.createElement('div');\n $overlay.className = RIVER.SELECTORS.OVERLAY.replace('.', '');\n $bg.appendChild($overlay);\n }\n \n // Add background to the element (as first child)\n if (this.$element.firstChild) {\n this.$element.insertBefore($bg, this.$element.firstChild);\n } else {\n this.$element.appendChild($bg);\n }\n }\n }\n\n /**\n * Clean up component\n */\n destroy(): void {\n // Remove any event listeners or cleanup here\n }\n}\n\n/**\n * Initialize all river components in the document\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n * @returns Array of River instances\n */\nexport function initializeRivers(selector = RIVER.SELECTORS.RIVER, options = {}): RiverInstance[] {\n const riverInstances: RiverInstance[] = [];\n const riverElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : RIVER.SELECTORS.RIVER);\n\n if (!riverElements.length) return riverInstances;\n\n riverElements.forEach((element) => {\n try {\n const instance = new River(element, options);\n riverInstances.push(instance);\n } catch (error) {\n console.error('Error initializing river:', error);\n }\n });\n\n return riverInstances;\n}\n\nexport default River; ","import { SECTION_INTRO } from '../../../lib/constants/components';\n\n/**\n * Interface for SectionIntro options\n */\ninterface SectionIntroOptions {\n alignment?: 'left' | 'center' | 'right';\n backgroundImageSrc?: string;\n showOverlay?: boolean;\n size?: 'sm' | 'md' | 'lg';\n skeleton?: boolean;\n [key: string]: any;\n}\n\n/**\n * Interface for SectionIntro instance\n */\ninterface SectionIntroInstance {\n destroy: () => void;\n}\n\n/**\n * Default options for the SectionIntro component\n */\nconst DEFAULT_OPTIONS: SectionIntroOptions = {\n alignment: 'left',\n showOverlay: false,\n size: 'md',\n skeleton: false\n};\n\n/**\n * Class representing a SectionIntro component\n */\nclass SectionIntro implements SectionIntroInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private options: SectionIntroOptions;\n\n /**\n * Creates an instance of SectionIntro\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || SECTION_INTRO.SELECTORS.SECTION_INTRO;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as SectionIntroOptions;\n this._initialize();\n }\n\n /**\n * Initialize the section intro component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Apply alignment classes if needed\n if (this.options.alignment === 'center' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.CENTER)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.CENTER);\n }\n\n // Apply size classes if specified\n if (this.options.size === 'sm' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.SMALL)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.SMALL);\n } else if (this.options.size === 'lg' && !this.$element.classList.contains(SECTION_INTRO.CLASSES.LARGE)) {\n this.$element.classList.add(SECTION_INTRO.CLASSES.LARGE);\n }\n\n // Add background image if provided\n if (this.options.backgroundImageSrc) {\n let bgElement = this.$element.querySelector('.c-sectionintro__bg');\n \n // Create background element if it doesn't exist\n if (!bgElement) {\n bgElement = document.createElement('div');\n bgElement.className = 'c-sectionintro__bg';\n \n const imgElement = document.createElement('img');\n imgElement.className = 'c-sectionintro__bg-image';\n imgElement.src = this.options.backgroundImageSrc;\n imgElement.alt = 'Background';\n \n bgElement.appendChild(imgElement);\n \n // Add overlay if needed\n if (this.options.showOverlay) {\n const overlayElement = document.createElement('div');\n overlayElement.className = 'c-sectionintro__overlay';\n bgElement.appendChild(overlayElement);\n }\n \n // Insert at the beginning of the element\n this.$element.insertBefore(bgElement, this.$element.firstChild);\n }\n }\n }\n\n /**\n * Clean up event listeners and remove added elements\n */\n public destroy(): void {\n if (!this.$element) return;\n \n // Remove alignment classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.CENTER);\n \n // Remove size classes\n this.$element.classList.remove(SECTION_INTRO.CLASSES.SMALL);\n this.$element.classList.remove(SECTION_INTRO.CLASSES.LARGE);\n \n // Remove background if it was dynamically added\n if (this.options.backgroundImageSrc) {\n const bgElement = this.$element.querySelector('.c-sectionintro__bg');\n if (bgElement) {\n this.$element.removeChild(bgElement);\n }\n }\n }\n}\n\n/**\n * Initialize all section intros in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {SectionIntroInstance[]} Array of SectionIntro instances\n */\nexport function initializeSectionIntros(selector = SECTION_INTRO.SELECTORS.SECTION_INTRO, options = {}): SectionIntroInstance[] {\n const sectionIntroInstances: SectionIntroInstance[] = [];\n const sectionIntroElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : SECTION_INTRO.SELECTORS.SECTION_INTRO);\n\n if (!sectionIntroElements.length) return sectionIntroInstances;\n\n sectionIntroElements.forEach((element) => {\n try {\n const instance = new SectionIntro(element, options);\n sectionIntroInstances.push(instance);\n } catch (error) {\n console.error('Error initializing section intro:', error);\n }\n });\n\n return sectionIntroInstances;\n}\n\nexport default SectionIntro;\n","import { ThemeColor, Size } from '../types/components';\n\n/**\n * Default theme colors for components\n */\nexport const THEME_COLORS: ThemeColor[] = [\n 'primary',\n 'secondary',\n 'success',\n 'info',\n 'warning',\n 'error',\n 'light',\n 'dark'\n];\n\n/**\n * Default sizes for components\n */\nexport const SIZES: Size[] = ['sm', 'md', 'lg'];\n\n/**\n * CSS class prefixes\n */\nexport const CLASS_PREFIX = {\n COMPONENT: 'c-',\n UTILITY: 'u-',\n LAYOUT: 'l-',\n OBJECT: 'o-',\n};\n\n/**\n * Button-specific constants\n */\nexport const BUTTON = {\n BASE_CLASS: 'c-btn',\n ICON_CLASS: 'c-btn__icon',\n VARIANT_PREFIX: 'c-btn--',\n};\n\n/**\n * Callout-specific constants\n */\nexport const CALLOUT = {\n BASE_CLASS: 'c-callout',\n CONTENT_CLASS: 'c-callout__content',\n ICON_CLASS: 'c-callout__icon',\n MESSAGE_CLASS: 'c-callout__message',\n TITLE_CLASS: 'c-callout__title',\n TEXT_CLASS: 'c-callout__text',\n ACTIONS_CLASS: 'c-callout__actions',\n CLOSE_BTN_CLASS: 'c-callout__close-btn',\n VARIANT_PREFIX: 'c-callout--',\n CLASSES: {\n ONELINE: 'c-callout--oneline',\n TOAST: 'c-callout--toast',\n HIDE: 'is-hide'\n }\n};\n\n/**\n * Accordion-specific constants\n */\nexport const ACCORDION = {\n SELECTORS: {\n ACCORDION: '.c-accordion',\n HEADER: '.c-accordion__header',\n PANEL: '.c-accordion__panel',\n BODY: '.c-accordion__body'\n },\n CLASSES: {\n IS_OPEN: 'is-open',\n IS_ANIMATING: 'is-animating',\n IS_DISABLED: 'is-disabled'\n },\n ATTRIBUTES: {\n ARIA_EXPANDED: 'aria-expanded',\n ARIA_CONTROLS: 'aria-controls',\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role'\n },\n CSS_VARS: {\n PANEL_HEIGHT: '--panel-height'\n }\n};\n\n/**\n * Badge-specific constants\n */\nexport const BADGE = {\n BASE_CLASS: 'c-badge',\n ICON_CLASS: 'c-badge__icon',\n VARIANT_PREFIX: 'c-badge--',\n SIZE_PREFIX: 'c-badge--'\n};\n\n/**\n * List-specific constants\n */\nexport const LIST = {\n BASE_CLASS: 'c-list',\n ITEM_CLASS: 'c-list__item',\n VARIANT_PREFIX: 'c-list--',\n SIZE_PREFIX: 'c-list--',\n CLASSES: {\n ORDERED: 'c-list--ordered',\n INLINE: 'c-list--inline'\n }\n};\n\n/**\n * List Group-specific constants\n */\nexport const LIST_GROUP = {\n BASE_CLASS: 'c-list-group',\n ITEM_CLASS: 'c-list-group__item',\n VARIANT_PREFIX: 'c-list-group--',\n SIZE_PREFIX: 'c-list-group--',\n};\n\n/**\n * Breadcrumb-specific constants\n */\nexport const BREADCRUMB = {\n SELECTORS: {\n BREADCRUMB: '.c-breadcrumb',\n ITEM: '.c-breadcrumb__item',\n LINK: '.c-breadcrumb__link'\n },\n CLASSES: {\n BASE: 'c-breadcrumb',\n ITEM: 'c-breadcrumb__item',\n LINK: 'c-breadcrumb__link',\n ACTIVE: 'is-active'\n },\n DEFAULTS: {\n DIVIDER: '›'\n }\n};\n\n/**\n * Countdown-specific constants\n */\nexport const COUNTDOWN = {\n SELECTORS: {\n COUNTDOWN: '.c-countdown',\n TIME: '.c-countdown__time',\n TIME_COUNT: '.c-countdown__time-count',\n TIME_LABEL: '.c-countdown__time-label',\n SEPARATOR: '.c-countdown__separator'\n },\n CLASSES: {\n BASE: 'c-countdown',\n FOCUSED: 'c-countdown--focused'\n },\n DEFAULTS: {\n SEPARATOR: ':',\n SHOW: ['days', 'hours', 'minutes', 'seconds']\n }\n};\n\n/**\n * Hero-specific constants\n */\nexport const HERO = {\n SELECTORS: {\n HERO: '.c-hero',\n CONTAINER: '.c-hero__container',\n GRID: '.c-hero__grid',\n CONTENT: '.c-hero__content',\n SUBTITLE: '.c-hero__subtitle',\n TITLE: '.c-hero__title',\n TEXT: '.c-hero__text',\n ACTIONS: '.c-hero__actions',\n IMAGE: '.c-hero__image',\n BG: '.c-hero__bg',\n BG_IMAGE: '.c-hero__bg-image',\n OVERLAY: '.c-hero__overlay',\n IMAGE_WRAPPER: '.c-hero__image-wrapper'\n },\n CLASSES: {\n CENTER: 'c-hero--center',\n RIGHT: 'c-hero--right',\n LEFT: 'c-hero--left',\n FULL_VH: 'c-hero--full-vh'\n }\n};\n\n/**\n * Tooltip-specific constants\n */\nexport const TOOLTIP = {\n SELECTORS: {\n TOOLTIP: '.js-atomix-tooltip',\n TRIGGER: '.js-atomix-tooltip-trigger',\n CONTENT: '.js-atomix-tooltip-content',\n ARROW: '.c-tooltip__arrow'\n },\n CLASSES: {\n IS_ACTIVE: 'is-active',\n TOP: 'c-tooltip--top',\n BOTTOM: 'c-tooltip--bottom',\n LEFT: 'c-tooltip--left',\n RIGHT: 'c-tooltip--right',\n TOP_LEFT: 'c-tooltip--top-left',\n TOP_RIGHT: 'c-tooltip--top-right',\n BOTTOM_LEFT: 'c-tooltip--bottom-left',\n BOTTOM_RIGHT: 'c-tooltip--bottom-right'\n },\n ATTRIBUTES: {\n POSITION: 'data-tooltip-position',\n TRIGGER: 'data-tooltip-trigger',\n CONTENT_ID: 'data-tooltip-id'\n },\n DEFAULTS: {\n TRIGGER: 'hover',\n POSITION: 'top',\n OFFSET: 10,\n DELAY: 200\n }\n};\n\n/**\n * Popover-specific constants\n */\nexport const POPOVER = {\n SELECTORS: {\n POPOVER: '.js-atomix-popover',\n TRIGGER: '.js-atomix-popover-trigger',\n CONTENT: '.js-atomix-popover-content',\n CONTENT_INNER: '.c-popover__content-inner',\n ARROW: '.c-popover__arrow'\n },\n CLASSES: {\n IS_OPEN: 'is-open',\n TOP: 'c-popover--top',\n BOTTOM: 'c-popover--bottom',\n LEFT: 'c-popover--left',\n RIGHT: 'c-popover--right',\n AUTO: 'c-popover--auto'\n },\n ATTRIBUTES: {\n POSITION: 'data-popover-position',\n TRIGGER: 'data-popover-trigger',\n CONTENT_ID: 'data-popover-id'\n },\n DEFAULTS: {\n TRIGGER: 'click',\n POSITION: 'top',\n OFFSET: 12,\n DELAY: 0\n }\n};\n\n/**\n * Toggle-specific constants\n */\nexport const TOGGLE = {\n SELECTORS: {\n TOGGLE: '.c-toggle'\n },\n CLASSES: {\n IS_ON: 'is-on'\n }\n};\n\n/**\n * Tab-specific constants\n */\nexport const TAB = {\n SELECTORS: {\n TAB: '.js-atomix-tab',\n NAV_ITEMS: '.c-tabs__nav-item',\n NAV_BTN: '.c-tabs__nav-btn',\n PANELS: '.c-tabs__panel',\n PANEL_BODIES: '.c-tabs__panel-body'\n },\n CLASSES: {\n ACTIVE: 'is-active'\n },\n DEFAULTS: {\n ACTIVE_INDEX: 0\n }\n};\n\n/**\n * Steps-specific constants\n */\nexport const STEPS = {\n SELECTORS: {\n STEPS: '.c-steps',\n ITEM: '.c-steps__item',\n LINE: '.c-steps__line',\n CONTENT: '.c-steps__content',\n NUMBER: '.c-steps__number',\n TEXT: '.c-steps__text'\n },\n CLASSES: {\n ACTIVE: 'is-active',\n VERTICAL: 'c-steps--vertical',\n COMPLETED: 'is-completed'\n }\n};\n\n/**\n * Testimonial-specific constants\n */\nexport const TESTIMONIAL = {\n SELECTORS: {\n TESTIMONIAL: '.c-testimonial',\n QUOTE: '.c-testimonial__quote',\n AUTHOR: '.c-testimonial__author',\n AUTHOR_AVATAR: '.c-testimonial__author-avatar',\n AUTHOR_INFO: '.c-testimonial__info',\n AUTHOR_NAME: '.c-testimonial__author-name',\n AUTHOR_ROLE: '.c-testimonial__author-role'\n },\n CLASSES: {\n SMALL: 'c-testimonial--sm',\n LARGE: 'c-testimonial--lg'\n }\n};\n\n/**\n * Spinner-specific constants\n */\nexport const SPINNER = {\n SELECTORS: {\n SPINNER: '.c-spinner'\n },\n CLASSES: {\n PRIMARY: 'c-spinner--primary',\n SECONDARY: 'c-spinner--secondary',\n SUCCESS: 'c-spinner--success',\n INFO: 'c-spinner--info',\n WARNING: 'c-spinner--warning',\n DANGER: 'c-spinner--danger',\n LIGHT: 'c-spinner--light',\n DARK: 'c-spinner--dark',\n SMALL: 'c-spinner--sm',\n LARGE: 'c-spinner--lg'\n },\n VISUALLY_HIDDEN: 'u-visually-hidden'\n};\n\n/**\n * SectionIntro-specific constants\n */\nexport const SECTION_INTRO = {\n SELECTORS: {\n SECTION_INTRO: '.c-sectionintro',\n LABEL: '.c-sectionintro__label',\n TITLE: '.c-sectionintro__title',\n TEXT: '.c-sectionintro__text',\n ACTIONS: '.c-sectionintro__actions'\n },\n CLASSES: {\n CENTER: 'c-sectionintro--center',\n LARGE: 'c-sectionintro--lg',\n SMALL: 'c-sectionintro--sm'\n }\n};\n\n/**\n * River-specific constants\n */\nexport const RIVER = {\n SELECTORS: {\n RIVER: '.c-river',\n CONTAINER: '.c-river__container',\n ROW: '.c-river__row',\n CONTENT: '.c-river__content',\n CONTENT_COL: '.c-river__content-col',\n CONTENT_COL_TITLE: '.c-river__content-col--title',\n CONTENT_COL_TEXT: '.c-river__content-col--text',\n TITLE: '.c-river__title',\n TEXT: '.c-river__text',\n ACTIONS: '.c-river__actions',\n VISUAL: '.c-river__visual',\n IMAGE_WRAPPER: '.c-river__image-wrapper',\n IMAGE: '.c-river__image',\n BG: '.c-river__bg',\n BG_IMAGE: '.c-river__bg-image',\n OVERLAY: '.c-river__overlay'\n },\n CLASSES: {\n CENTER: 'c-river--center',\n BREAKOUT: 'c-river--breakout',\n REVERSE: 'c-river--reverse'\n },\n ATTRIBUTES: {\n CONTENT_WIDTH: '--river-content-width'\n }\n};\n\n/**\n * Upload-specific constants\n */\nexport const UPLOAD = {\n SELECTORS: {\n UPLOAD: '.c-upload',\n INNER: '.c-upload__inner',\n ICON: '.c-upload__icon',\n TITLE: '.c-upload__title',\n TEXT: '.c-upload__text',\n BUTTON: '.c-upload__btn',\n HELPER_TEXT: '.c-upload__helper-text',\n LOADER: '.c-upload__loader',\n LOADER_STATUS: '.c-upload__loader-status',\n LOADER_TITLE: '.c-upload__loader-title',\n LOADER_PROGRESS: '.c-upload__loader-progress',\n LOADER_PAR: '.c-upload__loader-par',\n LOADER_TIME: '.c-upload__loader-time',\n LOADER_CONTROL: '.c-upload__loader-control',\n LOADER_BAR: '.c-upload__loader-bar',\n LOADER_CLOSE: '.c-upload__loader-close'\n },\n CLASSES: {\n DISABLED: 'c-upload--disabled',\n ERROR: 'c-upload--error',\n SUCCESS: 'c-upload--success',\n LOADING: 'c-upload--loading',\n DRAGGING: 'c-upload--dragging'\n },\n ATTRIBUTES: {\n PERCENTAGE: '--upload-loader-percentage'\n }\n};\n\n/**\n * Navbar-specific constants\n */\nexport const NAVBAR = {\n SELECTORS: {\n NAVBAR: '.c-navbar',\n CONTAINER: '.c-navbar__container',\n BRAND: '.c-navbar__brand',\n COLLAPSE: '.c-navbar__collapse',\n TOGGLER: '.c-navbar__toggler'\n },\n CLASSES: {\n FIXED: 'c-navbar--fixed',\n FIXED_BOTTOM: 'c-navbar--fixed-bottom',\n EXPANDED: 'is-expanded'\n }\n};\n\n/**\n * Nav-specific constants\n */\nexport const NAV = {\n SELECTORS: {\n NAV: '.c-nav',\n ITEM: '.c-nav__item',\n LINK: '.c-nav__link',\n DROPDOWN: '.c-nav__item--dropdown',\n DROPDOWN_MENU: '.c-nav__dropdown-menu',\n MEGA_MENU: '.c-nav__mega-menu',\n ICON: '.c-nav__icon'\n },\n CLASSES: {\n END: 'c-nav--end',\n CENTER: 'c-nav--center',\n ACTIVE: 'is-active',\n DISABLED: 'is-disabled'\n }\n};\n\n/**\n * EdgePanel-specific constants\n */\n/**\n * Rating-specific constants\n */\nexport const RATING = {\n SELECTORS: {\n RATING: '.c-rating',\n STAR: '.c-rating__star',\n STAR_FULL: '.c-rating__star-full',\n STAR_HALF: '.c-rating__star-half'\n },\n CLASSES: {\n FULL: 'c-rating__star--full',\n HALF: 'c-rating__star--half',\n SMALL: 'c-rating--sm',\n LARGE: 'c-rating--lg'\n },\n ATTRIBUTES: {\n READONLY: 'data-readonly',\n VALUE: 'data-value'\n }\n};\n\nexport const EDGE_PANEL = {\n SELECTORS: {\n PANEL: '.c-edge-panel',\n BACKDROP: '.c-edge-panel__backdrop',\n CONTAINER: '.c-edge-panel__container',\n HEADER: '.c-edge-panel__header',\n BODY: '.c-edge-panel__body',\n CLOSE: '.c-edge-panel__close'\n },\n CLASSES: {\n BASE: 'c-edge-panel',\n START: 'c-edge-panel--start',\n END: 'c-edge-panel--end',\n TOP: 'c-edge-panel--top',\n BOTTOM: 'c-edge-panel--bottom',\n IS_OPEN: 'is-open'\n },\n TRANSFORM_VALUES: {\n start: 'translateX(-100%)',\n end: 'translateX(100%)',\n top: 'translateY(-100%)',\n bottom: 'translateY(100%)'\n },\n ANIMATION_DURATION: 300\n};\n\n/**\n * DataTable-specific constants\n */\nexport const DATA_TABLE_CLASSES = {\n base: 'c-data-table',\n container: 'c-data-table-container',\n tableWrapper: 'c-data-table-wrapper',\n header: 'c-data-table__header',\n headerCell: 'c-data-table__header-cell',\n headerContent: 'c-data-table__header-content',\n sortable: 'c-data-table__header-cell--sortable',\n sortIcon: 'c-data-table__sort-icon',\n row: 'c-data-table__row',\n cell: 'c-data-table__cell',\n loadingCell: 'c-data-table__loading-cell',\n loadingIndicator: 'c-data-table__loading-indicator',\n emptyCell: 'c-data-table__empty-cell',\n toolbar: 'c-data-table-toolbar',\n search: 'c-data-table-search',\n searchInput: 'c-data-table-search__input',\n pagination: 'c-data-table__pagination-container',\n striped: 'c-data-table--striped',\n bordered: 'c-data-table--bordered',\n dense: 'c-data-table--dense',\n loading: 'c-data-table--loading',\n open: 'is-open',\n};\n\n/**\n * DataTable-specific selectors\n */\nexport const DATA_TABLE_SELECTORS = {\n TABLE: '.c-data-table',\n HEADER: '.c-data-table__header',\n HEADER_CELL: '.c-data-table__header-cell',\n ROW: '.c-data-table__row',\n CELL: '.c-data-table__cell',\n PAGINATION: '.c-data-table__pagination',\n PAGINATION_BUTTON: '.c-data-table__pagination-button',\n SEARCH_INPUT: '.c-data-table__search-input',\n};\n\n/**\n * Pagination-specific constants\n */\nexport const PAGINATION_DEFAULTS = {\n currentPage: 1,\n totalPages: 1,\n siblingCount: 1,\n showFirstLastButtons: true,\n showPrevNextButtons: true,\n size: 'md' as Size,\n};\n\n/**\n * Todo-specific constants\n */\nexport const TODO = {\n SELECTORS: {\n TODO: '.c-todo',\n TITLE: '.c-todo__title',\n LIST: '.c-todo__list',\n ITEM: '.c-todo__item',\n ITEM_CONTENT: '.c-todo__item-content',\n ITEM_TEXT: '.c-todo__item-text',\n ITEM_ACTIONS: '.c-todo__item-actions',\n CHECKBOX: '.c-todo__checkbox',\n DELETE_BUTTON: '.c-todo__delete-btn',\n FORM: '.c-todo__form',\n INPUT: '.c-todo__input',\n ADD_BUTTON: '.c-todo__add-btn'\n },\n CLASSES: {\n BASE: 'c-todo',\n ITEM: 'c-todo__item',\n COMPLETED: 'c-todo__item--completed',\n SMALL: 'c-todo--sm',\n LARGE: 'c-todo--lg'\n }\n};\n\n/**\n * Form-specific constants\n */\nexport const FORM = {\n SELECTORS: {\n FORM: '.c-form',\n GROUP: '.c-form-group',\n LABEL: '.c-form-group__label',\n HELPER: '.c-form-group__helper',\n FIELD: '.c-form-group__field',\n REQUIRED: '.c-form-group__required'\n },\n CLASSES: {\n BASE: 'c-form',\n DISABLED: 'c-form--disabled'\n }\n};\n\n/**\n * Form Group-specific constants\n */\nexport const FORM_GROUP = {\n SELECTORS: {\n GROUP: '.c-form-group',\n LABEL: '.c-form-group__label',\n FIELD: '.c-form-group__field',\n HELPER: '.c-form-group__helper',\n REQUIRED: '.c-form-group__required'\n },\n CLASSES: {\n BASE: 'c-form-group',\n SMALL: 'c-form-group--sm',\n LARGE: 'c-form-group--lg',\n INVALID: 'c-form-group--invalid',\n VALID: 'c-form-group--valid',\n DISABLED: 'c-form-group--disabled'\n }\n};\n\n/**\n * Input-specific constants\n */\nexport const INPUT = {\n SELECTORS: {\n INPUT: '.c-input'\n },\n CLASSES: {\n BASE: 'c-input',\n SMALL: 'c-input--sm',\n LARGE: 'c-input--lg',\n INVALID: 'is-invalid',\n VALID: 'is-valid',\n DISABLED: 'is-disabled'\n }\n};\n\n/**\n * Radio-specific constants\n */\nexport const RADIO = {\n SELECTORS: {\n RADIO: '.c-radio',\n INPUT: '.c-radio__input',\n LABEL: '.c-radio__label'\n },\n CLASSES: {\n BASE: 'c-radio',\n INVALID: 'is-error',\n VALID: 'is-valid',\n DISABLED: 'is-disabled'\n }\n};\n\n/**\n * Checkbox-specific constants - extend existing checkbox constants\n */\n// Update existing CHECKBOX constants if needed\n\n/**\n * Card-specific constants\n */\nexport const CARD = {\n SELECTORS: {\n CARD: '.c-card',\n HEADER: '.c-card__header',\n BODY: '.c-card__body',\n IMAGE: '.c-card__image',\n TITLE: '.c-card__title',\n TEXT: '.c-card__text',\n ACTIONS: '.c-card__actions',\n ICON: '.c-card__icon',\n FOOTER: '.c-card__footer'\n },\n CLASSES: {\n BASE: 'c-card',\n ROW: 'c-card--row',\n FLAT: 'c-card--flat',\n ACTIVE: 'is-active',\n FLIPPED: 'is-flipped',\n FOCUSED: 'is-focused',\n CLICKABLE: 'is-clickable'\n },\n DEFAULTS: {\n HOVER: true\n }\n};\n\n/**\n * Select-specific constants\n */\nexport const SELECT = {\n SELECTORS: {\n SELECT: '.c-select',\n SELECTED: '.c-select__selected',\n SELECT_BODY: '.c-select__body',\n SELECT_PANEL: '.c-select__panel',\n SELECT_ITEMS: '.c-select__items',\n SELECT_ITEM: '.c-select__item',\n ITEM_LABEL: '.c-select__item-label',\n ITEM_INPUT: '.c-select__item-input',\n OPTION: 'option'\n },\n CLASSES: {\n BASE: 'c-select',\n SELECTED: 'c-select__selected',\n SELECT_BODY: 'c-select__body',\n SELECT_PANEL: 'c-select__panel',\n SELECT_ITEMS: 'c-select__items',\n SELECT_ITEM: 'c-select__item',\n TOGGLE_ICON: 'c-select__toggle-icon',\n ICON_CARET: 'icon-atomix-caret-down',\n SMALL: 'c-select--sm',\n LARGE: 'c-select--lg',\n INVALID: 'is-invalid',\n VALID: 'is-valid',\n DISABLED: 'is-disabled',\n IS_OPEN: 'is-open'\n }\n};\n\n/**\n * Textarea-specific constants\n */\nexport const TEXTAREA = {\n SELECTORS: {\n TEXTAREA: '.c-textarea'\n },\n CLASSES: {\n BASE: 'c-input c-input--textarea',\n SMALL: 'c-input--sm',\n LARGE: 'c-input--lg',\n INVALID: 'is-invalid',\n VALID: 'is-valid',\n DISABLED: 'is-disabled'\n }\n};\n\n/**\n * Avatar-specific constants\n */\nexport const AVATAR = {\n SELECTORS: {\n AVATAR: '.c-avatar',\n IMAGE: '.c-avatar__image',\n INITIALS: '.c-avatar__initials',\n ICON: '.c-avatar__icon'\n },\n CLASSES: {\n BASE: 'c-avatar',\n XS: 'c-avatar--xs',\n SM: 'c-avatar--sm',\n MD: 'c-avatar--md',\n LG: 'c-avatar--lg',\n XL: 'c-avatar--xl',\n CIRCLE: 'c-avatar--circle'\n }\n};\n\n/**\n * Avatar Group-specific constants\n */\nexport const AVATAR_GROUP = {\n SELECTORS: {\n GROUP: '.c-avatar-group',\n MORE: '.c-avatar-group__more'\n },\n CLASSES: {\n BASE: 'c-avatar-group',\n STACKED: 'c-avatar-group--stacked',\n MORE: 'c-avatar-group__more'\n }\n};\n\n/**\n * Modal component constants\n */\nexport const MODAL = {\n SELECTORS: {\n MODAL: '.c-modal',\n OPEN_BUTTON: '.js-modal-open',\n CLOSE_BUTTONS: '.js-modal-close',\n DIALOG: '.c-modal__dialog',\n BACKDROP: '.c-modal__backdrop'\n },\n CLASSES: {\n IS_OPEN: 'is-open'\n },\n DEFAULT_OPTIONS: {\n openELm: '.js-modal-open',\n closeELms: '.js-modal-close',\n modalDialogELm: '.c-modal__dialog',\n backdropELm: '.c-modal__backdrop',\n backdrop: true,\n keyboard: true\n }\n};\n\n/**\n * Messages-specific constants\n */\nexport const MESSAGES = {\n SELECTORS: {\n MESSAGES: '.c-messages',\n BODY: '.c-messages__body',\n CONTENT: '.c-messages__content',\n AVATAR: '.c-messages__avatar',\n ITEMS: '.c-messages__items',\n TEXT: '.c-messages__text',\n FILE: '.c-messages__file',\n IMAGE: '.c-messages__image',\n FORM: '.c-messages__form',\n INPUT: '.c-messages__input',\n },\n CLASSES: {\n BASE: 'c-messages',\n BODY: 'c-messages__body',\n CONTENT: 'c-messages__content',\n CONTENT_SELF: 'c-messages__content--self',\n AVATAR: 'c-messages__avatar',\n ITEMS: 'c-messages__items',\n NAME: 'c-messages__name',\n TEXT: 'c-messages__text',\n TIME: 'c-messages__time',\n FILE: 'c-messages__file',\n FILE_ICON: 'c-messages__file-icon',\n FILE_DETAILS: 'c-messages__file-details',\n FILE_NAME: 'c-messages__file-name',\n FILE_SIZE: 'c-messages__file-size',\n IMAGE: 'c-messages__image',\n FORM: 'c-messages__form',\n INPUT_GROUP: 'c-messages__input-group',\n INPUT: 'c-messages__input',\n OPTIONS: 'c-messages__options',\n OPTION: 'c-messages__option c-btn',\n OPTION_ICON: 'c-messages__option-icon',\n SUBMIT: 'c-messages__submit',\n },\n};\n\n/**\n * Dropdown-specific constants\n */\nexport const DROPDOWN = {\n SELECTORS: {\n DROPDOWN: '.c-dropdown',\n TOGGLE: '.c-dropdown__toggle',\n MENU: '.c-dropdown__menu',\n MENU_WRAPPER: '.c-dropdown__menu-wrapper',\n MENU_INNER: '.c-dropdown__menu-inner',\n MENU_ITEM: '.c-dropdown__menu-item',\n DIVIDER: '.c-dropdown__divider',\n HEADER: '.c-dropdown__header'\n },\n CLASSES: {\n IS_OPEN: 'is-open',\n IS_ACTIVE: 'is-active',\n IS_DISABLED: 'is-disabled'\n },\n DEFAULTS: {\n PLACEMENT: 'bottom-start',\n TRIGGER: 'click',\n OFFSET: 4,\n MIN_WIDTH: 180,\n ANIMATION_DURATION: '0.25s',\n ANIMATION_TIMING: 'cubic-bezier(0.16, 1, 0.3, 1)'\n }\n};\n\n/**\n * DatePicker-specific constants\n */\n/**\n * Progress-specific constants\n */\nexport const PROGRESS = {\n SELECTORS: {\n PROGRESS: '.c-progress',\n BAR: '.c-progress__bar',\n },\n CLASSES: {\n BASE: 'c-progress',\n BAR: 'c-progress__bar',\n SM: 'c-progress--sm',\n MD: 'c-progress--md',\n LG: 'c-progress--lg',\n },\n ATTRIBUTES: {\n ARIA_VALUEMIN: 'aria-valuemin',\n ARIA_VALUEMAX: 'aria-valuemax',\n ARIA_VALUENOW: 'aria-valuenow',\n ARIA_LABEL: 'aria-label',\n },\n CSS_VARS: {\n PERCENTAGE: '--atomix-progress-percentage',\n },\n DEFAULTS: {\n ARIA_LABEL: 'Progress bar',\n }\n};\n\nexport const DATEPICKER = {\n SELECTORS: {\n DATEPICKER: '.c-datepicker',\n INPUT: '.c-datepicker__input',\n CALENDAR: '.c-datepicker__calendar',\n DAY: '.c-datepicker__day',\n MONTH: '.c-datepicker__month',\n YEAR: '.c-datepicker__year',\n HEADER: '.c-datepicker__header',\n BODY: '.c-datepicker__body',\n FOOTER: '.c-datepicker__footer',\n WEEKDAYS: '.c-datepicker__weekdays',\n TODAY_BUTTON: '.c-datepicker__today-button',\n CLEAR_BUTTON: '.c-datepicker__clear-button',\n CLOSE_BUTTON: '.c-datepicker__close-button',\n NAV_BUTTON: '.c-datepicker__nav-button',\n VIEW_SWITCH: '.c-datepicker__view-switch'\n },\n CLASSES: {\n IS_OPEN: 'is-open',\n IS_DISABLED: 'is-disabled',\n IS_SELECTED: 'is-selected',\n IS_TODAY: 'is-today',\n INLINE: 'c-datepicker--inline'\n },\n ATTRIBUTES: {\n FORMAT: 'data-format',\n MIN_DATE: 'data-min-date',\n MAX_DATE: 'data-max-date',\n INLINE: 'data-inline',\n PLACEMENT: 'data-placement',\n CLEARABLE: 'data-clearable',\n SHOW_TODAY: 'data-show-today-button',\n SHOW_WEEK_NUMBERS: 'data-show-week-numbers'\n },\n DEFAULTS: {\n FORMAT: 'MM/dd/yyyy',\n PLACEMENT: 'bottom-start',\n CLEARABLE: true,\n SHOW_TODAY_BUTTON: true,\n SHOW_WEEK_NUMBERS: false,\n INLINE: false\n }\n};\n\n/**\n * PhotoViewer component constants\n */\nexport const PHOTOVIEWER = {\n SELECTOR: '.c-photo-viewer',\n CLASS: 'c-photo-viewer',\n DEFAULTS: {\n startIndex: 0,\n zoomLevel: 1,\n fullscreen: false,\n },\n};\n","import { UPLOAD } from '../../../lib/constants/components';\n\n/**\n * Interface for Upload options\n */\ninterface UploadOptions {\n disabled?: boolean;\n maxSizeInMB?: number;\n acceptedFileTypes?: string[];\n multiple?: boolean;\n onFileSelect?: (files: File[]) => void;\n onFileUpload?: (file: File, progress: number) => void;\n onFileUploadComplete?: (file: File) => void;\n onFileUploadError?: (file: File, error: string) => void;\n [key: string]: any;\n}\n\n/**\n * Interface for Upload instance\n */\ninterface UploadInstance {\n setStatus: (status: 'idle' | 'loading' | 'success' | 'error', message?: string) => void;\n setProgress: (percentage: number, timeLeft?: string) => void;\n setFile: (file: File | null) => void;\n disable: () => void;\n enable: () => void;\n destroy: () => void;\n}\n\n/**\n * Default options for the Upload component\n */\nconst DEFAULT_OPTIONS: UploadOptions = {\n disabled: false,\n maxSizeInMB: 5,\n acceptedFileTypes: ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple: false\n};\n\n/**\n * Class representing an Upload component\n */\nclass Upload implements UploadInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $input: HTMLInputElement | null;\n private $button: HTMLButtonElement | null;\n private $loader: HTMLElement | null;\n private $loaderTitle: HTMLElement | null;\n private $loaderProgress: HTMLElement | null;\n private $loaderClose: HTMLButtonElement | null;\n private options: UploadOptions;\n private currentFile: File | null;\n private dragCounter: number;\n\n /**\n * Creates an instance of Upload\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || UPLOAD.SELECTORS.UPLOAD;\n this.$element =\n typeof selector === 'string'\n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as UploadOptions;\n this.$input = null;\n this.$button = null;\n this.$loader = null;\n this.$loaderTitle = null;\n this.$loaderProgress = null;\n this.$loaderClose = null;\n this.currentFile = null;\n this.dragCounter = 0;\n this._initialize();\n }\n\n /**\n * Initialize the upload component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n // Create a hidden file input element\n this._createHiddenInput();\n\n // Get references to elements\n this.$button = this.$element.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.BUTTON);\n this.$loader = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER);\n this.$loaderTitle = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TITLE);\n this.$loaderProgress = this.$element?.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PROGRESS);\n this.$loaderClose = this.$element?.querySelector<HTMLButtonElement>(UPLOAD.SELECTORS.LOADER_CLOSE);\n\n // Apply disabled state if specified\n if (this.options.disabled) {\n this.disable();\n }\n\n // Set up event listeners\n this._setupEventListeners();\n }\n\n /**\n * Creates a hidden file input element and appends it to the element\n */\n private _createHiddenInput(): void {\n if (!this.$element) return;\n\n // Create input element\n const input = document.createElement('input');\n input.type = 'file';\n input.style.display = 'none';\n input.accept = this.options.acceptedFileTypes?.join(',') || '';\n input.multiple = !!this.options.multiple;\n \n // Append to element\n this.$element.appendChild(input);\n this.$input = input;\n }\n\n /**\n * Set up all event listeners\n */\n private _setupEventListeners(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n\n // Button click handler\n this.$button.addEventListener('click', this._handleButtonClick.bind(this));\n\n // Input change handler\n this.$input.addEventListener('change', this._handleFileSelect.bind(this));\n\n // Drag and drop handlers\n this.$element.addEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.addEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.addEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.addEventListener('drop', this._handleDrop.bind(this));\n\n // Close button handler\n if (this.$loaderClose) {\n this.$loaderClose.addEventListener('click', this._handleClose.bind(this));\n }\n }\n\n /**\n * Handle button click\n */\n private _handleButtonClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.$input && !this.options.disabled) {\n this.$input.click();\n }\n }\n\n /**\n * Handle file selection from the input element\n */\n private _handleFileSelect(event: Event): void {\n if (!this.$input?.files?.length) return;\n \n const files = Array.from(this.$input.files);\n this._processFiles(files);\n }\n\n /**\n * Handle drag enter event\n */\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter++;\n if (this.dragCounter === 1) {\n this.$element?.classList.add(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag leave event\n */\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter--;\n if (this.dragCounter === 0) {\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n }\n }\n\n /**\n * Handle drag over event\n */\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n }\n\n /**\n * Handle drop event\n */\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n if (this.options.disabled) return;\n \n this.dragCounter = 0;\n this.$element?.classList.remove(UPLOAD.CLASSES.DRAGGING);\n \n if (!event.dataTransfer?.files.length) return;\n \n const files = Array.from(event.dataTransfer.files);\n this._processFiles(files);\n }\n\n /**\n * Handle close button click\n */\n private _handleClose(event: MouseEvent): void {\n event.preventDefault();\n \n // Reset state\n this.setStatus('idle');\n this.setFile(null);\n \n // Reset input\n if (this.$input) {\n this.$input.value = '';\n }\n }\n\n /**\n * Process the selected files\n */\n private _processFiles(files: File[]): void {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = this.options.multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => this._validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && this.options.onFileSelect) {\n this.options.onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n this.setFile(validFiles[0]);\n this._simulateUpload(validFiles[0]);\n }\n }\n\n /**\n * Validate a file based on size and type\n */\n private _validateFile(file: File): boolean {\n const maxSizeInBytes = (this.options.maxSizeInMB || 5) * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n this.setStatus('error', `File too large. Maximum size is ${this.options.maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (this.options.acceptedFileTypes?.length) {\n const isAcceptedType = this.options.acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n this.setStatus('error', 'File type not supported.');\n return false;\n }\n }\n \n return true;\n }\n\n /**\n * Simulate a file upload process\n * In a real implementation, this would be replaced with actual upload logic\n */\n private _simulateUpload(file: File): void {\n this.setStatus('loading');\n let progress = 0;\n \n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n this.setProgress(progress, `${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (this.options.onFileUpload) {\n this.options.onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n this.setStatus('success', 'Upload successful');\n \n if (this.options.onFileUploadComplete) {\n this.options.onFileUploadComplete(file);\n }\n }\n }, 500);\n }\n\n /**\n * Set current file\n */\n public setFile(file: File | null): void {\n this.currentFile = file;\n \n if (file && this.$loaderTitle) {\n this.$loaderTitle.textContent = file.name;\n }\n }\n\n /**\n * Set upload progress\n */\n public setProgress(percentage: number, timeLeft?: string): void {\n if (!this.$element || !this.$loaderProgress) return;\n \n // Set percentage as CSS variable\n this.$element.style.setProperty(UPLOAD.ATTRIBUTES.PERCENTAGE, percentage.toString());\n \n // Update the loader elements if they exist\n const $par = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_PAR);\n const $time = this.$element.querySelector<HTMLElement>(UPLOAD.SELECTORS.LOADER_TIME);\n \n if ($par) {\n $par.textContent = `${percentage}%`;\n }\n \n if ($time && timeLeft) {\n $time.textContent = timeLeft;\n }\n }\n\n /**\n * Set upload status\n */\n public setStatus(status: 'idle' | 'loading' | 'success' | 'error', message?: string): void {\n if (!this.$element) return;\n \n // Remove all status classes\n this.$element.classList.remove(\n UPLOAD.CLASSES.LOADING,\n UPLOAD.CLASSES.SUCCESS,\n UPLOAD.CLASSES.ERROR\n );\n \n // Add appropriate class based on status\n switch (status) {\n case 'loading':\n this.$element.classList.add(UPLOAD.CLASSES.LOADING);\n break;\n case 'success':\n this.$element.classList.add(UPLOAD.CLASSES.SUCCESS);\n break;\n case 'error':\n this.$element.classList.add(UPLOAD.CLASSES.ERROR);\n break;\n }\n \n // Update message if provided and loader exists\n if (message && this.$loaderProgress) {\n this.$loaderProgress.textContent = message;\n }\n }\n\n /**\n * Disable the upload component\n */\n public disable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.add(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = true;\n this.options.disabled = true;\n }\n\n /**\n * Enable the upload component\n */\n public enable(): void {\n if (!this.$element || !this.$button) return;\n \n this.$element.classList.remove(UPLOAD.CLASSES.DISABLED);\n this.$button.disabled = false;\n this.options.disabled = false;\n }\n\n /**\n * Clean up event listeners\n */\n public destroy(): void {\n if (!this.$element || !this.$input || !this.$button) return;\n \n // Remove event listeners\n this.$button.removeEventListener('click', this._handleButtonClick.bind(this));\n this.$input.removeEventListener('change', this._handleFileSelect.bind(this));\n this.$element.removeEventListener('dragenter', this._handleDragEnter.bind(this));\n this.$element.removeEventListener('dragleave', this._handleDragLeave.bind(this));\n this.$element.removeEventListener('dragover', this._handleDragOver.bind(this));\n this.$element.removeEventListener('drop', this._handleDrop.bind(this));\n \n if (this.$loaderClose) {\n this.$loaderClose.removeEventListener('click', this._handleClose.bind(this));\n }\n \n // Remove input element\n if (this.$input.parentNode) {\n this.$input.parentNode.removeChild(this.$input);\n }\n }\n}\n\n/**\n * Initialize all upload components in the document\n * @param {string|Element} selector - CSS selector string or DOM Element\n * @param {Object} options - Custom options to override defaults\n * @returns {UploadInstance[]} Array of Upload instances\n */\nexport function initializeUploads(selector = UPLOAD.SELECTORS.UPLOAD, options = {}): UploadInstance[] {\n const uploadInstances: UploadInstance[] = [];\n const uploadElements = document.querySelectorAll<HTMLElement>(typeof selector === 'string' ? selector : UPLOAD.SELECTORS.UPLOAD);\n\n if (!uploadElements.length) return uploadInstances;\n\n uploadElements.forEach((element) => {\n try {\n const instance = new Upload(element, options);\n uploadInstances.push(instance);\n } catch (error) {\n console.error('Error initializing upload:', error);\n }\n });\n\n return uploadInstances;\n}\n\nexport default Upload; ","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".atomix-0.1.4.react.esm.js\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","import { AccordionProps, AccordionState, IconPosition, ElementRefs } from '../types/components';\nimport { useState, useEffect, useRef } from 'react';\nimport { ACCORDION } from '../constants/components';\n\n/**\n * Accordion functionality hook result\n */\ninterface UseAccordionResult {\n /** Current accordion state */\n state: AccordionState;\n /** Toggle the accordion open/closed */\n toggle: () => void;\n /** Update the panel height based on content */\n updatePanelHeight: () => void;\n /** Reference to the panel element */\n panelRef: React.RefObject<HTMLDivElement>;\n /** Reference to the content element */\n contentRef: React.RefObject<HTMLDivElement>;\n /** Generate accordion class names based on state */\n generateClassNames: (baseClassName?: string) => string;\n /** Generate header class names */\n generateHeaderClassNames: () => string;\n}\n\n/**\n * Accordion functionality hook\n * @param initialProps - Initial accordion properties\n * @returns Accordion state and methods\n */\nexport function useAccordion(initialProps?: Partial<AccordionProps> & { isOpen?: boolean; onOpenChange?: (open: boolean) => void }): UseAccordionResult {\n // Default accordion properties\n const defaultProps: Partial<AccordionProps> & { isOpen?: boolean; onOpenChange?: (open: boolean) => void } = {\n defaultOpen: false,\n disabled: false,\n iconPosition: 'right' as IconPosition,\n ...initialProps\n };\n\n // Controlled/uncontrolled open state\n const isControlled = typeof defaultProps.isOpen === 'boolean';\n const [internalOpen, setInternalOpen] = useState(defaultProps.defaultOpen || false);\n const isOpen = isControlled ? defaultProps.isOpen! : internalOpen;\n\n const [panelHeight, setPanelHeight] = useState<string>(isOpen ? 'auto' : '0px');\n\n const panelRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n\n /**\n * Toggle accordion open/closed state\n */\n const toggle = (): void => {\n if (!defaultProps.disabled) {\n if (isControlled) {\n defaultProps.onOpenChange && defaultProps.onOpenChange(!isOpen);\n } else {\n setInternalOpen(prev => !prev);\n }\n }\n };\n\n /**\n * Update panel height based on content\n */\n const updatePanelHeight = (): void => {\n if (contentRef.current && panelRef.current) {\n const height = isOpen ? `${contentRef.current.clientHeight}px` : '0px';\n panelRef.current.style.setProperty(ACCORDION.CSS_VARS.PANEL_HEIGHT, height);\n setPanelHeight(height);\n }\n };\n\n /**\n * Effect to update panel height when open state changes\n */\n useEffect(() => {\n updatePanelHeight();\n }, [isOpen]);\n\n /**\n * Effect to handle window resize and update panel height\n */\n useEffect(() => {\n const handleResize = (): void => {\n if (isOpen) {\n updatePanelHeight();\n }\n };\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [isOpen]);\n\n /**\n * Generate accordion class names based on state\n */\n const generateClassNames = (baseClassName: string = ''): string => {\n const openClass = isOpen ? ACCORDION.CLASSES.IS_OPEN : '';\n const disabledClass = defaultProps.disabled ? ACCORDION.CLASSES.IS_DISABLED : '';\n return `c-accordion ${openClass} ${disabledClass} ${baseClassName}`.trim();\n };\n\n /**\n * Generate header class names\n */\n const generateHeaderClassNames = (): string => {\n const iconPositionClass = defaultProps.iconPosition === 'left' ? 'c-accordion__header--icon-left' : '';\n return `c-accordion__header ${iconPositionClass}`.trim();\n };\n\n return {\n state: { isOpen, panelHeight },\n toggle,\n updatePanelHeight,\n panelRef,\n contentRef,\n generateClassNames,\n generateHeaderClassNames\n };\n} ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react/jsx-runtime\");","import React, { ReactNode, useId } from 'react';\nimport { ACCORDION } from '../../lib/constants/components';\nimport { useAccordion } from '../../lib/composables/useAccordion';\nimport { AccordionProps as AccordionPropsType } from '../../lib/types/components';\n\n/**\n * Accordion component for showing/hiding content panels\n * @see AccordionProps in types/components.ts\n */\nexport type AccordionProps = AccordionPropsType & {\n /**\n * Controlled open state (overrides defaultOpen)\n */\n isOpen?: boolean;\n /**\n * Callback when open state changes (for controlled mode)\n */\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({\n title,\n children,\n defaultOpen = false,\n isOpen: controlledOpen,\n onOpenChange,\n disabled = false,\n iconPosition = 'right',\n icon,\n className = '',\n}) => {\n // Generate unique IDs for accessibility\n const instanceId = useId();\n const buttonId = `accordion-header-${instanceId}`;\n const panelId = `accordion-panel-${instanceId}`;\n\n // Use composable hook for logic/state\n const {\n state,\n toggle,\n updatePanelHeight,\n panelRef,\n contentRef,\n generateClassNames,\n generateHeaderClassNames\n } = useAccordion({\n defaultOpen,\n disabled,\n iconPosition,\n isOpen: controlledOpen,\n onOpenChange\n });\n\n // Default icon\n const defaultIcon = (\n <i className=\"c-accordion__icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </i>\n );\n\n return (\n <div className={generateClassNames(className)}>\n <button\n id={buttonId}\n className={generateHeaderClassNames()}\n onClick={toggle}\n aria-expanded={state.isOpen}\n aria-controls={panelId}\n disabled={disabled}\n type=\"button\"\n >\n <span className=\"c-accordion__title\">{title}</span>\n {icon || defaultIcon}\n </button>\n <div\n id={panelId}\n className={ACCORDION.SELECTORS.PANEL.replace('.', '')}\n ref={panelRef}\n role=\"region\"\n aria-labelledby={buttonId}\n >\n <div className={ACCORDION.SELECTORS.BODY.replace('.', '')} ref={contentRef}>\n {children}\n </div>\n </div>\n </div>\n );\n}; ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"phosphor-react\");","import React from 'react';\nimport * as PhosphorIcons from 'phosphor-react';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type IconWeight = 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone';\n\n// We need to filter out non-icon exports from the Phosphor package\ntype PhosphorIconsType = Exclude<keyof typeof PhosphorIcons, 'Icon' | 'IconContext' | 'IconBase' | 'IconProps' | 'createIcon' | 'default' | 'SSR'>;\n\nexport interface IconProps {\n /**\n * Icon name from Phosphor Icons\n */\n name: PhosphorIconsType;\n \n /**\n * Icon size\n */\n size?: IconSize | number;\n \n /**\n * Icon weight/style\n */\n weight?: IconWeight;\n \n /**\n * Icon color\n */\n color?: string;\n \n /**\n * Additional CSS class names\n */\n className?: string;\n \n /**\n * Alt text for accessibility\n */\n alt?: string;\n}\n\n// Map string sizes to pixel values\nconst sizeMap: Record<IconSize, number> = {\n xs: 16,\n sm: 20,\n md: 24,\n lg: 32,\n xl: 40\n};\n\n/**\n * Icon component that displays a Phosphor icon\n */\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 'md',\n weight = 'regular',\n color,\n className = '',\n alt\n}) => {\n // Get the icon component from Phosphor\n const IconComponent = PhosphorIcons[name] as React.FC<\n PhosphorIcons.IconProps & { ref?: React.Ref<SVGSVGElement> }\n >;\n \n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found in Phosphor Icons`);\n return null;\n }\n \n // Convert string size to pixel value if needed\n const pixelSize = typeof size === 'string' ? sizeMap[size as IconSize] || 24 : size;\n \n return (\n <span className={`c-icon c-icon--${size} ${className}`} aria-hidden={!alt} title={alt}>\n <IconComponent\n size={pixelSize}\n weight={weight}\n color={color}\n aria-label={alt}\n />\n </span>\n );\n};\n\nexport default Icon; ","import React, { useState } from 'react';\nimport { AvatarProps } from '../../lib/types/components';\nimport { AVATAR } from '../../lib/constants/components';\nimport { Icon } from '../Icon';\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = 'Avatar',\n initials,\n icon,\n size = 'md',\n circle = false,\n className = '',\n disabled = false,\n onClick,\n}) => {\n const [imageError, setImageError] = useState(false);\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n // Generate CSS classes\n const avatarClasses = [\n AVATAR.CLASSES.BASE,\n size !== 'md' && `c-avatar--${size}`,\n circle && AVATAR.CLASSES.CIRCLE,\n disabled && 'is-disabled',\n className,\n ].filter(Boolean).join(' ');\n\n // Handle click event\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!disabled && onClick) {\n onClick(e);\n }\n };\n\n return (\n <div \n className={avatarClasses}\n onClick={onClick ? handleClick : undefined}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick && !disabled ? 0 : undefined}\n aria-disabled={disabled || undefined}\n >\n {src && !imageError ? (\n <img \n src={src} \n alt={alt} \n className=\"c-avatar__image\" \n onError={handleImageError}\n />\n ) : initials ? (\n <span className=\"c-avatar__initials\">{initials}</span>\n ) : icon ? (\n <span className=\"c-avatar__icon\">{icon}</span>\n ) : (\n <span className=\"c-avatar__icon\">\n <Icon name=\"User\" size={size === 'xs' ? 'xs' : size === 'sm' ? 'sm' : 'md'} />\n </span>\n )}\n </div>\n );\n};\n\nexport default Avatar; ","import React, { Children, cloneElement, isValidElement } from 'react';\nimport { AvatarGroupProps, AvatarProps } from '../../lib/types/components';\nimport { AVATAR_GROUP, AVATAR } from '../../lib/constants/components';\nimport { Avatar } from './Avatar';\n\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n children,\n max,\n stacked = false,\n className = '',\n moreText,\n}) => {\n // Generate CSS classes\n const avatarGroupClasses = [\n AVATAR_GROUP.CLASSES.BASE,\n stacked && AVATAR_GROUP.CLASSES.STACKED,\n className,\n ].filter(Boolean).join(' ');\n\n // Get valid Avatar children\n const avatarChildren = Children.toArray(children).filter(\n child => isValidElement(child) && child.type === Avatar\n );\n\n // Determine if we need to show the \"more\" indicator\n const showMoreIndicator = max !== undefined && avatarChildren.length > max;\n const visibleAvatars = showMoreIndicator \n ? avatarChildren.slice(0, max) \n : avatarChildren;\n const hiddenAvatarCount = avatarChildren.length - (max || 0);\n\n // Extract size and shape from first avatar to ensure consistent styling\n const firstAvatar = isValidElement<AvatarProps>(avatarChildren[0]) \n ? avatarChildren[0].props \n : null;\n const avatarSize = firstAvatar?.size || 'md';\n const isCircle = firstAvatar?.circle || false;\n\n // Generate more indicator classes\n const moreClasses = [\n AVATAR.CLASSES.BASE,\n AVATAR_GROUP.CLASSES.MORE,\n avatarSize !== 'md' && `c-avatar--${avatarSize}`,\n isCircle && 'c-avatar--circle',\n ].filter(Boolean).join(' ');\n\n return (\n <div className={avatarGroupClasses}>\n {visibleAvatars.map((child, index) => {\n if (isValidElement<AvatarProps>(child)) {\n // Clone the Avatar element to ensure proper styling\n return cloneElement(child, {\n key: index,\n ...child.props,\n });\n }\n return null;\n })}\n\n {showMoreIndicator && (\n <div className={moreClasses}>\n {moreText || `+${hiddenAvatarCount}`}\n </div>\n )}\n </div>\n );\n};\n\nexport default AvatarGroup; ","import { BadgeProps } from '../types/components';\nimport { BADGE } from '../constants/components';\n\n/**\n * Badge state and functionality\n * @param initialProps - Initial badge properties\n * @returns Badge state and methods\n */\nexport function useBadge(initialProps?: Partial<BadgeProps>) {\n // Default badge properties\n const defaultProps: Partial<BadgeProps> = {\n variant: 'primary',\n size: 'md',\n disabled: false,\n ...initialProps\n };\n\n /**\n * Generate badge class based on properties\n * @param props - Badge properties\n * @returns Class string\n */\n const generateBadgeClass = (props: Partial<BadgeProps>): string => {\n const {\n variant = defaultProps.variant,\n size = defaultProps.size,\n disabled = defaultProps.disabled,\n className = '',\n } = props;\n\n const sizeClass = size === 'md' ? '' : `${BADGE.SIZE_PREFIX}${size}`;\n const variantClass = variant ? `${BADGE.VARIANT_PREFIX}${variant}` : '';\n const disabledClass = disabled ? 'c-badge--disabled' : '';\n \n return `${BADGE.BASE_CLASS} ${variantClass} ${sizeClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateBadgeClass,\n };\n} ","import React from 'react';\nimport { BadgeProps } from '../../lib/types/components';\nimport { useBadge } from '../../lib/composables/useBadge';\nimport { BADGE } from '../../lib/constants/components';\n\nexport const Badge: React.FC<BadgeProps> = ({\n label,\n variant = 'primary',\n size = 'md',\n disabled = false,\n icon,\n className = '',\n}) => {\n const { generateBadgeClass } = useBadge({ \n variant, size, disabled \n });\n \n const badgeClass = generateBadgeClass({ \n variant, size, disabled, className \n });\n \n return (\n <span\n className={badgeClass}\n aria-disabled={disabled}\n >\n {icon && <span className={BADGE.ICON_CLASS}>{icon}</span>}\n <span>{label}</span>\n </span>\n );\n}; ","import React, { ReactNode } from 'react';\nimport { BREADCRUMB } from '../../lib/constants/components';\n\nexport interface BreadcrumbItem {\n /**\n * Text to display\n */\n label: string;\n \n /**\n * URL for the breadcrumb item\n */\n href?: string;\n \n /**\n * Whether this item is active (current page)\n */\n active?: boolean;\n \n /**\n * Optional icon to display before the label\n */\n icon?: ReactNode;\n \n /**\n * Optional click handler\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport interface BreadcrumbProps {\n /**\n * Array of breadcrumb items\n */\n items: BreadcrumbItem[];\n \n /**\n * Custom divider character or element\n */\n divider?: ReactNode;\n \n /**\n * Additional className\n */\n className?: string;\n \n /**\n * Aria label for the navigation\n */\n ariaLabel?: string;\n}\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n items,\n divider,\n className = '',\n ariaLabel = 'Breadcrumb'\n}) => {\n const breadcrumbClasses = [\n BREADCRUMB.CLASSES.BASE,\n className\n ].filter(Boolean).join(' ');\n \n return (\n <nav aria-label={ariaLabel}>\n <ol className={breadcrumbClasses}>\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const itemClasses = [\n BREADCRUMB.CLASSES.ITEM,\n item.active || isLast ? BREADCRUMB.CLASSES.ACTIVE : ''\n ].filter(Boolean).join(' ');\n \n const linkContent = (\n <>\n {item.icon && <span className=\"c-breadcrumb__icon\">{item.icon}</span>}\n {item.label}\n </>\n );\n \n return (\n <li key={index} className={itemClasses}>\n {item.href && !item.active ? (\n <a\n href={item.href}\n className={BREADCRUMB.CLASSES.LINK}\n onClick={item.onClick}\n >\n {linkContent}\n </a>\n ) : (\n <span className={BREADCRUMB.CLASSES.LINK}>\n {linkContent}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nexport default Breadcrumb; ","import { ButtonProps } from '../types/components';\n\n/**\n * Button state and functionality\n * @param initialProps - Initial button properties\n * @returns Button state and methods\n */\nexport function useButton(initialProps?: Partial<ButtonProps>) {\n // Default button properties\n const defaultProps: Partial<ButtonProps> = {\n variant: 'primary',\n size: 'md',\n disabled: false,\n rounded: false,\n ...initialProps\n };\n\n /**\n * Generate button class based on properties\n * @param props - Button properties\n * @returns Class string\n */\n const generateButtonClass = (props: Partial<ButtonProps>): string => {\n const {\n variant = defaultProps.variant,\n size = defaultProps.size,\n disabled = defaultProps.disabled,\n rounded = defaultProps.rounded,\n iconOnly = false,\n className = '',\n } = props;\n\n const sizeClass = size === 'md' ? '' : `c-btn--${size}`;\n const iconOnlyClass = iconOnly ? 'c-btn--icon' : '';\n const roundedClass = rounded ? 'c-btn--rounded' : '';\n const disabledClass = disabled ? 'c-btn--disabled' : '';\n \n return `c-btn c-btn--${variant} ${sizeClass} ${iconOnlyClass} ${roundedClass} ${disabledClass} ${className}`.trim();\n };\n\n /**\n * Handle button click with disabled check\n * @param handler - Click handler function\n * @returns Function that respects disabled state\n */\n const handleClick = (handler?: () => void) => {\n return () => {\n if (!defaultProps.disabled && handler) {\n handler();\n }\n };\n };\n\n return {\n defaultProps,\n generateButtonClass,\n handleClick,\n };\n} ","import React, { forwardRef, ElementType } from 'react';\nimport { ButtonProps } from '../../lib/types/components';\nimport { useButton } from '../../lib/composables/useButton';\nimport { BUTTON } from '../../lib/constants/components';\n\ntype ButtonAsProp = {\n as?: ElementType;\n to?: string;\n href?: string;\n [key: string]: any;\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps & ButtonAsProp>(({\n label,\n children,\n onClick,\n variant = 'primary',\n size = 'md',\n disabled = false,\n icon,\n iconOnly = false,\n rounded = false,\n className = '',\n as: Component = 'button',\n ...props\n}, ref) => {\n const { generateButtonClass, handleClick } = useButton({ \n variant, size, disabled, rounded \n });\n \n const buttonClass = generateButtonClass({ \n variant, size, disabled, rounded, iconOnly, className \n });\n \n // Handle the case when the button is rendered as a link or another component\n const buttonProps = {\n ref,\n className: buttonClass,\n onClick: handleClick(onClick),\n disabled,\n 'aria-disabled': disabled,\n ...props,\n };\n\n return (\n <Component {...buttonProps}>\n {icon && <span className=\"button__icon\">{icon}</span>}\n {!iconOnly && <span className=\"button__label\">{label || children}</span>}\n </Component>\n );\n});\n\n// Add displayName for better debugging\nButton.displayName = 'Button';\n","import { CalloutProps } from '../types/components';\n\n/**\n * Callout state and functionality\n * @param initialProps - Initial callout properties\n * @returns Callout state and methods\n */\nexport function useCallout(initialProps?: Partial<CalloutProps>) {\n // Default callout properties\n const defaultProps: Partial<CalloutProps> = {\n variant: 'primary',\n oneLine: false,\n toast: false,\n ...initialProps\n };\n\n /**\n * Generate callout class based on properties\n * @param props - Callout properties\n * @returns Class string\n */\n const generateCalloutClass = (props: Partial<CalloutProps>): string => {\n const {\n variant = defaultProps.variant,\n oneLine = defaultProps.oneLine,\n toast = defaultProps.toast,\n className = '',\n } = props;\n\n const oneLineClass = oneLine ? 'c-callout--oneline' : '';\n const toastClass = toast ? 'c-callout--toast' : '';\n const variantClass = variant ? `c-callout--${variant}` : '';\n \n return `c-callout ${variantClass} ${oneLineClass} ${toastClass} ${className}`.trim();\n };\n\n /**\n * Handle callout close with callback\n * @param handler - Close handler function\n * @returns Function that calls the handler\n */\n const handleClose = (handler?: () => void) => {\n return () => {\n if (handler) {\n handler();\n }\n };\n };\n\n return {\n defaultProps,\n generateCalloutClass,\n handleClose,\n };\n}","import React from 'react';\nimport { CalloutProps } from '../../lib/types/components';\nimport { useCallout } from '../../lib/composables/useCallout';\nimport { Icon } from '../Icon/Icon';\n\n/**\n * Callout component for displaying important messages, notifications, or alerts\n */\nexport const Callout: React.FC<CalloutProps> = ({\n title,\n children,\n icon,\n variant = 'primary',\n onClose,\n actions,\n oneLine = false,\n toast = false,\n className,\n ...props\n}) => {\n const { generateCalloutClass, handleClose } = useCallout({\n variant,\n oneLine,\n toast,\n className\n });\n\n // Determine appropriate ARIA attributes based on variant\n const getAriaAttributes = () => {\n const baseAttributes: Record<string, string> = {\n role: 'region',\n };\n \n // For toast notifications or alerts, use appropriate role and live region\n if (toast) {\n baseAttributes.role = 'alert';\n baseAttributes['aria-live'] = 'polite';\n } else if (['warning', 'error'].includes(variant)) {\n baseAttributes.role = 'alert';\n baseAttributes['aria-live'] = 'assertive';\n } else if (['info', 'success'].includes(variant)) {\n baseAttributes.role = 'status';\n baseAttributes['aria-live'] = 'polite';\n }\n \n return baseAttributes;\n };\n\n return (\n <div className={generateCalloutClass({ variant, oneLine, toast, className })} {...getAriaAttributes()} {...props}>\n <div className=\"c-callout__content\">\n {icon && <div className=\"c-callout__icon\">{icon}</div>}\n <div className=\"c-callout__message\">\n {title && <div className=\"c-callout__title\">{title}</div>}\n {children && <div className=\"c-callout__text\">{children}</div>}\n </div>\n </div>\n \n {actions && <div className=\"c-callout__actions\">{actions}</div>}\n \n {onClose && (\n <button \n className=\"c-callout__close-btn\" \n onClick={handleClose(onClose)}\n aria-label=\"Close\"\n >\n <Icon name=\"X\" size=\"md\" />\n </button>\n )}\n </div>\n );\n};","import React, { forwardRef, Ref } from 'react';\nimport { CARD } from '../../lib/constants/components';\nimport { CardProps } from '../../lib/types/components';\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(({\n header,\n image,\n imageAlt = '',\n title,\n text,\n actions,\n icon,\n footer,\n row = false,\n flat = false,\n active = false,\n className = '',\n children,\n onClick,\n ...rest\n}, ref) => {\n const cardClasses = [\n CARD.CLASSES.BASE,\n row ? CARD.CLASSES.ROW : '',\n flat ? CARD.CLASSES.FLAT : '',\n active ? CARD.CLASSES.ACTIVE : '',\n className\n ].filter(Boolean).join(' ');\n\n return (\n <div\n ref={ref}\n className={cardClasses}\n onClick={onClick}\n {...rest}\n >\n {(image || icon || header) && (\n <div className={CARD.SELECTORS.HEADER.substring(1)}>\n {header}\n {image && (\n <img\n src={image}\n alt={imageAlt}\n className={CARD.SELECTORS.IMAGE.substring(1)}\n />\n )}\n\n {icon && (\n <div className={CARD.SELECTORS.ICON.substring(1)}>\n {icon}\n </div>\n )}\n </div>\n )}\n\n <div className={CARD.SELECTORS.BODY.substring(1)}>\n {title && (\n <h3 className={CARD.SELECTORS.TITLE.substring(1)}>\n {title}\n </h3>\n )}\n\n {text && (\n <p className={CARD.SELECTORS.TEXT.substring(1)}>\n {text}\n </p>\n )}\n\n {children}\n </div>\n\n {actions && (\n <div className={CARD.SELECTORS.ACTIONS.substring(1)}>\n {actions}\n </div>\n )}\n\n {footer && (\n <div className={CARD.SELECTORS.FOOTER.substring(1)}>\n {footer}\n </div>\n )}\n </div>\n );\n});\n\nexport default Card;","import { RefObject, useCallback, useEffect, useRef, useState } from 'react';\nimport { UseCardOptions, UseCardReturn } from '../types/components';\nimport { CARD } from '../constants/components';\n\n/**\n * Hook for managing Card component state and behaviors\n * \n * @param options - Configuration options for the card\n * @returns Card state and handlers\n */\nexport const useCard = (options: UseCardOptions = {}): UseCardReturn => {\n const {\n elevationEffect = false,\n elevationClass = CARD.CLASSES.ACTIVE,\n flipEffect = false,\n flipTrigger = 'click',\n focusEffect = false,\n clickable = false,\n onClick\n } = options;\n\n const cardRef = useRef<HTMLDivElement>(null);\n const frontRef = useRef<HTMLDivElement>(null);\n const backRef = useRef<HTMLDivElement>(null);\n\n const [isFlipped, setIsFlipped] = useState(false);\n const [isElevated, setIsElevated] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n // Handle click events\n const handleClick = useCallback((event: React.MouseEvent) => {\n if (flipEffect && flipTrigger === 'click') {\n setIsFlipped(prev => !prev);\n }\n\n if (onClick) {\n onClick(event);\n }\n }, [flipEffect, flipTrigger, onClick]);\n\n // Handle keyboard events for accessibility\n const handleKeyDown = useCallback((event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n \n if (flipEffect && flipTrigger === 'click') {\n setIsFlipped(prev => !prev);\n }\n\n if (onClick) {\n onClick(event as unknown as React.MouseEvent);\n }\n }\n }, [flipEffect, flipTrigger, onClick]);\n\n // Handle mouse enter events\n const handleMouseEnter = useCallback(() => {\n setIsHovered(true);\n \n if (elevationEffect) {\n setIsElevated(true);\n }\n\n if (flipEffect && flipTrigger === 'hover') {\n setIsFlipped(true);\n }\n }, [elevationEffect, flipEffect, flipTrigger]);\n\n // Handle mouse leave events\n const handleMouseLeave = useCallback(() => {\n setIsHovered(false);\n \n if (elevationEffect) {\n setIsElevated(false);\n }\n\n if (flipEffect && flipTrigger === 'hover') {\n setIsFlipped(false);\n }\n }, [elevationEffect, flipEffect, flipTrigger]);\n\n // Handle focus events\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n }, []);\n\n // Handle blur events\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n }, []);\n\n // Get all card props combined\n const getCardProps = useCallback(() => {\n const className = [\n CARD.CLASSES.BASE,\n isElevated ? elevationClass : '',\n isFlipped ? CARD.CLASSES.FLIPPED : '',\n isFocused && focusEffect ? CARD.CLASSES.FOCUSED : '',\n clickable ? CARD.CLASSES.CLICKABLE : ''\n ].filter(Boolean).join(' ');\n\n return {\n className,\n ref: cardRef,\n tabxwIndex: clickable || flipEffect ? 0 : -1,\n role: clickable ? 'button' : undefined,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n };\n }, [isElevated, isFlipped, isFocused, elevationClass, focusEffect, clickable, handleMouseEnter, handleMouseLeave, handleFocus, handleBlur, handleClick, handleKeyDown, flipEffect]);\n\n return {\n cardRef,\n frontRef,\n backRef,\n isFlipped,\n isElevated,\n isFocused,\n isHovered,\n handleClick,\n handleKeyDown,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n getCardProps\n };\n};","import React, { RefObject } from 'react';\nimport Card from './Card';\nimport { useCard } from '../../lib/composables/useCard';\nimport { ElevationCardProps } from '../../lib/types/components';\n\nexport const ElevationCard: React.FC<ElevationCardProps> = ({\n elevationClass = 'is-elevated',\n className = '',\n children,\n onClick,\n ...props\n}) => {\n const { getCardProps } = useCard({\n elevationEffect: true,\n elevationClass,\n clickable: Boolean(onClick),\n onClick: onClick as (event: React.MouseEvent) => void,\n focusEffect: true\n });\n\n const cardProps = getCardProps();\n\n return (\n <div\n className={`${className} ${cardProps.className}`}\n ref={cardProps.ref}\n tabIndex={cardProps.tabIndex}\n role={cardProps.role}\n onMouseEnter={cardProps.onMouseEnter}\n onMouseLeave={cardProps.onMouseLeave}\n onFocus={cardProps.onFocus}\n onBlur={cardProps.onBlur}\n onClick={cardProps.onClick as unknown as React.MouseEventHandler<HTMLDivElement>}\n onKeyDown={cardProps.onKeyDown as unknown as React.KeyboardEventHandler<HTMLDivElement>}\n >\n <Card \n {...props}\n className=\"\"\n onClick={undefined}\n >\n {children}\n </Card>\n </div>\n );\n};\n\nexport default ElevationCard;","import React, { useEffect, useState } from 'react';\n\nexport interface CountdownProps {\n /** Target date/time as a Date or ISO string */\n target: Date | string;\n /** Show days, hours, minutes, seconds */\n show?: Array<'days' | 'hours' | 'minutes' | 'seconds'>;\n /** Separator string */\n separator?: string;\n /** Focused style */\n focused?: boolean;\n /** Custom className */\n className?: string;\n /** Optional callback when countdown reaches zero */\n onComplete?: () => void;\n}\n\nfunction getTimeParts(diff: number) {\n const totalSeconds = Math.max(0, Math.floor(diff / 1000));\n const days = Math.floor(totalSeconds / 86400);\n const hours = Math.floor((totalSeconds % 86400) / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n return { days, hours, minutes, seconds };\n}\n\nexport const Countdown: React.FC<CountdownProps> = ({\n target,\n show = ['days', 'hours', 'minutes', 'seconds'],\n separator = ':',\n focused = false,\n className = '',\n onComplete,\n}) => {\n const targetDate = typeof target === 'string' ? new Date(target) : target;\n const [now, setNow] = useState(() => new Date());\n const [completed, setCompleted] = useState(false);\n\n useEffect(() => {\n if (completed) return;\n const interval = setInterval(() => {\n setNow(new Date());\n }, 1000);\n return () => clearInterval(interval);\n }, [completed]);\n\n const diff = targetDate.getTime() - now.getTime();\n const { days, hours, minutes, seconds } = getTimeParts(diff);\n\n useEffect(() => {\n if (diff <= 0 && !completed) {\n setCompleted(true);\n if (onComplete) onComplete();\n }\n }, [diff, completed, onComplete]);\n\n const timeParts = [];\n if (show.includes('days')) timeParts.push({ label: 'Days', value: days });\n if (show.includes('hours')) timeParts.push({ label: 'Hours', value: hours });\n if (show.includes('minutes')) timeParts.push({ label: 'Minutes', value: minutes });\n if (show.includes('seconds')) timeParts.push({ label: 'Seconds', value: seconds });\n\n return (\n <div className={`c-countdown${focused ? ' c-countdown--focused' : ''} ${className}`.trim()}>\n {timeParts.map((part, idx) => (\n <React.Fragment key={part.label}>\n <div className=\"c-countdown__time\">\n <span className=\"c-countdown__time-count\">{String(part.value).padStart(2, '0')}</span>\n <span className=\"c-countdown__time-label\">{part.label}</span>\n </div>\n {idx < timeParts.length - 1 && (\n <span className=\"c-countdown__separator\">{separator}</span>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n};\n\nexport default Countdown; ","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { DataTableColumn, SortConfig } from '../types/components';\n\nexport interface UseDataTableProps {\n /**\n * Data array to display\n */\n data: any[];\n \n /**\n * Column definitions\n */\n columns: DataTableColumn[];\n \n /**\n * Whether the table is sortable\n */\n sortable?: boolean;\n \n /**\n * Whether the table is paginated\n */\n paginated?: boolean;\n \n /**\n * Number of rows per page\n */\n pageSize?: number;\n \n /**\n * Callback when sorting changes\n */\n onSort?: (sortConfig: SortConfig) => void;\n \n /**\n * Initial sort configuration\n */\n initialSortConfig?: SortConfig;\n}\n\nexport interface UseDataTableReturn {\n /**\n * Data to display (filtered, sorted, paginated)\n */\n displayData: any[];\n \n /**\n * Current sort configuration\n */\n sortConfig: SortConfig | null;\n \n /**\n * Current page number\n */\n currentPage: number;\n \n /**\n * Total number of pages\n */\n totalPages: number;\n \n /**\n * Handle sort column click\n */\n handleSort: (key: string) => void;\n \n /**\n * Handle page change\n */\n handlePageChange: (page: number) => void;\n \n /**\n * Handle search input\n */\n handleSearch: (query: string) => void;\n}\n\n/**\n * Hook for managing DataTable state and behavior\n */\nexport function useDataTable({\n data = [],\n columns = [],\n sortable = false,\n paginated = false,\n pageSize = 10,\n onSort,\n initialSortConfig,\n}: UseDataTableProps): UseDataTableReturn {\n // Sort state\n const [sortConfig, setSortConfig] = useState<SortConfig | null>(initialSortConfig || null);\n \n // Pagination state\n const [currentPage, setCurrentPage] = useState<number>(1);\n \n // Search state\n const [searchQuery, setSearchQuery] = useState<string>('');\n \n // Handle sorting\n const handleSort = useCallback((key: string) => {\n if (!sortable) return;\n \n let direction: 'asc' | 'desc' = 'asc';\n \n if (sortConfig && sortConfig.key === key && sortConfig.direction === 'asc') {\n direction = 'desc';\n }\n \n const newSortConfig = { key, direction };\n setSortConfig(newSortConfig);\n \n if (onSort) {\n onSort(newSortConfig);\n }\n }, [sortable, sortConfig, onSort]);\n \n // Handle page change\n const handlePageChange = useCallback((page: number) => {\n if (page < 1 || page > Math.ceil(data.length / pageSize)) return;\n setCurrentPage(page);\n }, [data.length, pageSize]);\n \n // Handle search\n const handleSearch = useCallback((query: string) => {\n setSearchQuery(query);\n setCurrentPage(1); // Reset to first page when searching\n }, []);\n \n // Filter data based on search query\n const filteredData = useMemo(() => {\n if (!searchQuery) return data;\n \n const lowercaseQuery = searchQuery.toLowerCase();\n \n return data.filter(row => {\n return columns.some(column => {\n const value = row[column.key];\n if (value == null) return false;\n return String(value).toLowerCase().includes(lowercaseQuery);\n });\n });\n }, [data, columns, searchQuery]);\n \n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig || !sortable) return filteredData;\n \n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n \n if (aValue == null) return sortConfig.direction === 'asc' ? -1 : 1;\n if (bValue == null) return sortConfig.direction === 'asc' ? 1 : -1;\n \n if (typeof aValue === 'string' && typeof bValue === 'string') {\n return sortConfig.direction === 'asc' \n ? aValue.localeCompare(bValue) \n : bValue.localeCompare(aValue);\n }\n \n return sortConfig.direction === 'asc' \n ? (aValue > bValue ? 1 : -1) \n : (aValue > bValue ? -1 : 1);\n });\n }, [filteredData, sortConfig, sortable]);\n \n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginated) return sortedData;\n \n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, paginated, currentPage, pageSize]);\n \n // Calculate total pages\n const totalPages = useMemo(() => {\n if (!paginated) return 1;\n return Math.max(1, Math.ceil(sortedData.length / pageSize));\n }, [sortedData.length, paginated, pageSize]);\n \n // Reset to first page when data changes\n useEffect(() => {\n setCurrentPage(1);\n }, [data]);\n \n // Reset current page if it's out of bounds\n useEffect(() => {\n if (currentPage > totalPages) {\n setCurrentPage(Math.max(1, totalPages));\n }\n }, [currentPage, totalPages]);\n \n return {\n displayData: paginatedData,\n sortConfig,\n currentPage,\n totalPages,\n handleSort,\n handlePageChange,\n handleSearch,\n };\n}\n\nexport default useDataTable; ","import { SpinnerProps } from '../types/components';\n\n/**\n * Spinner state and functionality\n * @param initialProps - Initial spinner properties\n * @returns Spinner state and methods\n */\nexport function useSpinner(initialProps?: Partial<SpinnerProps>) {\n // Default spinner properties\n const defaultProps: Partial<SpinnerProps> = {\n variant: 'primary',\n size: 'md',\n fullscreen: false,\n ...initialProps\n };\n\n /**\n * Generate spinner class based on properties\n * @param props - Spinner properties\n * @returns Class string\n */\n const generateSpinnerClass = (props: Partial<SpinnerProps>): string => {\n const {\n variant = defaultProps.variant,\n size = defaultProps.size,\n fullscreen = defaultProps.fullscreen,\n className = '',\n } = props;\n\n const baseClass = 'c-spinner';\n const variantClass = variant ? `${baseClass}--${variant}` : '';\n const sizeClass = size !== 'md' ? `${baseClass}--${size}` : '';\n const fullscreenClass = fullscreen ? `${baseClass}--fullscreen` : '';\n \n return `${baseClass} ${variantClass} ${sizeClass} ${fullscreenClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateSpinnerClass,\n };\n} ","import React from 'react';\nimport { SpinnerProps } from '../../lib/types/components';\nimport { useSpinner } from '../../lib/composables/useSpinner';\nimport { SPINNER } from '../../lib/constants/components';\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n size = 'md',\n variant = 'primary',\n fullscreen = false,\n className = '',\n}) => {\n const { generateSpinnerClass } = useSpinner({ \n size, variant, fullscreen \n });\n \n const spinnerClass = generateSpinnerClass({ \n size, variant, fullscreen, className \n });\n \n return (\n <div className={spinnerClass} role=\"status\">\n <span className={SPINNER.VISUALLY_HIDDEN}>Loading...</span>\n </div>\n );\n}; ","import { useState, useMemo } from 'react';\nimport { PaginationProps } from '../types/components';\n\nexport const DOTS = '...';\n\nconst range = (start: number, end: number) => {\n const length = end - start + 1;\n return Array.from({ length }, (_, idx) => idx + start);\n};\n\nexport const usePagination = ({\n currentPage,\n totalPages,\n siblingCount = 1,\n onPageChange,\n}: Omit<PaginationProps, 'className'>) => {\n const paginationRange = useMemo(() => {\n const totalPageNumbers = siblingCount + 5; // siblingCount + firstPage + lastPage + currentPage + 2*DOTS\n\n /*\n Case 1: If the number of pages is less than the page numbers we want to show in our\n paginationComponent, we return the range [1..totalPages]\n */\n if (totalPageNumbers >= totalPages) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\n const rightSiblingIndex = Math.min(\n currentPage + siblingCount,\n totalPages\n );\n\n const shouldShowLeftDots = leftSiblingIndex > 2;\n const shouldShowRightDots = rightSiblingIndex < totalPages - 2;\n\n const firstPageIndex = 1;\n const lastPageIndex = totalPages;\n\n /*\n \tCase 2: No left dots to show, but rights dots to be shown\n */\n if (!shouldShowLeftDots && shouldShowRightDots) {\n let leftItemCount = 3 + 2 * siblingCount;\n let leftRange = range(1, leftItemCount);\n\n return [...leftRange, DOTS, totalPages];\n }\n\n /*\n \tCase 3: No right dots to show, but left dots to be shown\n */\n if (shouldShowLeftDots && !shouldShowRightDots) {\n let rightItemCount = 3 + 2 * siblingCount;\n let rightRange = range(\n totalPages - rightItemCount + 1,\n totalPages\n );\n return [firstPageIndex, DOTS, ...rightRange];\n }\n\n /*\n \tCase 4: Both left and right dots to be shown\n */\n if (shouldShowLeftDots && shouldShowRightDots) {\n let middleRange = range(leftSiblingIndex, rightSiblingIndex);\n return [firstPageIndex, DOTS, ...middleRange, DOTS, lastPageIndex];\n }\n\n // This case should ideally not be reached if logic is correct\n return []; \n\n }, [totalPages, siblingCount, currentPage]);\n\n const goToPage = (page: number) => {\n if (page >= 1 && page <= totalPages && page !== currentPage) {\n onPageChange(page);\n }\n };\n\n const nextPage = () => {\n goToPage(currentPage + 1);\n };\n\n const prevPage = () => {\n goToPage(currentPage - 1);\n };\n\n const firstPage = () => {\n goToPage(1);\n };\n\n const lastPage = () => {\n goToPage(totalPages);\n };\n\n return {\n paginationRange,\n currentPage,\n totalPages,\n goToPage,\n nextPage,\n prevPage,\n firstPage,\n lastPage,\n DOTS,\n };\n};\n","import React from 'react';\nimport { PaginationProps } from '../../lib/types/components';\nimport { usePagination, DOTS } from '../../lib/composables/usePagination';\nimport { PAGINATION_DEFAULTS } from '../../lib/constants/components';\nimport { Icon, IconProps } from '../Icon';\n\n// @TODO: Add Search functionality for pagination\n\n/**\n * Navigation button types for pagination\n */\ntype NavButtonType = 'first' | 'prev' | 'next' | 'last';\n\n/**\n * Props for the PaginationNavButton component\n */\ninterface PaginationNavButtonProps {\n type: NavButtonType;\n onClick: () => void;\n disabled: boolean;\n label: string;\n iconName: IconProps['name'];\n}\n\n/**\n * PaginationNavButton component for rendering first, previous, next, and last buttons\n */\nconst PaginationNavButton: React.FC<PaginationNavButtonProps> = ({ \n type, \n onClick, \n disabled, \n label,\n iconName\n}) => (\n <li \n className={`c-pagination__item c-pagination__item--${type} ${disabled ? 'is-disabled' : ''}`}\n aria-disabled={disabled}\n >\n <button \n type=\"button\"\n className=\"c-pagination__link\"\n onClick={onClick} \n disabled={disabled}\n aria-label={label}\n >\n <Icon name={iconName} size=\"sm\" aria-hidden=\"true\" />\n </button>\n </li>\n);\n\n/**\n * Pagination component\n */\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage = PAGINATION_DEFAULTS.currentPage,\n totalPages = PAGINATION_DEFAULTS.totalPages,\n onPageChange,\n siblingCount = PAGINATION_DEFAULTS.siblingCount,\n showFirstLastButtons = PAGINATION_DEFAULTS.showFirstLastButtons,\n showPrevNextButtons = PAGINATION_DEFAULTS.showPrevNextButtons,\n size = PAGINATION_DEFAULTS.size,\n className = '',\n ariaLabel = 'Pagination',\n}) => {\n const {\n paginationRange,\n goToPage,\n nextPage,\n prevPage,\n firstPage,\n lastPage,\n } = usePagination({\n currentPage,\n totalPages,\n siblingCount,\n onPageChange,\n });\n\n // Don't render pagination with a single page or no pages\n if (currentPage === 0 || paginationRange.length < 2) {\n return null;\n }\n\n return (\n <nav \n className={`c-pagination c-pagination--${size} ${className}`} \n aria-label={ariaLabel}\n >\n <ul className=\"c-pagination__items\">\n {showFirstLastButtons && (\n <PaginationNavButton \n type=\"first\"\n onClick={firstPage}\n disabled={currentPage === 1}\n label=\"Go to first page\"\n iconName=\"SkipBack\"\n />\n )}\n \n {showPrevNextButtons && (\n <PaginationNavButton \n type=\"prev\"\n onClick={prevPage}\n disabled={currentPage === 1}\n label=\"Go to previous page\"\n iconName=\"CaretLeft\"\n />\n )}\n \n {paginationRange.map((pageNumber, index) => {\n if (pageNumber === DOTS) {\n return (\n <li \n key={`dots-${index}`} \n className=\"c-pagination__item c-pagination__item--dots\"\n aria-hidden=\"true\"\n >\n …\n </li>\n );\n }\n\n const isActive = pageNumber === currentPage;\n \n return (\n <li \n key={pageNumber}\n className={`c-pagination__item ${isActive ? 'is-active' : ''}`}\n aria-current={isActive ? 'page' : undefined}\n >\n <button \n type=\"button\"\n className=\"c-pagination__link\"\n onClick={() => goToPage(pageNumber as number)}\n aria-label={`Page ${pageNumber}`}\n aria-current={isActive ? 'page' : undefined}\n >\n {pageNumber}\n </button>\n </li>\n );\n })}\n \n {showPrevNextButtons && (\n <PaginationNavButton \n type=\"next\"\n onClick={nextPage}\n disabled={currentPage === totalPages}\n label=\"Go to next page\"\n iconName=\"CaretRight\"\n />\n )}\n \n {showFirstLastButtons && (\n <PaginationNavButton \n type=\"last\"\n onClick={lastPage}\n disabled={currentPage === totalPages}\n label=\"Go to last page\"\n iconName=\"SkipForward\"\n />\n )}\n </ul>\n </nav>\n );\n};","import React, { useRef } from 'react';\nimport { DataTableProps } from '../../lib/types/components';\nimport { useDataTable } from './scripts';\nimport { DATA_TABLE_CLASSES } from '../../lib/constants/components';\nimport { Spinner } from '../Spinner';\nimport { Icon } from '../Icon';\nimport { Pagination } from '../Pagination';\n\n/**\n * DataTable - A flexible and accessible data table component\n * \n * @example\n * ```tsx\n * <DataTable \n * data={users}\n * columns={columns}\n * sortable={true}\n * onRowClick={handleRowClick}\n * />\n * ```\n */\nexport const DataTable: React.FC<DataTableProps> = ({\n data = [],\n columns = [],\n className,\n sortable = false,\n filterable = false,\n paginated = false,\n pageSize = 10,\n striped = false,\n bordered = false,\n dense = false,\n loading = false,\n emptyMessage = 'No data available',\n onRowClick,\n onSort,\n ...props\n}) => {\n const tableRef = useRef<HTMLTableElement>(null);\n \n const {\n displayData,\n sortConfig,\n currentPage,\n totalPages,\n handleSort,\n handlePageChange,\n handleSearch,\n } = useDataTable({\n data,\n columns,\n sortable,\n paginated,\n pageSize,\n onSort,\n });\n \n // Generate component classes\n const tableClass = [\n DATA_TABLE_CLASSES.base,\n striped && DATA_TABLE_CLASSES.striped,\n bordered && DATA_TABLE_CLASSES.bordered,\n dense && DATA_TABLE_CLASSES.dense,\n loading && DATA_TABLE_CLASSES.loading,\n className\n ].filter(Boolean).join(' ');\n \n const renderHeader = () => {\n return (\n <thead className={DATA_TABLE_CLASSES.header}>\n <tr>\n {columns.map((column, index) => (\n <th \n key={`header-${index}`}\n className={`${DATA_TABLE_CLASSES.headerCell} ${column.sortable !== false && sortable ? DATA_TABLE_CLASSES.sortable : ''}`}\n onClick={() => column.sortable !== false && sortable ? handleSort(column.key) : null}\n aria-sort={sortConfig?.key === column.key ? (sortConfig.direction === 'asc' ? 'ascending' : 'descending') : undefined}\n >\n <div className={DATA_TABLE_CLASSES.headerContent}>\n <span>{column.title}</span>\n {column.sortable !== false && sortable && (\n <span className={DATA_TABLE_CLASSES.sortIcon}>\n {sortConfig?.key === column.key ? (\n sortConfig.direction === 'asc' ? \n <Icon name=\"CaretUp\" size=\"sm\" /> : \n <Icon name=\"CaretDown\" size=\"sm\" />\n ) : null}\n </span>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n );\n };\n \n const renderBody = () => {\n if (loading) {\n return (\n <tbody>\n <tr>\n <td \n colSpan={columns.length} \n className={DATA_TABLE_CLASSES.loadingCell}\n >\n <div className={DATA_TABLE_CLASSES.loadingIndicator}>\n <Spinner size=\"md\" variant=\"primary\" />\n </div>\n </td>\n </tr>\n </tbody>\n );\n }\n \n if (displayData.length === 0) {\n return (\n <tbody>\n <tr>\n <td \n colSpan={columns.length} \n className={DATA_TABLE_CLASSES.emptyCell}\n >\n {emptyMessage}\n </td>\n </tr>\n </tbody>\n );\n }\n \n return (\n <tbody>\n {displayData.map((row: any, rowIndex: number) => (\n <tr \n key={`row-${rowIndex}`}\n className={DATA_TABLE_CLASSES.row}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? 'button' : undefined}\n >\n {columns.map((column, colIndex) => (\n <td \n key={`cell-${rowIndex}-${colIndex}`}\n className={DATA_TABLE_CLASSES.cell}\n >\n {column.render ? column.render(row[column.key], row) : row[column.key]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n };\n \n const renderPagination = () => {\n if (!paginated || totalPages <= 1) return null;\n \n return (\n <div className={DATA_TABLE_CLASSES.pagination}>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n showFirstLastButtons={true}\n showPrevNextButtons={true}\n size=\"sm\"\n ariaLabel=\"Data table pagination\"\n className=\"c-data-table__pagination\"\n />\n </div>\n );\n };\n \n const renderToolbar = () => {\n if (!filterable) return null;\n \n return (\n <div className={DATA_TABLE_CLASSES.toolbar}>\n <div className={DATA_TABLE_CLASSES.search}>\n <input\n type=\"text\"\n placeholder=\"Search...\"\n className={`${DATA_TABLE_CLASSES.searchInput} c-input`}\n onChange={(e) => handleSearch(e.target.value)}\n aria-label=\"Search table\"\n />\n </div>\n </div>\n );\n };\n \n return (\n <div className={DATA_TABLE_CLASSES.container} {...props}>\n {renderToolbar()}\n <div className={DATA_TABLE_CLASSES.tableWrapper}>\n <table \n ref={tableRef}\n className={tableClass}\n >\n {renderHeader()}\n {renderBody()}\n </table>\n </div>\n {renderPagination()}\n </div>\n );\n};\n\nexport default DataTable; ","/**\n * Get the name of a month by its index (0-11)\n */\nexport function getMonthName(month: number): string {\n const date = new Date();\n date.setMonth(month);\n \n return date.toLocaleString('default', { month: 'long' });\n}\n\n/**\n * Get the number of days in a month\n */\nexport function getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Get the day of the week of the first day of a month (0-6, where 0 is Sunday)\n */\nexport function getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\n/**\n * Format a date according to the specified format\n */\nexport function formatDate(date: Date, format: string): string {\n if (!date) return '';\n \n const day = date.getDate();\n const month = date.getMonth() + 1;\n const year = date.getFullYear();\n \n // Simple formatting for the most common patterns\n return format\n .replace('yyyy', year.toString())\n .replace('MM', month.toString().padStart(2, '0'))\n .replace('M', month.toString())\n .replace('dd', day.toString().padStart(2, '0'))\n .replace('d', day.toString());\n}\n\n/**\n * Format a date range for display\n */\nexport function formatDateRange(startDate: Date | null, endDate: Date | null, format: string): string {\n if (!startDate) return '';\n \n if (!endDate) {\n return `${formatDate(startDate, format)} - Select end date`;\n }\n \n return `${formatDate(startDate, format)} - ${formatDate(endDate, format)}`;\n}\n\n/**\n * Parse a date string according to the specified format\n */\nexport function parseDate(dateStr: string, format: string): Date | null {\n if (!dateStr) return null;\n \n // Simple parsing for common formats\n const normalized = format.toLowerCase();\n \n if (normalized === 'mm/dd/yyyy') {\n const parts = dateStr.split('/');\n if (parts.length !== 3) return null;\n \n const month = parseInt(parts[0], 10) - 1;\n const day = parseInt(parts[1], 10);\n const year = parseInt(parts[2], 10);\n \n if (isNaN(month) || isNaN(day) || isNaN(year)) return null;\n \n return new Date(year, month, day);\n }\n \n if (normalized === 'dd/mm/yyyy') {\n const parts = dateStr.split('/');\n if (parts.length !== 3) return null;\n \n const day = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const year = parseInt(parts[2], 10);\n \n if (isNaN(month) || isNaN(day) || isNaN(year)) return null;\n \n return new Date(year, month, day);\n }\n \n if (normalized === 'yyyy-mm-dd') {\n const parts = dateStr.split('-');\n if (parts.length !== 3) return null;\n \n const year = parseInt(parts[0], 10);\n const month = parseInt(parts[1], 10) - 1;\n const day = parseInt(parts[2], 10);\n \n if (isNaN(month) || isNaN(day) || isNaN(year)) return null;\n \n return new Date(year, month, day);\n }\n \n // Fallback to native parsing\n const parsedDate = new Date(dateStr);\n return isNaN(parsedDate.getTime()) ? null : parsedDate;\n}\n\n/**\n * Try to parse a date range string (e.g. \"01/01/2023 - 01/15/2023\")\n */\nexport function parseDateRange(rangeStr: string, format: string): { startDate: Date | null, endDate: Date | null } {\n if (!rangeStr) return { startDate: null, endDate: null };\n \n const parts = rangeStr.split('-');\n if (parts.length !== 2) return { startDate: null, endDate: null };\n \n const startDateStr = parts[0].trim();\n const endDateStr = parts[1].trim();\n \n const startDate = parseDate(startDateStr, format);\n const endDate = parseDate(endDateStr, format);\n \n return { startDate, endDate };\n}\n\n/**\n * Check if a date is within a min and max range\n */\nexport function isDateInRange(date: Date, minDate?: Date, maxDate?: Date): boolean {\n if (!date) return false;\n \n if (minDate && date < minDate) return false;\n if (maxDate && date > maxDate) return false;\n \n return true;\n}\n\n/**\n * Check if a date is between startDate and endDate (inclusive)\n */\nexport function isDateInSelectedRange(date: Date, startDate: Date | null, endDate: Date | null): boolean {\n if (!date || !startDate || !endDate) return false;\n \n // Handle case where end date is before start date\n if (endDate < startDate) {\n return date >= endDate && date <= startDate;\n }\n \n return date >= startDate && date <= endDate;\n}\n","import { useState, useRef, useCallback, useEffect } from 'react';\nimport { DatePickerViewMode, DatePickerSelectionMode, DateRange } from '../../components/DatePicker/types';\nimport { \n getMonthName, \n getDaysInMonth, \n getFirstDayOfMonth, \n formatDate, \n isDateInRange\n} from '../../components/DatePicker/utils';\n\ninterface UseDatePickerProps {\n /**\n * The currently selected date value\n */\n value?: Date | null;\n \n /**\n * Callback function when date is changed\n */\n onChange?: (date: Date | null) => void;\n \n /**\n * Selection mode - single date or date range\n */\n selectionMode?: DatePickerSelectionMode;\n \n /**\n * The start date of the range\n */\n startDate?: Date | null;\n \n /**\n * The end date of the range\n */\n endDate?: Date | null;\n \n /**\n * Callback function when date range is changed\n */\n onRangeChange?: (range: DateRange) => void;\n \n /**\n * Format for the date display\n */\n format?: string;\n \n /**\n * Minimum selectable date\n */\n minDate?: Date;\n \n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n \n /**\n * Whether the datepicker is in inline mode\n */\n inline?: boolean;\n}\n\ninterface DateObject {\n day: number;\n month: number;\n year: number;\n isCurrentMonth: boolean;\n}\n\ninterface MonthObject {\n month: number;\n name: string;\n}\n\nexport function useDatePicker({\n value,\n onChange,\n selectionMode = 'single',\n startDate,\n endDate,\n onRangeChange,\n format = 'MM/dd/yyyy',\n minDate,\n maxDate,\n inline = false\n}: UseDatePickerProps = {}) {\n const [isOpen, setIsOpen] = useState(inline);\n const [inputValue, setInputValue] = useState(value ? formatDate(value, format) : '');\n const [rangeInputValue, setRangeInputValue] = useState(\n startDate && endDate \n ? `${formatDate(startDate, format)} - ${formatDate(endDate, format)}`\n : startDate \n ? `${formatDate(startDate, format)} - Select end date` \n : ''\n );\n const [viewDate, setViewDate] = useState(value || startDate || new Date());\n const [viewMode, setViewMode] = useState<DatePickerViewMode>('days');\n const [rangeSelectionState, setRangeSelectionState] = useState<'start' | 'end'>(\n !startDate || (startDate && endDate) ? 'start' : 'end'\n );\n \n const datePickerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n \n const today = new Date();\n const currentMonth = viewDate.getMonth();\n const currentYear = viewDate.getFullYear();\n const daysInMonth = getDaysInMonth(currentYear, currentMonth);\n const firstDayOfMonth = getFirstDayOfMonth(currentYear, currentMonth);\n \n // Update input value when value or range dates change externally\n useEffect(() => {\n if (selectionMode === 'single') {\n setInputValue(value ? formatDate(value, format) : '');\n } else {\n setRangeInputValue(\n startDate && endDate \n ? `${formatDate(startDate, format)} - ${formatDate(endDate, format)}`\n : startDate \n ? `${formatDate(startDate, format)} - Select end date` \n : ''\n );\n setRangeSelectionState(!startDate || (startDate && endDate) ? 'start' : 'end');\n }\n }, [value, startDate, endDate, format, selectionMode]);\n \n // Handle date selection\n const handleDateSelect = useCallback((day: number) => {\n const selectedDate = new Date(currentYear, currentMonth, day);\n \n if (minDate && selectedDate < minDate) return;\n if (maxDate && selectedDate > maxDate) return;\n \n if (selectionMode === 'single') {\n if (onChange) {\n onChange(selectedDate);\n }\n \n setInputValue(formatDate(selectedDate, format));\n if (!inline) {\n setIsOpen(false);\n }\n } else {\n // Range selection mode\n if (rangeSelectionState === 'start') {\n // Selecting start date\n if (onRangeChange) {\n onRangeChange({\n startDate: selectedDate,\n endDate: null\n });\n }\n setRangeInputValue(`${formatDate(selectedDate, format)} - Select end date`);\n setRangeSelectionState('end');\n } else {\n // Selecting end date\n if (!startDate) return;\n \n // Make sure end date is after start date\n if (selectedDate < startDate) {\n if (onRangeChange) {\n onRangeChange({\n startDate: selectedDate,\n endDate: startDate\n });\n }\n setRangeInputValue(`${formatDate(selectedDate, format)} - ${formatDate(startDate, format)}`);\n } else {\n if (onRangeChange) {\n onRangeChange({\n startDate,\n endDate: selectedDate\n });\n }\n setRangeInputValue(`${formatDate(startDate, format)} - ${formatDate(selectedDate, format)}`);\n }\n \n if (!inline) {\n setIsOpen(false);\n }\n setRangeSelectionState('start');\n }\n }\n }, [\n currentYear, \n currentMonth, \n minDate, \n maxDate, \n onChange, \n onRangeChange, \n format, \n inline, \n selectionMode, \n rangeSelectionState, \n startDate\n ]);\n \n // Calendar navigation\n const handlePrevMonth = useCallback(() => {\n setViewDate(new Date(currentYear, currentMonth - 1, 1));\n }, [currentYear, currentMonth]);\n \n const handleNextMonth = useCallback(() => {\n setViewDate(new Date(currentYear, currentMonth + 1, 1));\n }, [currentYear, currentMonth]);\n \n const handlePrevYear = useCallback(() => {\n setViewDate(new Date(currentYear - 1, currentMonth, 1));\n }, [currentYear, currentMonth]);\n \n const handleNextYear = useCallback(() => {\n setViewDate(new Date(currentYear + 1, currentMonth, 1));\n }, [currentYear, currentMonth]);\n \n // Handle view mode changes\n const switchToMonthView = useCallback(() => {\n setViewMode('months');\n }, []);\n \n const switchToYearView = useCallback(() => {\n setViewMode('years');\n }, []);\n \n const selectMonth = useCallback((month: number) => {\n setViewDate(new Date(currentYear, month, 1));\n setViewMode('days');\n }, [currentYear]);\n \n const selectYear = useCallback((year: number) => {\n setViewDate(new Date(year, currentMonth, 1));\n setViewMode('months');\n }, [currentMonth]);\n \n // Handle today button click\n const handleTodayClick = useCallback(() => {\n const todayDate = new Date();\n setViewDate(todayDate);\n \n if (selectionMode === 'single') {\n handleDateSelect(todayDate.getDate());\n } else {\n // For range mode, just navigate to today\n setViewDate(new Date());\n }\n }, [handleDateSelect, selectionMode]);\n \n // Handle clear button click\n const handleClear = useCallback(() => {\n if (selectionMode === 'single') {\n setInputValue('');\n if (onChange) {\n onChange(null);\n }\n } else {\n setRangeInputValue('');\n setRangeSelectionState('start');\n if (onRangeChange) {\n onRangeChange({\n startDate: null,\n endDate: null\n });\n }\n }\n }, [onChange, onRangeChange, selectionMode]);\n \n // Handle input change\n const handleInputChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n if (selectionMode === 'single') {\n setInputValue(e.target.value);\n \n // Try to parse the date\n const parsedDate = new Date(e.target.value);\n if (!isNaN(parsedDate.getTime())) {\n if (onChange) {\n onChange(parsedDate);\n }\n setViewDate(parsedDate);\n }\n } else {\n setRangeInputValue(e.target.value);\n \n // Attempt to parse range input (not fully implemented - would need complex parsing)\n // This is a simplified implementation that would need improvement\n const parts = e.target.value.split('-');\n if (parts.length === 2) {\n const startPart = parts[0].trim();\n const endPart = parts[1].trim();\n \n const parsedStart = new Date(startPart);\n if (!isNaN(parsedStart.getTime())) {\n setViewDate(parsedStart);\n }\n \n // Attempt to parse both dates\n if (startPart && endPart) {\n const parsedStartDate = new Date(startPart);\n const parsedEndDate = new Date(endPart);\n \n if (!isNaN(parsedStartDate.getTime()) && !isNaN(parsedEndDate.getTime())) {\n if (onRangeChange) {\n onRangeChange({\n startDate: parsedStartDate,\n endDate: parsedEndDate\n });\n }\n }\n }\n }\n }\n }, [onChange, onRangeChange, selectionMode]);\n \n // Handle input focus\n const handleInputFocus = useCallback(() => {\n if (!inline) {\n setIsOpen(true);\n }\n }, [inline]);\n \n // Handle click outside\n const handleClickOutside = useCallback((event: MouseEvent) => {\n if (\n datePickerRef.current && \n !datePickerRef.current.contains(event.target as Node) &&\n inputRef.current &&\n !inputRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n }, []);\n \n // Add/remove event listeners\n useEffect(() => {\n if (isOpen && !inline) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n \n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, handleClickOutside, inline]);\n \n // Generate days for the calendar\n const generateDays = useCallback((): DateObject[] => {\n const days: DateObject[] = [];\n const prevMonthDays = getDaysInMonth(\n currentMonth === 0 ? currentYear - 1 : currentYear,\n currentMonth === 0 ? 11 : currentMonth - 1\n );\n \n // Add previous month's days\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n days.push({\n day: prevMonthDays - i,\n month: currentMonth === 0 ? 11 : currentMonth - 1,\n year: currentMonth === 0 ? currentYear - 1 : currentYear,\n isCurrentMonth: false\n });\n }\n \n // Add current month's days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({\n day: i,\n month: currentMonth,\n year: currentYear,\n isCurrentMonth: true\n });\n }\n \n // Add next month's days\n const remainingDays = 42 - days.length;\n for (let i = 1; i <= remainingDays; i++) {\n days.push({\n day: i,\n month: currentMonth === 11 ? 0 : currentMonth + 1,\n year: currentMonth === 11 ? currentYear + 1 : currentYear,\n isCurrentMonth: false\n });\n }\n \n return days;\n }, [daysInMonth, firstDayOfMonth, currentMonth, currentYear]);\n \n // Generate months for month picker\n const generateMonths = useCallback((): MonthObject[] => {\n const months: MonthObject[] = [];\n for (let i = 0; i < 12; i++) {\n months.push({\n month: i,\n name: getMonthName(i)\n });\n }\n return months;\n }, []);\n \n // Generate years for year picker\n const generateYears = useCallback((): number[] => {\n const years: number[] = [];\n const startYear = currentYear - 6;\n for (let i = 0; i < 12; i++) {\n years.push(startYear + i);\n }\n return years;\n }, [currentYear]);\n \n // Check if a date is selectable\n const isDateSelectable = useCallback((year: number, month: number, day: number): boolean => {\n const date = new Date(year, month, day);\n return isDateInRange(date, minDate, maxDate);\n }, [minDate, maxDate]);\n \n // Check if a date is selected\n const isDateSelected = useCallback((year: number, month: number, day: number): boolean => {\n if (selectionMode === 'single') {\n if (!value) return false;\n \n return (\n value.getFullYear() === year &&\n value.getMonth() === month &&\n value.getDate() === day\n );\n } else {\n if (!startDate && !endDate) return false;\n \n const date = new Date(year, month, day);\n \n if (startDate && !endDate) {\n return (\n startDate.getFullYear() === year &&\n startDate.getMonth() === month &&\n startDate.getDate() === day\n );\n }\n \n if (startDate && endDate) {\n // Return true if the date is the start date or end date\n const isStartDate = (\n startDate.getFullYear() === year &&\n startDate.getMonth() === month &&\n startDate.getDate() === day\n );\n \n const isEndDate = (\n endDate.getFullYear() === year &&\n endDate.getMonth() === month &&\n endDate.getDate() === day\n );\n \n return isStartDate || isEndDate;\n }\n \n return false;\n }\n }, [value, selectionMode, startDate, endDate]);\n \n // Check if a date is in range (between startDate and endDate)\n const isDateInSelectedRange = useCallback((year: number, month: number, day: number): boolean => {\n if (selectionMode !== 'range' || !startDate || !endDate) return false;\n \n const date = new Date(year, month, day);\n return date > startDate && date < endDate;\n }, [selectionMode, startDate, endDate]);\n \n // Check if a date is today\n const isToday = useCallback((year: number, month: number, day: number): boolean => {\n return (\n today.getFullYear() === year &&\n today.getMonth() === month &&\n today.getDate() === day\n );\n }, [today]);\n \n // Calculate week number for a date\n const getWeekNumber = useCallback((date: Date): number => {\n const target = new Date(date.valueOf());\n const dayNr = (date.getDay() + 6) % 7;\n target.setDate(target.getDate() - dayNr + 3);\n const firstThursday = target.valueOf();\n target.setMonth(0, 1);\n if (target.getDay() !== 4) {\n target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);\n }\n return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000);\n }, []);\n \n return {\n // State\n isOpen,\n inputValue,\n rangeInputValue,\n viewDate,\n viewMode,\n currentMonth,\n currentYear,\n selectionMode,\n rangeSelectionState,\n \n // Refs\n datePickerRef,\n inputRef,\n \n // Range state\n startDate,\n endDate,\n \n // Action handlers\n setIsOpen,\n handleDateSelect,\n handlePrevMonth,\n handleNextMonth,\n handlePrevYear,\n handleNextYear,\n handleTodayClick,\n handleClear,\n handleInputChange,\n handleInputFocus,\n \n // View mode handlers\n switchToMonthView,\n switchToYearView,\n selectMonth,\n selectYear,\n \n // Data generators\n generateDays,\n generateMonths,\n generateYears,\n \n // State checkers\n isDateSelectable,\n isDateSelected,\n isDateInSelectedRange,\n isToday,\n getWeekNumber,\n };\n} ","import React, { forwardRef, useImperativeHandle } from 'react';\nimport { DatePickerProps, DatePickerRef } from './types';\nimport { useDatePicker } from '../../lib/composables/useDatePicker';\nimport { formatDate } from './utils';\nimport Icon from '../Icon';\n\n/**\n * DatePicker component for selecting dates from a calendar interface.\n * Supports various display modes, date ranges, and customization options.\n */\nconst DatePicker = forwardRef<DatePickerRef, DatePickerProps>(({\n value,\n onChange,\n selectionMode = 'single',\n startDate,\n endDate,\n onRangeChange,\n format = 'MM/dd/yyyy',\n minDate,\n maxDate,\n placeholder = 'Select date...',\n disabled = false,\n readOnly = false,\n clearable = true,\n showTodayButton = true,\n showWeekNumbers = false,\n inline = false,\n id,\n name,\n className = '',\n placement = 'bottom-start',\n inputClassName = '',\n size = 'md',\n ...props\n}, ref) => {\n const {\n // State\n isOpen,\n inputValue,\n rangeInputValue,\n viewMode,\n currentMonth,\n currentYear,\n selectionMode: activeSelectionMode,\n rangeSelectionState,\n \n // Refs\n datePickerRef,\n inputRef,\n \n // Range state\n startDate: rangeStartDate,\n endDate: rangeEndDate,\n \n // Action handlers\n setIsOpen,\n handleDateSelect,\n handlePrevMonth,\n handleNextMonth,\n handlePrevYear,\n handleNextYear,\n handleTodayClick,\n handleClear,\n handleInputChange,\n handleInputFocus,\n \n // View mode handlers\n switchToMonthView,\n switchToYearView,\n selectMonth,\n selectYear,\n \n // Data generators\n generateDays,\n generateMonths,\n generateYears,\n \n // State checkers\n isDateSelectable,\n isDateSelected,\n isDateInSelectedRange,\n isToday,\n getWeekNumber,\n } = useDatePicker({\n value,\n onChange,\n selectionMode,\n startDate,\n endDate,\n onRangeChange,\n format,\n minDate,\n maxDate,\n inline\n });\n \n // Expose the ref API\n useImperativeHandle(ref, () => ({\n open: () => setIsOpen(true),\n close: () => setIsOpen(false),\n clear: handleClear,\n focus: () => inputRef.current?.focus()\n }));\n \n // Prepare class names\n const datepickerClassName = `c-datepicker ${className} ${inline ? 'c-datepicker--inline' : ''}`.trim();\n const inputClasses = `c-datepicker__input c-input c-input--${size} ${inputClassName}`.trim();\n \n // Create unique ID for accessibility\n const datepickerId = id || `datepicker-${Math.random().toString(36).substring(2, 9)}`;\n const calendarId = `${datepickerId}-calendar`;\n \n // Get the appropriate input value based on selection mode\n const displayValue = selectionMode === 'single' ? inputValue : rangeInputValue;\n \n // Helper function to get placeholder based on selection mode\n const getPlaceholder = () => {\n if (selectionMode === 'single') {\n return placeholder;\n } else {\n return rangeSelectionState === 'start' \n ? 'Select start date...' \n : (rangeStartDate ? `${formatDate(rangeStartDate, format)} - Select end date...` : 'Select date range...');\n }\n };\n \n return (\n <div className={datepickerClassName} ref={datePickerRef} {...props}>\n {!inline && (\n <div className=\"c-datepicker__input-wrapper\">\n <input\n id={datepickerId}\n name={name}\n ref={inputRef}\n type=\"text\"\n className={inputClasses}\n placeholder={getPlaceholder()}\n value={displayValue}\n onChange={handleInputChange}\n onFocus={handleInputFocus}\n disabled={disabled}\n readOnly={readOnly}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={calendarId}\n />\n {clearable && displayValue && (\n <button\n type=\"button\"\n className=\"c-datepicker__clear-button\"\n onClick={handleClear}\n aria-label=\"Clear date\"\n >\n <Icon name=\"X\" size=\"sm\" />\n </button>\n )}\n <span className=\"c-datepicker__calendar-icon\" aria-hidden=\"true\">\n <Icon name=\"Calendar\" size=\"sm\" color=\"var(--atomix-secondary-text-emphasis)\" />\n </span>\n </div>\n )}\n \n {(isOpen || inline) && (\n <div \n id={calendarId}\n className={`c-datepicker__calendar c-datepicker__calendar--${placement}`}\n role=\"dialog\"\n aria-modal={!inline ? \"true\" : undefined}\n aria-label=\"Date picker\"\n >\n \n \n <div className=\"c-datepicker__header\">\n {viewMode === 'days' && (\n <>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--prev-year\"\n onClick={handlePrevYear}\n aria-label=\"Previous year\"\n >\n <Icon name=\"CaretDoubleLeft\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--prev-month\"\n onClick={handlePrevMonth}\n aria-label=\"Previous month\"\n >\n <Icon name=\"CaretLeft\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__view-switch\"\n onClick={switchToMonthView}\n aria-label=\"Switch to month view\"\n >\n {`${currentMonth + 1}/${currentYear}`}\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--next-month\"\n onClick={handleNextMonth}\n aria-label=\"Next month\"\n >\n <Icon name=\"CaretRight\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--next-year\"\n onClick={handleNextYear}\n aria-label=\"Next year\"\n >\n <Icon name=\"CaretDoubleRight\" size=\"sm\" />\n </button>\n </>\n )}\n \n {viewMode === 'months' && (\n <>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--prev-year\"\n onClick={handlePrevYear}\n aria-label=\"Previous year\"\n >\n <Icon name=\"CaretLeft\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__view-switch\"\n onClick={switchToYearView}\n aria-label=\"Switch to year view\"\n >\n {currentYear}\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--next-year\"\n onClick={handleNextYear}\n aria-label=\"Next year\"\n >\n <Icon name=\"CaretRight\" size=\"sm\" />\n </button>\n </>\n )}\n \n {viewMode === 'years' && (\n <>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--prev-year\"\n onClick={() => handlePrevYear()}\n aria-label=\"Previous year range\"\n >\n <Icon name=\"CaretLeft\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__view-switch\"\n aria-label=\"Current year range\"\n >\n {currentYear - 6} - {currentYear + 5}\n </button>\n <button\n type=\"button\"\n className=\"c-datepicker__nav-button c-datepicker__nav-button--next-year\"\n onClick={() => handleNextYear()}\n aria-label=\"Next year range\"\n >\n <Icon name=\"CaretRight\" size=\"sm\" />\n </button>\n </>\n )}\n </div>\n \n <div className=\"c-datepicker__body\">\n {viewMode === 'days' && (\n <>\n <div className=\"c-datepicker__weekdays\" role=\"row\">\n {showWeekNumbers && <div className=\"c-datepicker__weekday c-datepicker__weeknumber\" role=\"columnheader\">#</div>}\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Su</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Mo</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Tu</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">We</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Th</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Fr</div>\n <div className=\"c-datepicker__weekday\" role=\"columnheader\">Sa</div>\n </div>\n \n <div \n className=\"c-datepicker__days\" \n role=\"grid\"\n aria-labelledby={`${datepickerId}-month-year`}\n >\n {generateDays().map((dateObj, index) => {\n const isSelectable = isDateSelectable(dateObj.year, dateObj.month, dateObj.day);\n const isSelected = isDateSelected(dateObj.year, dateObj.month, dateObj.day);\n const isTodayDate = isToday(dateObj.year, dateObj.month, dateObj.day);\n const dateValue = new Date(dateObj.year, dateObj.month, dateObj.day);\n \n // Check if date is in range (for range selection)\n const isInRange = isDateInSelectedRange(dateObj.year, dateObj.month, dateObj.day);\n \n // Determine if the day is start or end of range\n const isStartOfRange = selectionMode === 'range' && startDate && \n dateObj.day === startDate.getDate() && \n dateObj.month === startDate.getMonth() && \n dateObj.year === startDate.getFullYear();\n \n const isEndOfRange = selectionMode === 'range' && endDate && \n dateObj.day === endDate.getDate() && \n dateObj.month === endDate.getMonth() && \n dateObj.year === endDate.getFullYear();\n \n // Add week number if enabled\n if (showWeekNumbers && index % 7 === 0) {\n const weekNum = getWeekNumber(dateValue);\n \n return (\n <React.Fragment key={`week-${index}`}>\n <div \n className=\"c-datepicker__weeknumber\"\n aria-label={`Week ${weekNum}`}\n >\n {weekNum}\n </div>\n <button\n type=\"button\"\n className={`c-datepicker__day \n ${!dateObj.isCurrentMonth ? 'c-datepicker__day--outside' : ''} \n ${isSelected ? 'c-datepicker__day--selected' : ''} \n ${isStartOfRange ? 'c-datepicker__day--start-range' : ''}\n ${isEndOfRange ? 'c-datepicker__day--end-range' : ''}\n ${isInRange ? 'c-datepicker__day--in-range' : ''}\n ${isTodayDate ? 'c-datepicker__day--today' : ''} \n ${!isSelectable ? 'c-datepicker__day--disabled' : ''}`}\n onClick={() => isSelectable && handleDateSelect(dateObj.day)}\n disabled={!isSelectable}\n tabIndex={dateObj.isCurrentMonth ? 0 : -1}\n aria-label={dateValue.toLocaleDateString()}\n aria-selected={isSelected ? 'true' : 'false'}\n role=\"gridcell\"\n >\n {dateObj.day}\n </button>\n </React.Fragment>\n );\n }\n \n return (\n <button\n key={`day-${index}`}\n type=\"button\"\n className={`c-datepicker__day \n ${!dateObj.isCurrentMonth ? 'c-datepicker__day--outside' : ''} \n ${isSelected ? 'c-datepicker__day--selected' : ''} \n ${isStartOfRange ? 'c-datepicker__day--start-range' : ''}\n ${isEndOfRange ? 'c-datepicker__day--end-range' : ''}\n ${isInRange ? 'c-datepicker__day--in-range' : ''}\n ${isTodayDate ? 'c-datepicker__day--today' : ''} \n ${!isSelectable ? 'c-datepicker__day--disabled' : ''}`}\n onClick={() => isSelectable && handleDateSelect(dateObj.day)}\n disabled={!isSelectable}\n tabIndex={dateObj.isCurrentMonth ? 0 : -1}\n aria-label={dateValue.toLocaleDateString()}\n aria-selected={isSelected ? 'true' : 'false'}\n role=\"gridcell\"\n >\n {dateObj.day}\n </button>\n );\n })}\n </div>\n </>\n )}\n \n {viewMode === 'months' && (\n <div className=\"c-datepicker__months\" role=\"grid\">\n {generateMonths().map((monthObj, index) => {\n const isSelected = value && value.getMonth() === monthObj.month && value.getFullYear() === currentYear;\n \n return (\n <button\n key={`month-${index}`}\n type=\"button\"\n className={`c-datepicker__month ${isSelected ? 'c-datepicker__month--selected' : ''}`}\n onClick={() => selectMonth(monthObj.month)}\n aria-selected={isSelected ? 'true' : 'false'}\n role=\"gridcell\"\n >\n {monthObj.name.substring(0, 3)}\n </button>\n );\n })}\n </div>\n )}\n \n {viewMode === 'years' && (\n <div className=\"c-datepicker__years\" role=\"grid\">\n {generateYears().map((year, index) => {\n const isSelected = value && value.getFullYear() === year;\n \n return (\n <button\n key={`year-${index}`}\n type=\"button\"\n className={`c-datepicker__year ${isSelected ? 'c-datepicker__year--selected' : ''}`}\n onClick={() => selectYear(year)}\n aria-selected={isSelected ? 'true' : 'false'}\n role=\"gridcell\"\n >\n {year}\n </button>\n );\n })}\n </div>\n )}\n </div>\n \n {viewMode === 'days' && (\n <div className=\"c-datepicker__footer\">\n {selectionMode === 'range' && (\n <div className=\"c-datepicker__range-status c-badge c-badge--sm c-badge--info u-w-100\">\n Selecting {rangeSelectionState === 'start' ? 'start' : 'end'} date\n </div>\n )}\n\n {showTodayButton && (\n <button\n type=\"button\"\n className=\"c-datepicker__today-button c-btn c-btn--sm c-btn--outline-primary\"\n onClick={handleTodayClick}\n aria-label=\"Go to today\"\n >\n Today\n </button>\n )} \n \n {!inline && (\n <button\n type=\"button\"\n className=\"c-datepicker__close-button c-btn c-btn--sm c-btn--outline-error\"\n onClick={() => setIsOpen(false)}\n aria-label=\"Close calendar\"\n >\n Close\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import React, { useRef, useState, useCallback, createContext, useContext, useEffect } from 'react';\nimport { DROPDOWN } from '../../lib/constants/components';\nimport type { \n DropdownProps, \n DropdownItemProps, \n DropdownDividerProps, \n DropdownHeaderProps \n} from '../../lib/types/components';\n\n// Context type definition\ntype DropdownContextType = {\n isOpen: boolean;\n close: () => void;\n id: string;\n trigger: string;\n};\n\n// Create context for dropdown state management\nconst DropdownContext = createContext<DropdownContextType>({\n isOpen: false,\n close: () => {},\n id: '',\n trigger: 'click'\n});\n\n/**\n * DropdownItem component for menu items\n */\nexport const DropdownItem: React.FC<DropdownItemProps> = ({\n children,\n href,\n active = false,\n disabled = false,\n icon,\n onClick,\n className = '',\n ...props\n}) => {\n const { close } = useContext(DropdownContext);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (onClick) {\n onClick(e);\n }\n\n // Always close the dropdown when an item is clicked\n close();\n };\n\n const itemClasses = [\n 'c-dropdown__menu-item',\n active ? 'is-active' : '',\n disabled ? 'is-disabled' : '',\n className\n ].filter(Boolean).join(' ');\n\n if (href && !disabled) {\n return (\n <li>\n <a \n href={href} \n className={itemClasses}\n onClick={handleClick}\n role=\"menuitem\"\n tabIndex={0}\n {...props}\n >\n {icon && <span className=\"c-dropdown__menu-item-icon\">{icon}</span>}\n {children}\n </a>\n </li>\n );\n }\n\n return (\n <li>\n <button \n type=\"button\"\n className={itemClasses}\n onClick={handleClick}\n disabled={disabled}\n role=\"menuitem\"\n tabIndex={0}\n {...props}\n >\n {icon && <span className=\"c-dropdown__menu-item-icon\">{icon}</span>}\n {children}\n </button>\n </li>\n );\n};\n\n/**\n * DropdownDivider component for separating groups of items\n */\nexport const DropdownDivider: React.FC<DropdownDividerProps> = ({ className = '' }) => {\n return <li className={`c-dropdown__divider ${className}`} role=\"separator\" />;\n};\n\n/**\n * DropdownHeader component for section headers\n */\nexport const DropdownHeader: React.FC<DropdownHeaderProps> = ({ children, className = '' }) => {\n return (\n <li className={`c-dropdown__header ${className}`}>\n {children}\n </li>\n );\n};\n\n/**\n * Dropdown component for creating dropdown menus\n */\nexport const Dropdown: React.FC<DropdownProps> = ({\n children, \n menu,\n placement = 'bottom-start',\n trigger = 'click', \n offset = DROPDOWN.DEFAULTS.OFFSET,\n isOpen: controlledIsOpen,\n onOpenChange,\n closeOnClickOutside = true,\n closeOnEscape = true,\n maxHeight,\n minWidth = DROPDOWN.DEFAULTS.MIN_WIDTH,\n variant,\n className = '',\n ...props\n}) => {\n // Set up controlled vs uncontrolled state\n const [uncontrolledIsOpen, setUncontrolledIsOpen] = useState(false);\n const isControlled = controlledIsOpen !== undefined;\n const isOpen = isControlled ? controlledIsOpen : uncontrolledIsOpen;\n \n // Create refs\n const dropdownRef = useRef<HTMLDivElement>(null);\n const toggleRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n \n // Generate unique ID\n const dropdownId = useRef(`dropdown-${Math.random().toString(36).substring(2, 9)}`).current;\n \n // State change handlers\n const setIsOpen = useCallback((nextIsOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledIsOpen(nextIsOpen);\n }\n if (onOpenChange) {\n onOpenChange(nextIsOpen);\n }\n }, [isControlled, onOpenChange]);\n \n const toggle = useCallback(() => setIsOpen(!isOpen), [isOpen, setIsOpen]);\n \n const close = useCallback(() => {\n setIsOpen(false);\n // Return focus to the toggle button after closing\n setTimeout(() => {\n toggleRef.current?.focus();\n }, 0);\n }, [setIsOpen]);\n \n // Click outside handler\n useEffect(() => {\n if (!isOpen || !closeOnClickOutside) return;\n \n const handleClickOutside = (e: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n close();\n }\n };\n \n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, closeOnClickOutside, close]);\n \n // Escape key handler\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n close();\n }\n };\n \n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, closeOnEscape, close]);\n \n // Keyboard navigation\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (!menuRef.current) return;\n \n const focusableItems = menuRef.current.querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([disabled])');\n if (!focusableItems.length) return;\n \n const currentIndex = Array.from(focusableItems).findIndex(item => item === document.activeElement);\n \n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (currentIndex < focusableItems.length - 1) {\n focusableItems[currentIndex + 1].focus();\n } else {\n focusableItems[0].focus();\n }\n break;\n \n case 'ArrowUp':\n e.preventDefault();\n if (currentIndex > 0) {\n focusableItems[currentIndex - 1].focus();\n } else {\n focusableItems[focusableItems.length - 1].focus();\n }\n break;\n \n case 'Home':\n e.preventDefault();\n focusableItems[0].focus();\n break;\n \n case 'End':\n e.preventDefault();\n focusableItems[focusableItems.length - 1].focus();\n break;\n }\n }, []);\n \n // Event handlers\n const handleToggleClick = useCallback((e: React.MouseEvent) => {\n if (trigger === 'click') {\n e.preventDefault();\n e.stopPropagation();\n toggle();\n }\n }, [trigger, toggle]);\n \n const handleToggleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if ((e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') && !isOpen) {\n e.preventDefault();\n setIsOpen(true);\n \n // Only focus the first menu item when using keyboard navigation\n if (e.key === 'ArrowDown' && menuRef.current) {\n setTimeout(() => {\n const firstItem = menuRef.current?.querySelector<HTMLElement>('[role=\"menuitem\"]');\n firstItem?.focus();\n }, 100);\n }\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault();\n close();\n }\n }, [isOpen, setIsOpen, close]);\n \n // Hover handlers for trigger=\"hover\"\n const handleHoverOpen = useCallback(() => {\n if (trigger === 'hover') {\n setIsOpen(true);\n }\n }, [trigger, setIsOpen]);\n \n // Build class names\n const dropdownClasses = [\n 'c-dropdown',\n trigger === 'click' ? 'c-dropdown--onclick' : '',\n variant ? `c-dropdown--${variant}` : '',\n isOpen ? 'is-open' : '',\n className\n ].filter(Boolean).join(' ');\n \n // Menu styles\n const menuStyleProps: React.CSSProperties = {};\n if (maxHeight) menuStyleProps.maxHeight = maxHeight;\n if (minWidth !== undefined) {\n menuStyleProps.minWidth = typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\n }\n\n return (\n <div \n ref={dropdownRef} \n className={dropdownClasses}\n onMouseEnter={trigger === 'hover' ? handleHoverOpen : undefined}\n {...props}\n >\n <div \n ref={toggleRef}\n className=\"c-dropdown__toggle\"\n onClick={handleToggleClick}\n onKeyDown={handleToggleKeyDown}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={dropdownId}\n tabIndex={0}\n >\n {children}\n </div>\n \n <div \n ref={menuRef}\n id={dropdownId}\n className={`c-dropdown__menu-wrapper c-dropdown__menu-wrapper--${placement} ${isOpen ? 'is-open' : ''}`}\n role=\"menu\"\n aria-orientation=\"vertical\"\n aria-hidden={!isOpen}\n onKeyDown={handleKeyDown}\n >\n <div className=\"c-dropdown__menu-inner\" style={menuStyleProps}>\n <DropdownContext.Provider value={{ isOpen, close, id: dropdownId, trigger }}>\n <ul className=\"c-dropdown__menu\">\n {menu}\n </ul>\n </DropdownContext.Provider>\n </div>\n </div>\n </div>\n );\n}; \n","import { DROPDOWN } from '../../../lib/constants/components';\nimport {\n DropdownPosition,\n DropdownTrigger,\n DropdownOptions,\n TimerRef\n} from './componentInteractions';\n\n/**\n * Class representing a Dropdown component\n */\nclass Dropdown {\n private element: HTMLElement;\n private trigger: HTMLElement | null;\n private menuWrapper: HTMLElement | null;\n private menuInner: HTMLElement | null;\n private menu: HTMLElement | null;\n private options: Required<DropdownOptions>;\n private isOpen: boolean;\n private timeoutRef: { current: number | null };\n private animating: boolean;\n\n /**\n * Creates an instance of Dropdown\n * @param element - The dropdown element\n * @param options - Configuration options\n */\n constructor(element: HTMLElement, options: DropdownOptions = {}) {\n this.element = element;\n this.trigger = null;\n this.menuWrapper = null;\n this.menuInner = null;\n this.menu = null;\n this.isOpen = false;\n this.timeoutRef = { current: null };\n this.animating = false;\n \n // Set default options\n this.options = {\n placement: options.placement || DROPDOWN.DEFAULTS.PLACEMENT as DropdownPosition,\n trigger: options.trigger || DROPDOWN.DEFAULTS.TRIGGER as DropdownTrigger,\n offset: options.offset !== undefined ? options.offset : DROPDOWN.DEFAULTS.OFFSET,\n closeOnClickOutside: options.closeOnClickOutside !== undefined ? options.closeOnClickOutside : true,\n closeOnEscape: options.closeOnEscape !== undefined ? options.closeOnEscape : true,\n minWidth: options.minWidth?.toString() || DROPDOWN.DEFAULTS.MIN_WIDTH.toString(),\n maxHeight: options.maxHeight || ''\n };\n\n this._initialize();\n }\n\n /**\n * Initialize the dropdown component\n */\n private _initialize(): void {\n // Generate unique ID if not already set\n const id = this.element.id || `dropdown-${Math.random().toString(36).substring(2, 9)}`;\n this.element.id = id;\n \n // Add proper CSS class based on trigger type\n if (this.options.trigger === 'click') {\n this.element.classList.add('c-dropdown--onclick');\n } else {\n this.element.classList.remove('c-dropdown--onclick');\n }\n \n // Find trigger element\n this.trigger = this.element.querySelector('.c-dropdown__trigger') || \n this.element.querySelector('.c-dropdown__toggle');\n \n // Find or create menu structure\n this._setupMenuStructure(id);\n \n // Setup ARIA attributes\n this._setupAriaAttributes(id);\n \n // Apply styles to menu\n this._applyStyles();\n \n // Bind events\n this._bindEvents();\n }\n \n /**\n * Set up menu structure\n */\n private _setupMenuStructure(id: string): void {\n this.menuWrapper = this.element.querySelector('.c-dropdown__menu-wrapper');\n \n if (!this.menuWrapper) {\n // Create menu wrapper \n this.menuWrapper = document.createElement('div');\n this.menuWrapper.className = 'c-dropdown__menu-wrapper';\n this.menuWrapper.classList.add(`c-dropdown__menu-wrapper--${this.options.placement}`);\n \n // Create inner wrapper\n this.menuInner = document.createElement('div');\n this.menuInner.className = 'c-dropdown__menu-inner';\n \n // Handle existing menu or create new one\n const existingMenu = this.element.querySelector('.c-dropdown__menu');\n \n if (existingMenu) {\n this.menu = existingMenu as HTMLElement;\n this.menuInner.appendChild(existingMenu);\n } else {\n this.menu = document.createElement('ul');\n this.menu.className = 'c-dropdown__menu';\n this.menuInner.appendChild(this.menu);\n }\n \n this.menuWrapper.appendChild(this.menuInner);\n this.element.appendChild(this.menuWrapper);\n } else {\n // Find existing menu elements\n this.menuInner = this.menuWrapper.querySelector('.c-dropdown__menu-inner');\n this.menu = this.menuWrapper.querySelector('.c-dropdown__menu');\n \n if (!this.menuInner) {\n this.menuInner = document.createElement('div');\n this.menuInner.className = 'c-dropdown__menu-inner';\n \n if (this.menu) {\n this.menuInner.appendChild(this.menu);\n } else {\n this.menu = document.createElement('ul');\n this.menu.className = 'c-dropdown__menu';\n this.menuInner.appendChild(this.menu);\n }\n \n this.menuWrapper.appendChild(this.menuInner);\n } else if (!this.menu) {\n this.menu = document.createElement('ul');\n this.menu.className = 'c-dropdown__menu';\n this.menuInner.appendChild(this.menu);\n }\n }\n \n // Add proper role to menu items\n if (this.menu) {\n const menuItems = this.menu.querySelectorAll('button, a');\n menuItems.forEach(item => {\n if (!item.getAttribute('role')) {\n item.setAttribute('role', 'menuitem');\n }\n \n if (!item.getAttribute('tabindex')) {\n item.setAttribute('tabindex', '0');\n }\n \n // Add proper class if missing\n if (!item.classList.contains('c-dropdown__menu-item')) {\n item.classList.add('c-dropdown__menu-item');\n }\n });\n }\n }\n \n /**\n * Setup ARIA attributes \n */\n private _setupAriaAttributes(id: string): void {\n if (this.trigger) {\n this.trigger.setAttribute('aria-haspopup', 'menu');\n this.trigger.setAttribute('aria-expanded', 'false');\n this.trigger.setAttribute('aria-controls', id);\n this.trigger.setAttribute('tabindex', '0');\n }\n \n if (this.menuWrapper) {\n this.menuWrapper.setAttribute('role', 'menu');\n this.menuWrapper.setAttribute('aria-orientation', 'vertical');\n this.menuWrapper.setAttribute('aria-hidden', 'true');\n this.menuWrapper.id = id;\n }\n }\n \n /**\n * Apply styles to menu\n */\n private _applyStyles(): void {\n if (!this.menuInner) return;\n \n // Apply minWidth\n if (this.options.minWidth) {\n const minWidthStr = String(this.options.minWidth);\n this.menuInner.style.minWidth = minWidthStr.includes('px') \n ? minWidthStr \n : `${minWidthStr}px`;\n }\n \n // Apply maxHeight\n if (this.options.maxHeight) {\n this.menuInner.style.maxHeight = this.options.maxHeight.includes('px')\n ? this.options.maxHeight\n : `${this.options.maxHeight}px`;\n \n this.menuInner.style.overflowY = 'auto';\n }\n }\n \n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.trigger) return;\n \n // Click or hover events based on trigger type\n if (this.options.trigger === 'click') {\n this.trigger.addEventListener('click', this._handleTriggerClick);\n \n if (this.options.closeOnClickOutside) {\n document.addEventListener('click', this._handleDocumentClick);\n }\n } else if (this.options.trigger === 'hover') {\n this.trigger.addEventListener('mouseenter', this._handleTriggerMouseEnter);\n this.trigger.addEventListener('mouseleave', this._handleTriggerMouseLeave);\n \n if (this.menuWrapper) {\n this.menuWrapper.addEventListener('mouseenter', this._handleMenuMouseEnter);\n this.menuWrapper.addEventListener('mouseleave', this._handleMenuMouseLeave);\n }\n }\n \n // Keyboard event handlers\n this.trigger.addEventListener('keydown', this._handleTriggerKeyDown);\n \n if (this.options.closeOnEscape) {\n document.addEventListener('keydown', this._handleEscapeKey);\n }\n \n if (this.menuWrapper) {\n this.menuWrapper.addEventListener('keydown', this._handleMenuKeyDown);\n this.menuWrapper.addEventListener('animationend', this._handleAnimationEnd);\n }\n }\n\n /**\n * Handle animation end events\n */\n private _handleAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === this.menuWrapper) {\n this.animating = false;\n \n if (!this.isOpen && this.menuWrapper) {\n this.menuWrapper.setAttribute('aria-hidden', 'true');\n }\n }\n }\n\n /**\n * Handle click on trigger\n */\n private _handleTriggerClick = (event: Event): void => {\n event.preventDefault();\n event.stopPropagation();\n \n this.toggle();\n }\n \n /**\n * Handle keydown on trigger\n */\n private _handleTriggerKeyDown = (event: KeyboardEvent): void => {\n if ((event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') && !this.isOpen) {\n event.preventDefault();\n this.open();\n } else if (event.key === 'Escape' && this.isOpen) {\n event.preventDefault();\n this.close();\n }\n }\n\n /**\n * Handle document click\n */\n private _handleDocumentClick = (event: MouseEvent): void => {\n if (!this.isOpen) return;\n \n const target = event.target as Node;\n \n if (this.element && !this.element.contains(target)) {\n this.close();\n }\n }\n\n /**\n * Handle mouseenter on trigger\n */\n private _handleTriggerMouseEnter = (): void => {\n if (this.timeoutRef.current !== null) {\n window.clearTimeout(this.timeoutRef.current);\n this.timeoutRef.current = null;\n }\n \n this.open();\n }\n\n /**\n * Handle mouseleave on trigger\n */\n private _handleTriggerMouseLeave = (): void => {\n if (!this.menuWrapper) return;\n \n this.timeoutRef.current = window.setTimeout(() => {\n if (!this.menuWrapper?.matches(':hover')) {\n this.close();\n }\n this.timeoutRef.current = null;\n }, 150);\n }\n \n /**\n * Handle mouseenter on menu\n */\n private _handleMenuMouseEnter = (): void => {\n if (this.timeoutRef.current !== null) {\n window.clearTimeout(this.timeoutRef.current);\n this.timeoutRef.current = null;\n }\n }\n \n /**\n * Handle mouseleave on menu\n */\n private _handleMenuMouseLeave = (): void => {\n if (this.options.trigger === 'hover') {\n this.close();\n }\n }\n\n /**\n * Handle escape key\n */\n private _handleEscapeKey = (event: KeyboardEvent): void => {\n if (this.isOpen && event.key === 'Escape') {\n event.preventDefault();\n this.close();\n this.trigger?.focus();\n }\n }\n \n /**\n * Handle keyboard navigation\n */\n private _handleMenuKeyDown = (event: KeyboardEvent): void => {\n if (!this.menuWrapper || !this.isOpen) return;\n \n const focusableItems = Array.from(\n this.menuWrapper.querySelectorAll<HTMLElement>('[role=\"menuitem\"]:not([disabled])')\n );\n \n if (!focusableItems.length) return;\n \n const currentIndex = focusableItems.findIndex(item => item === document.activeElement);\n \n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (currentIndex < focusableItems.length - 1) {\n focusableItems[currentIndex + 1].focus();\n } else {\n focusableItems[0].focus();\n }\n break;\n \n case 'ArrowUp':\n event.preventDefault();\n if (currentIndex > 0) {\n focusableItems[currentIndex - 1].focus();\n } else {\n focusableItems[focusableItems.length - 1].focus();\n }\n break;\n \n case 'Home':\n event.preventDefault();\n focusableItems[0].focus();\n break;\n \n case 'End':\n event.preventDefault();\n focusableItems[focusableItems.length - 1].focus();\n break;\n }\n }\n\n /**\n * Focus the first menu item\n */\n private _focusFirstMenuItem(): void {\n if (!this.menuWrapper) return;\n \n const firstItem = this.menuWrapper.querySelector<HTMLElement>('[role=\"menuitem\"]');\n \n if (firstItem) {\n requestAnimationFrame(() => {\n firstItem.focus();\n });\n }\n }\n\n /**\n * Open the dropdown\n */\n public open(): void {\n if (this.isOpen) return;\n \n this.isOpen = true;\n this.animating = true;\n \n if (this.trigger) {\n this.trigger.setAttribute('aria-expanded', 'true');\n }\n \n if (this.menuWrapper) {\n this.menuWrapper.setAttribute('aria-hidden', 'false');\n this.menuWrapper.classList.add('is-open');\n \n if (this.animating) {\n this.menuWrapper.classList.add('is-animating');\n }\n }\n \n this._focusFirstMenuItem();\n \n this.element.dispatchEvent(new CustomEvent('dropdown:open', { \n bubbles: true,\n detail: { dropdown: this }\n }));\n }\n\n /**\n * Close the dropdown\n */\n public close(): void {\n if (!this.isOpen) return;\n \n this.isOpen = false;\n this.animating = true;\n \n if (this.trigger) {\n this.trigger.setAttribute('aria-expanded', 'false');\n }\n \n if (this.menuWrapper) {\n this.menuWrapper.classList.remove('is-open');\n \n if (this.animating) {\n this.menuWrapper.classList.add('is-animating');\n }\n }\n \n this.element.dispatchEvent(new CustomEvent('dropdown:close', { \n bubbles: true,\n detail: { dropdown: this }\n }));\n }\n\n /**\n * Toggle the dropdown\n */\n public toggle(): void {\n this.isOpen ? this.close() : this.open();\n }\n\n /**\n * Update dropdown options\n */\n public update(options: Partial<DropdownOptions>): void {\n // Update options\n Object.assign(this.options, options);\n \n // Update trigger type class if needed\n if (options.trigger !== undefined) {\n if (options.trigger === 'click') {\n this.element.classList.add('c-dropdown--onclick');\n } else {\n this.element.classList.remove('c-dropdown--onclick');\n }\n }\n \n // Update placement class if needed\n if (options.placement && this.menuWrapper) {\n // Remove existing placement classes\n Array.from(this.menuWrapper.classList)\n .filter(cls => cls.startsWith('c-dropdown__menu-wrapper--'))\n .forEach(cls => this.menuWrapper?.classList.remove(cls));\n \n // Add new placement class\n this.menuWrapper.classList.add(`c-dropdown__menu-wrapper--${options.placement}`);\n }\n \n // Apply updated styles\n this._applyStyles();\n }\n\n /**\n * Destroy the dropdown instance\n */\n public destroy(): void {\n // Remove event listeners\n if (this.trigger) {\n this.trigger.removeEventListener('click', this._handleTriggerClick);\n this.trigger.removeEventListener('mouseenter', this._handleTriggerMouseEnter);\n this.trigger.removeEventListener('mouseleave', this._handleTriggerMouseLeave);\n this.trigger.removeEventListener('keydown', this._handleTriggerKeyDown);\n }\n \n document.removeEventListener('click', this._handleDocumentClick);\n document.removeEventListener('keydown', this._handleEscapeKey);\n \n if (this.menuWrapper) {\n this.menuWrapper.removeEventListener('mouseenter', this._handleMenuMouseEnter);\n this.menuWrapper.removeEventListener('mouseleave', this._handleMenuMouseLeave);\n this.menuWrapper.removeEventListener('keydown', this._handleMenuKeyDown);\n this.menuWrapper.removeEventListener('animationend', this._handleAnimationEnd);\n }\n \n // Close if open\n if (this.isOpen) {\n this.close();\n }\n \n // Clear timeouts\n if (this.timeoutRef.current !== null) {\n window.clearTimeout(this.timeoutRef.current);\n this.timeoutRef.current = null;\n }\n \n // Remove reference\n // @ts-ignore: Custom property\n this.element._dropdown = null;\n }\n}\n\n/**\n * Initialize all dropdowns in the document\n */\nconst initializeDropdowns = (): Dropdown[] => {\n const dropdownElements = Array.from(document.querySelectorAll(DROPDOWN.SELECTORS.DROPDOWN));\n \n return dropdownElements.map(element => {\n // Skip already initialized dropdowns\n // @ts-ignore: Custom property\n if (element._dropdown instanceof Dropdown) {\n // @ts-ignore: Custom property\n return element._dropdown;\n }\n \n const options: DropdownOptions = {\n placement: (element as HTMLElement).dataset.dropdownPlacement as DropdownPosition,\n trigger: (element as HTMLElement).dataset.dropdownTrigger as DropdownTrigger,\n offset: (element as HTMLElement).dataset.dropdownOffset ? \n Number((element as HTMLElement).dataset.dropdownOffset) : \n undefined,\n closeOnClickOutside: (element as HTMLElement).dataset.dropdownCloseOnClickOutside !== 'false',\n closeOnEscape: (element as HTMLElement).dataset.dropdownCloseOnEscape !== 'false',\n minWidth: (element as HTMLElement).dataset.dropdownMinWidth || undefined,\n maxHeight: (element as HTMLElement).dataset.dropdownMaxHeight || undefined\n };\n \n const dropdown = new Dropdown(element as HTMLElement, options);\n \n // Store instance on element\n // @ts-ignore: Custom property\n (element as HTMLElement)._dropdown = dropdown;\n \n return dropdown;\n });\n};\n\n/**\n * Create a dropdown instance for a specific element\n */\nconst createDropdown = (element: HTMLElement | string, options: DropdownOptions = {}): Dropdown => {\n const el = typeof element === 'string' ? document.querySelector(element) as HTMLElement : element;\n \n if (!el) {\n throw new Error(`Dropdown target not found: ${element}`);\n }\n \n // @ts-ignore: Custom property\n if (el._dropdown instanceof Dropdown) {\n // @ts-ignore: Custom property\n return el._dropdown;\n }\n \n const dropdown = new Dropdown(el, options);\n \n // Store instance on element\n // @ts-ignore: Custom property\n el._dropdown = dropdown;\n \n return dropdown;\n};\n\nexport { Dropdown, initializeDropdowns, createDropdown };\n\n// Auto-initialize if DOM is loaded\nif (typeof document !== 'undefined') {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n setTimeout(initializeDropdowns, 1);\n } else {\n document.addEventListener('DOMContentLoaded', initializeDropdowns);\n }\n} ","import { useEffect, useRef, useState, useCallback } from 'react';\nimport { EdgePanelProps } from '../types/components';\nimport { EDGE_PANEL } from '../constants/components';\n\n/**\n * EdgePanel state and functionality\n * @param initialProps - Initial EdgePanel properties\n * @returns EdgePanel state and methods\n */\nexport function useEdgePanel(initialProps?: Partial<EdgePanelProps>) {\n // Default EdgePanel properties\n const defaultProps: Partial<EdgePanelProps> = {\n position: 'start',\n mode: 'slide',\n isOpen: false,\n backdrop: true,\n closeOnBackdropClick: true,\n closeOnEscape: true,\n ...initialProps\n };\n\n const [isOpen, setIsOpen] = useState(defaultProps.isOpen || false);\n const containerRef = useRef<HTMLDivElement>(null);\n const backdropRef = useRef<HTMLDivElement>(null);\n\n /**\n * Generate EdgePanel class based on properties\n * @param props - EdgePanel properties\n * @returns Class string\n */\n const generateEdgePanelClass = (props: Partial<EdgePanelProps>): string => {\n const {\n position = defaultProps.position,\n className = '',\n isOpen: propIsOpen,\n } = props;\n\n const baseClass = EDGE_PANEL.CLASSES.BASE;\n const positionClass = position ? `${baseClass}--${position}` : '';\n const openClass = (propIsOpen ?? isOpen) ? EDGE_PANEL.CLASSES.IS_OPEN : '';\n \n return `${baseClass} ${positionClass} ${openClass} ${className}`.trim();\n };\n \n /**\n * Adjust body padding in push mode\n */\n const adjustBodyPadding = useCallback(() => {\n if (!containerRef.current || defaultProps.mode !== 'push') return;\n \n const { position } = defaultProps;\n const size = position === 'top' || position === 'bottom'\n ? containerRef.current.clientHeight\n : containerRef.current.clientWidth;\n\n // Map position to CSS padding property\n let paddingProperty: string;\n switch (position) {\n case 'start':\n paddingProperty = 'paddingLeft';\n break;\n case 'end':\n paddingProperty = 'paddingRight';\n break;\n default:\n // For top/bottom, capitalize first letter\n paddingProperty = `padding${position!.charAt(0).toUpperCase() + position!.slice(1)}`;\n }\n \n document.body.style[paddingProperty as any] = `${size}px`;\n document.body.classList.add('is-pushed');\n }, [defaultProps.mode, defaultProps.position]);\n \n /**\n * Reset body padding\n */\n const resetBodyPadding = useCallback(() => {\n if (defaultProps.mode !== 'push') return;\n \n const { position } = defaultProps;\n \n // Map position to CSS padding property\n let paddingProperty: string;\n switch (position) {\n case 'start':\n paddingProperty = 'paddingLeft';\n break;\n case 'end':\n paddingProperty = 'paddingRight';\n break;\n default:\n // For top/bottom, capitalize first letter\n paddingProperty = `padding${position!.charAt(0).toUpperCase() + position!.slice(1)}`;\n }\n \n document.body.style[paddingProperty as any] = '';\n document.body.classList.remove('is-pushed');\n }, [defaultProps.mode, defaultProps.position]);\n\n /**\n * Open the panel\n */\n const openPanel = useCallback(() => {\n setIsOpen(true);\n document.body.classList.add('is-edgepanel-open');\n \n if (containerRef.current) {\n const { mode } = defaultProps;\n \n // Only add animation if not in 'none' mode\n if (mode !== 'none') {\n // Add animation class first\n containerRef.current.classList.add('is-animating');\n \n // Force a reflow before starting the animation\n void containerRef.current.offsetHeight;\n \n // Remove animation class after animation completes\n const container = containerRef.current;\n setTimeout(() => {\n if (container) {\n container.classList.remove('is-animating');\n }\n }, EDGE_PANEL.ANIMATION_DURATION);\n }\n \n // Then set transform\n containerRef.current.style.transform = 'translate(0)';\n \n // If push mode, adjust body padding\n if (defaultProps.mode === 'push') {\n adjustBodyPadding();\n }\n }\n \n if (defaultProps.onOpenChange) {\n defaultProps.onOpenChange(true);\n }\n }, [defaultProps, adjustBodyPadding]);\n\n /**\n * Close the panel\n */\n const closePanel = useCallback(() => {\n if (containerRef.current) {\n const { position, mode } = defaultProps;\n \n // Only add animation if not in 'none' mode\n if (mode !== 'none') {\n // Add animation class first\n containerRef.current.classList.add('is-animating-out');\n \n // Capture container for setTimeout\n const container = containerRef.current;\n \n setTimeout(() => {\n if (container) {\n container.classList.remove('is-animating-out');\n }\n }, EDGE_PANEL.ANIMATION_DURATION);\n }\n \n // Then set transform\n containerRef.current.style.transform = position ? EDGE_PANEL.TRANSFORM_VALUES[position] : '';\n \n // Reset body padding if push mode\n if (defaultProps.mode === 'push') {\n resetBodyPadding();\n }\n \n // Wait for animation to complete before hiding\n const hideDelay = mode === 'none' ? 0 : EDGE_PANEL.ANIMATION_DURATION;\n \n setTimeout(() => {\n setIsOpen(false);\n document.body.classList.remove('is-edgepanel-open');\n \n if (defaultProps.onOpenChange) {\n defaultProps.onOpenChange(false);\n }\n }, hideDelay);\n } else {\n setIsOpen(false);\n document.body.classList.remove('is-edgepanel-open');\n \n if (defaultProps.onOpenChange) {\n defaultProps.onOpenChange(false);\n }\n }\n }, [defaultProps, resetBodyPadding]);\n\n /**\n * Handle Escape key press\n */\n const handleEscapeKey = useCallback((event: KeyboardEvent) => {\n if (defaultProps.closeOnEscape && event.key === 'Escape' && isOpen) {\n closePanel();\n }\n }, [closePanel, defaultProps.closeOnEscape, isOpen]);\n\n /**\n * Handle backdrop click\n */\n const handleBackdropClick = useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n if (defaultProps.closeOnBackdropClick && event.target === event.currentTarget) {\n closePanel();\n }\n }, [closePanel, defaultProps.closeOnBackdropClick]);\n\n /**\n * Set up event listeners for keyboard events\n */\n useEffect(() => {\n if (isOpen && defaultProps.closeOnEscape) {\n document.addEventListener('keydown', handleEscapeKey);\n }\n \n return () => {\n document.removeEventListener('keydown', handleEscapeKey);\n };\n }, [isOpen, handleEscapeKey, defaultProps.closeOnEscape]);\n\n /**\n * Set initial transform values\n */\n useEffect(() => {\n if (containerRef.current) {\n const { position, mode } = defaultProps;\n \n if (!isOpen && (mode === 'slide' || mode === 'push') && position) {\n containerRef.current.style.transform = EDGE_PANEL.TRANSFORM_VALUES[position];\n }\n }\n }, [defaultProps.mode, defaultProps.position, isOpen]);\n\n /**\n * Sync with prop changes\n */\n useEffect(() => {\n if (defaultProps.isOpen !== undefined && defaultProps.isOpen !== isOpen) {\n if (defaultProps.isOpen) {\n openPanel();\n } else {\n closePanel();\n }\n }\n }, [defaultProps.isOpen, closePanel, isOpen, openPanel]);\n\n return {\n isOpen,\n containerRef,\n backdropRef,\n generateEdgePanelClass,\n openPanel,\n closePanel,\n handleBackdropClick\n };\n} ","import React from 'react';\nimport { EdgePanelProps } from '../../lib/types/components';\nimport { useEdgePanel } from '../../lib/composables/useEdgePanel';\nimport { EDGE_PANEL } from '../../lib/constants/components';\nimport { Icon } from '../Icon/Icon';\nexport const EdgePanel: React.FC<EdgePanelProps> = ({\n title,\n children,\n position = 'start',\n mode = 'slide',\n isOpen = false,\n onOpenChange,\n backdrop = true,\n closeOnBackdropClick = true,\n closeOnEscape = true,\n className = '',\n}) => {\n const {\n isOpen: isOpenState,\n containerRef,\n backdropRef,\n generateEdgePanelClass,\n closePanel,\n handleBackdropClick\n } = useEdgePanel({\n position,\n mode,\n isOpen,\n onOpenChange,\n backdrop,\n closeOnBackdropClick,\n closeOnEscape,\n });\n\n const panelClass = generateEdgePanelClass({\n position,\n isOpen,\n className,\n });\n\n // If not open and not controlled by parent, don't render\n if (!isOpenState && isOpen === false) {\n return null;\n }\n\n return (\n <div className={panelClass} data-position={position} data-mode={mode}>\n {backdrop && (\n <div \n ref={backdropRef}\n className=\"c-edge-panel__backdrop\"\n onClick={handleBackdropClick}\n />\n )}\n <div ref={containerRef} className=\"c-edge-panel__container\">\n <div className=\"c-edge-panel__header\">\n <h4>{title}</h4>\n <button \n className=\"c-edge-panel__close c-btn c-btn--icon\" \n onClick={closePanel}\n aria-label=\"Close panel\"\n >\n <Icon name=\"X\" />\n </button>\n </div>\n <div className=\"c-edge-panel__body\">\n {children}\n </div>\n </div>\n </div>\n );\n}; ","import { FormProps } from '../types/components';\nimport { FORM } from '../constants/components';\n\n/**\n * Form state and functionality\n * @param initialProps - Initial form properties\n * @returns Form state and methods\n */\nexport function useForm(initialProps?: Partial<FormProps>) {\n // Default form properties\n const defaultProps: Partial<FormProps> = {\n disabled: false,\n ...initialProps\n };\n\n /**\n * Generate form class based on properties\n * @param props - Form properties\n * @returns Class string\n */\n const generateFormClass = (props: Partial<FormProps>): string => {\n const {\n disabled = defaultProps.disabled,\n className = '',\n } = props;\n\n const disabledClass = disabled ? FORM.CLASSES.DISABLED : '';\n \n return `${FORM.CLASSES.BASE} ${disabledClass} ${className}`.trim();\n };\n\n /**\n * Handle form submission with disabled check\n * @param handler - Submit handler function\n * @returns Function that respects disabled state\n */\n const handleSubmit = (handler?: (event: React.FormEvent<HTMLFormElement>) => void) => {\n return (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (!defaultProps.disabled && handler) {\n handler(event);\n }\n };\n };\n\n /**\n * Handle form reset with disabled check\n * @param handler - Reset handler function\n * @returns Function that respects disabled state\n */\n const handleReset = (handler?: (event: React.FormEvent<HTMLFormElement>) => void) => {\n return (event: React.FormEvent<HTMLFormElement>) => {\n if (!defaultProps.disabled && handler) {\n handler(event);\n }\n };\n };\n\n return {\n defaultProps,\n generateFormClass,\n handleSubmit,\n handleReset,\n };\n} ","import React from 'react';\nimport { FormProps } from '../../lib/types/components';\nimport { useForm } from '../../lib/composables/useForm';\n\n/**\n * Form - A component for creating form layouts\n */\nexport const Form: React.FC<FormProps> = ({\n children,\n onSubmit,\n onReset,\n className = '',\n disabled = false,\n id,\n method = 'post',\n encType,\n noValidate = false,\n autoComplete = 'on',\n}) => {\n const { generateFormClass, handleSubmit, handleReset } = useForm({ \n disabled \n });\n \n const formClass = generateFormClass({ className, disabled });\n \n return (\n <form\n id={id}\n className={formClass}\n onSubmit={handleSubmit(onSubmit)}\n onReset={handleReset(onReset)}\n method={method}\n encType={encType}\n noValidate={noValidate}\n autoComplete={autoComplete}\n >\n {children}\n </form>\n );\n};\n\nexport default Form; ","import { FormGroupProps } from '../types/components';\nimport { FORM_GROUP } from '../constants/components';\n\n/**\n * Form Group state and functionality\n * @param initialProps - Initial form group properties\n * @returns Form Group state and methods\n */\nexport function useFormGroup(initialProps?: Partial<FormGroupProps>) {\n // Default form group properties\n const defaultProps: Partial<FormGroupProps> = {\n size: 'md',\n disabled: false,\n invalid: false,\n valid: false,\n ...initialProps\n };\n\n /**\n * Generate form group class based on properties\n * @param props - Form group properties\n * @returns Class string\n */\n const generateFormGroupClass = (props: Partial<FormGroupProps>): string => {\n const {\n size = defaultProps.size,\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n className = '',\n } = props;\n\n const sizeClass = size === 'md' ? '' : (\n size === 'sm' ? FORM_GROUP.CLASSES.SMALL : FORM_GROUP.CLASSES.LARGE\n );\n \n const validationClass = invalid \n ? FORM_GROUP.CLASSES.INVALID \n : valid \n ? FORM_GROUP.CLASSES.VALID \n : '';\n \n const disabledClass = disabled ? FORM_GROUP.CLASSES.DISABLED : '';\n \n return `${FORM_GROUP.CLASSES.BASE} ${sizeClass} ${validationClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateFormGroupClass,\n };\n} ","import React from 'react';\nimport { FormGroupProps } from '../../lib/types/components';\nimport { useFormGroup } from '../../lib/composables/useFormGroup';\n\n/**\n * FormGroup - A component for grouping form controls with labels and help text\n */\nexport const FormGroup: React.FC<FormGroupProps> = ({\n children,\n label,\n helperText,\n htmlFor,\n className = '',\n disabled = false,\n required = false,\n invalid = false,\n valid = false,\n size = 'md',\n}) => {\n const { generateFormGroupClass } = useFormGroup({ \n size, disabled, invalid, valid \n });\n \n const formGroupClass = generateFormGroupClass({ \n className, disabled, invalid, valid, size \n });\n \n return (\n <div className={formGroupClass}>\n {label && (\n <label \n className=\"c-form-group__label\" \n htmlFor={htmlFor}\n >\n {label}\n {required && <span className=\"c-form-group__required\">*</span>}\n </label>\n )}\n <div className=\"c-form-group__field\">\n {children}\n </div>\n {helperText && (\n <div className=\"c-form-group__helper\">\n {helperText}\n </div>\n )}\n </div>\n );\n};\n\nexport default FormGroup; ","import { InputProps, ThemeColor } from '../types/components';\nimport { INPUT } from '../constants/components';\n\n/**\n * Input state and functionality\n * @param initialProps - Initial input properties\n * @returns Input state and methods\n */\nexport function useInput(initialProps?: Partial<InputProps>) {\n // Default input properties\n const defaultProps: Partial<InputProps> = {\n size: 'md',\n disabled: false,\n invalid: false,\n valid: false,\n ...initialProps\n };\n\n /**\n * Generate input class based on properties\n * @param props - Input properties\n * @returns Class string\n */\n const generateInputClass = (props: Partial<InputProps> & { type?: string }): string => {\n const {\n size = defaultProps.size,\n variant = defaultProps.variant,\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n className = '',\n type,\n } = props;\n\n const sizeClass = size === 'md' ? '' : (\n size === 'sm' ? INPUT.CLASSES.SMALL : INPUT.CLASSES.LARGE\n );\n \n const variantClass = variant ? `c-input--${variant}` : '';\n \n const textareaClass = type === 'textarea' ? 'c-input--textarea' : '';\n \n let validationClass = '';\n if (invalid) {\n validationClass = INPUT.CLASSES.INVALID;\n } else if (valid) {\n validationClass = INPUT.CLASSES.VALID;\n }\n \n const disabledClass = disabled ? INPUT.CLASSES.DISABLED : '';\n \n return `${INPUT.CLASSES.BASE} ${sizeClass} ${variantClass} ${textareaClass} ${validationClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateInputClass,\n };\n} ","import React from 'react';\nimport { InputProps } from '../../lib/types/components';\nimport { useInput } from '../../lib/composables/useInput';\n\n/**\n * Input - A component for text input fields\n */\nexport const Input: React.FC<InputProps> = ({\n type = 'text',\n value,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n className = '',\n disabled = false,\n required = false,\n readOnly = false,\n id,\n name,\n autoComplete,\n autoFocus = false,\n size = 'md',\n variant,\n invalid = false,\n valid = false,\n maxLength,\n minLength,\n pattern,\n min,\n max,\n step,\n ariaLabel,\n ariaDescribedBy,\n}) => {\n const { generateInputClass } = useInput({ \n size, variant, disabled, invalid, valid\n });\n \n const inputClass = generateInputClass({ \n className, size, variant, disabled, invalid, valid, type\n });\n \n return (\n <input\n type={type}\n className={inputClass}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n id={id}\n name={name}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n maxLength={maxLength}\n minLength={minLength}\n pattern={pattern}\n min={min}\n max={max}\n step={step}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid}\n />\n );\n};\n\nexport default Input; ","import { SelectProps } from '../types/components';\nimport { SELECT } from '../constants/components';\n\n/**\n * Select state and functionality\n * @param initialProps - Initial select properties\n * @returns Select state and methods\n */\nexport function useSelect(initialProps?: Partial<SelectProps>) {\n // Default select properties\n const defaultProps: Partial<SelectProps> = {\n size: 'md',\n disabled: false,\n invalid: false,\n valid: false,\n ...initialProps\n };\n\n /**\n * Generate select class based on properties\n * @param props - Select properties\n * @returns Class string\n */\n const generateSelectClass = (props: Partial<SelectProps>): string => {\n const {\n size = defaultProps.size,\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n className = '',\n } = props;\n\n const sizeClass = size === 'md' ? '' : (\n size === 'sm' ? SELECT.CLASSES.SMALL : SELECT.CLASSES.LARGE\n );\n \n let validationClass = '';\n if (invalid) {\n validationClass = SELECT.CLASSES.INVALID;\n } else if (valid) {\n validationClass = SELECT.CLASSES.VALID;\n }\n \n const disabledClass = disabled ? SELECT.CLASSES.DISABLED : '';\n \n return `${SELECT.CLASSES.BASE} ${sizeClass} ${validationClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateSelectClass,\n };\n} ","import React, { useRef, useEffect, useState } from 'react';\nimport { SelectProps } from '../../lib/types/components';\nimport { useSelect } from '../../lib/composables';\nimport { SELECT } from '../../lib/constants/components';\n\n/**\n * Select - A component for dropdown selection\n */\nexport const Select: React.FC<SelectProps> = ({\n options = [],\n value,\n onChange,\n onBlur,\n onFocus,\n placeholder = 'Select an option',\n className = '',\n disabled = false,\n required = false,\n id,\n name,\n size = 'md',\n invalid = false,\n valid = false,\n multiple = false,\n ariaLabel,\n ariaDescribedBy,\n}) => {\n const { generateSelectClass } = useSelect({ \n size, disabled, invalid, valid\n });\n \n const selectClass = generateSelectClass({ \n className, size, disabled, invalid, valid\n });\n\n const [isOpen, setIsOpen] = useState(false);\n const [selectedLabel, setSelectedLabel] = useState(placeholder);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const bodyRef = useRef<HTMLDivElement>(null);\n const nativeSelectRef = useRef<HTMLSelectElement>(null);\n\n // Update selected label when value changes\n useEffect(() => {\n if (value) {\n const selectedOption = options.find(opt => opt.value === value);\n if (selectedOption) {\n setSelectedLabel(selectedOption.label);\n }\n } else {\n setSelectedLabel(placeholder);\n }\n }, [value, options, placeholder]);\n\n // Handle click outside to close dropdown\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n if (bodyRef.current) {\n bodyRef.current.style.height = '0px';\n }\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, []);\n\n // Toggle dropdown\n const handleToggle = () => {\n if (!disabled) {\n if (!isOpen && bodyRef.current && panelRef.current) {\n bodyRef.current.style.height = `${panelRef.current.clientHeight}px`;\n } else if (bodyRef.current) {\n bodyRef.current.style.height = '0px';\n }\n setIsOpen(!isOpen);\n }\n };\n\n // Handle item selection\n const handleItemClick = (option: { value: string, label: string }) => {\n setSelectedLabel(option.label);\n setIsOpen(false);\n if (bodyRef.current) {\n bodyRef.current.style.height = '0px';\n }\n \n if (nativeSelectRef.current) {\n nativeSelectRef.current.value = option.value;\n }\n \n if (onChange) {\n // Create a synthetic event\n const event = {\n target: {\n name,\n value: option.value\n }\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(event);\n }\n };\n\n return (\n <div \n className={`${selectClass} ${isOpen ? SELECT.CLASSES.IS_OPEN : ''}`} \n ref={dropdownRef}\n aria-expanded={isOpen}\n >\n {/* Native select for accessibility and form submission */}\n <select\n ref={nativeSelectRef}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n disabled={disabled}\n required={required}\n id={id}\n name={name}\n multiple={multiple}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid}\n style={{ display: 'none' }}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option \n key={option.value} \n value={option.value} \n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n \n {/* Custom Select UI */}\n <div \n className={SELECT.CLASSES.SELECTED}\n onClick={handleToggle}\n aria-disabled={disabled}\n >\n {selectedLabel}\n </div>\n \n <i className={`${SELECT.CLASSES.ICON_CARET} ${SELECT.CLASSES.TOGGLE_ICON}`} />\n \n <div className={SELECT.CLASSES.SELECT_BODY} ref={bodyRef} style={{ height: 0 }}>\n <div className={SELECT.CLASSES.SELECT_PANEL} ref={panelRef}>\n <ul className={SELECT.CLASSES.SELECT_ITEMS}>\n {options.map((option, index) => (\n <li \n key={option.value}\n className={SELECT.CLASSES.SELECT_ITEM}\n data-value={option.value}\n onClick={() => !option.disabled && handleItemClick(option)}\n >\n <label htmlFor={`SelectItem${index}`} className=\"c-checkbox\">\n <input \n type=\"checkbox\" \n id={`SelectItem${index}`} \n className=\"c-checkbox__input c-select__item-input\" \n checked={value === option.value}\n readOnly\n disabled={option.disabled}\n />\n <div className=\"c-select__item-label\">{option.label}</div>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Select; ","import { useRef, useEffect } from 'react';\nimport { CheckboxProps } from '../types/components';\n\n// Define checkbox class constants\nconst CHECKBOX_CLASSES = {\n BASE: 'c-checkbox',\n INVALID: 'is-error',\n VALID: 'is-valid',\n DISABLED: 'is-disabled',\n MIXED: 'c-checkbox--mixed'\n};\n\n/**\n * Checkbox state and functionality\n * @param initialProps - Initial checkbox properties\n * @returns Checkbox state and methods\n */\nexport function useCheckbox(initialProps?: Partial<CheckboxProps>) {\n // Default checkbox properties\n const defaultProps: Partial<CheckboxProps> = {\n disabled: false,\n invalid: false,\n valid: false,\n indeterminate: false,\n ...initialProps\n };\n \n // Ref for the checkbox input element\n const checkboxRef = useRef<HTMLInputElement>(null);\n \n // Handle indeterminate state\n useEffect(() => {\n if (checkboxRef.current) {\n checkboxRef.current.indeterminate = Boolean(defaultProps.indeterminate);\n }\n }, [defaultProps.indeterminate]);\n\n /**\n * Generate checkbox class based on properties\n * @param props - Checkbox properties\n * @returns Class string\n */\n const generateCheckboxClass = (props: Partial<CheckboxProps>): string => {\n const {\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n indeterminate = defaultProps.indeterminate,\n className = '',\n } = props;\n\n let validationClass = '';\n if (invalid) {\n validationClass = CHECKBOX_CLASSES.INVALID;\n } else if (valid) {\n validationClass = CHECKBOX_CLASSES.VALID;\n }\n \n const disabledClass = disabled ? CHECKBOX_CLASSES.DISABLED : '';\n const indeterminateClass = indeterminate ? CHECKBOX_CLASSES.MIXED : '';\n \n return `${CHECKBOX_CLASSES.BASE} ${validationClass} ${disabledClass} ${indeterminateClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateCheckboxClass,\n checkboxRef,\n };\n} ","import React from 'react';\nimport { CheckboxProps } from '../../lib/types/components';\nimport { useCheckbox } from '../../lib/composables/useCheckbox';\n\n/**\n * Checkbox - A component for checkbox inputs\n */\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n checked = false,\n onChange,\n className = '',\n disabled = false,\n required = false,\n id,\n name,\n value,\n invalid = false,\n valid = false,\n indeterminate = false,\n ariaLabel,\n ariaDescribedBy,\n}) => {\n const { generateCheckboxClass, checkboxRef } = useCheckbox({\n indeterminate, disabled, invalid, valid\n });\n \n const checkboxClass = generateCheckboxClass({\n className, disabled, invalid, valid, indeterminate\n });\n \n return (\n <div className={checkboxClass}>\n <input\n ref={checkboxRef}\n type=\"checkbox\"\n className=\"c-checkbox__input\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n id={id}\n name={name}\n value={value}\n aria-label={!label ? ariaLabel : undefined}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid}\n />\n {label && (\n <label className=\"c-checkbox__label\" htmlFor={id}>\n {label}\n </label>\n )}\n </div>\n );\n};\n\nexport default Checkbox; ","import { RadioProps } from '../types/components';\nimport { RADIO } from '../constants/components';\n\n/**\n * Radio state and functionality\n * @param initialProps - Initial radio properties\n * @returns Radio state and methods\n */\nexport function useRadio(initialProps?: Partial<RadioProps>) {\n // Default radio properties\n const defaultProps: Partial<RadioProps> = {\n disabled: false,\n invalid: false,\n valid: false,\n ...initialProps\n };\n\n /**\n * Generate radio class based on properties\n * @param props - Radio properties\n * @returns Class string\n */\n const generateRadioClass = (props: Partial<RadioProps>): string => {\n const {\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n className = '',\n } = props;\n\n let validationClass = '';\n if (invalid) {\n validationClass = RADIO.CLASSES.INVALID;\n } else if (valid) {\n validationClass = RADIO.CLASSES.VALID;\n }\n \n const disabledClass = disabled ? RADIO.CLASSES.DISABLED : '';\n \n return `${RADIO.CLASSES.BASE} ${validationClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateRadioClass,\n };\n} ","import React from 'react';\nimport { RadioProps } from '../../lib/types/components';\nimport { useRadio } from '../../lib/composables/useRadio';\n\n/**\n * Radio - A component for radio button inputs\n */\nexport const Radio: React.FC<RadioProps> = ({\n label,\n checked = false,\n onChange,\n className = '',\n disabled = false,\n required = false,\n id,\n name,\n value,\n invalid = false,\n valid = false,\n ariaLabel,\n ariaDescribedBy,\n}) => {\n const { generateRadioClass } = useRadio({\n disabled, invalid, valid\n });\n \n const radioClass = generateRadioClass({\n className, disabled, invalid, valid\n });\n \n return (\n <div className={radioClass}>\n <input\n type=\"radio\"\n className=\"c-radio__input\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n required={required}\n id={id}\n name={name}\n value={value}\n aria-label={!label ? ariaLabel : undefined}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid}\n />\n {label && (\n <label className=\"c-radio__label\" htmlFor={id}>\n {label}\n </label>\n )}\n </div>\n );\n};\n\nexport default Radio; ","import { TextareaProps } from '../types/components';\nimport { TEXTAREA } from '../constants/components';\n\n/**\n * Textarea state and functionality\n * @param initialProps - Initial textarea properties\n * @returns Textarea state and methods\n */\nexport function useTextarea(initialProps?: Partial<TextareaProps>) {\n // Default textarea properties\n const defaultProps: Partial<TextareaProps> = {\n size: 'md',\n disabled: false,\n invalid: false,\n valid: false,\n ...initialProps\n };\n\n /**\n * Generate textarea class based on properties\n * @param props - Textarea properties\n * @returns Class string\n */\n const generateTextareaClass = (props: Partial<TextareaProps>): string => {\n const {\n size = defaultProps.size,\n variant = defaultProps.variant,\n disabled = defaultProps.disabled,\n invalid = defaultProps.invalid,\n valid = defaultProps.valid,\n className = '',\n } = props;\n\n const sizeClass = size === 'md' ? '' : (\n size === 'sm' ? TEXTAREA.CLASSES.SMALL : TEXTAREA.CLASSES.LARGE\n );\n \n const variantClass = variant ? `c-input--${variant}` : '';\n \n let validationClass = '';\n if (invalid) {\n validationClass = TEXTAREA.CLASSES.INVALID;\n } else if (valid) {\n validationClass = TEXTAREA.CLASSES.VALID;\n }\n \n const disabledClass = disabled ? TEXTAREA.CLASSES.DISABLED : '';\n \n return `${TEXTAREA.CLASSES.BASE} ${sizeClass} ${variantClass} ${validationClass} ${disabledClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateTextareaClass,\n };\n} ","import React from 'react';\nimport { TextareaProps } from '../../lib/types/components';\nimport { useTextarea } from '../../lib/composables/useTextarea';\n\n/**\n * Textarea - A component for multiline text input\n */\nexport const Textarea: React.FC<TextareaProps> = ({\n value,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n className = '',\n disabled = false,\n required = false,\n readOnly = false,\n id,\n name,\n rows = 4,\n cols,\n maxLength,\n minLength,\n size = 'md',\n variant,\n invalid = false,\n valid = false,\n autoFocus = false,\n ariaLabel,\n ariaDescribedBy,\n}) => {\n const { generateTextareaClass } = useTextarea({ \n size, variant, disabled, invalid, valid\n });\n \n const textareaClass = generateTextareaClass({ \n className, size, variant, disabled, invalid, valid\n });\n \n return (\n <textarea\n className={textareaClass}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n onFocus={onFocus}\n placeholder={placeholder}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n id={id}\n name={name}\n rows={rows}\n cols={cols}\n maxLength={maxLength}\n minLength={minLength}\n autoFocus={autoFocus}\n aria-label={ariaLabel}\n aria-describedby={ariaDescribedBy}\n aria-invalid={invalid}\n />\n );\n};\n\nexport default Textarea; ","import { useEffect, useRef } from 'react';\nimport { HeroProps, HeroAlignment } from '../types/components';\nimport { HERO } from '../constants/components';\n\n/**\n * Hero hook result interface\n */\ninterface UseHeroResult {\n /**\n * Generate hero class names based on props\n */\n generateHeroClassNames: (baseClassName?: string) => string;\n \n /**\n * Generate image column class based on size\n */\n generateImageColClass: (size?: number) => string;\n \n /**\n * Generate content column class based on size\n */\n generateContentColClass: (size?: number) => string;\n \n /**\n * Determine if the hero has a background image\n */\n hasBackgroundImage: boolean;\n \n /**\n * Determine if the hero has a foreground image\n */\n hasForegroundImage: boolean;\n \n /**\n * Determine if content should be displayed in a grid\n */\n useGridLayout: boolean;\n \n /**\n * Reference to the hero element\n */\n heroRef: React.RefObject<HTMLDivElement>;\n \n /**\n * Reference to the video element\n */\n videoRef: React.RefObject<HTMLVideoElement>;\n \n /**\n * Apply parallax effect\n */\n applyParallaxEffect: (element: HTMLElement, intensity: number) => void;\n \n /**\n * Remove parallax effect\n */\n removeParallaxEffect: (element: HTMLElement) => void;\n}\n\n/**\n * Hook for Hero component functionality\n * @param initialProps - Initial hero props\n * @returns Hero methods\n */\nexport function useHero(initialProps?: Partial<HeroProps>): UseHeroResult {\n const heroRef = useRef<HTMLDivElement>(null);\n const videoRef = useRef<HTMLVideoElement>(null);\n const parallaxHandlerRef = useRef<((event: Event) => void) | null>(null);\n \n const defaultProps: Partial<HeroProps> = {\n alignment: 'left',\n imageColSize: 7,\n contentColSize: 5,\n imageAlt: 'Hero image',\n showOverlay: true,\n fullViewportHeight: false,\n contentWidth: undefined,\n parallax: false,\n parallaxIntensity: 0.5,\n ...initialProps\n };\n\n /**\n * Check if the hero has a background image\n */\n const hasBackgroundImage = !!defaultProps.backgroundImageSrc;\n \n /**\n * Check if the hero has a foreground image\n */\n const hasForegroundImage = !!defaultProps.imageSrc;\n \n /**\n * Check if content should be displayed in a grid\n */\n const useGridLayout = hasForegroundImage && defaultProps.alignment !== 'center';\n \n /**\n * Apply parallax effect to hero background\n */\n const applyParallaxEffect = (element: HTMLElement, intensity: number = 0.5): void => {\n if (!element) return;\n \n // Ensure intensity is between 0 and 1\n const safeIntensity = Math.max(0, Math.min(1, intensity));\n \n // Add parallax class\n element.classList.add('c-hero--parallax');\n \n // Handle scroll event\n const handleScroll = (): void => {\n const scrollPosition = window.pageYOffset;\n const offset = scrollPosition * safeIntensity;\n \n // Apply transform to background\n const bgElement = element.querySelector(HERO.SELECTORS.BG);\n if (bgElement) {\n (bgElement as HTMLElement).style.transform = `translateY(${offset}px)`;\n }\n };\n \n // Store the handler for cleanup\n parallaxHandlerRef.current = handleScroll;\n \n // Add event listener\n window.addEventListener('scroll', handleScroll);\n \n // Initial call\n handleScroll();\n };\n \n /**\n * Remove parallax effect from hero\n */\n const removeParallaxEffect = (element: HTMLElement): void => {\n if (!element) return;\n \n // Remove class\n element.classList.remove('c-hero--parallax');\n \n // Remove transform\n const bgElement = element.querySelector(HERO.SELECTORS.BG);\n if (bgElement) {\n (bgElement as HTMLElement).style.transform = '';\n }\n \n // Remove event listener\n if (parallaxHandlerRef.current) {\n window.removeEventListener('scroll', parallaxHandlerRef.current);\n parallaxHandlerRef.current = null;\n }\n };\n \n // Apply parallax effect if enabled\n useEffect(() => {\n const heroElement = heroRef.current;\n \n if (heroElement && defaultProps.parallax && hasBackgroundImage) {\n applyParallaxEffect(heroElement, defaultProps.parallaxIntensity);\n }\n \n return () => {\n if (heroElement && parallaxHandlerRef.current) {\n removeParallaxEffect(heroElement);\n }\n };\n }, [defaultProps.parallax, defaultProps.parallaxIntensity, hasBackgroundImage]);\n\n /**\n * Generate hero class names based on props\n * @param baseClassName - Additional class names\n * @returns Combined class names string\n */\n const generateHeroClassNames = (baseClassName: string = ''): string => {\n const classes = [\n HERO.SELECTORS.HERO.replace('.', '')\n ];\n\n // Add alignment class\n if (defaultProps.alignment === 'center') {\n classes.push(HERO.CLASSES.CENTER);\n } else if (defaultProps.alignment === 'right') {\n classes.push(HERO.CLASSES.RIGHT);\n } else if (defaultProps.alignment === 'left') {\n classes.push(HERO.CLASSES.LEFT);\n }\n \n // Add full viewport height class if needed\n if (defaultProps.fullViewportHeight) {\n classes.push(HERO.CLASSES.FULL_VH);\n }\n \n // Add parallax class if enabled\n if (defaultProps.parallax) {\n classes.push('c-hero--parallax');\n }\n \n // Add video background class if provided\n if (defaultProps.videoBackground) {\n classes.push('c-hero--video');\n }\n\n if (baseClassName) {\n classes.push(baseClassName);\n }\n\n return classes.join(' ');\n };\n\n /**\n * Determine content column order based on alignment\n */\n const contentFirst = defaultProps.alignment === 'left';\n\n /**\n * Generate image column class based on size\n * @param size - Column size (1-12)\n * @returns Column class\n */\n const generateImageColClass = (size: number = defaultProps.imageColSize || 7): string => {\n const classes = [`o-grid__col o-grid__col--md-${size}`];\n \n // Add responsive margin if needed for mobile view\n if (defaultProps.alignment === 'left') {\n classes.push('u-mt-5 u-mt-md-0');\n }\n \n return classes.join(' ');\n };\n\n /**\n * Generate content column class based on size\n * @param size - Column size (1-12)\n * @returns Column class\n */\n const generateContentColClass = (size: number = defaultProps.contentColSize || 5): string => {\n return `o-grid__col o-grid__col--md-${size}`;\n };\n\n return {\n generateHeroClassNames,\n generateImageColClass,\n generateContentColClass,\n hasBackgroundImage,\n hasForegroundImage,\n useGridLayout,\n heroRef,\n videoRef,\n applyParallaxEffect,\n removeParallaxEffect\n };\n} ","import React, { CSSProperties, useEffect } from 'react';\nimport { HeroProps, HeroAlignment } from '../../lib/types/components';\nimport { useHero } from '../../lib/composables/useHero';\nimport { HERO } from '../../lib/constants/components';\n\nexport type HeroComponentProps = HeroProps;\n\nexport const Hero: React.FC<HeroComponentProps> = ({\n title,\n subtitle,\n text,\n imageSrc,\n imageAlt = 'Hero image',\n alignment = 'left',\n backgroundImageSrc,\n showOverlay = true,\n fullViewportHeight = false,\n actions,\n imageColSize = 7,\n contentColSize = 5,\n contentWidth,\n className = '',\n parallax = false,\n parallaxIntensity = 0.5,\n videoBackground,\n videoOptions = {\n autoplay: true,\n loop: true,\n muted: true\n }\n}) => {\n const { \n generateHeroClassNames, \n generateImageColClass, \n generateContentColClass,\n hasBackgroundImage,\n hasForegroundImage,\n useGridLayout,\n heroRef,\n videoRef\n } = useHero({\n alignment,\n imageColSize,\n contentColSize,\n imageSrc,\n backgroundImageSrc,\n showOverlay,\n fullViewportHeight,\n contentWidth,\n parallax,\n parallaxIntensity,\n videoBackground\n });\n\n // Create custom style for hero element with content width if provided\n const heroStyle: React.CSSProperties | undefined = contentWidth ? {\n '--atomix-hero-content-width': contentWidth\n } as React.CSSProperties : undefined;\n\n const renderVideoBackground = () => {\n if (!videoBackground) return null;\n \n const { autoplay, loop, muted, posterUrl } = videoOptions;\n \n return (\n <video \n ref={videoRef}\n className=\"c-hero__video\"\n autoPlay={autoplay}\n loop={loop}\n muted={muted}\n playsInline\n poster={posterUrl}\n >\n <source src={videoBackground} type={`video/${videoBackground.split('.').pop() || 'mp4'}`} />\n Your browser does not support the video tag.\n </video>\n );\n };\n\n const renderBackground = () => {\n if (!hasBackgroundImage && !videoBackground) return null;\n \n return (\n <div className={HERO.SELECTORS.BG.replace('.', '')}>\n {backgroundImageSrc && (\n <img\n src={backgroundImageSrc}\n alt=\"Background\"\n className={HERO.SELECTORS.BG_IMAGE.replace('.', '')}\n />\n )}\n {renderVideoBackground()}\n {showOverlay && <div className={HERO.SELECTORS.OVERLAY.replace('.', '')}></div>}\n </div>\n );\n };\n\n const renderContent = () => (\n <div className={HERO.SELECTORS.CONTENT.replace('.', '')}>\n {subtitle && <p className={HERO.SELECTORS.SUBTITLE.replace('.', '')}>{subtitle}</p>}\n <h1 className={HERO.SELECTORS.TITLE.replace('.', '')}>{title}</h1>\n {text && <p className={HERO.SELECTORS.TEXT.replace('.', '')}>{text}</p>}\n {actions && <div className={HERO.SELECTORS.ACTIONS.replace('.', '')}>{actions}</div>}\n </div>\n );\n\n const renderForegroundImage = () => {\n if (!hasForegroundImage) return null;\n \n if (alignment === 'center') {\n return (\n <div className={HERO.SELECTORS.IMAGE_WRAPPER.replace('.', '')}>\n <img\n src={imageSrc}\n alt={imageAlt}\n className={HERO.SELECTORS.IMAGE.replace('.', '')}\n />\n </div>\n );\n }\n \n return (\n <div className={generateImageColClass()}>\n <img\n src={imageSrc}\n alt={imageAlt}\n className={HERO.SELECTORS.IMAGE.replace('.', '')}\n />\n </div>\n );\n };\n\n const renderGridContent = () => {\n // For left-aligned content, render content first then image\n if (alignment === 'left') {\n return (\n <>\n <div className={generateContentColClass()}>\n {renderContent()}\n </div>\n {renderForegroundImage()}\n </>\n );\n }\n \n // For right-aligned or default, render image first then content\n return (\n <>\n {renderForegroundImage()}\n <div className={generateContentColClass()}>\n {renderContent()}\n </div>\n </>\n );\n };\n\n return (\n <div \n ref={heroRef}\n className={generateHeroClassNames(className)} \n style={heroStyle}\n data-parallax={parallax ? 'true' : undefined}\n data-parallax-intensity={parallax ? parallaxIntensity : undefined}\n >\n {renderBackground()}\n <div className={`${HERO.SELECTORS.CONTAINER.replace('.', '')} o-container`}>\n {useGridLayout ? (\n <div className={`${HERO.SELECTORS.GRID.replace('.', '')} o-grid`}>\n {renderGridContent()}\n </div>\n ) : (\n <>\n {renderContent()}\n {renderForegroundImage()}\n </>\n )}\n </div>\n </div>\n );\n}; ","import React from 'react';\nimport { ListProps } from '../../lib/types/components';\nimport { LIST } from '../../lib/constants/components';\n\nexport const List: React.FC<ListProps> = ({\n children,\n variant = 'default',\n className = '',\n ...props\n}) => {\n // Generate CSS classes\n const listClasses = [\n LIST.BASE_CLASS,\n variant !== 'default' && `c-list--${variant}`,\n className,\n ].filter(Boolean).join(' ');\n\n // Determine the HTML element based on variant\n const ListElement = ['number', 'text'].includes(variant) ? 'ol' : 'ul';\n\n return (\n <ListElement className={listClasses} {...props}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return <li className=\"c-list__item\">{child}</li>;\n }\n return <li className=\"c-list__item\">{child}</li>;\n })}\n </ListElement>\n );\n};\n\nexport default List;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"classnames\");","import React from 'react';\nimport classNames from 'classnames';\nimport { ListGroupProps } from '../../lib/types/components';\nimport { LIST_GROUP } from '../../lib/constants/components';\nimport { List } from './List';\n\nexport const ListGroup: React.FC<ListGroupProps> = ({\n children,\n className = '',\n variant = 'default',\n}) => {\n // Generate CSS classes\n const listGroupClasses = classNames(LIST_GROUP.BASE_CLASS, className);\n\n // Get valid List children\n const validLists = React.Children.toArray(children).filter(\n (child) => React.isValidElement(child) && child.type === List\n ) as React.ReactElement[];\n\n return (\n <div className={listGroupClasses}>\n {validLists.map((child, index) => {\n return React.cloneElement(child, {\n key: index,\n variant: (child.props as any).variant ?? variant,\n });\n })}\n </div>\n );\n};\n\nListGroup.displayName = 'ListGroup';\n\nexport default ListGroup;\n","import { useState } from 'react';\nimport { MessageItem } from '../types/components';\n\ninterface UseMessagesProps {\n /**\n * Initial messages\n */\n initialMessages?: MessageItem[];\n \n /**\n * Callback when a message is sent\n */\n onSendMessage?: (text: string) => void;\n}\n\ninterface UseMessagesReturn {\n /**\n * Current input value\n */\n inputValue: string;\n \n /**\n * Set input value\n */\n setInputValue: (value: string) => void;\n \n /**\n * Handle input change\n */\n handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n \n /**\n * Handle form submission\n */\n handleSubmit: (e: React.FormEvent) => void;\n \n /**\n * Handle key down events\n */\n handleKeyDown: (e: React.KeyboardEvent) => void;\n}\n\n/**\n * Hook for managing Messages component state and behavior\n */\nexport const useMessages = ({\n onSendMessage\n}: UseMessagesProps = {}): UseMessagesReturn => {\n const [inputValue, setInputValue] = useState('');\n \n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n \n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (inputValue.trim() && onSendMessage) {\n onSendMessage(inputValue.trim());\n setInputValue('');\n }\n };\n \n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit(e);\n }\n };\n \n return {\n inputValue,\n setInputValue,\n handleInputChange,\n handleSubmit,\n handleKeyDown\n };\n};\n\nexport default useMessages; ","import React from 'react';\nimport { Icon } from '../Icon';\nimport { Avatar } from '../Avatar';\nimport { MESSAGES } from '../../lib/constants/components';\nimport { MessagesProps } from '../../lib/types/components';\nimport { useMessages } from '../../lib/composables/useMessages';\n\nexport type { MessagesProps, MessageItem } from '../../lib/types/components';\n\n/**\n * Messages component for displaying a chat interface with messages, images, and file attachments\n */\nexport const Messages: React.FC<MessagesProps> = ({\n messages = [],\n otherAvatar,\n selfAvatar,\n otherName,\n width = '100%',\n onSendMessage,\n placeholder = 'Type a message',\n className = '',\n bodyHeight,\n disabled = false,\n id,\n}) => {\n const {\n inputValue,\n handleInputChange,\n handleSubmit,\n handleKeyDown\n } = useMessages({ onSendMessage });\n \n // Generate unique ID for accessibility\n const messagesId = id || `messages-${Math.random().toString(36).substr(2, 9)}`;\n const inputId = `${messagesId}-input`;\n \n return (\n <div \n className={`${MESSAGES.CLASSES.BASE} ${disabled ? 'is-disabled' : ''} ${className}`}\n style={{ '--atomix-messages-width': width } as React.CSSProperties}\n id={messagesId}\n aria-label=\"Chat messages\"\n role=\"log\"\n aria-live=\"polite\"\n >\n <div \n className={MESSAGES.CLASSES.BODY}\n style={bodyHeight ? { '--atomix-messages-body-height': bodyHeight } as React.CSSProperties : undefined}\n >\n {messages.map((message) => (\n <div \n key={message.id} \n className={`${MESSAGES.CLASSES.CONTENT} ${message.isSelf ? MESSAGES.CLASSES.CONTENT_SELF : ''}`}\n aria-label={`${message.isSelf ? 'You' : otherName || 'Other person'} sent a message at ${message.time}`}\n >\n <Avatar \n src={message.isSelf ? selfAvatar : otherAvatar}\n size=\"xl\"\n circle\n className={MESSAGES.CLASSES.AVATAR}\n alt={message.isSelf ? 'Your avatar' : `${otherName || 'Other person'}'s avatar`}\n />\n <div className={MESSAGES.CLASSES.ITEMS}>\n {!message.isSelf && otherName && (\n <div className={MESSAGES.CLASSES.NAME}>{otherName}</div>\n )}\n \n {message.text && (\n <div className={MESSAGES.CLASSES.TEXT}>\n {message.text}\n <span className={MESSAGES.CLASSES.TIME} aria-label={`Sent at ${message.time}`}>\n {message.time}\n </span>\n </div>\n )}\n \n {message.image && (\n <img \n className={MESSAGES.CLASSES.IMAGE} \n src={message.image} \n alt=\"Message attachment\" \n loading=\"lazy\"\n />\n )}\n \n {message.file && (\n <div \n className={MESSAGES.CLASSES.FILE}\n aria-label={`File attachment: ${message.file.name}, size: ${message.file.size}`}\n >\n <span className={MESSAGES.CLASSES.FILE_ICON}>\n <Icon name=\"File\" aria-hidden=\"true\" />\n </span>\n <div className={MESSAGES.CLASSES.FILE_DETAILS}>\n <div className={MESSAGES.CLASSES.FILE_NAME}>{message.file.name}</div>\n <div className={MESSAGES.CLASSES.FILE_SIZE}>{message.file.size}</div>\n </div>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n \n <form \n className={MESSAGES.CLASSES.FORM} \n onSubmit={handleSubmit}\n aria-label=\"Message input form\"\n >\n <div className={MESSAGES.CLASSES.INPUT_GROUP}>\n <label htmlFor={inputId} className=\"u-visually-hidden\">\n Type a message\n </label>\n <input\n id={inputId}\n type=\"text\"\n className={MESSAGES.CLASSES.INPUT}\n placeholder={placeholder}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n aria-label=\"Message input\"\n />\n <div className={MESSAGES.CLASSES.OPTIONS} aria-label=\"Message options\">\n <button \n type=\"button\"\n className={MESSAGES.CLASSES.OPTION}\n aria-label=\"Attach file\"\n disabled={disabled}\n >\n <Icon name=\"PaperclipHorizontal\" aria-hidden=\"true\" className={MESSAGES.CLASSES.OPTION_ICON}/>\n </button>\n <button \n type=\"button\"\n className={MESSAGES.CLASSES.OPTION}\n aria-label=\"Attach image\"\n disabled={disabled}\n >\n <Icon name=\"Image\" aria-hidden=\"true\" className={MESSAGES.CLASSES.OPTION_ICON}/>\n </button>\n <button \n type=\"button\"\n className={MESSAGES.CLASSES.OPTION}\n aria-label=\"Insert link\"\n disabled={disabled}\n >\n <Icon name=\"Link\" aria-hidden=\"true\" className={MESSAGES.CLASSES.OPTION_ICON}/>\n </button>\n </div>\n </div>\n <button \n type=\"submit\" \n className={MESSAGES.CLASSES.SUBMIT}\n aria-label=\"Send message\"\n disabled={disabled}\n >\n <Icon name=\"PaperPlaneTilt\" aria-hidden=\"true\" size={24}/>\n </button>\n </form>\n </div>\n );\n};\n\nexport default Messages; ","import { useState } from 'react';\nimport { NavbarProps, NavProps, NavItemProps, NavDropdownProps } from '../types/components';\nimport { NAVBAR, NAV } from '../constants/components';\nimport React from 'react';\nimport { Icon } from '../../components/Icon';\n\n/**\n * Navbar state and functionality\n * @param initialProps - Initial navbar properties\n * @returns Navbar state and methods\n */\nexport function useNavbar(initialProps?: Partial<NavbarProps>) {\n // Default navbar properties\n const defaultProps: Partial<NavbarProps> = {\n position: 'static',\n collapsible: true,\n ...initialProps\n };\n\n // Local expanded state for when not controlled externally\n const [isExpanded, setIsExpanded] = useState(false);\n\n /**\n * Generate navbar class based on properties\n * @param props - Navbar properties\n * @returns Class string\n */\n const generateNavbarClass = (props: Partial<NavbarProps>): string => {\n const {\n position = defaultProps.position,\n variant,\n collapsible = defaultProps.collapsible,\n className = '',\n } = props;\n\n const positionClass = position !== 'static' ? `c-navbar--${position}` : '';\n const variantClass = variant ? `c-navbar--${variant}` : '';\n const collapsibleClass = collapsible ? 'c-navbar--collapsible' : '';\n \n return `c-navbar ${positionClass} ${variantClass} ${collapsibleClass} ${className}`.trim();\n };\n\n /**\n * Generate container style\n * @param width - Container width\n * @returns Style object\n */\n const generateContainerStyle = (width?: string) => {\n return width ? { maxWidth: width } : {};\n };\n\n /**\n * Generate collapse class based on expanded state\n * @param expanded - Whether the collapse is expanded\n * @returns Class string\n */\n const generateCollapseClass = (expanded: boolean): string => {\n return `c-navbar__collapse ${expanded ? 'is-expanded' : ''}`.trim();\n };\n\n /**\n * Toggle expanded state\n */\n const toggleExpanded = () => {\n const newState = !isExpanded;\n setIsExpanded(newState);\n \n if (defaultProps.onToggle) {\n defaultProps.onToggle(newState);\n }\n };\n\n /**\n * Get current expanded state\n * @param controlled - External expanded value if controlled\n * @returns Current expanded state\n */\n const getExpandedState = (controlled?: boolean): boolean => {\n return typeof controlled !== 'undefined' ? controlled : isExpanded;\n };\n\n return {\n defaultProps,\n isExpanded,\n setIsExpanded,\n generateNavbarClass,\n generateContainerStyle,\n generateCollapseClass,\n toggleExpanded,\n getExpandedState\n };\n}\n\n/**\n * Nav state and functionality\n * @param initialProps - Initial nav properties\n * @returns Nav state and methods\n */\nexport function useNav(initialProps?: Partial<NavProps>) {\n // Default nav properties\n const defaultProps: Partial<NavProps> = {\n alignment: 'start',\n ...initialProps\n };\n\n /**\n * Generate nav class based on properties\n * @param props - Nav properties\n * @returns Class string\n */\n const generateNavClass = (props: Partial<NavProps>): string => {\n const {\n alignment = defaultProps.alignment,\n className = '',\n } = props;\n\n const alignmentClass = alignment !== 'start' ? `c-nav--${alignment}` : '';\n \n return `c-nav ${alignmentClass} ${className}`.trim();\n };\n\n return {\n defaultProps,\n generateNavClass\n };\n}\n\n/**\n * Nav item state and functionality\n * @param initialProps - Initial nav item properties\n * @returns Nav item state and methods\n */\nexport function useNavItem(initialProps?: Partial<NavItemProps & { megaMenu?: boolean }>) {\n // Default nav item properties\n const defaultProps: Partial<NavItemProps & { megaMenu?: boolean }> = {\n dropdown: false,\n megaMenu: false,\n active: false,\n ...initialProps\n };\n\n /**\n * Generate nav item class based on properties\n * @param props - Nav item properties\n * @returns Class string\n */\n const generateNavItemClass = (props: Partial<NavItemProps & { megaMenu?: boolean }>): string => {\n const {\n dropdown = defaultProps.dropdown,\n megaMenu = defaultProps.megaMenu,\n active = defaultProps.active,\n disabled = defaultProps.disabled,\n className = '',\n } = props;\n\n // Apply dropdown class only for regular dropdowns, not mega menus\n const dropdownClass = dropdown && !megaMenu ? NAV.SELECTORS.DROPDOWN.replace('.', '') : '';\n // Add a custom class for mega menu items if needed\n const megaMenuClass = megaMenu ? 'c-nav__item--mega-menu' : '';\n const activeClass = active ? NAV.CLASSES.ACTIVE : '';\n const disabledClass = disabled ? NAV.CLASSES.DISABLED : '';\n \n return `c-nav__item ${dropdownClass} ${megaMenuClass} ${activeClass} ${disabledClass} ${className}`.trim();\n };\n\n /**\n * Generate nav link class based on properties\n * @param active - Whether link is active\n * @param disabled - Whether link is disabled\n * @param className - Additional class names\n * @returns Class string\n */\n const generateNavLinkClass = (active = false, disabled = false, className = ''): string => {\n const activeClass = active ? NAV.CLASSES.ACTIVE : '';\n const disabledClass = disabled ? 'c-nav__link--disabled' : '';\n \n return `c-nav__link ${activeClass} ${disabledClass} ${className}`.trim();\n };\n\n /**\n * Handle nav item click with disabled check\n * @param handler - Click handler function\n * @returns Function that respects disabled state\n */\n const handleClick = (handler?: () => void) => {\n return (e: React.MouseEvent) => {\n if (defaultProps.disabled || !handler) {\n e.preventDefault();\n return;\n }\n \n handler();\n };\n };\n\n return {\n defaultProps,\n generateNavItemClass,\n generateNavLinkClass,\n handleClick\n };\n}\n\n/**\n * Nav dropdown state and functionality\n * @param initialProps - Initial dropdown properties\n * @returns Dropdown state and methods\n */\nexport function useNavDropdown(initialProps?: Partial<NavDropdownProps>) {\n // Default dropdown properties\n const defaultProps: Partial<NavDropdownProps> = {\n alignment: 'start',\n megaMenu: false,\n ...initialProps\n };\n\n /**\n * Generate dropdown menu class based on properties\n * @param props - Dropdown properties\n * @returns Class string\n */\n const generateDropdownMenuClass = (props: Partial<NavDropdownProps>): string => {\n const {\n alignment = defaultProps.alignment,\n megaMenu = defaultProps.megaMenu,\n className = '',\n } = props;\n\n // Select the base class based on mega menu or regular dropdown\n const baseClass = megaMenu ? NAV.SELECTORS.MEGA_MENU.replace('.', '') : NAV.SELECTORS.DROPDOWN_MENU.replace('.', '');\n \n // Add alignment class if not default 'start'\n let alignmentClass = '';\n if (alignment === 'center') {\n alignmentClass = `${baseClass}--center`;\n } else if (alignment === 'end') {\n alignmentClass = `${baseClass}--end`;\n }\n \n return `${baseClass} ${alignmentClass} ${className}`.trim();\n };\n\n /**\n * Detect whether we're in a fixed-bottom navbar\n * @returns Boolean indicating if in fixed-bottom navbar\n */\n const isInFixedBottomNavbar = (): boolean => {\n // This would need to be called in the component itself\n // because it requires DOM access\n return document.querySelector('.c-navbar--fixed-bottom') !== null;\n };\n \n /**\n * Get the appropriate icon name based on navbar position\n * @param isMegaMenu - Whether it's a mega menu\n * @returns Icon name for the new Icon component\n */\n const getIconName = (isMegaMenu: boolean = false): string => {\n const isFixedBottom = isInFixedBottomNavbar();\n return isFixedBottom ? 'CaretUp' : 'CaretDown';\n };\n\n // Keeping this for backward compatibility\n const getIconClass = (isMegaMenu: boolean = false): string => {\n console.warn('getIconClass is deprecated. Please use the Icon component directly with the getIconName function.');\n const isFixedBottom = isInFixedBottomNavbar();\n return `c-nav__icon ${isFixedBottom ? 'icon-lux-caret-up' : 'icon-lux-caret-down'}`;\n };\n\n return {\n defaultProps,\n generateDropdownMenuClass,\n isInFixedBottomNavbar,\n getIconClass,\n getIconName\n };\n} ","import React, { useState, useEffect, useRef } from 'react';\nimport { NavbarProps } from '../../lib/types/components';\nimport { useNavbar } from '../../lib/composables/useNavbar';\nimport { NAVBAR } from '../../lib/constants/components';\n\nexport const Navbar: React.FC<NavbarProps> = ({\n brand,\n children,\n variant,\n position = 'static',\n containerWidth,\n collapsible = true,\n expanded,\n onToggle,\n className = '',\n disabled = false\n}) => {\n const { generateNavbarClass, generateContainerStyle, generateCollapseClass } = useNavbar({ \n position, collapsible, expanded, onToggle\n });\n \n // Use controlled or uncontrolled expanded state\n const [navbarExpanded, setNavbarExpanded] = useState(expanded || false);\n \n // Ref for the collapse element to handle responsive behavior\n const collapseRef = useRef<HTMLDivElement>(null);\n \n // Update local state when external state changes\n useEffect(() => {\n if (typeof expanded !== 'undefined') {\n setNavbarExpanded(expanded);\n }\n }, [expanded]);\n \n // Handle resize to reset mobile menu state when switching to desktop\n useEffect(() => {\n const handleResize = () => {\n const isMobile = window.innerWidth < 768; // MD breakpoint\n if (!isMobile && collapsible) {\n // Reset expanded state on desktop\n if (typeof onToggle === 'function') {\n // Only update if different to avoid unnecessary renders\n if (expanded) onToggle(false);\n } else {\n setNavbarExpanded(false);\n }\n }\n };\n \n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [collapsible, expanded, onToggle]);\n \n // Generate the navbar class\n const navbarClass = generateNavbarClass({ \n position, variant, collapsible, className\n });\n \n // Generate the container style\n const containerStyle = generateContainerStyle(containerWidth);\n \n // Generate collapse class\n const collapseClass = generateCollapseClass(navbarExpanded);\n \n // Handle toggler click\n const handleToggleClick = () => {\n if (disabled) return;\n \n const newState = !navbarExpanded;\n \n if (typeof onToggle === 'function') {\n // Controlled component\n onToggle(newState);\n } else {\n // Uncontrolled component\n setNavbarExpanded(newState);\n }\n };\n \n return (\n <nav className={navbarClass} aria-label=\"Main navigation\">\n <div className=\"c-navbar__container\" style={containerStyle}>\n {brand && (\n typeof brand === 'string' ? (\n <a href=\"/\" className=\"c-navbar__brand\">{brand}</a>\n ) : (\n <div className=\"c-navbar__brand\">{brand}</div>\n )\n )}\n \n {collapsible && (\n <button \n className=\"c-navbar__toggler\" \n onClick={handleToggleClick}\n aria-expanded={navbarExpanded}\n aria-label=\"Toggle navigation\"\n aria-controls=\"navbar-collapse\"\n disabled={disabled}\n type=\"button\"\n >\n <span className=\"c-navbar__toggler-icon\"></span>\n </button>\n )}\n \n <div \n id=\"navbar-collapse\"\n className={collapseClass}\n ref={collapseRef}\n >\n {children}\n </div>\n </div>\n </nav>\n );\n}; ","import React from 'react';\nimport { NavProps } from '../../lib/types/components';\nimport { useNav } from '../../lib/composables/useNavbar';\n\nexport const Nav: React.FC<NavProps> = ({\n children,\n alignment = 'start',\n className = '',\n disabled = false\n}) => {\n const { generateNavClass } = useNav({ alignment });\n \n const navClass = generateNavClass({ alignment, className });\n \n return (\n <ul className={navClass} role=\"menubar\" aria-orientation=\"horizontal\">\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n // Pass disabled prop down to all children if Nav is disabled\n return React.cloneElement(child, {\n ...child.props,\n disabled: disabled ? true : child.props.disabled\n });\n }\n return child;\n })}\n </ul>\n );\n}; ","import React, { useState, useEffect, useRef, ReactNode } from 'react';\nimport { NavItemProps } from '../../lib/types/components';\nimport { useNavItem } from '../../lib/composables/useNavbar';\n\nexport const NavItem: React.FC<NavItemProps> = ({\n children,\n dropdown = false,\n megaMenu = false,\n active = false,\n href,\n onClick,\n className = '',\n disabled = false,\n 'aria-expanded': ariaExpanded,\n}) => {\n const { generateNavItemClass, generateNavLinkClass, handleClick } = useNavItem({ \n dropdown,\n megaMenu,\n active, \n disabled \n });\n \n // State for tracking dropdown open state\n const [isActive, setIsActive] = useState(false);\n \n // Ref for detecting outside clicks\n const itemRef = useRef<HTMLLIElement>(null);\n \n // Toggle dropdown\n const handleDropdownToggle = (e: React.MouseEvent) => {\n if (dropdown || megaMenu) {\n e.preventDefault();\n setIsActive(!isActive);\n }\n };\n \n // Close dropdown on outside click (desktop only)\n useEffect(() => {\n if ((!dropdown && !megaMenu) || !isActive) return;\n \n const handleOutsideClick = (e: MouseEvent) => {\n if (itemRef.current && !itemRef.current.contains(e.target as Node)) {\n // Only handle desktop outside clicks\n const isMobile = window.innerWidth < 768; // MD breakpoint\n if (!isMobile) {\n setIsActive(false);\n }\n }\n };\n \n document.addEventListener('click', handleOutsideClick);\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n };\n }, [dropdown, megaMenu, isActive]);\n \n // Close dropdown on resize to desktop\n useEffect(() => {\n if (!dropdown && !megaMenu) return;\n \n const handleResize = () => {\n const isMobile = window.innerWidth < 768; // MD breakpoint\n if (!isMobile && isActive) {\n setIsActive(false);\n }\n };\n \n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, [dropdown, megaMenu, isActive]);\n \n const navItemClass = generateNavItemClass({ \n dropdown, \n megaMenu,\n active, \n disabled, \n className\n }) + (isActive ? ' is-active' : '');\n \n const navLinkClass = generateNavLinkClass(\n active, \n disabled, \n (dropdown || megaMenu) ? 'c-nav__dropdown-toggle' : ''\n );\n \n // For dropdown items, we need to determine content structure\n const getDropdownContent = (): ReactNode[] => {\n const childrenArray = React.Children.toArray(children);\n \n // For NavDropdown component, childrenArray will be [title, content]\n // For regular NavItem, it's just the content directly\n return childrenArray;\n };\n \n const childContent = getDropdownContent();\n \n // Use aria-expanded from props if provided, otherwise use local state\n const expanded = typeof ariaExpanded !== 'undefined' ? ariaExpanded : isActive;\n \n return (\n <li \n className={navItemClass} \n ref={itemRef}\n role=\"menuitem\"\n aria-haspopup={dropdown || megaMenu}\n >\n <a \n href={href || '#'} \n className={navLinkClass}\n onClick={(dropdown || megaMenu) ? handleDropdownToggle : handleClick(onClick)}\n aria-disabled={disabled}\n aria-expanded={dropdown || megaMenu ? expanded : undefined}\n aria-current={active && !dropdown && !megaMenu ? 'page' : undefined}\n >\n {(dropdown || megaMenu) ? childContent[0] : children}\n </a>\n \n {(dropdown || megaMenu) && childContent.length > 1 && childContent[1]}\n </li>\n );\n}; ","import React, { useState, useEffect, useRef } from 'react';\nimport { NavDropdownProps } from '../../lib/types/components';\nimport { useNavDropdown } from '../../lib/composables/useNavbar';\nimport { NavItem } from './NavItem';\nimport { Icon } from '../Icon';\n\nexport const NavDropdown: React.FC<NavDropdownProps> = ({\n title,\n children,\n alignment = 'start',\n megaMenu = false,\n className = '',\n disabled = false\n}) => {\n const { generateDropdownMenuClass, getIconName } = useNavDropdown({ \n alignment, megaMenu \n });\n \n const [isActive, setIsActive] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n \n const dropdownMenuClass = generateDropdownMenuClass({ \n alignment, megaMenu, className \n });\n \n // Get the appropriate icon name\n const iconName = getIconName(megaMenu);\n \n // Handle dropdown toggle\n const handleToggle = () => {\n if (disabled) return;\n setIsActive(!isActive);\n };\n \n // Handle click outside to close dropdown (desktop only)\n useEffect(() => {\n if (!isActive) return;\n \n const handleClickOutside = (e: MouseEvent) => {\n const isMobile = window.innerWidth < 768; // MD breakpoint\n \n if (!isMobile && dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {\n setIsActive(false);\n }\n };\n \n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isActive]);\n \n // Handle Escape key to close dropdown\n useEffect(() => {\n if (!isActive) return;\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsActive(false);\n }\n };\n \n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [isActive]);\n \n // Create the title element with the icon\n const titleWithIcon = (\n <>\n {title}\n <Icon name={iconName as any} size=\"sm\" className=\"c-nav__icon\" />\n </>\n );\n \n // Create the dropdown/mega menu content\n const menuContent = (\n <div \n className={dropdownMenuClass} \n ref={dropdownRef}\n aria-hidden={!isActive}\n >\n {children}\n </div>\n );\n \n return (\n <NavItem \n dropdown={!megaMenu} \n megaMenu={megaMenu} \n disabled={disabled} \n className={isActive ? 'is-active' : ''}\n href=\"#\"\n onClick={handleToggle}\n aria-expanded={isActive}\n >\n {titleWithIcon}\n {menuContent}\n </NavItem>\n );\n}; ","import React, { ReactNode } from 'react';\nimport { MenuProps, MenuItemProps } from '../../lib/types/components';\nimport { Icon } from '../Icon';\n\nexport const Menu: React.FC<MenuProps> = ({\n children,\n className = '',\n disabled = false\n}) => {\n return (\n <div className={`c-menu ${className}`}>\n <ul className=\"c-menu__list\" role=\"menu\">\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n // Pass disabled prop down to all children if Menu is disabled\n return React.cloneElement(child, {\n ...child.props,\n disabled: disabled ? true : child.props.disabled\n });\n }\n return child;\n })}\n </ul>\n </div>\n );\n};\n\ninterface MenuDividerProps {\n /**\n * Additional CSS class names\n */\n className?: string;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n children,\n href = '#',\n icon,\n active = false,\n disabled = false,\n onClick,\n className = ''\n}) => {\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n \n if (onClick) {\n onClick();\n }\n };\n \n const itemClass = `c-menu__item ${active ? 'is-active' : ''} ${disabled ? 'is-disabled' : ''} ${className}`;\n \n return (\n <li className={itemClass} role=\"menuitem\">\n <a \n href={href} \n className=\"c-menu__link\"\n onClick={handleClick}\n aria-disabled={disabled}\n aria-current={active ? 'page' : undefined}\n >\n {icon && (\n typeof icon === 'string' ? (\n icon.startsWith('c-icon-') ? (\n <Icon \n name={mapIconName(icon.replace('c-icon-', ''))} \n size=\"sm\"\n className=\"c-menu__icon\"\n />\n ) : (\n <i className={`c-menu__icon ${icon}`}>\n {typeof icon !== 'string' && icon}\n </i>\n )\n ) : (\n <span className=\"c-menu__icon\">\n {icon}\n </span>\n )\n )}\n {children}\n </a>\n </li>\n );\n};\n\n// Map icon-lux names to Phosphor icon names\nexport const mapIconName = (luxIconName: string): any => {\n const iconMap: Record<string, any> = {\n 'circle': 'Circle',\n 'caret-down': 'CaretDown',\n 'caret-up': 'CaretUp',\n 'caret-right': 'CaretRight',\n 'user': 'User',\n 'settings': 'Gear',\n 'sign-out': 'SignOut',\n 'file': 'File',\n 'bookmark': 'Bookmark',\n 'question-circle': 'Question',\n 'bell': 'Bell',\n 'search': 'MagnifyingGlass',\n // Add more mappings as needed\n };\n \n return iconMap[luxIconName] || 'Circle'; // Default to Circle if no mapping found\n};\n\nexport const MenuDivider: React.FC<MenuDividerProps> = ({\n className = ''\n}) => {\n return (\n <li className={`c-menu__divider ${className}`} role=\"separator\"></li>\n );\n}; ","import React, { ReactNode } from 'react';\nimport { MegaMenuProps, MegaMenuColumnProps, MegaMenuLinkProps } from '../../lib/types/components';\nimport { Icon } from '../Icon';\nimport { mapIconName } from './Menu'; // Import the mapping function\n\nexport const MegaMenu: React.FC<MegaMenuProps> = ({\n children,\n className = '',\n disabled = false\n}) => {\n return (\n <div className={`c-menu c-menu--mega ${className}`}>\n <div className=\"c-menu__container\">\n <div className=\"c-menu__grid o-grid\">\n {React.Children.map(children, child => {\n if (React.isValidElement(child)) {\n // Pass disabled prop down to all children if MegaMenu is disabled\n return React.cloneElement(child, {\n ...child.props,\n disabled: disabled ? true : child.props.disabled\n });\n }\n return child;\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport const MegaMenuColumn: React.FC<MegaMenuColumnProps> = ({\n title,\n icon,\n children,\n width = 'auto',\n className = '',\n disabled = false\n}) => {\n const columnClass = `o-grid__col o-grid__col--${width} ${className}`;\n \n return (\n <div className={columnClass}>\n {(title || icon) && (\n <div className=\"c-menu__header\">\n {icon && (\n typeof icon === 'string' ? (\n icon.startsWith('c-icon-') ? (\n <Icon \n name={mapIconName(icon.replace('c-icon-', ''))}\n size=\"sm\"\n className=\"c-menu__header-icon\"\n />\n ) : (\n <i className={`c-menu__header-icon ${icon}`}>\n {typeof icon !== 'string' && icon}\n </i>\n )\n ) : (\n <span className=\"c-menu__header-icon\">\n {icon}\n </span>\n )\n )}\n {title && <div className=\"c-menu__header-title\">{title}</div>}\n </div>\n )}\n \n <ul className=\"c-menu__subitems-list\" role=\"menu\">\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n // Pass disabled prop down to all children if column is disabled\n return (\n <li className=\"c-menu__subitem\" role=\"menuitem\">\n {React.cloneElement(child, {\n ...child.props,\n disabled: disabled ? true : child.props.disabled\n })}\n </li>\n );\n }\n return null;\n })}\n </ul>\n </div>\n );\n};\n\nexport const MegaMenuLink: React.FC<MegaMenuLinkProps> = ({\n href,\n children,\n className = '',\n disabled = false,\n onClick\n}) => {\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n \n if (onClick) {\n onClick();\n }\n };\n \n return (\n <a \n href={href} \n className={`c-menu__subitem-link ${disabled ? 'is-disabled' : ''} ${className}`}\n onClick={handleClick}\n aria-disabled={disabled}\n >\n {children}\n </a>\n );\n}; ","import React, { useState, useEffect, useCallback, useRef } from 'react';\n\ninterface UsePhotoViewerProps {\n images: (string | { src: string; [key: string]: any })[];\n startIndex?: number;\n enableGestures?: boolean;\n onImageChange?: (index: number) => void;\n onClose?: () => void;\n}\n\ninterface ImageState {\n zoomLevel: number;\n position: { x: number; y: number };\n rotation: number;\n bounds: {\n minX: number;\n maxX: number;\n minY: number;\n maxY: number;\n };\n}\n\nexport const usePhotoViewer = ({ \n images, \n startIndex = 0, \n enableGestures = true, \n onImageChange, \n onClose \n}: UsePhotoViewerProps) => {\n const [currentIndex, setCurrentIndex] = useState(startIndex);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [startDragPosition, setStartDragPosition] = useState({ x: 0, y: 0 });\n const [isFullscreen, setIsFullscreen] = useState(false);\n const [showInfo, setShowInfo] = useState(false);\n const [imageStates, setImageStates] = useState<Record<number, ImageState>>({});\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [isMounted, setIsMounted] = useState(false);\n const [momentumZoom, setMomentumZoom] = useState({ velocity: 0, timestamp: 0 });\n \n // Ref for the image element\n const imageRef = useRef<HTMLImageElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n \n // Track touch points for pinch zoom\n const touchPointsRef = useRef<{ x: number; y: number }[]>([]);\n const lastDistanceRef = useRef<number | null>(null);\n const lastMidpointRef = useRef<{ x: number; y: number } | null>(null);\n const lastWheelTime = useRef<number>(0);\n const momentumTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n // Calculate dragging bounds based on zoom level and image dimensions\n const calculateBounds = useCallback((zoomLevel: number, rotation: number) => {\n if (!isMounted || !imageRef.current || !containerRef.current) {\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 };\n }\n\n const image = imageRef.current;\n const container = containerRef.current;\n \n // Additional safety check for DOM readiness\n if (!image.naturalWidth && !image.width) {\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 };\n }\n \n // Get natural image dimensions\n const imageWidth = image.naturalWidth || image.width || 800;\n const imageHeight = image.naturalHeight || image.height || 600;\n \n // Get container dimensions with null check\n try {\n const containerRect = container.getBoundingClientRect();\n if (!containerRect || containerRect.width === 0 || containerRect.height === 0) {\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 };\n }\n const containerWidth = containerRect.width;\n const containerHeight = containerRect.height;\n \n // Calculate image display dimensions considering rotation\n const rotationRad = (rotation * Math.PI) / 180;\n const cos = Math.abs(Math.cos(rotationRad));\n const sin = Math.abs(Math.sin(rotationRad));\n \n // Calculate the actual display size of the image\n const aspectRatio = imageWidth / imageHeight;\n let displayWidth, displayHeight;\n \n if (containerWidth / containerHeight > aspectRatio) {\n displayHeight = Math.min(containerHeight * 0.9, imageHeight);\n displayWidth = displayHeight * aspectRatio;\n } else {\n displayWidth = Math.min(containerWidth * 0.9, imageWidth);\n displayHeight = displayWidth / aspectRatio;\n }\n \n // Account for rotation in bounds calculation\n const rotatedWidth = displayWidth * cos + displayHeight * sin;\n const rotatedHeight = displayWidth * sin + displayHeight * cos;\n \n // Calculate scaled dimensions\n const scaledWidth = rotatedWidth * zoomLevel;\n const scaledHeight = rotatedHeight * zoomLevel;\n \n // Calculate bounds - how far we can drag\n const maxX = Math.max(0, (scaledWidth - containerWidth) / 2);\n const maxY = Math.max(0, (scaledHeight - containerHeight) / 2);\n \n return {\n minX: -maxX,\n maxX: maxX,\n minY: -maxY,\n maxY: maxY\n };\n } catch (error) {\n console.warn('PhotoViewer: Error calculating bounds', error);\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 };\n }\n }, [isMounted]);\n\n // Constrain position within bounds\n const constrainPosition = useCallback((position: { x: number; y: number }, bounds: ImageState['bounds']) => {\n return {\n x: Math.max(bounds.minX, Math.min(bounds.maxX, position.x)),\n y: Math.max(bounds.minY, Math.min(bounds.maxY, position.y))\n };\n }, []);\n\n // Mount tracking and ensure the current index is within bounds\n useEffect(() => {\n setIsMounted(true);\n if (startIndex < 0 || startIndex >= images.length) {\n setCurrentIndex(0);\n } else {\n setCurrentIndex(startIndex);\n }\n return () => setIsMounted(false);\n }, [images, startIndex]);\n\n // Handle modal open/close body class\n useEffect(() => {\n if (isModalOpen) {\n document.body.classList.add('is-open-photoviewer');\n } else {\n document.body.classList.remove('is-open-photoviewer');\n }\n }, [isModalOpen]);\n\n // Initialize state for current image when index changes\n useEffect(() => {\n if (isModalOpen) {\n setImageStates(prev => {\n if (!prev[currentIndex]) {\n return {\n ...prev,\n [currentIndex]: {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n }\n };\n }\n return prev;\n });\n }\n }, [isModalOpen, currentIndex]);\n \n // Call onImageChange callback when current index changes\n useEffect(() => {\n if (onImageChange) {\n onImageChange(currentIndex);\n }\n }, [currentIndex, onImageChange]);\n\n // Update bounds when image loads or dimensions change\n useEffect(() => {\n const image = imageRef.current;\n const container = containerRef.current;\n \n const updateImageBounds = () => {\n if (!isMounted || !image || !container) return;\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newBounds = calculateBounds(currentState.zoomLevel, currentState.rotation);\n const constrainedPosition = constrainPosition(currentState.position, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n };\n \n if (image && container && image.complete && isMounted) {\n updateImageBounds();\n } else if (image && container && isMounted) {\n image.addEventListener('load', updateImageBounds);\n return () => image.removeEventListener('load', updateImageBounds);\n }\n }, [currentIndex, calculateBounds, constrainPosition, isMounted]);\n\n // Handle window resize\n useEffect(() => {\n const handleResize = () => {\n if (!isMounted || !imageRef.current || !containerRef.current) return;\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newBounds = calculateBounds(currentState.zoomLevel, currentState.rotation);\n const constrainedPosition = constrainPosition(currentState.position, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n };\n \n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [currentIndex, calculateBounds, constrainPosition, isMounted]);\n\n const openModal = useCallback(() => {\n setIsModalOpen(true);\n }, []);\n\n const closeModal = useCallback(() => {\n setIsModalOpen(false);\n if (onClose) onClose();\n }, [onClose]);\n\n const goToPrevious = useCallback(() => {\n if (currentIndex > 0) {\n setIsTransitioning(true);\n setTimeout(() => {\n setCurrentIndex(prev => prev - 1);\n setIsTransitioning(false);\n }, 150);\n }\n }, [currentIndex]);\n\n const goToNext = useCallback(() => {\n if (currentIndex < images.length - 1) {\n setIsTransitioning(true);\n setTimeout(() => {\n setCurrentIndex(prev => prev + 1);\n setIsTransitioning(false);\n }, 150);\n }\n }, [currentIndex, images.length]);\n\n const setZoomLevel = useCallback((zoom: number | ((prev: number) => number)) => {\n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newZoom = typeof zoom === 'function' ? zoom(currentState.zoomLevel) : zoom;\n const clampedZoom = Math.max(0.1, Math.min(5, newZoom));\n \n const newBounds = calculateBounds(clampedZoom, currentState.rotation);\n const constrainedPosition = constrainPosition(currentState.position, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n zoomLevel: clampedZoom,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n }, [isMounted, currentIndex, calculateBounds, constrainPosition]);\n\n const setImagePosition = useCallback((position: { x: number; y: number } | ((prev: { x: number; y: number }) => { x: number; y: number })) => {\n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newPosition = typeof position === 'function' ? position(currentState.position) : position;\n const constrainedPosition = constrainPosition(newPosition, currentState.bounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n position: constrainedPosition\n }\n };\n });\n }, [currentIndex, constrainPosition]);\n\n const setRotationAngle = useCallback((rotation: number | ((prev: number) => number)) => {\n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newRotation = typeof rotation === 'function' ? rotation(currentState.rotation) : rotation;\n const normalizedRotation = ((newRotation % 360) + 360) % 360;\n \n const newBounds = calculateBounds(currentState.zoomLevel, normalizedRotation);\n const constrainedPosition = constrainPosition(currentState.position, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n rotation: normalizedRotation,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n }, [isMounted, currentIndex, calculateBounds, constrainPosition]);\n\n // Handle mouse wheel for zooming with proper bounds\n const handleWheel = useCallback((event: React.WheelEvent<HTMLDivElement>) => {\n if (!isMounted || !event || !event.currentTarget) return;\n \n // Additional safety check for the target element\n const target = event.currentTarget;\n if (!target || typeof target.getBoundingClientRect !== 'function') return;\n \n // Storybook-specific safety check - ensure DOM is ready\n if (typeof window !== 'undefined' && window.location?.href?.includes('storybook')) {\n try {\n // Test if getBoundingClientRect works before proceeding\n const testRect = target.getBoundingClientRect();\n if (!testRect || testRect.width === 0 || testRect.height === 0) return;\n } catch (e) {\n return;\n }\n }\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n // Advanced gesture detection for different input methods\n const isMac = /Mac|iPod|iPhone|iPad/.test(navigator.platform);\n const isTrackpadPinch = event.ctrlKey && isMac;\n const hasHorizontalScroll = Math.abs(event.deltaX) > 0;\n const isTrackpadScroll = !event.ctrlKey && hasHorizontalScroll && isMac;\n const isMagicMouse = !event.ctrlKey && !hasHorizontalScroll && isMac;\n const isRegularMouse = !isMac;\n \n // Handle different input methods with appropriate sensitivity\n let zoomAmount: number;\n let shouldPreventDefault = false;\n \n if (isTrackpadPinch) {\n // MacBook trackpad pinch zoom - natural, high sensitivity\n zoomAmount = event.deltaY * -0.02;\n shouldPreventDefault = true;\n } else if (isTrackpadScroll) {\n // MacBook trackpad scroll with two fingers\n if (currentState.zoomLevel > 1) {\n // Only zoom when already zoomed in, otherwise allow natural scroll\n zoomAmount = event.deltaY * -0.003;\n shouldPreventDefault = true;\n } else {\n return prev; // Allow page scroll when not zoomed\n }\n } else if (isMagicMouse) {\n // Apple Magic Mouse - less sensitive\n zoomAmount = event.deltaY * -0.004;\n shouldPreventDefault = true;\n } else if (isRegularMouse) {\n // Regular mouse wheel - medium sensitivity\n zoomAmount = event.deltaY * -0.006;\n shouldPreventDefault = true;\n } else {\n // Fallback for other input methods\n zoomAmount = event.deltaY * -0.005;\n shouldPreventDefault = true;\n }\n \n if (shouldPreventDefault) {\n event.preventDefault();\n event.stopPropagation();\n }\n \n // Add momentum for trackpad gestures\n const currentTime = Date.now();\n const timeDelta = currentTime - lastWheelTime.current;\n lastWheelTime.current = currentTime;\n \n // Calculate velocity for momentum (trackpad specific)\n if (isTrackpadPinch && timeDelta < 100) {\n const velocity = Math.abs(zoomAmount) / timeDelta;\n setMomentumZoom({ velocity, timestamp: currentTime });\n \n // Clear any existing momentum timeout\n if (momentumTimeoutRef.current) {\n clearTimeout(momentumTimeoutRef.current);\n }\n \n // Apply momentum decay after gesture ends\n momentumTimeoutRef.current = setTimeout(() => {\n const decayFactor = 0.95;\n const minVelocity = 0.001;\n \n const applyMomentum = () => {\n setMomentumZoom(prev => {\n if (prev.velocity < minVelocity) return prev;\n \n const newVelocity = prev.velocity * decayFactor;\n const momentumZoomAmount = newVelocity * (zoomAmount > 0 ? 1 : -1);\n \n // Apply momentum zoom\n setImageStates(current => {\n const state = current[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newZoom = Math.max(0.1, Math.min(5, state.zoomLevel + momentumZoomAmount));\n if (newZoom === state.zoomLevel) return current;\n \n const newBounds = calculateBounds(newZoom, state.rotation);\n const constrainedPosition = constrainPosition(state.position, newBounds);\n \n return {\n ...current,\n [currentIndex]: {\n ...state,\n zoomLevel: newZoom,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n \n if (newVelocity >= minVelocity) {\n requestAnimationFrame(applyMomentum);\n }\n \n return { velocity: newVelocity, timestamp: Date.now() };\n });\n };\n \n requestAnimationFrame(applyMomentum);\n }, 50);\n }\n \n // Safe getBoundingClientRect call with error handling\n let rect;\n try {\n rect = target.getBoundingClientRect();\n } catch (error) {\n console.warn('PhotoViewer: Error getting bounding rect', error);\n return prev;\n }\n \n if (!rect || rect.width === 0 || rect.height === 0) return prev;\n \n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n const cursorX = event.clientX - rect.left - centerX;\n const cursorY = event.clientY - rect.top - centerY;\n \n const oldZoom = currentState.zoomLevel;\n const newZoom = Math.max(0.1, Math.min(5, oldZoom + zoomAmount));\n \n if (newZoom !== oldZoom) {\n const zoomFactor = newZoom / oldZoom;\n const newBounds = calculateBounds(newZoom, currentState.rotation);\n \n // Calculate new position to zoom towards cursor\n const newPosition = {\n x: currentState.position.x + cursorX * (1 - zoomFactor) * 0.5,\n y: currentState.position.y + cursorY * (1 - zoomFactor) * 0.5\n };\n \n const constrainedPosition = constrainPosition(newPosition, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n zoomLevel: newZoom,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n }\n return prev;\n });\n }, [isMounted, currentIndex, calculateBounds, constrainPosition]);\n\n // Handle double click to zoom with smart zoom levels\n const handleDoubleClick = useCallback((event: React.MouseEvent) => {\n if (!isMounted || !event || !event.currentTarget) return;\n \n const target = event.currentTarget;\n if (!target || typeof target.getBoundingClientRect !== 'function') return;\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n let rect;\n try {\n rect = target.getBoundingClientRect();\n } catch (error) {\n console.warn('PhotoViewer: Error getting bounding rect in double click', error);\n return prev;\n }\n \n if (!rect || rect.width === 0 || rect.height === 0) return prev;\n \n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n const cursorX = event.clientX - rect.left - centerX;\n const cursorY = event.clientY - rect.top - centerY;\n \n let newZoom: number;\n let newPosition = { x: 0, y: 0 };\n \n if (currentState.zoomLevel < 1.5) {\n newZoom = 2;\n // Zoom towards cursor\n newPosition = {\n x: -cursorX * 0.5,\n y: -cursorY * 0.5\n };\n } else if (currentState.zoomLevel < 3) {\n newZoom = 4;\n newPosition = {\n x: -cursorX * 0.75,\n y: -cursorY * 0.75\n };\n } else {\n newZoom = 1;\n newPosition = { x: 0, y: 0 };\n }\n \n const newBounds = calculateBounds(newZoom, currentState.rotation);\n const constrainedPosition = constrainPosition(newPosition, newBounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n zoomLevel: newZoom,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n });\n }, [isMounted, currentIndex, calculateBounds, constrainPosition]);\n\n // Handle mouse down for panning\n const handleMouseDown = useCallback((event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => {\n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n if (currentState.zoomLevel > 1) {\n event.preventDefault();\n setIsDragging(true);\n setStartDragPosition({ \n x: event.clientX - currentState.position.x, \n y: event.clientY - currentState.position.y \n });\n }\n return prev;\n });\n }, [currentIndex]);\n\n // Handle mouse move for panning with bounds\n const handleMouseMove = useCallback((event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => {\n if (!isDragging) return;\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n const newPosition = {\n x: event.clientX - startDragPosition.x,\n y: event.clientY - startDragPosition.y\n };\n \n const constrainedPosition = constrainPosition(newPosition, currentState.bounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n position: constrainedPosition\n }\n };\n });\n }, [isDragging, startDragPosition, currentIndex, constrainPosition]);\n\n // Handle mouse up for panning\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n \n // Touch handlers for mobile gestures with bounds\n const handleTouchStart = useCallback((event: React.TouchEvent<HTMLImageElement | HTMLDivElement>) => {\n if (!enableGestures) return;\n \n const touches = event.touches;\n \n // Always prevent default for multi-touch to stop page zoom\n if (touches.length > 1) {\n event.preventDefault();\n event.stopPropagation();\n }\n \n touchPointsRef.current = Array.from(touches).map(touch => ({\n x: touch.clientX,\n y: touch.clientY\n }));\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n if (touches.length === 1 && currentState.zoomLevel > 1) {\n setIsDragging(true);\n setStartDragPosition({\n x: touches[0].clientX - currentState.position.x,\n y: touches[0].clientY - currentState.position.y\n });\n } else if (touches.length === 2) {\n const dx = touches[0].clientX - touches[1].clientX;\n const dy = touches[0].clientY - touches[1].clientY;\n lastDistanceRef.current = Math.sqrt(dx * dx + dy * dy);\n \n lastMidpointRef.current = {\n x: (touches[0].clientX + touches[1].clientX) / 2,\n y: (touches[0].clientY + touches[1].clientY) / 2\n };\n }\n return prev;\n });\n }, [enableGestures, currentIndex]);\n\n // Handle touch move for dragging and pinch zoom with bounds\n const handleTouchMove = useCallback((event: React.TouchEvent<HTMLImageElement | HTMLDivElement>) => {\n if (!enableGestures) return;\n \n const touches = event.touches;\n \n // Always prevent default for multi-touch gestures to stop page zoom\n if (touches.length > 1) {\n event.preventDefault();\n event.stopPropagation();\n }\n \n setImageStates(prev => {\n const currentState = prev[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n \n // Prevent default for single touch when zoomed in to avoid conflicts\n if (currentState.zoomLevel > 1 && touches.length === 1) {\n event.preventDefault();\n }\n \n if (touches.length === 1 && isDragging && currentState.zoomLevel > 1) {\n const newPosition = {\n x: touches[0].clientX - startDragPosition.x,\n y: touches[0].clientY - startDragPosition.y\n };\n const constrainedPosition = constrainPosition(newPosition, currentState.bounds);\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n position: constrainedPosition\n }\n };\n } else if (touches.length === 2 && lastDistanceRef.current !== null) {\n const dx = touches[0].clientX - touches[1].clientX;\n const dy = touches[0].clientY - touches[1].clientY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n \n const zoomDelta = (distance - lastDistanceRef.current) * 0.005;\n lastDistanceRef.current = distance;\n \n const currentMidpoint = {\n x: (touches[0].clientX + touches[1].clientX) / 2,\n y: (touches[0].clientY + touches[1].clientY) / 2\n };\n \n const oldZoom = currentState.zoomLevel;\n const newZoom = Math.max(0.1, Math.min(5, oldZoom + zoomDelta));\n \n if (newZoom !== oldZoom && lastMidpointRef.current) {\n let rect;\n try {\n rect = event.currentTarget.getBoundingClientRect();\n } catch (error) {\n console.warn('PhotoViewer: Error getting bounding rect in touch move', error);\n return prev;\n }\n \n if (!rect || rect.width === 0 || rect.height === 0) return prev;\n \n const centerX = rect.width / 2;\n const centerY = rect.height / 2;\n const midpointX = currentMidpoint.x - rect.left - centerX;\n const midpointY = currentMidpoint.y - rect.top - centerY;\n \n const zoomFactor = newZoom / oldZoom;\n const newBounds = calculateBounds(newZoom, currentState.rotation);\n \n const newPosition = {\n x: currentState.position.x + midpointX * (1 - zoomFactor) * 0.5,\n y: currentState.position.y + midpointY * (1 - zoomFactor) * 0.5\n };\n \n const constrainedPosition = constrainPosition(newPosition, newBounds);\n \n lastMidpointRef.current = currentMidpoint;\n \n return {\n ...prev,\n [currentIndex]: {\n ...currentState,\n zoomLevel: newZoom,\n bounds: newBounds,\n position: constrainedPosition\n }\n };\n }\n \n lastMidpointRef.current = currentMidpoint;\n }\n return prev;\n });\n }, [isMounted, enableGestures, isDragging, startDragPosition, currentIndex, constrainPosition, calculateBounds]);\n\n // Handle touch end\n const handleTouchEnd = useCallback(() => {\n setIsDragging(false);\n lastDistanceRef.current = null;\n lastMidpointRef.current = null;\n }, []);\n\n // Get current state values without causing re-renders\n const currentState = imageStates[currentIndex] || {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n };\n\n return {\n currentIndex,\n isModalOpen,\n zoomLevel: currentState.zoomLevel,\n imagePosition: currentState.position,\n isDragging,\n isFullscreen,\n rotationAngle: currentState.rotation,\n showInfo,\n imageRef,\n containerRef,\n isTransitioning,\n setCurrentIndex,\n setZoomLevel,\n setImagePosition,\n setIsDragging,\n setIsFullscreen,\n setRotationAngle,\n setShowInfo,\n openModal,\n closeModal,\n goToPrevious,\n goToNext,\n handleWheel,\n handleMouseDown,\n handleMouseMove,\n handleMouseUp,\n handleTouchStart,\n handleTouchMove,\n handleTouchEnd,\n handleDoubleClick,\n resetImageState: () => {\n setImageStates(prev => ({\n ...prev,\n [currentIndex]: {\n zoomLevel: 1,\n position: { x: 0, y: 0 },\n rotation: 0,\n bounds: { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n }\n }));\n }\n };\n};","import React from \"react\";\nimport { ImageType } from \"../../lib/types/components\";\nimport { Button } from \"../Button/Button\";\nimport { Badge } from \"../Badge/Badge\";\nimport { Icon } from \"../Icon/Icon\";\n\n/**\n * Props for the PhotoViewerHeader component\n */\nexport interface PhotoViewerHeaderProps {\n /** Current image index */\n currentIndex: number;\n /** Total number of images */\n imagesLength: number;\n /** Callback to zoom out */\n onZoomOut: () => void;\n /** Callback to reset zoom */\n onResetZoom: () => void;\n /** Callback to zoom in */\n onZoomIn: () => void;\n /** Callback to toggle fullscreen */\n onToggleFullscreen: () => void;\n /** Callback to close the viewer */\n onClose: () => void;\n /** Whether fullscreen is active */\n isFullscreen: boolean;\n /** Current zoom level */\n zoomLevel: number;\n /** Callback to rotate image */\n onRotate: () => void;\n /** Callback to download image */\n onDownload: () => void;\n /** Callback to share image */\n onShare: () => void;\n /** Whether info panel is shown */\n showInfo: boolean;\n /** Callback to toggle info panel */\n onToggleInfo: () => void;\n /** Current image object */\n currentImage?: ImageType;\n}\n\n/**\n * PhotoViewerHeader component - displays controls and counter for the photo viewer\n *\n * @param props - PhotoViewerHeaderProps\n * @returns JSX.Element\n */\nexport const PhotoViewerHeader: React.FC<PhotoViewerHeaderProps> = ({\n currentIndex,\n imagesLength,\n onZoomOut,\n onResetZoom,\n onZoomIn,\n onToggleFullscreen,\n onClose,\n isFullscreen,\n zoomLevel,\n onRotate,\n onDownload,\n onShare,\n showInfo,\n onToggleInfo,\n currentImage,\n}) => (\n <div className=\"c-photo-viewer__header\">\n <Badge\n label={`${currentIndex + 1} / ${imagesLength}`}\n variant=\"light\"\n size=\"sm\"\n className=\"c-photo-viewer__counter-badge\"\n />\n <div className=\"c-photo-viewer__actions\">\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onZoomOut}\n disabled={zoomLevel <= 0.1}\n aria-label=\"Zoom out\"\n icon={<Icon name=\"Minus\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onResetZoom}\n disabled={zoomLevel === 1}\n aria-label=\"Reset zoom\"\n icon={<Icon name=\"MagnifyingGlass\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onZoomIn}\n disabled={zoomLevel >= 5}\n aria-label=\"Zoom in\"\n icon={<Icon name=\"Plus\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onRotate}\n aria-label=\"Rotate image\"\n icon={<Icon name=\"ArrowsClockwise\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n {currentImage?.src && (\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onDownload}\n aria-label=\"Download image\"\n icon={<Icon name=\"DownloadSimple\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n )}\n {currentImage?.src &&\n typeof navigator !== \"undefined\" &&\n \"share\" in navigator && (\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onShare}\n aria-label=\"Share image\"\n icon={<Icon name=\"ShareNetwork\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n )}\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onToggleInfo}\n aria-label={showInfo ? \"Hide info\" : \"Show info\"}\n icon={<Icon name=\"Info\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button\"\n />\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onToggleFullscreen}\n aria-label={isFullscreen ? \"Exit fullscreen\" : \"Enter fullscreen\"}\n icon={\n isFullscreen ? (\n <Icon name=\"ArrowsIn\" size=\"sm\" />\n ) : (\n <Icon name=\"ArrowsOut\" size=\"sm\" />\n )\n }\n className=\"c-photo-viewer__action-button\"\n />\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onClose}\n aria-label=\"Close photo viewer\"\n icon={<Icon name=\"X\" size=\"sm\" />}\n className=\"c-photo-viewer__action-button c-photo-viewer__close\"\n />\n </div>\n </div>\n);\n\nexport default PhotoViewerHeader;\n","import React, { useEffect } from 'react';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\n\n/**\n * Props for the PhotoViewerNavigation component\n */\nexport interface PhotoViewerNavigationProps {\n /** Whether to show navigation buttons */\n show: boolean;\n /** Callback to go to previous image */\n onPrev: () => void;\n /** Callback to go to next image */\n onNext: () => void;\n /** Current image index */\n currentIndex: number;\n /** Total number of images */\n imagesLength: number;\n /** Whether keyboard navigation is enabled */\n enableKeyboardNav: boolean;\n /** Callback to close the viewer */\n onClose: () => void;\n}\n\n/**\n * PhotoViewerNavigation component - handles navigation between images\n * \n * @param props - PhotoViewerNavigationProps\n * @returns JSX.Element\n */\nexport const PhotoViewerNavigation: React.FC<PhotoViewerNavigationProps> = ({\n show,\n onPrev,\n onNext,\n currentIndex,\n imagesLength,\n enableKeyboardNav,\n onClose,\n}) => {\n // Add keyboard navigation\n useEffect(() => {\n if (!enableKeyboardNav) return;\n \n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowLeft') onPrev();\n if (e.key === 'ArrowRight') onNext();\n if (e.key === 'Escape') onClose();\n };\n \n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [enableKeyboardNav, onPrev, onNext, onClose]);\n \n return show ? (\n <>\n <Button\n iconOnly\n size=\"md\"\n variant=\"light\"\n rounded\n onClick={onPrev}\n disabled={currentIndex === 0}\n aria-label=\"Previous image\"\n icon={<Icon name=\"CaretLeft\" size=\"md\" />}\n className=\"c-photo-viewer__nav-button c-photo-viewer__nav-button--prev\"\n />\n <Button\n iconOnly\n size=\"md\"\n variant=\"light\"\n rounded\n onClick={onNext}\n disabled={currentIndex === imagesLength - 1}\n aria-label=\"Next image\"\n icon={<Icon name=\"CaretRight\" size=\"md\" />}\n className=\"c-photo-viewer__nav-button c-photo-viewer__nav-button--next\"\n />\n </>\n ) : null;\n};\n\nexport default PhotoViewerNavigation;","import React, { useRef, useEffect, useState } from 'react';\n\n/**\n * Props for the PhotoViewerImage component\n */\nexport interface PhotoViewerImageProps {\n /** Ref to the image element */\n imageRef: React.RefObject<HTMLImageElement>;\n /** Ref to the container element */\n containerRef?: React.RefObject<HTMLDivElement>;\n /** Image source URL */\n src: string;\n /** Image alt text */\n alt?: string;\n /** Current zoom level */\n zoomLevel: number;\n /** Current drag position */\n dragPosition: { x: number; y: number };\n /** Whether image is being dragged */\n isDragging: boolean;\n /** Current rotation angle in degrees */\n rotationAngle: number;\n /** Whether image is transitioning */\n isTransitioning?: boolean;\n /** Mouse down event handler */\n onMouseDown: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => void;\n /** Mouse move event handler */\n onMouseMove: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => void;\n /** Mouse up event handler */\n onMouseUp: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => void;\n /** Wheel event handler for zoom */\n onWheel: (event: React.WheelEvent<HTMLDivElement>) => void;\n /** Touch start event handler */\n onTouchStart: (event: React.TouchEvent<HTMLDivElement | HTMLImageElement>) => void;\n /** Touch move event handler */\n onTouchMove: (event: React.TouchEvent<HTMLDivElement | HTMLImageElement>) => void;\n /** Touch end event handler */\n onTouchEnd: (event: React.TouchEvent<HTMLDivElement | HTMLImageElement>) => void;\n /** Double click event handler */\n onDoubleClick?: (event: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => void;\n}\n\n/**\n * PhotoViewerImage component - displays the main image with zoom and pan capabilities\n * \n * @param props - PhotoViewerImageProps\n * @returns JSX.Element\n */\nexport const PhotoViewerImage: React.FC<PhotoViewerImageProps> = ({\n imageRef,\n containerRef,\n src,\n alt,\n zoomLevel,\n dragPosition,\n isDragging,\n rotationAngle,\n isTransitioning = false,\n onMouseDown,\n onMouseMove,\n onMouseUp,\n onWheel,\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n onDoubleClick,\n}) => {\n const internalContainerRef = useRef<HTMLDivElement>(null);\n const effectiveContainerRef = containerRef || internalContainerRef;\n const [isMounted, setIsMounted] = useState(false);\n \n // Track mounting state\n useEffect(() => {\n setIsMounted(true);\n return () => setIsMounted(false);\n }, []);\n\n // Add double-click to zoom\n const handleDoubleClick = (e: React.MouseEvent<HTMLDivElement | HTMLImageElement, MouseEvent>) => {\n if (isMounted && onDoubleClick) onDoubleClick(e);\n };\n \n // Add non-passive event listeners to prevent page scrolling/zooming\n useEffect(() => {\n const container = effectiveContainerRef.current;\n if (!container) return;\n \n const handleWheelEvent = (e: WheelEvent) => {\n // Only call if mounted and handler exists\n if (isMounted && container && onWheel) {\n onWheel(e as unknown as React.WheelEvent<HTMLDivElement>);\n }\n };\n \n const handleTouchStartEvent = (e: TouchEvent) => {\n // Only call if mounted and handler exists\n if (isMounted && container && onTouchStart) {\n onTouchStart(e as unknown as React.TouchEvent<HTMLDivElement>);\n }\n };\n \n const handleTouchMoveEvent = (e: TouchEvent) => {\n // Only call if mounted and handler exists\n if (isMounted && container && onTouchMove) {\n onTouchMove(e as unknown as React.TouchEvent<HTMLDivElement>);\n }\n };\n \n const handleTouchEndEvent = (e: TouchEvent) => {\n // Only call if mounted and handler exists\n if (isMounted && container && onTouchEnd) {\n onTouchEnd(e as unknown as React.TouchEvent<HTMLDivElement>);\n }\n };\n \n // Only add event listeners if mounted\n if (isMounted) {\n container.addEventListener('wheel', handleWheelEvent, { passive: false });\n container.addEventListener('touchstart', handleTouchStartEvent, { passive: false });\n container.addEventListener('touchmove', handleTouchMoveEvent, { passive: false });\n container.addEventListener('touchend', handleTouchEndEvent, { passive: false });\n }\n \n // Clean up\n return () => {\n container.removeEventListener('wheel', handleWheelEvent);\n container.removeEventListener('touchstart', handleTouchStartEvent);\n container.removeEventListener('touchmove', handleTouchMoveEvent);\n container.removeEventListener('touchend', handleTouchEndEvent);\n };\n }, [isMounted, onWheel, onTouchStart, onTouchMove, onTouchEnd, effectiveContainerRef]);\n \n return (\n <div\n ref={effectiveContainerRef}\n className={`c-photo-viewer__image-container ${isTransitioning ? 'is-transitioning' : ''}`}\n style={{\n cursor: isDragging ? 'grabbing' : zoomLevel > 1 ? 'grab' : 'default',\n opacity: isTransitioning ? 0.7 : 1,\n touchAction: 'none', // Prevent browser touch behaviors\n }}\n onMouseDown={onMouseDown}\n onMouseMove={onMouseMove}\n onMouseUp={onMouseUp}\n onMouseLeave={onMouseUp}\n onDoubleClick={handleDoubleClick}\n >\n <img\n ref={imageRef}\n src={src}\n alt={alt}\n className=\"c-photo-viewer__image\"\n style={{\n transform: `scale(${zoomLevel}) translate(${dragPosition.x}px, ${dragPosition.y}px) rotate(${rotationAngle}deg)`,\n transition: isDragging \n ? 'none' \n : isTransitioning \n ? 'opacity 0.15s ease-out' \n : 'transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)',\n transformOrigin: 'center center',\n willChange: isDragging ? 'transform' : 'auto',\n touchAction: 'none', // Prevent image-specific touch behaviors\n }}\n draggable={false}\n onContextMenu={(e) => e.preventDefault()} // Prevent context menu on long press\n />\n </div>\n );\n};\n\nexport default PhotoViewerImage;","import React from 'react';\nimport { ImageType } from '../../lib/types/components';\nimport { Button } from '../Button/Button';\n\n/**\n * Props for the PhotoViewerThumbnails component\n */\nexport interface PhotoViewerThumbnailsProps {\n /** Array of images to display thumbnails for */\n images: ImageType[];\n /** Current active image index */\n currentIndex: number;\n /** Callback to navigate to a specific image */\n goToImage: (index: number) => void;\n}\n\n/**\n * PhotoViewerThumbnails component - displays thumbnail navigation for images\n * \n * @param props - PhotoViewerThumbnailsProps\n * @returns JSX.Element\n */\nexport const PhotoViewerThumbnails: React.FC<PhotoViewerThumbnailsProps> = ({ \n images, \n currentIndex, \n goToImage \n}) => images.length > 1 ? (\n <div className=\"c-photo-viewer__thumbnails\">\n {images.map((image: ImageType, index: number) => {\n const thumbnailSrc = image.thumbnail || image.src;\n return (\n <Button\n key={index}\n variant=\"light\"\n className={`c-photo-viewer__thumbnail ${index === currentIndex ? 'is-active' : ''}`}\n onClick={() => goToImage(index)}\n aria-label={`View image ${index + 1}`}\n aria-current={index === currentIndex}\n >\n <img \n loading=\"lazy\"\n src={thumbnailSrc} \n alt={image.alt || `Thumbnail ${index + 1}`} \n className=\"c-photo-viewer__thumbnail-img\" \n />\n </Button>\n );\n })}\n </div>\n) : null;\n\nexport default PhotoViewerThumbnails;","import React from 'react';\nimport { ImageType } from '../../lib/types/components';\nimport { Button } from '../Button/Button';\nimport { Badge } from '../Badge/Badge';\nimport { Icon } from '../Icon/Icon';\n\n/**\n * Props for the PhotoViewerInfo component\n */\nexport interface PhotoViewerInfoProps {\n /** Whether to show the info panel */\n show: boolean;\n /** Image object to display info for */\n image?: ImageType;\n /** Callback to close the info panel */\n onClose: () => void;\n}\n\n/**\n * PhotoViewerInfo component - displays image metadata and information\n * \n * @param props - PhotoViewerInfoProps\n * @returns JSX.Element\n */\nexport const PhotoViewerInfo: React.FC<PhotoViewerInfoProps> = ({ show, image, onClose }) => {\n if (!show || !image) return null;\n \n return (\n <div className=\"c-photo-viewer__info-panel\">\n <Button\n iconOnly\n size=\"sm\"\n variant=\"light\"\n rounded\n onClick={onClose}\n aria-label=\"Close info panel\"\n icon={<Icon name=\"X\" size=\"sm\" />}\n className=\"c-photo-viewer__info-close\"\n />\n <div className=\"c-photo-viewer__info-content\">\n {image.title && <h3 className=\"c-photo-viewer__info-title\">{image.title}</h3>}\n {image.description && <p className=\"c-photo-viewer__info-description\">{image.description}</p>}\n {image.date && <p className=\"c-photo-viewer__info-meta\">Date: {image.date}</p>}\n {image.author && <p className=\"c-photo-viewer__info-meta\">By: {image.author}</p>}\n {image.tags && image.tags.length > 0 && (\n <div className=\"c-photo-viewer__info-tags\">\n {image.tags.map((tag: string, index: number) => (\n <Badge key={index} label={tag} variant=\"light\" size=\"sm\" className=\"c-photo-viewer__info-tag\" />\n ))}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default PhotoViewerInfo;","import React, { useMemo, useEffect } from \"react\";\nimport { PhotoViewerProps, ImageType } from \"../../lib/types/components\";\nimport { usePhotoViewer } from \"../../lib/composables/usePhotoViewer\";\nimport { PhotoViewerHeader } from \"./PhotoViewerHeader\";\nimport { PhotoViewerNavigation } from \"./PhotoViewerNavigation\";\nimport { PhotoViewerImage } from \"./PhotoViewerImage\";\nimport { PhotoViewerThumbnails } from \"./PhotoViewerThumbnails\";\nimport { PhotoViewerInfo } from \"./PhotoViewerInfo\";\n\n/**\n * PhotoViewer component - A comprehensive image viewer with zoom, pan, navigation, and metadata display\n *\n * Features:\n * - Image navigation with keyboard support\n * - Zoom and pan functionality\n * - Touch gestures for mobile devices\n * - Fullscreen mode\n * - Image rotation\n * - Download and share capabilities\n * - Thumbnail navigation\n * - Image metadata display\n * - Responsive design\n *\n * @param props - PhotoViewerProps\n * @returns JSX.Element\n */\nexport const PhotoViewer: React.FC<PhotoViewerProps> = ({\n images,\n startIndex = 0,\n className = \"\",\n disabled = false,\n enableKeyboardNavigation = true,\n enableGestures = true,\n enableFullscreen = true,\n thumbnailPosition = \"bottom\",\n onImageChange,\n onClose,\n}) => {\n // Use the external composable hook with enhanced features\n const {\n currentIndex,\n zoomLevel,\n imagePosition: dragPosition,\n isDragging,\n isFullscreen,\n rotationAngle,\n showInfo,\n imageRef,\n containerRef,\n isTransitioning,\n setZoomLevel,\n setImagePosition: setDragPosition,\n setIsDragging,\n setIsFullscreen,\n setRotationAngle,\n setShowInfo,\n closeModal,\n goToPrevious,\n goToNext,\n setCurrentIndex: goToImage,\n handleMouseDown,\n handleMouseMove,\n handleMouseUp,\n handleWheel,\n handleTouchStart,\n handleTouchMove,\n handleTouchEnd,\n handleDoubleClick,\n resetImageState,\n } = usePhotoViewer({\n images,\n startIndex,\n enableGestures,\n onImageChange,\n onClose: onClose || (() => {}),\n });\n\n // Process images to handle both string arrays and object arrays, ensuring ImageType structure\n const processedImages: ImageType[] = useMemo(() => {\n return images.map((img) => (typeof img === \"string\" ? { src: img } : img));\n }, [images]);\n\n // Current image object\n const currentImage: ImageType | undefined = processedImages[currentIndex];\n\n // Handle fullscreen toggle with bounds update\n const handleToggleFullscreen = () => {\n if (!enableFullscreen) return;\n\n if (!isFullscreen) {\n const element = document.documentElement;\n if (element.requestFullscreen) {\n element.requestFullscreen();\n }\n } else {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n }\n setIsFullscreen(!isFullscreen);\n };\n\n // Handle image rotation with bounds update\n const handleRotate = () => {\n setRotationAngle((angle: number) => (angle + 90) % 360);\n };\n\n // Handle image download\n const handleDownload = () => {\n if (!currentImage?.src) return;\n\n const link = document.createElement(\"a\");\n link.href = currentImage.src;\n link.download = currentImage.title || `image-${currentIndex + 1}`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n };\n\n // Handle image sharing\n const handleShare = async () => {\n if (!navigator.share || !currentImage?.src) return;\n\n try {\n await navigator.share({\n title: currentImage.title || \"Shared Image\",\n text: currentImage.description || \"Check out this image\",\n url: currentImage.src,\n });\n } catch (error) {\n console.error(\"Error sharing:\", error);\n }\n };\n\n // Memoize class names\n const photoViewerClasses = useMemo(\n () =>\n [\n \"c-photo-viewer\",\n `c-photo-viewer--thumbnails-${thumbnailPosition}`,\n isDragging ? \"c-photo-viewer--dragging\" : \"\",\n isFullscreen ? \"c-photo-viewer--fullscreen\" : \"\",\n showInfo ? \"c-photo-viewer--info-open\" : \"\",\n disabled ? \"is-disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \"),\n [\n isDragging,\n isFullscreen,\n showInfo,\n disabled,\n thumbnailPosition,\n className,\n ],\n );\n\n // Listen for fullscreen changes\n useEffect(() => {\n const handleFullscreenChange = () => {\n setIsFullscreen(!!document.fullscreenElement);\n };\n\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () =>\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n }, [setIsFullscreen]);\n\n // Add/remove is-open-photoviewer class on body\n useEffect(() => {\n document.body.classList.add(\"is-open-photoviewer\");\n\n return () => {\n document.body.classList.remove(\"is-open-photoviewer\");\n };\n }, []);\n\n // Early return for empty images array\n if (!images.length) return null;\n\n return (\n <div\n className={photoViewerClasses}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Photo viewer\"\n >\n <div className=\"c-photo-viewer__backdrop\" onClick={closeModal} />\n <div className=\"c-photo-viewer__container\">\n <PhotoViewerHeader\n currentIndex={currentIndex}\n imagesLength={images.length}\n onZoomOut={() => setZoomLevel((z: number) => Math.max(z - 0.25, 0.1))}\n onResetZoom={() => {\n resetImageState();\n }}\n onZoomIn={() => setZoomLevel((z: number) => Math.min(z + 0.25, 5))}\n onToggleFullscreen={handleToggleFullscreen}\n onClose={onClose || closeModal}\n isFullscreen={isFullscreen}\n zoomLevel={zoomLevel}\n onRotate={handleRotate}\n onDownload={handleDownload}\n onShare={handleShare}\n showInfo={showInfo}\n onToggleInfo={() => setShowInfo(!showInfo)}\n currentImage={currentImage}\n />\n <div className=\"c-photo-viewer__content\">\n <PhotoViewerNavigation\n show={images.length > 1}\n onPrev={goToPrevious}\n onNext={goToNext}\n currentIndex={currentIndex}\n imagesLength={images.length}\n enableKeyboardNav={enableKeyboardNavigation}\n onClose={onClose || closeModal}\n />\n {currentImage?.src && (\n <PhotoViewerImage\n imageRef={imageRef}\n containerRef={containerRef}\n src={currentImage.src}\n alt={currentImage?.alt || `Image ${currentIndex + 1}`}\n zoomLevel={zoomLevel}\n dragPosition={dragPosition}\n isDragging={isDragging}\n rotationAngle={rotationAngle}\n isTransitioning={isTransitioning}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onWheel={handleWheel}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n onDoubleClick={handleDoubleClick}\n />\n )}\n </div>\n {thumbnailPosition !== \"none\" && (\n <PhotoViewerThumbnails\n images={processedImages}\n currentIndex={currentIndex}\n goToImage={goToImage}\n />\n )}\n <PhotoViewerInfo\n show={showInfo}\n image={currentImage}\n onClose={() => setShowInfo(false)}\n />\n </div>\n </div>\n );\n};\n\nexport default PhotoViewer;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","import { useState, useRef, useEffect, RefObject } from 'react';\n\ntype PopoverPosition = 'top' | 'bottom' | 'left' | 'right';\ntype PopoverTrigger = 'click' | 'hover';\n\ninterface UsePopoverProps {\n position?: PopoverPosition | 'auto';\n trigger?: PopoverTrigger;\n offset?: number;\n delay?: number;\n defaultOpen?: boolean;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n closeOnClickOutside?: boolean;\n closeOnEscape?: boolean;\n id?: string;\n}\n\ninterface UsePopoverResult {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n triggerRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLDivElement>;\n arrowRef: RefObject<HTMLDivElement>;\n popoverId: string;\n currentPosition: PopoverPosition;\n updatePosition: () => void;\n}\n\n/**\n * Hook for managing popover state and positioning logic\n */\nexport const usePopover = ({\n position = 'top',\n trigger = 'click',\n offset = 12,\n delay = 0,\n defaultOpen = false,\n isOpen: controlledIsOpen,\n onOpenChange,\n closeOnClickOutside = true,\n closeOnEscape = true,\n id,\n}: UsePopoverProps): UsePopoverResult => {\n const [isOpen, setIsOpenState] = useState(defaultOpen);\n const [currentPosition, setCurrentPosition] = useState<PopoverPosition>(position === 'auto' ? 'top' : position as PopoverPosition);\n const triggerRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLDivElement>(null);\n const timeoutRef = useRef<number | null>(null);\n const popoverId = id || `popover-${Math.random().toString(36).slice(2, 11)}`;\n\n // Use controlled state if provided\n const isControlled = controlledIsOpen !== undefined;\n const isOpenState = isControlled ? controlledIsOpen : isOpen;\n\n // Define setIsOpen function before using it in useEffect\n const setIsOpen = (newIsOpen: boolean) => {\n if (!isControlled) {\n setIsOpenState(newIsOpen);\n }\n if (onOpenChange) {\n onOpenChange(newIsOpen);\n }\n };\n\n // Handle hover events if trigger is hover\n useEffect(() => {\n if (trigger !== 'hover' || !triggerRef.current || !popoverRef.current) return;\n\n const handleTriggerMouseEnter = () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n if (delay > 0) {\n timeoutRef.current = window.setTimeout(() => {\n setIsOpen(true);\n }, delay);\n } else {\n setIsOpen(true);\n }\n };\n\n const handleTriggerMouseLeave = () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n\n timeoutRef.current = window.setTimeout(() => {\n if (!popoverRef.current?.matches(':hover')) {\n setIsOpen(false);\n }\n }, 100);\n };\n\n const handlePopoverMouseEnter = () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n\n const handlePopoverMouseLeave = () => {\n setIsOpen(false);\n };\n\n // Add hover event listeners\n triggerRef.current.addEventListener('mouseenter', handleTriggerMouseEnter);\n triggerRef.current.addEventListener('mouseleave', handleTriggerMouseLeave);\n popoverRef.current.addEventListener('mouseenter', handlePopoverMouseEnter);\n popoverRef.current.addEventListener('mouseleave', handlePopoverMouseLeave);\n\n return () => {\n if (triggerRef.current) {\n triggerRef.current.removeEventListener('mouseenter', handleTriggerMouseEnter);\n triggerRef.current.removeEventListener('mouseleave', handleTriggerMouseLeave);\n }\n if (popoverRef.current) {\n popoverRef.current.removeEventListener('mouseenter', handlePopoverMouseEnter);\n popoverRef.current.removeEventListener('mouseleave', handlePopoverMouseLeave);\n }\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, [trigger, delay, isOpenState]);\n\n const updatePosition = (event?: Event) => {\n if (!triggerRef.current || !popoverRef.current) return;\n \n const triggerRect = triggerRef.current.getBoundingClientRect();\n const popoverRect = popoverRef.current.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n \n // Check if the trigger is near viewport edges\n const isNearViewportEdge = \n triggerRect.top < 50 || \n triggerRect.bottom > (viewportHeight - 50) ||\n triggerRect.left < 50 || \n triggerRect.right > (viewportWidth - 50);\n \n // If this is a scroll update and trigger isn't near edges, skip repositioning\n if (\n event?.type === 'scroll' && \n !isNearViewportEdge\n ) {\n return;\n }\n \n // Calculate space available in each direction\n const spaceTop = triggerRect.top;\n const spaceBottom = viewportHeight - triggerRect.bottom;\n const spaceLeft = triggerRect.left;\n const spaceRight = viewportWidth - triggerRect.right;\n \n // Determine best position based on available space\n let bestPosition: PopoverPosition = position === 'auto' ? 'top' : position as PopoverPosition;\n \n // If specified position is 'auto', find the position with most space\n if (position === 'auto') {\n const spaces = [\n { position: 'top', space: spaceTop },\n { position: 'right', space: spaceRight },\n { position: 'bottom', space: spaceBottom },\n { position: 'left', space: spaceLeft }\n ];\n \n // Sort by available space (descending)\n spaces.sort((a, b) => b.space - a.space);\n \n // Select position with most space\n bestPosition = spaces[0].position as PopoverPosition;\n } else {\n // Check if the preferred position has enough space\n const needsFlip = (\n (position === 'top' && spaceTop < popoverRect.height + offset && spaceBottom >= popoverRect.height + offset) ||\n (position === 'bottom' && spaceBottom < popoverRect.height + offset && spaceTop >= popoverRect.height + offset) ||\n (position === 'left' && spaceLeft < popoverRect.width + offset && spaceRight >= popoverRect.width + offset) ||\n (position === 'right' && spaceRight < popoverRect.width + offset && spaceLeft >= popoverRect.width + offset)\n );\n \n if (needsFlip) {\n // Flip to the opposite side\n const oppositePositions: Record<PopoverPosition | 'auto', PopoverPosition> = {\n 'top': 'bottom',\n 'bottom': 'top',\n 'left': 'right',\n 'right': 'left',\n 'auto': 'bottom'\n };\n bestPosition = oppositePositions[position as PopoverPosition | 'auto'];\n }\n }\n \n setCurrentPosition(bestPosition);\n \n // Calculate position based on the determined best position\n let top = 0;\n let left = 0;\n \n // Calculate viewport-relative position\n switch (bestPosition) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + (triggerRect.width / 2) - (popoverRect.width / 2);\n break;\n case 'left':\n top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'right':\n top = triggerRect.top + (triggerRect.height / 2) - (popoverRect.height / 2);\n left = triggerRect.right + offset;\n break;\n }\n \n // Constrain to viewport boundaries\n if (left < 0) {\n left = 5;\n } else if (left + popoverRect.width > viewportWidth) {\n left = viewportWidth - popoverRect.width - 5;\n }\n \n if (top < 0) {\n top = 5;\n } else if (top + popoverRect.height > viewportHeight) {\n top = viewportHeight - popoverRect.height - 5;\n }\n \n // Add scroll position to convert viewport coordinates to absolute position\n const absoluteTop = top + window.scrollY;\n const absoluteLeft = left + window.scrollX;\n \n // Apply position using absolute positioning to follow when scrolling\n popoverRef.current.style.position = 'absolute';\n popoverRef.current.style.top = `${absoluteTop}px`;\n popoverRef.current.style.left = `${absoluteLeft}px`;\n };\n\n // Position the popover\n useEffect(() => {\n if (!isOpenState || !triggerRef.current || !popoverRef.current) return;\n \n // Initial positioning\n updatePosition();\n \n // Update position on resize \n window.addEventListener('resize', updatePosition);\n \n // Update position on scroll, but throttled for performance\n let scrollTimeout: number | null = null;\n const handleScroll = (e: Event) => {\n if (scrollTimeout) {\n return;\n }\n \n scrollTimeout = window.setTimeout(() => {\n updatePosition(e);\n scrollTimeout = null;\n }, 100);\n };\n \n window.addEventListener('scroll', handleScroll, { passive: true });\n \n // Update position less frequently to handle content changes\n const intervalId = setInterval(() => {\n updatePosition();\n }, 500);\n \n return () => {\n window.removeEventListener('resize', updatePosition);\n window.removeEventListener('scroll', handleScroll);\n if (scrollTimeout) {\n window.clearTimeout(scrollTimeout);\n }\n clearInterval(intervalId);\n };\n }, [isOpenState, position, offset]);\n \n // Handle click outside to close popover\n useEffect(() => {\n if (!isOpenState || !closeOnClickOutside) return;\n \n const handleClickOutside = (event: MouseEvent) => {\n if (\n popoverRef.current && \n !popoverRef.current.contains(event.target as Node) &&\n triggerRef.current && \n !triggerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n \n document.addEventListener('mousedown', handleClickOutside);\n \n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpenState, closeOnClickOutside]);\n \n // Handle escape key to close popover\n useEffect(() => {\n if (!isOpenState || !closeOnEscape) return;\n \n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n \n document.addEventListener('keydown', handleEscapeKey);\n \n return () => {\n document.removeEventListener('keydown', handleEscapeKey);\n };\n }, [isOpenState, closeOnEscape]);\n\n // Clean up on unmount\n useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n return {\n isOpen: isOpenState,\n setIsOpen,\n triggerRef,\n popoverRef,\n arrowRef,\n popoverId,\n currentPosition,\n updatePosition,\n };\n};\n\nexport default usePopover; ","import React, { ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { POPOVER } from '../../lib/constants/components';\nimport { usePopover } from '../../lib/composables/usePopover';\nimport type { PopoverProps, PopoverTriggerProps } from '../../lib/types/components';\n\n// Context to share popover state between components\nconst PopoverContext = React.createContext<{\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n triggerRef: React.RefObject<HTMLElement>;\n popoverId: string;\n triggerType: 'click' | 'hover';\n}>({\n isOpen: false,\n setIsOpen: () => {},\n triggerRef: { current: null },\n popoverId: '',\n triggerType: 'click'\n});\n\n/**\n * Popover component for displaying floating content\n */\nexport const Popover: React.FC<PopoverProps> = ({\n content,\n position = 'top',\n trigger = 'click',\n className = '',\n delay = 0,\n offset = 12,\n defaultOpen = false,\n isOpen: controlledIsOpen,\n onOpenChange,\n closeOnClickOutside = true,\n closeOnEscape = true,\n id,\n children,\n}) => {\n const {\n isOpen,\n setIsOpen,\n triggerRef,\n popoverRef,\n arrowRef,\n popoverId,\n currentPosition,\n updatePosition\n } = usePopover({\n position,\n trigger,\n offset,\n delay,\n defaultOpen,\n isOpen: controlledIsOpen,\n onOpenChange,\n closeOnClickOutside,\n closeOnEscape,\n id\n });\n \n return (\n <PopoverContext.Provider\n value={{ isOpen, setIsOpen, triggerRef, popoverId, triggerType: trigger }}\n >\n {children}\n \n {typeof document !== 'undefined' && createPortal(\n <div\n ref={popoverRef}\n className={`c-popover c-popover--${currentPosition} ${isOpen ? POPOVER.CLASSES.IS_OPEN : ''} ${className}`}\n id={popoverId}\n role=\"tooltip\"\n aria-hidden={!isOpen}\n >\n <div className=\"c-popover__content\">\n <div className=\"c-popover__content-inner\">\n {content}\n </div>\n </div>\n <div ref={arrowRef} className=\"c-popover__arrow\"></div>\n </div>,\n document.body\n )}\n </PopoverContext.Provider>\n );\n};\n\n/**\n * PopoverTrigger component to wrap the element that triggers the popover\n */\nexport const PopoverTrigger: React.FC<PopoverTriggerProps> = ({\n children,\n trigger: triggerProp,\n}) => {\n const { isOpen, setIsOpen, triggerRef, popoverId, triggerType } = React.useContext(PopoverContext);\n \n // Determine which trigger type to use - prop from PopoverTrigger or from context\n const effectiveTrigger = triggerProp || triggerType;\n \n // Handle trigger events\n const handleClick = () => {\n setIsOpen(!isOpen);\n };\n \n const handleMouseEnter = () => {\n setIsOpen(true);\n };\n \n const handleMouseLeave = () => {\n setIsOpen(false);\n };\n \n // Clone the children element with additional props\n const child = React.Children.only(children) as React.ReactElement;\n \n const triggerProps: any = {\n ref: triggerRef,\n 'aria-describedby': popoverId,\n 'aria-expanded': isOpen,\n };\n \n if (effectiveTrigger === 'click') {\n triggerProps.onClick = handleClick;\n } else if (effectiveTrigger === 'hover') {\n triggerProps.onMouseEnter = handleMouseEnter;\n triggerProps.onMouseLeave = handleMouseLeave;\n }\n \n return React.cloneElement(child, triggerProps);\n}; ","import { useState, useCallback } from 'react';\nimport type { RatingProps } from '../types/components';\n\n/**\n * Props for the useRating hook\n */\nexport type UseRatingProps = Pick<RatingProps, 'value' | 'maxValue' | 'allowHalf' | 'readOnly' | 'onChange'>;\n\nexport interface UseRatingReturn {\n /**\n * Current rating value (controlled or uncontrolled)\n */\n currentValue: number;\n \n /**\n * Value being hovered over\n */\n hoverValue: number | null;\n \n /**\n * Currently focused star index\n */\n focusedIndex: number | null;\n \n /**\n * Handle mouse enter on a star\n */\n handleMouseEnter: (starValue: number) => void;\n \n /**\n * Handle mouse leave from rating component\n */\n handleMouseLeave: () => void;\n \n /**\n * Handle click on a star\n */\n handleClick: (newValue: number) => void;\n \n /**\n * Handle keyboard navigation\n */\n handleKeyDown: (e: React.KeyboardEvent, index: number) => void;\n \n /**\n * Set focus on a specific star\n */\n setFocused: (index: number | null) => void;\n \n /**\n * Set hover value directly\n */\n setHoverValue: (value: number | null) => void;\n \n /**\n * Whether the component is in controlled mode\n */\n isControlled: boolean;\n}\n\n/**\n * Hook for managing rating component state and interactions\n */\nexport const useRating = ({\n value = 0,\n maxValue = 5,\n allowHalf = false,\n readOnly = false,\n onChange\n}: UseRatingProps): UseRatingReturn => {\n // Determine if component is in controlled mode\n const isControlled = typeof onChange !== 'undefined';\n \n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = useState<number>(value);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\n \n // Use controlled or uncontrolled value\n const currentValue = isControlled ? value : internalValue;\n \n // Handle mouse enter on star\n const handleMouseEnter = useCallback((starValue: number) => {\n if (readOnly) return;\n setHoverValue(starValue);\n }, [readOnly]);\n \n // Handle mouse leave from rating component\n const handleMouseLeave = useCallback(() => {\n if (readOnly) return;\n setHoverValue(null);\n }, [readOnly]);\n \n // Handle click on star\n const handleClick = useCallback((newValue: number) => {\n if (readOnly) return;\n \n if (!isControlled) {\n setInternalValue(newValue);\n }\n \n onChange?.(newValue);\n }, [readOnly, onChange, isControlled]);\n \n // Handle keyboard navigation\n const handleKeyDown = useCallback((e: React.KeyboardEvent, index: number) => {\n if (readOnly) return;\n \n const step = allowHalf ? 0.5 : 1;\n let newValue = currentValue;\n \n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n newValue = Math.min(maxValue, currentValue + step);\n e.preventDefault();\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n newValue = Math.max(0, currentValue - step);\n e.preventDefault();\n break;\n case 'Home':\n newValue = 0;\n e.preventDefault();\n break;\n case 'End':\n newValue = maxValue;\n e.preventDefault();\n break;\n case ' ':\n case 'Enter':\n newValue = index;\n e.preventDefault();\n break;\n default:\n return;\n }\n \n if (newValue !== currentValue) {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n }\n }, [currentValue, maxValue, allowHalf, readOnly, onChange, isControlled]);\n \n return {\n currentValue,\n hoverValue,\n focusedIndex,\n handleMouseEnter,\n handleMouseLeave,\n handleClick,\n handleKeyDown,\n setFocused: setFocusedIndex,\n setHoverValue,\n isControlled\n };\n};\n\nexport default useRating;\n","import React from 'react';\n\n/**\n * Utility to merge multiple React refs into one\n */\nexport function setRef<T>(\n ref: React.MutableRefObject<T | null> | ((instance: T | null) => void) | null,\n value: T | null\n): void {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n // This is safe because we're checking that ref exists first\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (ref as any).current = value;\n }\n}\n\n/**\n * Combines two React refs into a single ref function\n * This is used when you need to use and forward a ref at the same time\n */\nexport default function useForkRef<T>(\n refA: React.Ref<T> | null,\n refB: React.Ref<T> | null\n): React.RefCallback<T> | null {\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n \n return (refValue: T | null) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n","import React, { useRef, useEffect, useCallback, forwardRef } from 'react';\nimport { THEME_COLORS, SIZES, RATING } from '../../lib/constants/components';\nimport { useRating } from '../../lib/composables/useRating';\nimport type { RatingProps } from '../../lib/types/components';\nimport useForkRef from '../../lib/utils/useForkRef';\n\n/**\n * Rating component for displaying and collecting star ratings\n * \n * @example\n * // Basic usage\n * <Rating value={3} onChange={handleRatingChange} />\n * \n * @example\n * // Read-only with custom color\n * <Rating value={4.5} readOnly color=\"warning\" />\n * \n * @example\n * // With half-star support\n * <Rating value={3.5} allowHalf maxValue={5} />\n */\nconst Rating = forwardRef<HTMLDivElement, RatingProps>(({\n value: valueProp = 0,\n defaultValue,\n maxValue = 5,\n allowHalf = false,\n readOnly = false,\n size = 'md',\n color,\n onChange,\n className = '',\n label,\n id,\n useVanillaJS = false,\n ...restProps\n}, ref) => {\n const internalRef = useRef<HTMLDivElement>(null);\n const ratingInstance = useRef<any>(null);\n \n // Use the rating hook for React-based implementation\n const {\n currentValue,\n hoverValue,\n focusedIndex,\n setHoverValue,\n setFocused,\n handleKeyDown\n } = useRating({\n value: valueProp !== undefined ? valueProp : defaultValue,\n maxValue,\n allowHalf,\n readOnly,\n onChange\n });\n \n // Handle mouse enter on star with half-star support\n const handleMouseEnter = useCallback((e: React.MouseEvent, starValue: number) => {\n if (readOnly) return;\n \n if (allowHalf) {\n // Get the star element's bounding rectangle\n const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n // Calculate the x position within the star\n const starCenterX = starRect.left + starRect.width / 2;\n // If mouse is on the left half of the star, use half value\n const isHalfStar = e.clientX < starCenterX;\n const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;\n setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5\n } else {\n setHoverValue(starValue);\n }\n }, [readOnly, allowHalf, setHoverValue]);\n \n // Handle mouse move on star for half-star precision\n const handleMouseMove = useCallback((e: React.MouseEvent, starValue: number) => {\n if (readOnly || !allowHalf) return;\n \n // Get the star element's bounding rectangle\n const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n // Calculate the x position within the star\n const starCenterX = starRect.left + starRect.width / 2;\n // If mouse is on the left half of the star, use half value\n const isHalfStar = e.clientX < starCenterX;\n const adjustedValue = isHalfStar ? starValue - 0.5 : starValue;\n setHoverValue(Math.max(0.5, adjustedValue)); // Ensure minimum of 0.5\n }, [readOnly, allowHalf, setHoverValue]);\n \n // Handle mouse leave from rating component\n const handleMouseLeave = useCallback(() => {\n if (readOnly) return;\n setHoverValue(null);\n }, [readOnly, setHoverValue]);\n \n // Handle click on star with half-star support\n const handleClick = useCallback((e: React.MouseEvent, starValue: number) => {\n if (readOnly) return;\n \n let newValue = starValue;\n \n if (allowHalf) {\n // Get the star element's bounding rectangle\n const starRect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n // Calculate the x position within the star\n const starCenterX = starRect.left + starRect.width / 2;\n // If click is on the left half of the star, use half value\n const isHalfStar = e.clientX < starCenterX;\n newValue = isHalfStar ? starValue - 0.5 : starValue;\n newValue = Math.max(0.5, newValue); // Ensure minimum of 0.5\n }\n \n onChange?.(newValue);\n }, [readOnly, onChange, allowHalf]);\n \n // Use vanilla JS implementation if specified\n useEffect(() => {\n if (!useVanillaJS || typeof window === 'undefined' || !internalRef.current) return;\n\n // Dynamically import the rating script to avoid server-side rendering issues\n import('./scripts/bundle').then(({ default: RatingClass }) => {\n if (internalRef.current) {\n ratingInstance.current = new RatingClass(internalRef.current, {\n value: valueProp !== undefined ? valueProp : defaultValue,\n maxValue,\n allowHalf,\n readOnly,\n size,\n color,\n onChange\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (ratingInstance.current) {\n ratingInstance.current.destroy();\n }\n };\n }, [useVanillaJS, valueProp, defaultValue, maxValue, allowHalf, readOnly, size, color, onChange]);\n \n // Update vanilla JS implementation when props change\n useEffect(() => {\n if (!useVanillaJS || !ratingInstance.current) return;\n \n ratingInstance.current.updateOptions({\n value: valueProp !== undefined ? valueProp : defaultValue,\n maxValue,\n allowHalf,\n readOnly,\n size,\n color\n });\n }, [useVanillaJS, valueProp, defaultValue, maxValue, allowHalf, readOnly, size, color]);\n \n // Determine CSS classes\n const ratingClasses = [\n 'c-rating',\n size === 'sm' ? RATING.CLASSES.SMALL : '',\n size === 'lg' ? RATING.CLASSES.LARGE : '',\n color ? `c-rating--${color}` : '',\n className\n ].filter(Boolean).join(' ');\n \n // If using vanilla JS, just render the container\n if (useVanillaJS) {\n return (\n <div \n className={ratingClasses}\n ref={useForkRef(internalRef, ref)}\n id={id}\n {...restProps}\n >\n {/* Stars will be generated by the vanilla JS implementation */}\n </div>\n );\n }\n \n // React-based implementation\n // Determine the effective value (either hovered or actual)\n const effectiveValue = hoverValue !== null ? hoverValue : currentValue;\n \n // Generate stars\n const renderStars = () => {\n const stars = [];\n const roundedValue = allowHalf ? Math.floor(effectiveValue * 2) / 2 : Math.round(effectiveValue);\n const componentId = id || `rating-${Math.random().toString(36).substring(2, 9)}`;\n \n for (let i = 1; i <= maxValue; i++) {\n // For half-star support\n const isFullStar = i <= Math.floor(roundedValue);\n const isHalfStar = allowHalf && (i - 0.5 === roundedValue);\n \n const starClass = [\n 'c-rating__star',\n isFullStar ? RATING.CLASSES.FULL : '',\n isHalfStar ? RATING.CLASSES.HALF : '',\n color ? `c-rating__star--${color}` : '',\n focusedIndex === i ? 'c-rating__star--focused' : ''\n ].filter(Boolean).join(' ');\n \n const starId = `${componentId}-star-${i}`;\n \n stars.push(\n <div \n key={i}\n id={starId}\n className={starClass}\n data-value={i}\n role={readOnly ? 'presentation' : 'button'}\n tabIndex={readOnly ? -1 : 0}\n aria-label={`${i} ${i === 1 ? 'star' : 'stars'}`}\n aria-checked={i <= roundedValue}\n aria-setsize={maxValue}\n aria-posinset={i}\n onClick={(e) => handleClick(e, i)}\n onMouseEnter={(e) => handleMouseEnter(e, i)}\n onMouseMove={(e) => handleMouseMove(e, i)}\n onFocus={() => setFocused(i)}\n onBlur={() => setFocused(null)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n >\n <svg \n viewBox=\"0 0 24 24\" \n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n {/* Empty star (outline) */}\n <path \n className=\"c-rating__star-outline\"\n d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n strokeWidth=\"1\"\n />\n \n {/* Full star */}\n <path \n className=\"c-rating__star-full\"\n d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n />\n \n {/* Half star with proper clipping */}\n <path \n className=\"c-rating__star-half\"\n d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n clipPath={`url(#half-star-clip-${componentId}-${i})`}\n />\n \n {/* Clipping path for half star */}\n <defs>\n <clipPath id={`half-star-clip-${componentId}-${i}`}>\n <rect x=\"0\" y=\"0\" width=\"12\" height=\"24\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n );\n }\n \n return stars;\n };\n \n return (\n <div \n className={ratingClasses}\n ref={useForkRef(internalRef, ref)}\n id={id}\n data-readonly={readOnly ? 'true' : 'false'}\n onMouseLeave={handleMouseLeave}\n role={readOnly ? 'img' : 'radiogroup'}\n aria-label={label || `Rating: ${currentValue} out of ${maxValue} stars`}\n {...restProps}\n >\n {renderStars()}\n </div>\n );\n});\n\nRating.displayName = 'Rating';\n\nexport type { RatingProps };\nexport { Rating };\nexport default Rating;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Rating } from '../Rating';\nimport { Button } from '../Button';\nimport type { ThemeColor } from '../../lib/types/components';\n\nexport interface ProductReviewProps {\n /**\n * Product name\n */\n productName: string;\n \n /**\n * Product image URL\n */\n productImage?: string;\n \n /**\n * Initial rating value (0-5)\n */\n initialRating?: number;\n \n /**\n * Maximum possible rating value\n */\n maxRating?: number;\n \n /**\n * Whether to allow half-star ratings\n */\n allowHalf?: boolean;\n \n /**\n * Color theme for the rating stars\n */\n ratingColor?: ThemeColor;\n \n /**\n * Callback when review is submitted\n */\n onSubmit?: (rating: number, comment: string) => void;\n \n /**\n * Additional CSS class\n */\n className?: string;\n}\n\n/**\n * ProductReview component for collecting user ratings and feedback\n */\nexport const ProductReview: React.FC<ProductReviewProps> = ({\n productName,\n productImage,\n initialRating = 0,\n maxRating = 5,\n allowHalf = true,\n ratingColor = 'warning' as ThemeColor,\n onSubmit,\n className = '',\n}) => {\n const [rating, setRating] = useState<number>(initialRating);\n const [comment, setComment] = useState<string>('');\n const [submitted, setSubmitted] = useState<boolean>(false);\n const reviewRef = useRef<HTMLDivElement>(null);\n const reviewInstance = useRef<any>(null);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !reviewRef.current) return;\n\n // Dynamically import the product review script to avoid server-side rendering issues\n import('./scripts/bundle').then(({ default: ProductReviewClass }) => {\n if (reviewRef.current) {\n reviewInstance.current = new ProductReviewClass(reviewRef.current, {\n productName,\n productImage,\n initialRating,\n maxRating,\n allowHalf,\n ratingColor,\n onSubmit\n });\n }\n }).catch(err => {\n console.warn('Failed to load ProductReview script:', err);\n });\n \n // Cleanup on unmount\n return () => {\n if (reviewInstance.current) {\n reviewInstance.current.destroy();\n }\n };\n }, [productName, productImage, initialRating, maxRating, allowHalf, ratingColor, onSubmit]);\n \n const handleSubmit = (e: React.FormEvent): void => {\n e.preventDefault();\n \n if (onSubmit) {\n onSubmit(rating, comment);\n }\n \n setSubmitted(true);\n };\n \n const containerClasses = ['c-product-review', className].filter(Boolean).join(' ');\n \n if (submitted) {\n return (\n <div className={containerClasses} ref={reviewRef}>\n <div className=\"c-product-review__success\">\n <h3>Thank you for your review!</h3>\n <p>Your feedback helps us improve our products.</p>\n <Button \n variant=\"secondary\" \n label=\"Write another review\"\n onClick={() => {\n setSubmitted(false);\n setRating(0);\n setComment('');\n }}\n />\n </div>\n </div>\n );\n }\n \n return (\n <div className={containerClasses} ref={reviewRef}>\n <div className=\"c-product-review__header\">\n <h3 className=\"c-product-review__title\">Review {productName}</h3>\n {productImage && (\n <div className=\"c-product-review__image-wrapper\">\n <img \n src={productImage} \n alt={productName} \n className=\"c-product-review__image\" \n />\n </div>\n )}\n </div>\n \n <form className=\"c-product-review__form\" onSubmit={handleSubmit}>\n <div className=\"c-product-review__rating-container\">\n <label className=\"c-product-review__label\">Your Rating</label>\n <div className=\"c-rating-container\">\n <Rating \n value={rating} \n onChange={setRating} \n allowHalf={allowHalf}\n maxValue={maxRating}\n size=\"lg\"\n color={ratingColor}\n />\n <span className=\"c-rating__value\">\n {rating > 0 ? rating.toFixed(1) : 'Select a rating'}\n </span>\n </div>\n </div>\n \n <div className=\"c-product-review__comment-container\">\n <label htmlFor=\"review-comment\" className=\"c-product-review__label\">\n Your Review\n </label>\n <textarea\n id=\"review-comment\"\n className=\"c-product-review__textarea\"\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n placeholder=\"Share your experience with this product...\"\n rows={5}\n />\n </div>\n \n <div className=\"c-product-review__actions\">\n <Button \n variant=\"primary\" \n label=\"Submit Review\"\n disabled={rating === 0}\n onClick={() => handleSubmit(new Event('click') as unknown as React.FormEvent)}\n />\n </div>\n </form>\n </div>\n );\n};\n\nexport default ProductReview;\n","import { ThemeColor } from '../types/components';\n\ninterface UseProgressProps {\n /**\n * Progress value from 0 to 100\n */\n value: number;\n \n /**\n * Optional color variant\n */\n variant?: ThemeColor;\n \n /**\n * Optional size\n */\n size?: 'sm' | 'md' | 'lg';\n \n /**\n * Optional className for custom styling\n */\n className?: string;\n}\n\ninterface UseProgressReturn {\n /**\n * Computed progress value clamped between 0 and 100\n */\n progressValue: number;\n \n /**\n * CSS properties for the progress component\n */\n progressStyle: React.CSSProperties;\n \n /**\n * CSS classes for the progress component\n */\n progressClasses: string;\n}\n\n/**\n * Hook for managing Progress component state and behavior\n */\nexport const useProgress = ({\n value,\n variant = 'primary',\n size = 'md',\n className = '',\n}: UseProgressProps): UseProgressReturn => {\n // Clamp value between 0 and 100\n const progressValue = Math.min(Math.max(value, 0), 100);\n\n // Create CSS custom properties\n const progressStyle = {\n '--atomix-progress-percentage': `${progressValue}%`,\n } as React.CSSProperties;\n\n // Generate class names\n const baseClass = 'c-progress';\n const variantClass = variant ? `${baseClass}--${variant}` : '';\n const sizeClass = size ? `${baseClass}--${size}` : '';\n const customClass = className || '';\n \n const progressClasses = [\n baseClass,\n variantClass,\n sizeClass,\n customClass\n ].filter(Boolean).join(' ');\n\n return {\n progressValue,\n progressStyle,\n progressClasses,\n };\n};\n","import React, { forwardRef } from 'react';\nimport { ProgressProps } from '../../lib/types/components';\nimport { useProgress } from '../../lib/composables/useProgress';\nimport { PROGRESS } from '../../lib/constants/components';\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>((\n {\n value,\n variant = 'primary',\n size = 'md',\n className = '',\n disabled = false,\n ariaLabel = PROGRESS.DEFAULTS.ARIA_LABEL,\n }, \n ref\n) => {\n const { progressValue, progressStyle, progressClasses } = useProgress({\n value,\n variant,\n size,\n className\n });\n\n return (\n <div\n ref={ref}\n className={progressClasses}\n style={progressStyle}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={progressValue}\n aria-label={ariaLabel}\n aria-disabled={disabled}\n >\n <div className={PROGRESS.CLASSES.BAR}></div>\n </div>\n );\n});\n\n// Add displayName for better debugging\nProgress.displayName = 'Progress';\n","import { ReactNode } from 'react';\nimport { RIVER } from '../constants/components';\n\n/**\n * River content column interface\n */\nexport interface RiverContentColumn {\n /**\n * Column type (title or text)\n */\n type: 'title' | 'text';\n \n /**\n * Content for the column\n */\n content: ReactNode;\n}\n\n/**\n * River properties interface\n */\nexport interface RiverProps {\n /**\n * Title of the river section\n */\n title?: ReactNode;\n \n /**\n * Text content (can be a string or array of paragraphs)\n */\n text?: string | string[];\n \n /**\n * Action buttons/links\n */\n actions?: ReactNode;\n \n /**\n * Image source URL\n */\n imageSrc?: string;\n \n /**\n * Image alt text\n */\n imageAlt?: string;\n \n /**\n * Whether to use the center layout\n */\n center?: boolean;\n \n /**\n * Whether to use the breakout layout\n */\n breakout?: boolean;\n \n /**\n * Whether to use the reverse layout (image on right)\n */\n reverse?: boolean;\n \n /**\n * Use content columns instead of simple title/text structure\n */\n contentColumns?: RiverContentColumn[];\n \n /**\n * Additional CSS class\n */\n className?: string;\n \n /**\n * Background image source\n */\n backgroundImageSrc?: string;\n \n /**\n * Whether to show the background overlay\n */\n showOverlay?: boolean;\n \n /**\n * Custom width for the river content\n */\n contentWidth?: string;\n}\n\n/**\n * River hook result interface\n */\ninterface UseRiverResult {\n /**\n * Generate river class names based on props\n */\n generateRiverClassNames: (baseClassName?: string) => string;\n \n /**\n * Generate content class names\n */\n generateContentClass: () => string;\n \n /**\n * Generate visual/image class names\n */\n generateVisualClass: () => string;\n \n /**\n * Determine if the river has a background image\n */\n hasBackgroundImage: boolean;\n \n /**\n * Determine if the river has a foreground image\n */\n hasForegroundImage: boolean;\n \n /**\n * Convert text to array if it's a string\n */\n textContent: string[];\n}\n\n/**\n * Hook for River component functionality\n * @param initialProps - Initial river props\n * @returns River methods and state\n */\nexport function useRiver(initialProps?: Partial<RiverProps>): UseRiverResult {\n const defaultProps: Partial<RiverProps> = {\n center: false,\n breakout: false,\n reverse: false,\n imageAlt: 'Image',\n showOverlay: true,\n ...initialProps\n };\n\n /**\n * Check if the river has a background image\n */\n const hasBackgroundImage = !!defaultProps.backgroundImageSrc;\n \n /**\n * Check if the river has a foreground image\n */\n const hasForegroundImage = !!defaultProps.imageSrc;\n \n /**\n * Convert text to array if it's a string\n */\n const textContent = typeof defaultProps.text === 'string' \n ? [defaultProps.text] \n : defaultProps.text || [];\n\n /**\n * Generate river class names based on props\n * @param baseClassName - Additional class names\n * @returns Combined class names string\n */\n const generateRiverClassNames = (baseClassName: string = ''): string => {\n const classes = [\n RIVER.SELECTORS.RIVER.replace('.', '')\n ];\n\n // Add layout classes\n if (defaultProps.center) {\n classes.push(RIVER.CLASSES.CENTER);\n }\n \n if (defaultProps.breakout) {\n classes.push(RIVER.CLASSES.BREAKOUT);\n }\n \n if (defaultProps.reverse) {\n classes.push(RIVER.CLASSES.REVERSE);\n }\n\n if (baseClassName) {\n classes.push(baseClassName);\n }\n\n return classes.join(' ');\n };\n\n /**\n * Generate content class names\n */\n const generateContentClass = (): string => {\n return RIVER.SELECTORS.CONTENT.replace('.', '');\n };\n\n /**\n * Generate visual/image class names\n */\n const generateVisualClass = (): string => {\n return RIVER.SELECTORS.VISUAL.replace('.', '');\n };\n\n return {\n generateRiverClassNames,\n generateContentClass,\n generateVisualClass,\n hasBackgroundImage,\n hasForegroundImage,\n textContent\n };\n} ","import React, { useRef, useEffect, ReactNode } from 'react';\nimport { RIVER } from '../../lib/constants/components';\nimport { useRiver, RiverProps, RiverContentColumn } from '../../lib/composables/useRiver';\n\nexport type { RiverProps, RiverContentColumn };\n\n/**\n * River component for displaying content with image sections\n */\nexport const River: React.FC<RiverProps> = ({\n title,\n text,\n actions,\n imageSrc,\n imageAlt = 'Image',\n center = false,\n breakout = false,\n reverse = false,\n contentColumns,\n backgroundImageSrc,\n showOverlay = true,\n contentWidth,\n className = '',\n}) => {\n const riverRef = useRef<HTMLDivElement>(null);\n const riverInstance = useRef<any>(null);\n \n const { \n generateRiverClassNames,\n generateContentClass,\n generateVisualClass,\n hasBackgroundImage,\n hasForegroundImage,\n textContent\n } = useRiver({\n title,\n text,\n imageSrc,\n imageAlt,\n center,\n breakout,\n reverse,\n backgroundImageSrc,\n showOverlay,\n contentWidth\n });\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !riverRef.current) return;\n\n // Dynamically import the river script to avoid server-side rendering issues\n import('./scripts').then(({ default: RiverClass }) => {\n if (riverRef.current) {\n riverInstance.current = new RiverClass(riverRef.current, {\n center,\n breakout,\n reverse,\n backgroundImageSrc,\n showOverlay\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (riverInstance.current) {\n riverInstance.current.destroy();\n }\n };\n }, [center, breakout, reverse, backgroundImageSrc, showOverlay]);\n \n // Create custom style for river element with content width if provided\n const riverStyle: React.CSSProperties | undefined = contentWidth ? {\n [RIVER.ATTRIBUTES.CONTENT_WIDTH]: contentWidth\n } as React.CSSProperties : undefined;\n \n const renderBackground = () => {\n if (!hasBackgroundImage) return null;\n \n return (\n <div className={RIVER.SELECTORS.BG.replace('.', '')}>\n <img\n src={backgroundImageSrc}\n alt=\"Background\"\n className={RIVER.SELECTORS.BG_IMAGE.replace('.', '')}\n />\n {showOverlay && <div className={RIVER.SELECTORS.OVERLAY.replace('.', '')}></div>}\n </div>\n );\n };\n \n const renderContent = () => (\n <div className={generateContentClass()}>\n {title && (\n <h2 className={RIVER.SELECTORS.TITLE.replace('.', '')}>{title}</h2>\n )}\n {textContent.map((paragraph, index) => (\n <p key={index} className={RIVER.SELECTORS.TEXT.replace('.', '')}>{paragraph}</p>\n ))}\n {actions && (\n <div className={RIVER.SELECTORS.ACTIONS.replace('.', '')}>\n {actions}\n </div>\n )}\n </div>\n );\n\n const renderImage = () => {\n if (!hasForegroundImage) return null;\n \n return (\n <div className={generateVisualClass()}>\n <div className={RIVER.SELECTORS.IMAGE_WRAPPER.replace('.', '')}>\n <img \n src={imageSrc} \n alt={imageAlt} \n className={RIVER.SELECTORS.IMAGE.replace('.', '')} \n />\n </div>\n </div>\n );\n };\n \n // Render with content columns (advanced layout)\n if (contentColumns && contentColumns.length > 0) {\n return (\n <div className={generateRiverClassNames(className)} ref={riverRef} style={riverStyle}>\n {renderBackground()}\n <div className={`${RIVER.SELECTORS.CONTAINER.replace('.', '')} o-container`}>\n <div className={RIVER.SELECTORS.ROW.replace('.', '')}>\n {!reverse && renderImage()}\n <div className={generateContentClass()}>\n {contentColumns.map((column, index) => (\n <div \n key={index}\n className={`${RIVER.SELECTORS.CONTENT_COL.replace('.', '')} ${RIVER.SELECTORS[`CONTENT_COL_${column.type.toUpperCase()}` as keyof typeof RIVER.SELECTORS].replace('.', '')}`}\n >\n {column.content}\n </div>\n ))}\n {actions && (\n <div className={RIVER.SELECTORS.ACTIONS.replace('.', '')}>\n {actions}\n </div>\n )}\n </div>\n {reverse && renderImage()}\n </div>\n </div>\n </div>\n );\n }\n \n // Render with standard layout\n return (\n <div className={generateRiverClassNames(className)} ref={riverRef} style={riverStyle}>\n {renderBackground()}\n <div className={`${RIVER.SELECTORS.CONTAINER.replace('.', '')} o-container`}>\n <div className={RIVER.SELECTORS.ROW.replace('.', '')}>\n {!reverse && renderImage()}\n {renderContent()}\n {reverse && renderImage()}\n </div>\n </div>\n </div>\n );\n};\n\nexport default River; ","import React, { useRef, useEffect, ReactNode } from 'react';\nimport { SECTION_INTRO } from '../../lib/constants/components';\n\nexport interface SectionIntroProps {\n /**\n * The section title\n */\n title: ReactNode;\n \n /**\n * Optional subtitle or overline text\n */\n /**\n * Optional label text (equivalent to subtitle in the UI)\n */\n label?: ReactNode;\n \n /**\n * Optional description text\n */\n /**\n * Optional text content\n */\n text?: ReactNode;\n \n /**\n * Optional call to action elements\n */\n actions?: ReactNode;\n \n /**\n * Alignment of the content\n */\n alignment?: 'left' | 'center' | 'right';\n \n /**\n * Optional background image URL\n */\n backgroundImageSrc?: string;\n \n /**\n * Whether to show an overlay on the background\n */\n showOverlay?: boolean;\n \n /**\n * Optional foreground image URL\n */\n imageSrc?: string;\n \n /**\n * Alternative text for the image\n */\n imageAlt?: string;\n \n /**\n * Size variant\n */\n size?: 'sm' | 'md' | 'lg';\n \n /**\n * Whether to show a skeleton loading state\n */\n skeleton?: boolean;\n \n /**\n * Additional CSS class\n */\n className?: string;\n}\n\n/**\n * SectionIntro component for introducing content sections with titles, descriptions, and optional imagery\n */\nexport const SectionIntro: React.FC<SectionIntroProps> = ({\n title,\n label,\n text,\n actions,\n alignment = 'left',\n backgroundImageSrc,\n showOverlay = false,\n imageSrc,\n imageAlt = 'Section image',\n size = 'md',\n skeleton = false,\n className = '',\n}) => {\n const sectionIntroRef = useRef<HTMLDivElement>(null);\n const sectionIntroInstance = useRef<any>(null);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !sectionIntroRef.current) return;\n\n // Dynamically import the section intro script to avoid server-side rendering issues\n import('./scripts').then(({ default: SectionIntroClass }) => {\n if (sectionIntroRef.current) {\n sectionIntroInstance.current = new SectionIntroClass(sectionIntroRef.current, {\n alignment,\n backgroundImageSrc,\n showOverlay,\n size,\n skeleton\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (sectionIntroInstance.current) {\n sectionIntroInstance.current.destroy();\n }\n };\n }, [alignment, backgroundImageSrc, showOverlay, size, skeleton]);\n \n // Determine CSS classes\n const sectionIntroClasses = [\n 'c-sectionintro',\n alignment === 'center' ? SECTION_INTRO.CLASSES.CENTER : '',\n size === 'sm' ? SECTION_INTRO.CLASSES.SMALL : '',\n size === 'lg' ? SECTION_INTRO.CLASSES.LARGE : '',\n backgroundImageSrc ? 'c-sectionintro--has-bg' : '',\n className\n ].filter(Boolean).join(' ');\n \n // Render skeleton version\n if (skeleton) {\n return (\n <div className={sectionIntroClasses} ref={sectionIntroRef}>\n <div className=\"c-sectionintro__container o-container\">\n {label && (\n <div className=\"c-sectionintro__label\">\n <span className=\"c-skeleton u-w-25\"></span>\n </div>\n )}\n <div className=\"c-sectionintro__title\">\n <span className=\"c-skeleton\"></span>\n </div>\n {text && (\n <div className=\"c-sectionintro__text\">\n <span className=\"c-skeleton\"></span>\n <span className=\"c-skeleton\"></span>\n <span className=\"c-skeleton u-w-75\"></span>\n </div>\n )}\n {actions && (\n <div className=\"c-sectionintro__actions\">\n <span className=\"c-skeleton u-w-25\"></span>\n </div>\n )}\n {imageSrc && (\n <div className=\"c-sectionintro__image-wrapper\">\n <div className=\"c-sectionintro__image c-skeleton\"></div>\n </div>\n )}\n </div>\n </div>\n );\n }\n \n // Render background if provided\n const renderBackground = () => {\n if (!backgroundImageSrc) return null;\n \n return (\n <div className=\"c-sectionintro__bg\">\n <img\n src={backgroundImageSrc}\n alt=\"Background\"\n className=\"c-sectionintro__bg-image\"\n />\n {showOverlay && <div className=\"c-sectionintro__overlay\"></div>}\n </div>\n );\n };\n \n // Render normal version\n return (\n <div className={sectionIntroClasses} ref={sectionIntroRef}>\n {renderBackground()}\n <div className=\"c-sectionintro__container o-container\">\n {label && <div className=\"c-sectionintro__label\">{label}</div>}\n <h2 className=\"c-sectionintro__title\">{title}</h2>\n {text && <div className=\"c-sectionintro__text\">{text}</div>}\n {actions && <div className=\"c-sectionintro__actions\">{actions}</div>}\n {imageSrc && (\n <div className=\"c-sectionintro__image-wrapper\">\n <img\n src={imageSrc}\n alt={imageAlt}\n className=\"c-sectionintro__image\"\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default SectionIntro;\n","import React, { useRef, useEffect, useState, ReactNode } from 'react';\nimport { STEPS } from '../../lib/constants/components';\n\nexport interface StepItem {\n /**\n * The number for the step\n */\n number: number | string | ReactNode;\n \n /**\n * The text label for the step\n */\n text: string;\n \n /**\n * Optional custom content for the step\n */\n content?: React.ReactNode;\n}\n\nexport interface StepsProps {\n /**\n * Array of step items\n */\n items: StepItem[];\n \n /**\n * Current active step index (0-based)\n */\n activeIndex?: number;\n \n /**\n * Whether to display steps vertically\n */\n vertical?: boolean;\n \n /**\n * Called when active step changes\n */\n onStepChange?: (index: number) => void;\n \n /**\n * Additional CSS class\n */\n className?: string;\n}\n\n/**\n * Steps component for displaying a sequence of steps\n */\nexport const Steps: React.FC<StepsProps> = ({\n items,\n activeIndex = 0,\n vertical = false,\n onStepChange,\n className = '',\n}) => {\n const [currentStep, setCurrentStep] = useState(activeIndex);\n const stepsRef = useRef<HTMLDivElement>(null);\n const stepsInstance = useRef<any>(null);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !stepsRef.current) return;\n\n // Dynamically import the steps script to avoid server-side rendering issues\n import('./scripts').then(({ default: StepsClass }) => {\n if (stepsRef.current) {\n stepsInstance.current = new StepsClass(stepsRef.current, {\n activeIndex: currentStep,\n vertical\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (stepsInstance.current) {\n stepsInstance.current.destroy();\n }\n };\n }, []);\n\n // Update steps when activeIndex prop changes\n useEffect(() => {\n if (currentStep !== activeIndex) {\n setCurrentStep(activeIndex);\n \n if (stepsInstance.current) {\n stepsInstance.current.setActive(activeIndex);\n }\n }\n }, [activeIndex]);\n \n // Method to go to next step\n const goToNextStep = () => {\n const nextIndex = currentStep + 1;\n if (nextIndex < items.length) {\n setCurrentStep(nextIndex);\n \n if (stepsInstance.current) {\n stepsInstance.current.next();\n }\n \n if (onStepChange) {\n onStepChange(nextIndex);\n }\n }\n };\n \n // Method to go to previous step\n const goToPreviousStep = () => {\n const prevIndex = currentStep - 1;\n if (prevIndex >= 0) {\n setCurrentStep(prevIndex);\n \n if (stepsInstance.current) {\n stepsInstance.current.previous();\n }\n \n if (onStepChange) {\n onStepChange(prevIndex);\n }\n }\n };\n \n return (\n <div \n className={`c-steps ${vertical ? STEPS.CLASSES.VERTICAL : ''} ${className}`}\n ref={stepsRef}\n role=\"navigation\"\n aria-label=\"Steps\"\n >\n {items.map((item, index) => (\n <div \n key={`step-${index}`}\n className={`c-steps__item ${index <= currentStep ? STEPS.CLASSES.ACTIVE : ''} ${index < currentStep ? STEPS.CLASSES.COMPLETED : ''}`}\n aria-current={index === currentStep ? 'step' : undefined}\n >\n <div className=\"c-steps__line\"></div>\n <div className=\"c-steps__content\">\n <div className=\"c-steps__number\">{item.number}</div>\n <div className=\"c-steps__text\">{item.text}</div>\n {item.content && <div className=\"c-steps__custom-content\">{item.content}</div>}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default Steps; ","import React, { useRef, useEffect, useState, ReactNode } from 'react';\nimport { TAB } from '../../lib/constants/components';\n\nexport interface TabItemProps {\n /**\n * Label for the tab\n */\n label: string;\n \n /**\n * Content of the tab panel\n */\n content: ReactNode;\n \n /**\n * Whether the tab is initially active\n */\n isActive?: boolean;\n \n /**\n * Additional CSS class for the tab\n */\n className?: string;\n}\n\nexport interface TabProps {\n /**\n * Array of tab items\n */\n items: TabItemProps[];\n \n /**\n * Initial active tab index\n */\n activeIndex?: number;\n \n /**\n * Callback when tab changes\n */\n onTabChange?: (index: number) => void;\n \n /**\n * Additional CSS class for the tab component\n */\n className?: string;\n}\n\n/**\n * Tab component for switching between different content panels\n */\nexport const Tab: React.FC<TabProps> = ({\n items,\n activeIndex = TAB.DEFAULTS.ACTIVE_INDEX,\n onTabChange,\n className = '',\n}) => {\n const [currentTab, setCurrentTab] = useState(activeIndex);\n const tabRef = useRef<HTMLDivElement>(null);\n const tabInstance = useRef<any>(null);\n \n // Handle tab instance initialization and cleanup\n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !tabRef.current) return;\n\n // Dynamically import the tab script to avoid server-side rendering issues\n import('./scripts').then(({ default: TabClass }) => {\n if (tabRef.current) {\n tabInstance.current = new TabClass(tabRef.current);\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (tabInstance.current) {\n tabInstance.current.destroy();\n }\n };\n }, []);\n \n // Handle tab change\n const handleTabClick = (index: number) => {\n setCurrentTab(index);\n if (onTabChange) {\n onTabChange(index);\n }\n };\n \n return (\n <div className={`c-tabs js-atomix-tab ${className}`} ref={tabRef}>\n <ul className=\"c-tabs__nav\">\n {items.map((item, index) => (\n <li className=\"c-tabs__nav-item\" key={`tab-nav-${index}`}>\n <button \n className={`c-tabs__nav-btn ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}\n onClick={() => handleTabClick(index)}\n data-tabindex={index}\n role=\"tab\"\n aria-selected={index === currentTab}\n aria-controls={`tab-panel-${index}`}\n >\n {item.label}\n </button>\n </li>\n ))}\n </ul>\n <div className=\"c-tabs__panels\">\n {items.map((item, index) => (\n <div \n className={`c-tabs__panel ${index === currentTab ? TAB.CLASSES.ACTIVE : ''}`}\n key={`tab-panel-${index}`}\n data-tabindex={index}\n id={`tab-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`tab-nav-${index}`}\n style={{ \n height: index === currentTab ? 'auto' : '0px',\n opacity: index === currentTab ? 1 : 0,\n overflow: 'hidden',\n transition: 'height 0.3s ease, opacity 0.3s ease'\n }}\n >\n <div className=\"c-tabs__panel-body\">\n {item.content}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}; ","import React, { useRef, useEffect, ReactNode } from 'react';\nimport { TESTIMONIAL } from '../../lib/constants/components';\n\nexport interface TestimonialAuthor {\n /**\n * The author's name\n */\n name: string;\n \n /**\n * The author's role or title\n */\n role: string;\n \n /**\n * The URL to the author's avatar image\n */\n avatarSrc?: string;\n \n /**\n * Alternative text for the avatar image\n */\n avatarAlt?: string;\n}\n\nexport interface TestimonialProps {\n /**\n * The testimonial quote text or content\n */\n quote: ReactNode;\n \n /**\n * Author information\n */\n author?: TestimonialAuthor;\n \n /**\n * Size variant\n */\n size?: 'sm' | 'lg' | '';\n \n /**\n * Whether to show a skeleton loading state\n */\n skeleton?: boolean;\n \n /**\n * Additional CSS class\n */\n className?: string;\n}\n\n/**\n * Testimonial component for displaying customer quotes and feedback\n */\nexport const Testimonial: React.FC<TestimonialProps> = ({\n quote,\n author,\n size = '',\n skeleton = false,\n className = '',\n}) => {\n const testimonialRef = useRef<HTMLDivElement>(null);\n const testimonialInstance = useRef<any>(null);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !testimonialRef.current) return;\n\n // Dynamically import the testimonial script to avoid server-side rendering issues\n import('./scripts').then(({ default: TestimonialClass }) => {\n if (testimonialRef.current) {\n testimonialInstance.current = new TestimonialClass(testimonialRef.current, {\n size,\n skeleton\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (testimonialInstance.current) {\n testimonialInstance.current.destroy();\n }\n };\n }, [size, skeleton]);\n \n // Determine CSS classes\n const testimonialClasses = [\n 'c-testimonial',\n size === 'sm' ? TESTIMONIAL.CLASSES.SMALL : '',\n size === 'lg' ? TESTIMONIAL.CLASSES.LARGE : '',\n className\n ].filter(Boolean).join(' ');\n \n // Render skeleton version\n if (skeleton) {\n return (\n <div className={testimonialClasses} ref={testimonialRef}>\n <blockquote className=\"c-testimonial__quote\">\n <span className=\"c-skeleton\"></span>\n <span className=\"c-skeleton\"></span>\n <span className=\"c-skeleton u-w-75\"></span>\n <span className=\"c-skeleton u-w-25\"></span>\n </blockquote>\n <div className=\"c-testimonial__author\">\n <span className=\"c-testimonial__author-avatar c-avatar c-avatar--xxl c-avatar--circle c-skeleton\"></span>\n <div className=\"c-testimonial__info u-w-75\">\n <p className=\"c-testimonial__author-name\">\n <span className=\"c-skeleton u-w-25\"></span>\n </p>\n <p className=\"c-testimonial__author-role\">\n <span className=\"c-skeleton u-w-25\"></span>\n </p>\n </div>\n </div>\n </div>\n );\n }\n \n // Render normal version\n return (\n <div className={testimonialClasses} ref={testimonialRef}>\n <blockquote className=\"c-testimonial__quote\">\n {quote}\n </blockquote>\n {author && (\n <div className=\"c-testimonial__author\">\n {author.avatarSrc && (\n <img\n src={author.avatarSrc}\n alt={author.avatarAlt || ''}\n className=\"c-testimonial__author-avatar c-avatar c-avatar--xxl c-avatar--circle\"\n />\n )}\n <div className=\"c-testimonial__info\">\n <p className=\"c-testimonial__author-name\">{author.name}</p>\n <p className=\"c-testimonial__author-role\">{author.role}</p>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Testimonial; ","import React, { useRef, useEffect, useState } from 'react';\nimport { TOGGLE } from '../../lib/constants/components';\n\nexport interface ToggleProps {\n /**\n * Whether the toggle is initially on\n */\n initialOn?: boolean;\n \n /**\n * Callback when the toggle is turned on\n */\n onToggleOn?: () => void;\n \n /**\n * Callback when the toggle is turned off\n */\n onToggleOff?: () => void;\n \n /**\n * Whether the toggle is disabled\n */\n disabled?: boolean;\n \n /**\n * Additional CSS class for the toggle\n */\n className?: string;\n}\n\n/**\n * Toggle component for switching between two states\n */\nexport const Toggle: React.FC<ToggleProps> = ({\n initialOn = false,\n onToggleOn,\n onToggleOff,\n disabled = false,\n className = '',\n}) => {\n const [isOn, setIsOn] = useState(initialOn);\n const toggleRef = useRef<HTMLDivElement>(null);\n const toggleInstance = useRef<any>(null);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !toggleRef.current) return;\n\n // Initialize toggle instance\n import('./scripts').then(({ default: ToggleClass }) => {\n if (toggleRef.current) {\n toggleInstance.current = new ToggleClass(toggleRef.current);\n }\n });\n \n // Add event listeners for custom events\n const handleToggleOn = () => {\n setIsOn(true);\n if (onToggleOn) onToggleOn();\n };\n \n const handleToggleOff = () => {\n setIsOn(false);\n if (onToggleOff) onToggleOff();\n };\n \n const element = toggleRef.current;\n element?.addEventListener('toggle:on', handleToggleOn);\n element?.addEventListener('toggle:off', handleToggleOff);\n \n // Set initial state if needed\n if (initialOn && toggleInstance.current) {\n toggleInstance.current.turnOn();\n }\n \n // Cleanup on unmount\n return () => {\n element?.removeEventListener('toggle:on', handleToggleOn);\n element?.removeEventListener('toggle:off', handleToggleOff);\n \n if (toggleInstance.current) {\n toggleInstance.current.destroy();\n }\n };\n }, [initialOn, onToggleOn, onToggleOff]);\n \n // Update the toggle when the isOn prop changes\n useEffect(() => {\n if (!toggleInstance.current) return;\n \n if (isOn) {\n toggleInstance.current.turnOn();\n } else {\n toggleInstance.current.turnOff();\n }\n }, [isOn]);\n \n return (\n <div \n className={`c-toggle ${isOn ? TOGGLE.CLASSES.IS_ON : ''} ${disabled ? 'is-disabled' : ''} ${className}`} \n ref={toggleRef}\n role=\"switch\"\n aria-checked={isOn}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled}\n >\n <div className=\"c-toggle__switch\"></div>\n </div>\n );\n}; ","import { TOOLTIP } from '../../../lib/constants/components';\n\n/**\n * Default options for the tooltip component\n */\nconst DEFAULT_OPTIONS = {\n trigger: TOOLTIP.DEFAULTS.TRIGGER,\n position: TOOLTIP.DEFAULTS.POSITION,\n offset: TOOLTIP.DEFAULTS.OFFSET,\n delay: TOOLTIP.DEFAULTS.DELAY,\n activeClass: TOOLTIP.CLASSES.IS_ACTIVE,\n contentIdAttr: TOOLTIP.ATTRIBUTES.CONTENT_ID,\n positionAttr: TOOLTIP.ATTRIBUTES.POSITION,\n triggerAttr: TOOLTIP.ATTRIBUTES.TRIGGER\n};\n\n/**\n * Interface for Tooltip options\n */\nexport interface TooltipOptions {\n trigger: string;\n position: string;\n offset: number;\n delay: number;\n activeClass: string;\n contentIdAttr: string;\n positionAttr: string;\n triggerAttr: string;\n [key: string]: any;\n}\n\n/**\n * Interface for Tooltip instance\n */\nexport interface TooltipInstance {\n show: () => void;\n hide: () => void;\n destroy: () => void;\n isInitialized: () => boolean;\n isVisible: () => boolean;\n getElement: () => HTMLElement | null;\n getTriggerElement: () => HTMLElement | null;\n getPosition: () => string;\n setPosition: (position: string) => void;\n}\n\n/**\n * Class representing a Tooltip component\n */\nexport class Tooltip implements TooltipInstance {\n private selector: string | Element;\n private $element: HTMLElement | null;\n private $trigger: HTMLElement | null;\n private $content: HTMLElement | null;\n private options: TooltipOptions;\n private timeout: number | null;\n private hideTimeout: number | null;\n private isActive: boolean = false;\n\n /**\n * Creates an instance of Tooltip\n * @param selector - CSS selector string or DOM Element\n * @param options - Custom options to override defaults\n */\n constructor(selector: string | Element, options = {}) {\n this.selector = selector || TOOLTIP.SELECTORS.TOOLTIP;\n this.$element = \n typeof selector === 'string' \n ? document.querySelector<HTMLElement>(selector)\n : selector as HTMLElement;\n this.options = { ...DEFAULT_OPTIONS, ...options } as TooltipOptions;\n this.timeout = null;\n this.hideTimeout = null;\n this.$trigger = null;\n this.$content = null;\n this._initialize();\n }\n\n /**\n * Initialize the tooltip component\n */\n private _initialize(): void {\n if (!this.$element) return;\n\n this._initializeElements();\n this._setPosition();\n this._bindEvents();\n }\n\n /**\n * Initialize DOM elements\n */\n private _initializeElements(): void {\n if (!this.$element) return;\n \n // Find the parent container that wraps both trigger and tooltip\n const parentContainer = this.$element.parentElement;\n if (!parentContainer) return;\n \n // Find the trigger as a sibling or within the same parent container\n this.$trigger = parentContainer.querySelector<HTMLElement>(TOOLTIP.SELECTORS.TRIGGER);\n this.$content = this.$element.querySelector<HTMLElement>(TOOLTIP.SELECTORS.CONTENT);\n \n // Check for custom position from data attribute\n const customPosition = this.$element.getAttribute(this.options.positionAttr);\n if (customPosition) {\n this.options.position = customPosition;\n }\n \n // Check for custom trigger from data attribute\n const customTrigger = this.$element.getAttribute(this.options.triggerAttr);\n if (customTrigger) {\n this.options.trigger = customTrigger;\n }\n }\n\n /**\n * Set tooltip position\n */\n private _setPosition(): void {\n if (!this.$content || !this.$element) return;\n \n // Reset any existing position classes\n this.$element.classList.remove(\n TOOLTIP.CLASSES.TOP, \n TOOLTIP.CLASSES.BOTTOM, \n TOOLTIP.CLASSES.LEFT, \n TOOLTIP.CLASSES.RIGHT, \n TOOLTIP.CLASSES.TOP_LEFT, \n TOOLTIP.CLASSES.TOP_RIGHT, \n TOOLTIP.CLASSES.BOTTOM_LEFT, \n TOOLTIP.CLASSES.BOTTOM_RIGHT\n );\n \n // Add the appropriate position class\n switch (this.options.position) {\n case 'top':\n this.$element.classList.add(TOOLTIP.CLASSES.TOP);\n break;\n case 'bottom':\n this.$element.classList.add(TOOLTIP.CLASSES.BOTTOM);\n break;\n case 'left':\n this.$element.classList.add(TOOLTIP.CLASSES.LEFT);\n break;\n case 'right':\n this.$element.classList.add(TOOLTIP.CLASSES.RIGHT);\n break;\n case 'top-left':\n this.$element.classList.add(TOOLTIP.CLASSES.TOP_LEFT);\n break;\n case 'top-right':\n this.$element.classList.add(TOOLTIP.CLASSES.TOP_RIGHT);\n break;\n case 'bottom-left':\n this.$element.classList.add(TOOLTIP.CLASSES.BOTTOM_LEFT);\n break;\n case 'bottom-right':\n this.$element.classList.add(TOOLTIP.CLASSES.BOTTOM_RIGHT);\n break;\n default:\n this.$element.classList.add(TOOLTIP.CLASSES.TOP);\n }\n \n // Calculate offset based on position\n const offset = this.options.offset;\n \n switch (this.options.position) {\n case 'top':\n case 'top-left':\n case 'top-right':\n this.$element.style.bottom = `${offset}px`;\n break;\n case 'bottom':\n case 'bottom-left':\n case 'bottom-right':\n this.$element.style.top = `${offset}px`;\n break;\n case 'left':\n this.$element.style.right = `${offset}px`;\n break;\n case 'right':\n this.$element.style.left = `${offset}px`;\n break;\n default:\n this.$element.style.bottom = `${offset}px`;\n }\n }\n\n /**\n * Bind event listeners\n */\n private _bindEvents(): void {\n if (!this.$trigger) return;\n \n if (this.options.trigger === 'hover') {\n this.$trigger.addEventListener('mouseenter', this._handleTriggerEnter.bind(this));\n this.$trigger.addEventListener('mouseleave', this._handleTriggerLeave.bind(this));\n } else if (this.options.trigger === 'click') {\n this.$trigger.addEventListener('click', this._handleTriggerClick.bind(this));\n }\n \n // Handle focus for accessibility\n this.$trigger.addEventListener('focus', this._handleTriggerEnter.bind(this));\n this.$trigger.addEventListener('blur', this._handleTriggerLeave.bind(this));\n }\n\n /**\n * Handle trigger mouseenter or focus event\n */\n private _handleTriggerEnter(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n \n if (this.timeout) return;\n \n this.timeout = window.setTimeout(() => {\n this.show();\n this.timeout = null;\n }, this.options.delay);\n }\n\n /**\n * Handle trigger mouseleave or blur event\n */\n private _handleTriggerLeave(): void {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n \n this.hideTimeout = window.setTimeout(() => {\n this.hide();\n this.hideTimeout = null;\n }, this.options.delay);\n }\n\n /**\n * Handle trigger click event\n */\n private _handleTriggerClick(): void {\n if (this.$element && this.$element.classList.contains(this.options.activeClass)) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Check if tooltip is initialized\n */\n public isInitialized(): boolean {\n return !!this.$element && !!this.$trigger;\n }\n\n /**\n * Check if tooltip is currently visible\n */\n public isVisible(): boolean {\n return this.isActive;\n }\n\n /**\n * Get tooltip element\n */\n public getElement(): HTMLElement | null {\n return this.$element;\n }\n\n /**\n * Get trigger element\n */\n public getTriggerElement(): HTMLElement | null {\n return this.$trigger;\n }\n\n /**\n * Get current position\n */\n public getPosition(): string {\n return this.options.position;\n }\n\n /**\n * Set tooltip position\n */\n public setPosition(position: string): void {\n if (this.options.position !== position) {\n this.options.position = position;\n this._setPosition();\n }\n }\n\n /**\n * Show the tooltip\n */\n public show(): void {\n if (!this.$element) return;\n \n // Dispatch custom event before showing\n const showEvent = new CustomEvent('tooltip:show', {\n bubbles: true,\n cancelable: true,\n detail: { tooltip: this }\n });\n \n this.$element.dispatchEvent(showEvent);\n \n // If event was canceled, don't show\n if (showEvent.defaultPrevented) return;\n \n this.$element.classList.add(this.options.activeClass);\n this.isActive = true;\n }\n\n /**\n * Hide the tooltip\n */\n public hide(): void {\n if (!this.$element) return;\n \n // Dispatch custom event before hiding\n const hideEvent = new CustomEvent('tooltip:hide', {\n bubbles: true,\n cancelable: true,\n detail: { tooltip: this }\n });\n \n this.$element.dispatchEvent(hideEvent);\n \n // If event was canceled, don't hide\n if (hideEvent.defaultPrevented) return;\n \n this.$element.classList.remove(this.options.activeClass);\n this.isActive = false;\n }\n\n /**\n * Destroy the tooltip\n */\n public destroy(): void {\n if (!this.$trigger) return;\n \n // Remove event listeners\n if (this.options.trigger === 'hover') {\n this.$trigger.removeEventListener('mouseenter', this._handleTriggerEnter.bind(this));\n this.$trigger.removeEventListener('mouseleave', this._handleTriggerLeave.bind(this));\n } else if (this.options.trigger === 'click') {\n this.$trigger.removeEventListener('click', this._handleTriggerClick.bind(this));\n }\n \n this.$trigger.removeEventListener('focus', this._handleTriggerEnter.bind(this));\n this.$trigger.removeEventListener('blur', this._handleTriggerLeave.bind(this));\n \n // Clear timeouts\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n \n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n \n // Hide tooltip\n if (this.$element) {\n this.$element.classList.remove(this.options.activeClass);\n }\n }\n\n /**\n * Initialize all tooltips in the document\n * @param selector - CSS selector for tooltip elements\n * @param options - Custom options\n */\n public static initializeAll(selector = TOOLTIP.SELECTORS.TOOLTIP, options = {}): Tooltip[] {\n const elements = document.querySelectorAll(selector);\n return Array.from(elements).map(element => new Tooltip(element, options));\n }\n}\n\n/**\n * Initialize all tooltips in the document\n * @param selector - CSS selector for tooltip elements\n * @param options - Custom options\n */\nexport function initializeTooltips(selector = TOOLTIP.SELECTORS.TOOLTIP, options = {}): TooltipInstance[] {\n return Tooltip.initializeAll(selector, options);\n} ","import React, { ReactNode, useRef, useEffect } from 'react';\nimport { TOOLTIP } from '../../lib/constants/components';\nimport { Tooltip as TooltipClass } from './scripts';\n\nexport interface TooltipProps {\n /**\n * Content to be displayed in the tooltip\n */\n content: ReactNode;\n \n /**\n * The element that will trigger the tooltip\n */\n children: ReactNode;\n \n /**\n * The position of the tooltip relative to the trigger\n */\n position?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n \n /**\n * How the tooltip is triggered\n */\n trigger?: 'hover' | 'click';\n \n /**\n * Additional CSS class for the tooltip\n */\n className?: string;\n \n /**\n * Delay before showing the tooltip (in milliseconds)\n */\n delay?: number;\n \n /**\n * Offset from the trigger element (in pixels)\n */\n offset?: number;\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = TOOLTIP.DEFAULTS.POSITION,\n trigger = TOOLTIP.DEFAULTS.TRIGGER,\n className = '',\n delay = TOOLTIP.DEFAULTS.DELAY,\n offset = TOOLTIP.DEFAULTS.OFFSET,\n}) => {\n const tooltipRef = useRef<HTMLDivElement>(null);\n const tooltipInstance = useRef<any>(null);\n \n useEffect(() => {\n if (tooltipRef.current) {\n // Initialize tooltip\n tooltipInstance.current = new TooltipClass(tooltipRef.current, {\n position,\n trigger,\n delay,\n offset,\n });\n }\n \n // Cleanup on unmount\n return () => {\n if (tooltipInstance.current) {\n tooltipInstance.current.destroy();\n }\n };\n }, [position, trigger, delay, offset]);\n \n return (\n <div className=\"u-position-relative u-d-inline-block\">\n <div className={`${TOOLTIP.SELECTORS.TRIGGER.substring(1)}${className ? ` ${className}` : ''}`}>\n {children}\n </div>\n <div \n className={`c-tooltip ${TOOLTIP.SELECTORS.TOOLTIP.substring(1)}`} \n ref={tooltipRef}\n data-tooltip-position={position}\n data-tooltip-trigger={trigger}\n >\n <div className={`c-tooltip__content ${TOOLTIP.SELECTORS.CONTENT.substring(1)}`}>\n <span className={TOOLTIP.SELECTORS.ARROW.substring(1)}></span>\n {content}\n </div>\n </div>\n </div>\n );\n}; ","import React, { useRef, useEffect, useState } from 'react';\nimport { UPLOAD } from '../../lib/constants/components';\n\nexport interface UploadProps {\n /**\n * Whether the upload component is disabled\n */\n disabled?: boolean;\n \n /**\n * Maximum file size in MB\n */\n maxSizeInMB?: number;\n \n /**\n * Accepted file types\n */\n acceptedFileTypes?: string[];\n \n /**\n * Whether multiple files can be selected\n */\n multiple?: boolean;\n \n /**\n * Text for the drag and drop section\n */\n title?: string;\n \n /**\n * Text describing supported file types\n */\n supportedFilesText?: string;\n \n /**\n * Text for the upload button\n */\n buttonText?: string;\n \n /**\n * Helper text displayed below the button\n */\n helperText?: string;\n \n /**\n * Icon component or class name\n */\n icon?: React.ReactNode;\n \n /**\n * Called when files are selected\n */\n onFileSelect?: (files: File[]) => void;\n \n /**\n * Called during file upload with progress\n */\n onFileUpload?: (file: File, progress: number) => void;\n \n /**\n * Called when file upload is complete\n */\n onFileUploadComplete?: (file: File) => void;\n \n /**\n * Called on file upload errors\n */\n onFileUploadError?: (file: File, error: string) => void;\n \n /**\n * Additional CSS class\n */\n className?: string;\n}\n\n/**\n * Upload status type\n */\ntype UploadStatus = 'idle' | 'loading' | 'success' | 'error';\n\n/**\n * Upload component for file uploads with drag and drop\n */\nexport const Upload: React.FC<UploadProps> = ({\n disabled = false,\n maxSizeInMB = 5,\n acceptedFileTypes = ['application/pdf', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'image/jpeg', 'image/png'],\n multiple = false,\n title = 'Drag and Drop files here',\n supportedFilesText = 'Files supported: PDF, XSLS, JPEG, PNG, Scanner',\n buttonText = 'Choose File',\n helperText = `Maximum size: ${maxSizeInMB}MB`,\n icon = <i className=\"icon-lux-cloud-arrow-up-fill\"></i>,\n onFileSelect,\n onFileUpload,\n onFileUploadComplete,\n onFileUploadError,\n className = '',\n}) => {\n const uploadRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const uploadInstance = useRef<any>(null);\n \n const [status, setStatus] = useState<UploadStatus>('idle');\n const [isDragging, setIsDragging] = useState(false);\n const [currentFile, setCurrentFile] = useState<File | null>(null);\n const [uploadProgress, setUploadProgress] = useState(0);\n const [timeLeft, setTimeLeft] = useState<string | null>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n const dragCounter = useRef(0);\n \n useEffect(() => {\n // Only run on client-side\n if (typeof window === 'undefined' || !uploadRef.current) return;\n\n // Dynamically import the upload script to avoid server-side rendering issues\n import('./scripts').then(({ default: UploadClass }) => {\n if (uploadRef.current) {\n uploadInstance.current = new UploadClass(uploadRef.current, {\n disabled,\n maxSizeInMB,\n acceptedFileTypes,\n multiple,\n onFileSelect,\n onFileUpload: (file: File, progress: number) => {\n setUploadProgress(progress);\n setTimeLeft(`${Math.ceil((100 - progress) / 5)} seconds left`);\n if (onFileUpload) onFileUpload(file, progress);\n },\n onFileUploadComplete: (file: File) => {\n setStatus('success');\n setSuccessMessage('Upload successful');\n if (onFileUploadComplete) onFileUploadComplete(file);\n },\n onFileUploadError: (file: File, error: string) => {\n setStatus('error');\n setErrorMessage(error);\n if (onFileUploadError) onFileUploadError(file, error);\n }\n });\n }\n });\n \n // Cleanup on unmount\n return () => {\n if (uploadInstance.current) {\n uploadInstance.current.destroy();\n }\n };\n }, [disabled, maxSizeInMB, acceptedFileTypes, multiple, onFileSelect, onFileUpload, onFileUploadComplete, onFileUploadError]);\n \n // Handle file input change\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!e.target.files?.length) return;\n \n const files = Array.from(e.target.files);\n handleFiles(files);\n };\n \n // Handle button click\n const handleButtonClick = () => {\n if (inputRef.current && !disabled) {\n inputRef.current.click();\n }\n };\n \n // Handle drag enter\n const handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n \n dragCounter.current++;\n if (dragCounter.current === 1) {\n setIsDragging(true);\n }\n };\n \n // Handle drag leave\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n \n dragCounter.current--;\n if (dragCounter.current === 0) {\n setIsDragging(false);\n }\n };\n \n // Handle drag over\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n };\n \n // Handle drop\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (disabled) return;\n \n dragCounter.current = 0;\n setIsDragging(false);\n \n if (!e.dataTransfer.files?.length) return;\n \n const files = Array.from(e.dataTransfer.files);\n handleFiles(files);\n };\n \n // Process files\n const handleFiles = (files: File[]) => {\n if (!files.length) return;\n \n // If multiple is not allowed, take only the first file\n const filesToProcess = multiple ? files : [files[0]];\n \n // Validate files\n const validFiles = filesToProcess.filter(file => validateFile(file));\n \n // Notify about file selection\n if (validFiles.length && onFileSelect) {\n onFileSelect(validFiles);\n }\n \n // Process the first valid file\n if (validFiles.length) {\n setCurrentFile(validFiles[0]);\n simulateUpload(validFiles[0]);\n }\n };\n \n // Validate file\n const validateFile = (file: File): boolean => {\n const maxSizeInBytes = maxSizeInMB * 1024 * 1024;\n \n // Check file size\n if (file.size > maxSizeInBytes) {\n setStatus('error');\n setErrorMessage(`File too large. Maximum size is ${maxSizeInMB}MB.`);\n return false;\n }\n \n // Check file type if acceptedFileTypes is provided\n if (acceptedFileTypes?.length) {\n const isAcceptedType = acceptedFileTypes.some(type => {\n // Handle wildcards like image/*\n if (type.endsWith('/*')) {\n const mainType = type.split('/')[0];\n return file.type.startsWith(`${mainType}/`);\n }\n return file.type === type;\n });\n \n if (!isAcceptedType) {\n setStatus('error');\n setErrorMessage('File type not supported.');\n return false;\n }\n }\n \n return true;\n };\n \n // Simulate upload (in a real component, this would be an actual upload)\n const simulateUpload = (file: File) => {\n setStatus('loading');\n setUploadProgress(0);\n \n // Simulate progress updates\n let progress = 0;\n const interval = setInterval(() => {\n progress += 5;\n \n if (progress < 100) {\n setUploadProgress(progress);\n setTimeLeft(`${Math.ceil((100 - progress) / 5)} seconds left`);\n \n if (onFileUpload) {\n onFileUpload(file, progress);\n }\n } else {\n clearInterval(interval);\n setStatus('success');\n setSuccessMessage('Upload successful');\n \n if (onFileUploadComplete) {\n onFileUploadComplete(file);\n }\n }\n }, 500);\n };\n \n // Handle close button click\n const handleClose = () => {\n setStatus('idle');\n setCurrentFile(null);\n setUploadProgress(0);\n setTimeLeft(null);\n setErrorMessage(null);\n setSuccessMessage(null);\n \n // Reset input\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n \n // Determine CSS classes\n const uploadClasses = [\n 'c-upload',\n disabled ? UPLOAD.CLASSES.DISABLED : '',\n status === 'loading' ? UPLOAD.CLASSES.LOADING : '',\n status === 'success' ? UPLOAD.CLASSES.SUCCESS : '',\n status === 'error' ? UPLOAD.CLASSES.ERROR : '',\n isDragging ? UPLOAD.CLASSES.DRAGGING : '',\n className\n ].filter(Boolean).join(' ');\n \n // Update CSS variable for progress\n const style = uploadProgress > 0 ? {\n [UPLOAD.ATTRIBUTES.PERCENTAGE]: uploadProgress\n } as React.CSSProperties : {};\n \n return (\n <div \n className={uploadClasses} \n ref={uploadRef}\n style={style}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <div className=\"c-upload__inner\">\n <div className=\"c-upload__icon\">\n {icon}\n </div>\n <h3 className=\"c-upload__title\">{title}</h3>\n <p className=\"c-upload__text\">{supportedFilesText}</p>\n <button \n className=\"c-upload__btn c-btn c-btn--primary\" \n disabled={disabled}\n onClick={handleButtonClick}\n >\n {buttonText}\n </button>\n <p className=\"c-upload__helper-text\">{helperText}</p>\n <input\n ref={inputRef}\n type=\"file\"\n accept={acceptedFileTypes.join(',')}\n multiple={multiple}\n style={{ display: 'none' }}\n onChange={handleFileChange}\n />\n </div>\n \n {(status === 'loading' || status === 'success' || status === 'error') && currentFile && (\n <div className=\"c-upload__loader\">\n <div className=\"c-upload__loader-status\">\n <h5 className=\"c-upload__loader-title\">{currentFile.name}</h5>\n <div className=\"c-upload__loader-progress\">\n {status === 'loading' && uploadProgress < 100 && (\n <>\n <div className=\"c-upload__loader-par\">{uploadProgress}%</div>\n {timeLeft && <div className=\"c-upload__loader-time\">{timeLeft}</div>}\n </>\n )}\n {status === 'success' && successMessage}\n {status === 'error' && errorMessage}\n </div>\n </div>\n \n <div className=\"c-upload__loader-control\">\n {status === 'loading' && uploadProgress < 100 && (\n <div className=\"c-upload__loader-bar\">\n <svg>\n <circle cx=\"10\" cy=\"10\" r=\"10\"></circle>\n <circle cx=\"10\" cy=\"10\" r=\"10\"></circle>\n </svg>\n </div>\n )}\n <button \n className=\"c-upload__loader-close c-btn c-btn--icon\"\n onClick={handleClose}\n >\n {status === 'success' ? (\n <i className=\"icon-lux-check-circle-fill\"></i>\n ) : (\n <i className=\"icon-lux-x\"></i>\n )}\n </button>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default Upload; ","import React from 'react';\n\ninterface AtomixLogoProps {\n height?: number;\n width?: number;\n className?: string;\n}\n\nexport const AtomixLogo: React.FC<AtomixLogoProps> = ({ \n height = 40, \n width = 100, \n className = '' \n}) => {\n return (\n <svg \n xmlns=\"http://www.w3.org/2000/svg\" \n width={width} \n height={height} \n viewBox=\"0 0 120 48\"\n className={className}\n >\n {/* Atom icon */}\n <g transform=\"translate(0, 8) scale(0.06)\">\n <path \n fill=\"currentColor\" \n d=\"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"\n />\n </g>\n \n {/* Atomix text */}\n <text \n x=\"32\" \n y=\"32\" \n fontSize=\"22\" \n fontWeight=\"700\" \n fill=\"currentColor\"\n >\n Atomix\n </text>\n </svg>\n );\n};\n\nexport default AtomixLogo; ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"uuid\");","import { useState } from 'react';\nimport { TodoProps, Size } from '../types/components';\nimport { TodoItem } from '../../components/Todo/scripts/types';\nimport { v4 as uuidv4 } from 'uuid';\nimport { TODO, SIZES } from '../constants/components';\n\n/**\n * Todo composable hook - manages todo items state and operations\n * @param initialProps - Initial todo properties\n * @returns Todo state and methods\n */\nexport function useTodo(initialProps?: Partial<TodoProps>) {\n // Default todo properties\n const defaultProps: Partial<TodoProps> = {\n items: [],\n title: 'Todo List',\n size: 'md',\n placeholder: 'Add a new todo',\n showCompleted: true,\n ...initialProps\n };\n\n // State\n const [items, setItems] = useState<TodoItem[]>(defaultProps.items || []);\n const [inputText, setInputText] = useState<string>('');\n\n /**\n * Generate todo classes based on properties\n * @param props - Todo properties\n * @returns Class string for the todo component\n */\n const generateTodoClasses = (props: Partial<TodoProps>): string => {\n const {\n size = defaultProps.size,\n className = '',\n disabled = false\n } = props;\n\n const sizeClass = size === 'md' ? '' : `c-todo--${size}`;\n const disabledClass = disabled ? 'c-todo--disabled' : '';\n \n return `${TODO.CLASSES.BASE} ${sizeClass} ${disabledClass} ${className}`.trim();\n };\n\n /**\n * Generate todo item classes based on completion status\n * @param item - Todo item\n * @returns Class string for the todo item\n */\n const generateItemClasses = (item: TodoItem): string => {\n const completedClass = item.completed ? TODO.CLASSES.COMPLETED : '';\n return `${TODO.CLASSES.ITEM} ${completedClass}`.trim();\n };\n\n /**\n * Add a new todo item\n * @param text - Text for the new todo\n * @returns The new todo item\n */\n const addTodo = (text: string): TodoItem | null => {\n if (!text.trim()) return null;\n \n const newItem: TodoItem = {\n id: uuidv4(),\n text: text.trim(),\n completed: false\n };\n \n setItems(prevItems => [...prevItems, newItem]);\n setInputText('');\n return newItem;\n };\n\n /**\n * Toggle the completed state of a todo item\n * @param id - ID of the todo item to toggle\n * @returns Updated todo item or null if not found\n */\n const toggleTodo = (id: string): TodoItem | null => {\n let updatedItem: TodoItem | null = null;\n \n setItems(prevItems => {\n return prevItems.map(item => {\n if (item.id === id) {\n updatedItem = { ...item, completed: !item.completed };\n return updatedItem;\n }\n return item;\n });\n });\n \n return updatedItem;\n };\n\n /**\n * Delete a todo item\n * @param id - ID of the todo item to delete\n * @returns Boolean indicating successful deletion\n */\n const deleteTodo = (id: string): boolean => {\n const initialLength = items.length;\n \n setItems(prevItems => prevItems.filter(item => item.id !== id));\n \n return items.length !== initialLength;\n };\n\n /**\n * Handle form submission for adding a new todo\n * @param event - Form submit event\n * @param onAddTodo - Optional callback when a todo is added\n */\n const handleSubmit = (event: React.FormEvent, onAddTodo?: (text: string) => void) => {\n event.preventDefault();\n if (!inputText.trim()) return;\n \n const newItem = addTodo(inputText);\n \n if (newItem && onAddTodo) {\n onAddTodo(newItem.text);\n }\n };\n\n /**\n * Get filtered items based on showCompleted prop\n * @param showCompleted - Whether to show completed items\n * @returns Filtered todo items\n */\n const getFilteredItems = (showCompleted: boolean = true): TodoItem[] => {\n if (showCompleted) return items;\n return items.filter(item => !item.completed);\n };\n\n return {\n items,\n inputText,\n setInputText,\n addTodo,\n toggleTodo,\n deleteTodo,\n handleSubmit,\n generateTodoClasses,\n generateItemClasses,\n getFilteredItems\n };\n} ","import { useState, useCallback, useEffect } from 'react';\n\nexport interface UseModalProps {\n /**\n * Whether the modal is open\n */\n isOpen?: boolean;\n \n /**\n * Callback when modal state changes\n */\n onOpenChange?: (isOpen: boolean) => void;\n \n /**\n * Callback when modal opens\n */\n onOpen?: () => void;\n \n /**\n * Callback when modal closes\n */\n onClose?: () => void;\n}\n\nexport interface UseModalReturn {\n /**\n * Current open state\n */\n isOpen: boolean;\n \n /**\n * Function to open the modal\n */\n open: () => void;\n \n /**\n * Function to close the modal\n */\n close: () => void;\n \n /**\n * Function to toggle the modal\n */\n toggle: () => void;\n}\n\n/**\n * Hook for managing modal state\n */\nexport function useModal({\n isOpen: isOpenProp,\n onOpenChange,\n onOpen,\n onClose\n}: UseModalProps = {}): UseModalReturn {\n // For uncontrolled usage\n const [isOpenState, setIsOpenState] = useState(false);\n \n // Determine if we're in controlled or uncontrolled mode\n const isControlled = isOpenProp !== undefined;\n const isOpen = isControlled ? !!isOpenProp : isOpenState;\n \n // Update internal state when prop changes (for controlled mode)\n useEffect(() => {\n if (isControlled) {\n setIsOpenState(!!isOpenProp);\n }\n }, [isOpenProp, isControlled]);\n \n const updateOpen = useCallback((nextIsOpen: boolean) => {\n // For uncontrolled mode, update internal state\n if (!isControlled) {\n setIsOpenState(nextIsOpen);\n }\n \n // Call the change handler in either mode\n if (onOpenChange) {\n onOpenChange(nextIsOpen);\n }\n \n // Call the specific handler\n if (nextIsOpen && onOpen) {\n onOpen();\n } else if (!nextIsOpen && onClose) {\n onClose();\n }\n }, [isControlled, onOpenChange, onOpen, onClose]);\n \n const open = useCallback(() => {\n updateOpen(true);\n }, [updateOpen]);\n \n const close = useCallback(() => {\n updateOpen(false);\n }, [updateOpen]);\n \n const toggle = useCallback(() => {\n updateOpen(!isOpen);\n }, [isOpen, updateOpen]);\n \n return {\n isOpen,\n open,\n close,\n toggle\n };\n} ","import { BreadcrumbItem, BreadcrumbOptions } from '../../components/Breadcrumb/scripts/types';\nimport { BREADCRUMB } from '../constants/components';\n\n/**\n * Breadcrumb state and functionality\n * @param initialOptions - Initial breadcrumb options\n * @returns Breadcrumb state and methods\n */\nexport function useBreadcrumb(initialOptions?: Partial<BreadcrumbOptions>) {\n // Default breadcrumb options\n const defaultOptions: BreadcrumbOptions = {\n items: [],\n divider: BREADCRUMB.DEFAULTS.DIVIDER,\n className: '',\n ariaLabel: 'Breadcrumb',\n ...initialOptions\n };\n\n /**\n * Generate breadcrumb class based on options\n * @param options - Breadcrumb options\n * @returns Class string\n */\n const generateBreadcrumbClass = (options: Partial<BreadcrumbOptions>): string => {\n const { className = '' } = options;\n \n return [BREADCRUMB.CLASSES.BASE, className]\n .filter(Boolean)\n .join(' ')\n .trim();\n };\n\n /**\n * Generate breadcrumb item class\n * @param item - Breadcrumb item\n * @param isLast - Whether this is the last item\n * @returns Class string\n */\n const generateItemClass = (item: BreadcrumbItem, isLast: boolean): string => {\n return [\n BREADCRUMB.CLASSES.ITEM,\n (item.active || isLast) ? BREADCRUMB.CLASSES.ACTIVE : ''\n ]\n .filter(Boolean)\n .join(' ')\n .trim();\n };\n\n /**\n * Check if an item should be rendered as a link\n * @param item - Breadcrumb item\n * @param isLast - Whether this is the last item\n * @returns Whether item should be a link\n */\n const isItemLink = (item: BreadcrumbItem, isLast: boolean): boolean => {\n return Boolean(item.href && !item.active && !isLast);\n };\n\n /**\n * Parse items from a JSON string\n * @param jsonString - JSON string of items\n * @returns Array of breadcrumb items\n */\n const parseItemsFromJson = (jsonString: string): BreadcrumbItem[] => {\n try {\n return JSON.parse(jsonString) as BreadcrumbItem[];\n } catch (error) {\n console.error('Error parsing breadcrumb items:', error);\n return [];\n }\n };\n\n return {\n defaultOptions,\n generateBreadcrumbClass,\n generateItemClass,\n isItemLink,\n parseItemsFromJson\n };\n} ","/**\n * Check if element has a specific class\n * @param element - DOM element to check\n * @param className - Class name to check for\n * @returns Whether element has the class\n */\nexport function hasClass(element: HTMLElement, className: string): boolean {\n return element.classList.contains(className);\n}\n\n/**\n * Add class to element if not already present\n * @param element - DOM element to modify\n * @param className - Class name to add\n */\nexport function addClass(element: HTMLElement, className: string): void {\n if (!hasClass(element, className)) {\n element.classList.add(className);\n }\n}\n\n/**\n * Remove class from element if present\n * @param element - DOM element to modify\n * @param className - Class name to remove\n */\nexport function removeClass(element: HTMLElement, className: string): void {\n if (hasClass(element, className)) {\n element.classList.remove(className);\n }\n}\n\n/**\n * Toggle class on element\n * @param element - DOM element to modify\n * @param className - Class name to toggle\n * @param force - If true, adds class; if false, removes class\n */\nexport function toggleClass(\n element: HTMLElement, \n className: string, \n force?: boolean\n): void {\n element.classList.toggle(className, force);\n} ","/**\n * Icon path definitions for common Phosphor icons\n */\nconst ICON_PATHS: Record<string, string> = {\n House: 'M240 121.6V240h-48v-72a24 24 0 0 0-24-24h-80a24 24 0 0 0-24 24v72H16V121.6a16 16 0 0 1 5.4-12L111.4 29a16 16 0 0 1 21.2 0l90 80.6a16 16 0 0 1 5.4 12Z',\n Package: 'M223.68 66.15 135.68 18a15.88 15.88 0 0 0-15.36 0l-88 48.13a16 16 0 0 0-8.32 14v95.64a16 16 0 0 0 8.32 14l88 48.17a15.88 15.88 0 0 0 15.36 0l88-48.17a16 16 0 0 0 8.32-14V80.18a16 16 0 0 0-8.32-14.03ZM128 32.59l74.12 40.55-32 17.56-74.12-40.55ZM96 68.08l73.56 40.23-32.04 17.53L64 85.64ZM40 95.83l72 39.39v79.23l-72-39.4Zm144 79.22v-79.23l72-39.39v79.22Z',\n Folder: 'M216 72h-84.7L104.4 44.2A16.05 16.05 0 0 0 92.7 40H40a16 16 0 0 0-16 16v144.3a15.91 15.91 0 0 0 15.9 15.7h176.2a15.91 15.91 0 0 0 15.9-15.7V88a16 16 0 0 0-16-16Z',\n Tag: 'M246.15 128.6 183.06 65.5l.09-24.21A16.05 16.05 0 0 0 167 25.14l-24.1.09L79.4 88.85a16 16 0 0 0 0 22.63l67.26 67.27a16 16 0 0 0 22.63 0l76.86-76.86a16 16 0 0 0 0-23.29ZM160 152l-56-56 56-56 56 56Zm-16-72a16 16 0 1 1-16 16 16 16 0 0 1 16-16Z',\n CaretRight: 'M181.66 133.66l-80 80A8 8 0 0 1 88 208V48a8 8 0 0 1 13.66-5.66l80 80a8 8 0 0 1 0 11.32Z',\n CaretDown: 'M208 96v16a8 8 0 0 1-2.34 5.66l-80 80a8 8 0 0 1-11.32 0l-80-80A8 8 0 0 1 32 112V96a8 8 0 0 1 8-8h160a8 8 0 0 1 8 8Z',\n User: 'M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8ZM72 96a56 56 0 1 1 56 56 56.06 56.06 0 0 1-56-56Z',\n Home: 'M224 115.55V208a16 16 0 0 1-16 16h-40a16 16 0 0 1-16-16v-40a8 8 0 0 0-8-8h-32a8 8 0 0 0-8 8v40a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16v-92.45a16 16 0 0 1 5.17-11.78l80-75.48a16 16 0 0 1 21.66 0l80 75.48a16 16 0 0 1 5.17 11.78Z',\n // Added icons for DatePicker\n X: 'M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128 50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128l66.35 66.34Z',\n Calendar: 'M208 32h-24v-8a8 8 0 0 0-16 0v8H88v-8a8 8 0 0 0-16 0v8H48a16 16 0 0 0-16 16v160a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16ZM72 48v8a8 8 0 0 0 16 0v-8h80v8a8 8 0 0 0 16 0v-8h24v32H48V48Zm136 160H48V96h160v112Z',\n CaretDoubleLeft: 'M181.66 181.66a8 8 0 0 1-11.32 0L120 131.31V160a8 8 0 0 1-13.66 5.66l-48-48a8 8 0 0 1 0-11.32l48-48A8 8 0 0 1 120 64v28.69l50.34-50.35a8 8 0 0 1 11.32 11.32l-56 56a8 8 0 0 1-11.32 0L102.63 98 64 128l38.63 30L114.34 146.63a8 8 0 0 1 11.32 0l56 56a8 8 0 0 1 0 11.32Z',\n CaretDoubleRight: 'M74.34 181.66a8 8 0 0 0 11.32 0L136 131.31V160a8 8 0 0 0 13.66 5.66l48-48a8 8 0 0 0 0-11.32l-48-48A8 8 0 0 0 136 64v28.69L85.66 42.34a8 8 0 0 0-11.32 11.32l56 56a8 8 0 0 0 11.32 0l11.71-11.71L192 128l-38.63 30-11.71-11.71a8 8 0 0 0-11.32 0l-56 56a8 8 0 0 0 0 11.32Z'\n};\n\n/**\n * Create a Phosphor icon SVG element\n * @param name - Icon name\n * @param size - Icon size in pixels\n * @returns SVG element as HTML string\n */\nexport function createPhosphorIcon(name: string, size: number = 16): string {\n const path = ICON_PATHS[name] || '';\n \n if (!path) {\n console.warn(`Icon \"${name}\" not found in icon library`);\n }\n \n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" fill=\"currentColor\" viewBox=\"0 0 256 256\">\n <path d=\"${path}\"></path>\n </svg>`;\n}\n\n/**\n * Create an icon element\n * @param name - Icon name\n * @param size - Icon size in pixels\n * @param className - Additional CSS class name\n * @returns Icon element\n */\nexport function createIconElement(\n name: string,\n size: number = 16,\n className: string = ''\n): HTMLSpanElement {\n const iconElement = document.createElement('span');\n iconElement.className = className || 'c-icon';\n iconElement.style.display = 'inline-flex';\n iconElement.style.alignItems = 'center';\n iconElement.style.justifyContent = 'center';\n iconElement.innerHTML = createPhosphorIcon(name, size);\n \n return iconElement;\n}\n\n/**\n * Get all available icon names\n * @returns Array of icon names\n */\nexport function getAvailableIcons(): string[] {\n return Object.keys(ICON_PATHS);\n} ","// Entry point for React components\n\n// Export all components\nexport * from './components';\n\n// Export utilities and hooks\n\n// Import components and utilities for default export\nimport * as components from './components';\nimport * as utilities from './lib';\n\n// Create a default export combining all features\nconst AtomixReact: Record<string, unknown> = {\n ...components,\n ...utilities,\n};\n\nexport default AtomixReact;"],"names":["installedChunks","installChunk","DEFAULT_OPTIONS","activeIndex","vertical","Steps","selector","options","arguments","length","undefined","_classCallCheck","this","STEPS","SELECTORS","$element","document","querySelector","_objectSpread","$items","_initialize","key","value","_initializeElements","classList","contains","CLASSES","VERTICAL","add","setActive","querySelectorAll","ITEM","index","forEach","item","i","ACTIVE","COMPLETED","remove","_this$$items","initializeSteps","stepsInstances","stepsElements","element","instance","push","error","size","skeleton","Testimonial","TESTIMONIAL","SMALL","LARGE","initializeTestimonials","testimonialInstances","testimonialElements","center","breakout","reverse","showOverlay","River","init","contentWidth","style","setProperty","RIVER","ATTRIBUTES","CONTENT_WIDTH","backgroundImageSrc","setupBackgroundImage","$bg","BG","createElement","className","replace","$bgImage","src","alt","BG_IMAGE","appendChild","$overlay","OVERLAY","firstChild","insertBefore","initializeRivers","riverInstances","riverElements","alignment","SectionIntro","SECTION_INTRO","CENTER","bgElement","imgElement","overlayElement","removeChild","initializeSectionIntros","sectionIntroInstances","sectionIntroElements","THEME_COLORS","SIZES","CLASS_PREFIX","COMPONENT","UTILITY","LAYOUT","OBJECT","BUTTON","BASE_CLASS","ICON_CLASS","VARIANT_PREFIX","CALLOUT","CONTENT_CLASS","MESSAGE_CLASS","TITLE_CLASS","TEXT_CLASS","ACTIONS_CLASS","CLOSE_BTN_CLASS","ONELINE","TOAST","HIDE","ACCORDION","HEADER","PANEL","BODY","IS_OPEN","IS_ANIMATING","IS_DISABLED","ARIA_EXPANDED","ARIA_CONTROLS","ARIA_HIDDEN","ROLE","CSS_VARS","PANEL_HEIGHT","BADGE","SIZE_PREFIX","LIST","ITEM_CLASS","ORDERED","INLINE","LIST_GROUP","BREADCRUMB","LINK","BASE","DEFAULTS","DIVIDER","COUNTDOWN","TIME","TIME_COUNT","TIME_LABEL","SEPARATOR","FOCUSED","SHOW","HERO","CONTAINER","GRID","CONTENT","SUBTITLE","TITLE","TEXT","ACTIONS","IMAGE","IMAGE_WRAPPER","RIGHT","LEFT","FULL_VH","TOOLTIP","TRIGGER","ARROW","IS_ACTIVE","TOP","BOTTOM","TOP_LEFT","TOP_RIGHT","BOTTOM_LEFT","BOTTOM_RIGHT","POSITION","CONTENT_ID","OFFSET","DELAY","POPOVER","CONTENT_INNER","AUTO","TOGGLE","IS_ON","TAB","NAV_ITEMS","NAV_BTN","PANELS","PANEL_BODIES","ACTIVE_INDEX","LINE","NUMBER","QUOTE","AUTHOR","AUTHOR_AVATAR","AUTHOR_INFO","AUTHOR_NAME","AUTHOR_ROLE","SPINNER","PRIMARY","SECONDARY","SUCCESS","INFO","WARNING","DANGER","LIGHT","DARK","VISUALLY_HIDDEN","LABEL","ROW","CONTENT_COL","CONTENT_COL_TITLE","CONTENT_COL_TEXT","VISUAL","BREAKOUT","REVERSE","UPLOAD","INNER","ICON","HELPER_TEXT","LOADER","LOADER_STATUS","LOADER_TITLE","LOADER_PROGRESS","LOADER_PAR","LOADER_TIME","LOADER_CONTROL","LOADER_BAR","LOADER_CLOSE","DISABLED","ERROR","LOADING","DRAGGING","PERCENTAGE","NAVBAR","BRAND","COLLAPSE","TOGGLER","FIXED","FIXED_BOTTOM","EXPANDED","NAV","DROPDOWN","DROPDOWN_MENU","MEGA_MENU","END","RATING","STAR","STAR_FULL","STAR_HALF","FULL","HALF","READONLY","VALUE","EDGE_PANEL","BACKDROP","CLOSE","START","TRANSFORM_VALUES","start","end","top","bottom","ANIMATION_DURATION","DATA_TABLE_CLASSES","base","container","tableWrapper","header","headerCell","headerContent","sortable","sortIcon","row","cell","loadingCell","loadingIndicator","emptyCell","toolbar","search","searchInput","pagination","striped","bordered","dense","loading","open","DATA_TABLE_SELECTORS","TABLE","HEADER_CELL","CELL","PAGINATION","PAGINATION_BUTTON","SEARCH_INPUT","PAGINATION_DEFAULTS","currentPage","totalPages","siblingCount","showFirstLastButtons","showPrevNextButtons","TODO","ITEM_CONTENT","ITEM_TEXT","ITEM_ACTIONS","CHECKBOX","DELETE_BUTTON","FORM","INPUT","ADD_BUTTON","GROUP","HELPER","FIELD","REQUIRED","FORM_GROUP","INVALID","VALID","RADIO","CARD","FOOTER","FLAT","FLIPPED","CLICKABLE","HOVER","SELECT","SELECTED","SELECT_BODY","SELECT_PANEL","SELECT_ITEMS","SELECT_ITEM","ITEM_LABEL","ITEM_INPUT","OPTION","TOGGLE_ICON","ICON_CARET","TEXTAREA","AVATAR","INITIALS","XS","SM","MD","LG","XL","CIRCLE","AVATAR_GROUP","MORE","STACKED","MODAL","OPEN_BUTTON","CLOSE_BUTTONS","DIALOG","openELm","closeELms","modalDialogELm","backdropELm","backdrop","keyboard","MESSAGES","ITEMS","FILE","CONTENT_SELF","NAME","FILE_ICON","FILE_DETAILS","FILE_NAME","FILE_SIZE","INPUT_GROUP","OPTIONS","OPTION_ICON","SUBMIT","MENU","MENU_WRAPPER","MENU_INNER","MENU_ITEM","PLACEMENT","MIN_WIDTH","ANIMATION_TIMING","PROGRESS","BAR","ARIA_VALUEMIN","ARIA_VALUEMAX","ARIA_VALUENOW","ARIA_LABEL","DATEPICKER","CALENDAR","DAY","MONTH","YEAR","WEEKDAYS","TODAY_BUTTON","CLEAR_BUTTON","CLOSE_BUTTON","NAV_BUTTON","VIEW_SWITCH","IS_SELECTED","IS_TODAY","FORMAT","MIN_DATE","MAX_DATE","CLEARABLE","SHOW_TODAY","SHOW_WEEK_NUMBERS","SHOW_TODAY_BUTTON","PHOTOVIEWER","SELECTOR","CLASS","startIndex","zoomLevel","fullscreen","disabled","maxSizeInMB","acceptedFileTypes","multiple","Upload","$input","$button","$loader","$loaderTitle","$loaderProgress","$loaderClose","currentFile","dragCounter","_this$$element","_this$$element2","_this$$element3","_createHiddenInput","disable","_setupEventListeners","_this$options$accepte","input","type","display","accept","join","addEventListener","_handleButtonClick","bind","_handleFileSelect","_handleDragEnter","_handleDragLeave","_handleDragOver","_handleDrop","_handleClose","event","preventDefault","click","_this$$input","files","Array","from","_processFiles","_this$$element4","_this$$element5","_this$$element6","_event$dataTransfer","dataTransfer","setStatus","setFile","_this","validFiles","filter","file","_validateFile","onFileSelect","_simulateUpload","_this$options$accepte2","maxSizeInBytes","concat","some","endsWith","mainType","split","startsWith","_this2","progress","interval","setInterval","setProgress","Math","ceil","onFileUpload","clearInterval","onFileUploadComplete","textContent","name","percentage","timeLeft","toString","$par","$time","status","message","removeEventListener","parentNode","initializeUploads","uploadInstances","uploadElements","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","data","__webpack_ids__","__webpack_runtime__","j","installedChunkData","promise","import","then","race","resolve","require","useAccordion","initialProps","defaultProps","defaultOpen","iconPosition","isControlled","isOpen","_useState2","_slicedToArray","useState","internalOpen","setInternalOpen","_useState4","panelHeight","setPanelHeight","panelRef","useRef","contentRef","updatePanelHeight","current","height","clientHeight","useEffect","handleResize","window","state","toggle","onOpenChange","prev","generateClassNames","baseClassName","openClass","disabledClass","trim","generateHeaderClassNames","iconPositionClass","Accordion","_ref","title","children","_ref$defaultOpen","controlledOpen","_ref$disabled","_ref$iconPosition","icon","_ref$className","instanceId","useId","buttonId","panelId","_useAccordion","defaultIcon","_jsx","xmlns","width","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","points","_jsxs","id","onClick","ref","role","sizeMap","xs","sm","md","lg","xl","Icon","_ref$size","_ref$weight","weight","color","IconComponent","PhosphorIcons","pixelSize","Avatar","_ref$alt","initials","_ref$circle","circle","imageError","setImageError","avatarClasses","Boolean","tabIndex","onError","AvatarGroup","max","_ref$stacked","stacked","moreText","avatarGroupClasses","avatarChildren","Children","toArray","child","isValidElement","showMoreIndicator","visibleAvatars","slice","hiddenAvatarCount","firstAvatar","props","avatarSize","isCircle","moreClasses","map","cloneElement","useBadge","variant","generateBadgeClass","_props$variant","_props$size","_props$disabled","_props$className","sizeClass","variantClass","Badge","label","_ref$variant","badgeClass","Breadcrumb","items","divider","_ref$ariaLabel","ariaLabel","breadcrumbClasses","isLast","itemClasses","active","linkContent","_Fragment","href","useButton","rounded","generateButtonClass","_props$rounded","_props$iconOnly","iconOnly","iconOnlyClass","roundedClass","handleClick","handler","Button","forwardRef","_ref$iconOnly","_ref$rounded","_ref$as","as","Component","_objectWithoutProperties","_excluded","_useButton","buttonProps","displayName","useCallout","oneLine","toast","generateCalloutClass","_props$oneLine","_props$toast","oneLineClass","toastClass","handleClose","Callout","baseAttributes","onClose","actions","_ref$oneLine","_ref$toast","_useCallout","includes","image","_ref$imageAlt","imageAlt","text","footer","_ref$row","_ref$flat","flat","_ref$active","rest","cardClasses","substring","useCard","_options$elevationEff","elevationEffect","_options$elevationCla","elevationClass","_options$flipEffect","flipEffect","_options$flipTrigger","flipTrigger","_options$focusEffect","focusEffect","_options$clickable","clickable","cardRef","frontRef","backRef","isFlipped","setIsFlipped","isElevated","setIsElevated","_useState6","isFocused","setIsFocused","_useState8","isHovered","setIsHovered","useCallback","handleKeyDown","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","getCardProps","tabxwIndex","onMouseEnter","onMouseLeave","onFocus","onBlur","onKeyDown","_ref$elevationClass","cardProps","Card","Countdown","target","_ref$show","show","_ref$separator","separator","_ref$focused","focused","onComplete","targetDate","Date","now","setNow","completed","setCompleted","diff","getTime","_getTimeParts","totalSeconds","floor","days","hours","minutes","seconds","getTimeParts","timeParts","part","idx","React","String","padStart","useDataTable","_ref$data","_ref$columns","columns","_ref$sortable","_ref$paginated","paginated","_ref$pageSize","pageSize","onSort","initialSortConfig","sortConfig","setSortConfig","setCurrentPage","searchQuery","setSearchQuery","handleSort","direction","newSortConfig","handlePageChange","page","handleSearch","query","filteredData","useMemo","lowercaseQuery","toLowerCase","column","sortedData","_toConsumableArray","sort","b","aValue","bValue","localeCompare","paginatedData","displayData","useSpinner","generateSpinnerClass","_props$fullscreen","baseClass","fullscreenClass","Spinner","_ref$fullscreen","spinnerClass","DOTS","range","_","usePagination","_ref$siblingCount","onPageChange","paginationRange","leftSiblingIndex","rightSiblingIndex","min","shouldShowLeftDots","shouldShowRightDots","firstPageIndex","lastPageIndex","leftRange","rightRange","middleRange","goToPage","nextPage","prevPage","firstPage","lastPage","PaginationNavButton","iconName","Pagination","_ref2","_ref2$currentPage","_ref2$totalPages","_ref2$siblingCount","_ref2$showFirstLastBu","_ref2$showPrevNextBut","_ref2$size","_ref2$className","_ref2$ariaLabel","_usePagination","pageNumber","isActive","_ref$filterable","filterable","_ref$striped","_ref$bordered","_ref$dense","_ref$loading","_ref$emptyMessage","emptyMessage","onRowClick","tableRef","_useDataTable","tableClass","placeholder","onChange","colSpan","rowIndex","colIndex","render","getMonthName","month","date","setMonth","toLocaleString","getDaysInMonth","year","getDate","formatDate","format","day","getMonth","getFullYear","useDatePicker","_ref$selectionMode","selectionMode","startDate","endDate","onRangeChange","_ref$format","minDate","maxDate","_ref$inline","inline","setIsOpen","inputValue","setInputValue","rangeInputValue","setRangeInputValue","viewDate","setViewDate","_useState10","viewMode","setViewMode","_useState12","rangeSelectionState","setRangeSelectionState","datePickerRef","inputRef","today","currentMonth","currentYear","daysInMonth","firstDayOfMonth","getDay","handleDateSelect","selectedDate","handlePrevMonth","handleNextMonth","handlePrevYear","handleNextYear","switchToMonthView","switchToYearView","selectMonth","selectYear","handleTodayClick","todayDate","handleClear","handleInputChange","parsedDate","isNaN","parts","startPart","endPart","parsedStart","parsedStartDate","parsedEndDate","handleInputFocus","handleClickOutside","generateDays","prevMonthDays","isCurrentMonth","remainingDays","generateMonths","months","generateYears","years","startYear","isDateSelectable","isDateInRange","isDateSelected","isStartDate","isEndDate","isDateInSelectedRange","isToday","getWeekNumber","valueOf","dayNr","setDate","firstThursday","DatePicker","_ref$placeholder","_ref$readOnly","readOnly","_ref$clearable","clearable","_ref$showTodayButton","showTodayButton","_ref$showWeekNumbers","showWeekNumbers","_ref$placement","placement","_ref$inputClassName","inputClassName","_useDatePicker","rangeStartDate","useImperativeHandle","close","clear","focus","_inputRef$current","datepickerClassName","inputClasses","datepickerId","random","calendarId","displayValue","dateObj","isSelectable","isSelected","isTodayDate","dateValue","isInRange","isStartOfRange","isEndOfRange","weekNum","toLocaleDateString","monthObj","DropdownContext","createContext","trigger","DropdownItem","useContext","DropdownDivider","DropdownHeader","_ref3","_ref3$className","Dropdown","_ref4","menu","_ref4$placement","_ref4$trigger","_ref4$offset","offset","controlledIsOpen","_ref4$closeOnClickOut","closeOnClickOutside","_ref4$closeOnEscape","closeOnEscape","maxHeight","_ref4$minWidth","minWidth","_ref4$className","_excluded2","uncontrolledIsOpen","setUncontrolledIsOpen","dropdownRef","toggleRef","menuRef","dropdownId","nextIsOpen","setTimeout","_toggleRef$current","focusableItems","currentIndex","findIndex","activeElement","handleToggleClick","stopPropagation","handleToggleKeyDown","_menuRef$current","firstItem","handleHoverOpen","dropdownClasses","menuStyleProps","Provider","_options$minWidth","_defineProperty","menuWrapper","animating","setAttribute","timeoutRef","clearTimeout","_this$menuWrapper","matches","_this$trigger","menuInner","_setupMenuStructure","_setupAriaAttributes","_applyStyles","_bindEvents","existingMenu","getAttribute","minWidthStr","overflowY","_handleTriggerClick","_handleDocumentClick","_handleTriggerMouseEnter","_handleTriggerMouseLeave","_handleMenuMouseEnter","_handleMenuMouseLeave","_handleTriggerKeyDown","_handleEscapeKey","_handleMenuKeyDown","_handleAnimationEnd","requestAnimationFrame","_focusFirstMenuItem","dispatchEvent","CustomEvent","bubbles","detail","dropdown","assign","cls","_this2$menuWrapper","_dropdown","initializeDropdowns","dataset","dropdownPlacement","dropdownTrigger","dropdownOffset","Number","dropdownCloseOnClickOutside","dropdownCloseOnEscape","dropdownMinWidth","dropdownMaxHeight","createDropdown","el","Error","useEdgePanel","position","mode","closeOnBackdropClick","containerRef","backdropRef","adjustBodyPadding","paddingProperty","clientWidth","charAt","toUpperCase","body","resetBodyPadding","openPanel","offsetHeight","transform","closePanel","hideDelay","handleEscapeKey","handleBackdropClick","currentTarget","generateEdgePanelClass","_props$position","propIsOpen","positionClass","readyState","EdgePanel","_ref$position","_ref$mode","_ref$isOpen","_ref$backdrop","_ref$closeOnBackdropC","_ref$closeOnEscape","_useEdgePanel","isOpenState","panelClass","useForm","generateFormClass","handleSubmit","handleReset","Form","onSubmit","onReset","_ref$method","method","encType","_ref$noValidate","noValidate","_ref$autoComplete","autoComplete","_useForm","formClass","useFormGroup","invalid","valid","generateFormGroupClass","_props$invalid","_props$valid","validationClass","FormGroup","helperText","htmlFor","_ref$required","required","_ref$invalid","_ref$valid","formGroupClass","useInput","generateInputClass","textareaClass","Input","_ref$type","_ref$autoFocus","autoFocus","maxLength","minLength","pattern","step","ariaDescribedBy","inputClass","useSelect","generateSelectClass","Select","_ref$options","_ref$multiple","selectClass","selectedLabel","setSelectedLabel","bodyRef","nativeSelectRef","selectedOption","find","opt","option","handleItemClick","checked","CHECKBOX_CLASSES","MIXED","useCheckbox","indeterminate","checkboxRef","generateCheckboxClass","_props$indeterminate","indeterminateClass","Checkbox","_ref$checked","_ref$indeterminate","_useCheckbox","checkboxClass","useRadio","generateRadioClass","Radio","radioClass","useTextarea","generateTextareaClass","Textarea","_ref$rows","rows","cols","useHero","heroRef","videoRef","parallaxHandlerRef","imageColSize","contentColSize","fullViewportHeight","parallax","parallaxIntensity","hasBackgroundImage","hasForegroundImage","imageSrc","useGridLayout","applyParallaxEffect","intensity","safeIntensity","handleScroll","pageYOffset","removeParallaxEffect","heroElement","generateHeroClassNames","classes","videoBackground","generateImageColClass","generateContentColClass","Hero","subtitle","_ref$alignment","_ref$showOverlay","_ref$fullViewportHeig","_ref$imageColSize","_ref$contentColSize","_ref$parallax","_ref$parallaxIntensit","_ref$videoOptions","videoOptions","autoplay","loop","muted","_useHero","heroStyle","renderVideoBackground","posterUrl","autoPlay","playsInline","poster","pop","renderContent","renderForegroundImage","List","listClasses","ListElement","ListGroup","listGroupClasses","classNames","validLists","_variant","useMessages","onSendMessage","shiftKey","_ref$messages","messages","otherAvatar","selfAvatar","otherName","_ref$width","bodyHeight","_useMessages","messagesId","substr","inputId","isSelf","time","useNavbar","collapsible","isExpanded","setIsExpanded","generateNavbarClass","_props$collapsible","collapsibleClass","generateContainerStyle","maxWidth","generateCollapseClass","expanded","toggleExpanded","newState","onToggle","getExpandedState","controlled","useNav","generateNavClass","_props$alignment","_props$className2","alignmentClass","useNavItem","megaMenu","generateNavItemClass","_props$dropdown","_props$megaMenu","_props$active","_props$className3","dropdownClass","megaMenuClass","activeClass","generateNavLinkClass","useNavDropdown","isInFixedBottomNavbar","generateDropdownMenuClass","_props$alignment2","_props$megaMenu2","_props$className4","getIconClass","isFixedBottom","getIconName","Navbar","brand","containerWidth","_ref$collapsible","_useNavbar","navbarExpanded","setNavbarExpanded","collapseRef","innerWidth","navbarClass","containerStyle","collapseClass","Nav","navClass","NavItem","_ref$dropdown","_ref$megaMenu","ariaExpanded","_useNavItem","setIsActive","itemRef","handleOutsideClick","navItemClass","navLinkClass","childContent","NavDropdown","_useNavDropdown","dropdownMenuClass","titleWithIcon","menuContent","Menu","MenuItem","_ref2$href","_ref2$active","_ref2$disabled","itemClass","mapIconName","luxIconName","MenuDivider","MegaMenu","MegaMenuColumn","_ref2$width","columnClass","MegaMenuLink","_ref3$disabled","PhotoViewerHeader","imagesLength","onZoomOut","onResetZoom","onZoomIn","onToggleFullscreen","isFullscreen","onRotate","onDownload","onShare","showInfo","onToggleInfo","currentImage","navigator","PhotoViewerNavigation","onPrev","onNext","enableKeyboardNav","PhotoViewerImage","imageRef","dragPosition","isDragging","rotationAngle","_ref$isTransitioning","isTransitioning","onMouseDown","onMouseMove","onMouseUp","onWheel","onTouchStart","onTouchMove","onTouchEnd","onDoubleClick","internalContainerRef","effectiveContainerRef","isMounted","setIsMounted","handleWheelEvent","handleTouchStartEvent","handleTouchMoveEvent","handleTouchEndEvent","passive","cursor","opacity","touchAction","x","y","transition","transformOrigin","willChange","draggable","onContextMenu","PhotoViewerThumbnails","images","goToImage","thumbnailSrc","thumbnail","PhotoViewerInfo","description","author","tags","tag","_regeneratorRuntime","t","iterator","c","asyncIterator","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","s","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","PhotoViewer","_ref$startIndex","_ref$enableKeyboardNa","enableKeyboardNavigation","_ref$enableGestures","enableGestures","_ref$enableFullscreen","enableFullscreen","_ref$thumbnailPositio","thumbnailPosition","onImageChange","_usePhotoViewer","setCurrentIndex","isModalOpen","setIsModalOpen","setIsDragging","startDragPosition","setStartDragPosition","setIsFullscreen","setShowInfo","_useState14","imageStates","setImageStates","_useState16","setIsTransitioning","_useState18","_useState20","velocity","timestamp","setMomentumZoom","touchPointsRef","lastDistanceRef","lastMidpointRef","lastWheelTime","momentumTimeoutRef","calculateBounds","rotation","minX","maxX","minY","maxY","naturalWidth","imageWidth","imageHeight","naturalHeight","containerRect","getBoundingClientRect","displayWidth","displayHeight","containerHeight","rotationRad","PI","cos","abs","sin","aspectRatio","scaledWidth","scaledHeight","constrainPosition","bounds","updateImageBounds","currentState","newBounds","constrainedPosition","openModal","closeModal","goToPrevious","goToNext","setZoomLevel","zoom","newZoom","clampedZoom","setImagePosition","newPosition","setRotationAngle","normalizedRotation","handleWheel","_window$location","location","testRect","zoomAmount","isMac","test","platform","isTrackpadPinch","ctrlKey","hasHorizontalScroll","deltaX","isTrackpadScroll","isMagicMouse","isRegularMouse","shouldPreventDefault","deltaY","rect","currentTime","timeDelta","applyMomentum","newVelocity","momentumZoomAmount","centerX","centerY","cursorX","clientX","left","cursorY","clientY","oldZoom","zoomFactor","handleDoubleClick","handleMouseDown","handleMouseMove","handleMouseUp","handleTouchStart","touches","touch","dx","dy","sqrt","handleTouchMove","distance","zoomDelta","currentMidpoint","midpointX","midpointY","handleTouchEnd","imagePosition","resetImageState","usePhotoViewer","processedImages","img","handleShare","_callee","_context","share","url","t0","apply","_next","_throw","photoViewerClasses","handleFullscreenChange","fullscreenElement","z","exitFullscreen","documentElement","requestFullscreen","angle","link","download","usePopover","_ref$trigger","_ref$offset","_ref$delay","delay","_ref$closeOnClickOuts","setIsOpenState","currentPosition","setCurrentPosition","triggerRef","popoverRef","arrowRef","popoverId","newIsOpen","handleTriggerMouseEnter","handleTriggerMouseLeave","_popoverRef$current","handlePopoverMouseEnter","handlePopoverMouseLeave","updatePosition","triggerRect","popoverRect","viewportWidth","viewportHeight","innerHeight","isNearViewportEdge","right","spaceTop","spaceBottom","spaceLeft","spaceRight","bestPosition","spaces","space","absoluteTop","scrollY","absoluteLeft","scrollX","scrollTimeout","intervalId","PopoverContext","triggerType","Popover","content","_usePopover","createPortal","PopoverTrigger","triggerProp","_React$useContext","effectiveTrigger","only","triggerProps","useRating","_ref$value","_ref$maxValue","maxValue","_ref$allowHalf","allowHalf","internalValue","setInternalValue","hoverValue","setHoverValue","focusedIndex","setFocusedIndex","currentValue","starValue","newValue","setFocused","setRef","useForkRef","refA","refB","refValue","Rating","valueProp","defaultValue","_ref$useVanillaJS","useVanillaJS","restProps","internalRef","ratingInstance","_useRating","starRect","starCenterX","adjustedValue","RatingClass","destroy","updateOptions","ratingClasses","effectiveValue","stars","roundedValue","round","componentId","_loop","isFullStar","isHalfStar","starClass","starId","focusable","clipPath","renderStars","ProductReview","productName","productImage","_ref$initialRating","initialRating","_ref$maxRating","maxRating","_ref$ratingColor","ratingColor","rating","setRating","comment","setComment","submitted","setSubmitted","reviewRef","reviewInstance","ProductReviewClass","err","containerClasses","toFixed","Event","Progress","_useProgress","progressValue","progressStyle","progressClasses","useProgress","useRiver","generateRiverClassNames","generateContentClass","generateVisualClass","_ref$center","_ref$breakout","_ref$reverse","contentColumns","riverRef","riverInstance","_useRiver","RiverClass","riverStyle","renderBackground","renderImage","paragraph","_ref$skeleton","sectionIntroRef","sectionIntroInstance","SectionIntroClass","sectionIntroClasses","_ref$activeIndex","_ref$vertical","onStepChange","currentStep","setCurrentStep","stepsRef","stepsInstance","StepsClass","number","Tab","onTabChange","currentTab","setCurrentTab","tabRef","tabInstance","TabClass","handleTabClick","overflow","quote","testimonialRef","testimonialInstance","TestimonialClass","testimonialClasses","avatarSrc","avatarAlt","Toggle","_ref$initialOn","initialOn","onToggleOn","onToggleOff","isOn","setIsOn","toggleInstance","ToggleClass","handleToggleOn","handleToggleOff","turnOn","turnOff","contentIdAttr","positionAttr","triggerAttr","Tooltip","timeout","hideTimeout","$trigger","$content","elements","_setPosition","parentContainer","parentElement","customPosition","customTrigger","_handleTriggerEnter","_handleTriggerLeave","hide","showEvent","cancelable","tooltip","defaultPrevented","hideEvent","initializeTooltips","initializeAll","tooltipRef","tooltipInstance","TooltipClass","_ref$maxSizeInMB","_ref$acceptedFileType","_ref$title","_ref$supportedFilesTe","supportedFilesText","_ref$buttonText","buttonText","_ref$helperText","_ref$icon","onFileUploadError","uploadRef","uploadInstance","setCurrentFile","uploadProgress","setUploadProgress","setTimeLeft","errorMessage","setErrorMessage","successMessage","setSuccessMessage","UploadClass","handleFiles","validateFile","simulateUpload","uploadClasses","onDragEnter","onDragLeave","onDragOver","onDrop","_e$dataTransfer$files","_e$target$files","cx","cy","AtomixLogo","_ref$height","fontSize","fontWeight","useTodo","showCompleted","setItems","inputText","setInputText","addTodo","newItem","uuidv4","prevItems","toggleTodo","updatedItem","deleteTodo","initialLength","onAddTodo","generateTodoClasses","generateItemClasses","completedClass","getFilteredItems","useModal","isOpenProp","onOpen","updateOpen","useBreadcrumb","initialOptions","defaultOptions","generateBreadcrumbClass","_options$className","generateItemClass","isItemLink","parseItemsFromJson","jsonString","JSON","parse","hasClass","addClass","removeClass","toggleClass","force","ICON_PATHS","House","Package","Folder","Tag","CaretRight","CaretDown","User","Home","X","Calendar","CaretDoubleLeft","CaretDoubleRight","createPhosphorIcon","path","createIconElement","iconElement","alignItems","justifyContent","innerHTML","getAvailableIcons","components","utilities"],"sourceRoot":""}
|