@shohojdhara/atomix 0.1.25 → 0.1.26

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.
@@ -38,6 +38,10 @@ export interface BreadcrumbProps {
38
38
  * Aria label for the navigation
39
39
  */
40
40
  ariaLabel?: string;
41
+ /**
42
+ * Optional custom link component
43
+ */
44
+ LinkComponent?: React.ElementType;
41
45
  }
42
46
  export declare const Breadcrumb: React.FC<BreadcrumbProps>;
43
47
  export default Breadcrumb;
@@ -36,3 +36,4 @@ export interface ContainerProps extends HTMLAttributes<HTMLDivElement> {
36
36
  * ```
37
37
  */
38
38
  export declare const Container: React.ForwardRefExoticComponent<ContainerProps & React.RefAttributes<HTMLDivElement>>;
39
+ export default Container;
@@ -35,3 +35,4 @@ export interface GridProps extends HTMLAttributes<HTMLDivElement> {
35
35
  * ```
36
36
  */
37
37
  export declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
38
+ export default Grid;
@@ -62,3 +62,4 @@ export interface GridColProps extends HTMLAttributes<HTMLDivElement> {
62
62
  * Uses the CSS grid column classes defined in _objects.grid.scss.
63
63
  */
64
64
  export declare const GridCol: React.ForwardRefExoticComponent<GridColProps & React.RefAttributes<HTMLDivElement>>;
65
+ export default GridCol;
@@ -36,3 +36,4 @@ export interface RowProps extends HTMLAttributes<HTMLDivElement> {
36
36
  * ```
37
37
  */
38
38
  export declare const Row: React.ForwardRefExoticComponent<RowProps & React.RefAttributes<HTMLDivElement>>;
39
+ export default Row;
@@ -69,3 +69,4 @@ export interface MasonryGridProps extends HTMLAttributes<HTMLDivElement> {
69
69
  * ```
70
70
  */
71
71
  export declare const MasonryGrid: React.ForwardRefExoticComponent<MasonryGridProps & React.RefAttributes<HTMLDivElement>>;
72
+ export default MasonryGrid;
@@ -22,3 +22,4 @@ export interface MasonryGridItemProps extends HTMLAttributes<HTMLDivElement> {
22
22
  * ```
23
23
  */
24
24
  export declare const MasonryGridItem: React.ForwardRefExoticComponent<MasonryGridItemProps & React.RefAttributes<HTMLDivElement>>;
25
+ export default MasonryGridItem;
@@ -442,6 +442,10 @@ export interface NavItemProps extends BaseComponentProps {
442
442
  * Whether dropdown/mega menu is expanded
443
443
  */
444
444
  'aria-expanded'?: boolean;
445
+ /**
446
+ * Optional custom link component
447
+ */
448
+ LinkComponent?: React.ElementType;
445
449
  }
446
450
  /**
447
451
  * Nav dropdown properties
@@ -619,6 +623,10 @@ export interface SideMenuItemProps extends BaseComponentProps {
619
623
  * Link rel attribute
620
624
  */
621
625
  rel?: string;
626
+ /**
627
+ * Optional custom link component
628
+ */
629
+ LinkComponent?: React.ElementType;
622
630
  }
623
631
  /**
624
632
  * EdgePanel position options
@@ -1720,6 +1728,10 @@ export interface DropdownItemProps extends BaseComponentProps {
1720
1728
  * Item click handler
1721
1729
  */
1722
1730
  onClick?: (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
1731
+ /**
1732
+ * Optional custom link component
1733
+ */
1734
+ LinkComponent?: React.ElementType;
1723
1735
  }
1724
1736
  /**
1725
1737
  * Dropdown divider properties
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shohojdhara/atomix",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "Atomix Design System - A modern component library for web applications",
5
5
  "main": "dist/js/atomix.react.cjs.js",
6
6
  "module": "dist/js/atomix.react.esm.js",
@@ -18,6 +18,7 @@
18
18
  "types": "./dist/types/index.d.ts",
19
19
  "import": "./dist/js/atomix.react.esm.js",
20
20
  "require": "./dist/js/atomix.react.cjs.js",
21
+ "browser": "./dist/js/atomix.react.umd.js",
21
22
  "default": "./dist/js/atomix.react.esm.js"
22
23
  },
23
24
  "./package.json": "./package.json",
@@ -48,12 +48,18 @@ export interface BreadcrumbProps {
48
48
  * Aria label for the navigation
49
49
  */
50
50
  ariaLabel?: string;
51
+
52
+ /**
53
+ * Optional custom link component
54
+ */
55
+ LinkComponent?: React.ElementType;
51
56
  }
52
57
  export const Breadcrumb: React.FC<BreadcrumbProps> = ({
53
58
  items,
54
59
  divider,
55
60
  className = '',
56
61
  ariaLabel = 'Breadcrumb',
62
+ LinkComponent,
57
63
  }) => {
58
64
  const breadcrumbClasses = [BREADCRUMB.CLASSES.BASE, className].filter(Boolean).join(' ');
59
65
 
@@ -76,12 +82,20 @@ export const Breadcrumb: React.FC<BreadcrumbProps> = ({
76
82
  </>
77
83
  );
78
84
 
85
+ const linkProps = {
86
+ href: item.href,
87
+ className: BREADCRUMB.CLASSES.LINK,
88
+ onClick: item.onClick,
89
+ };
90
+
79
91
  return (
80
92
  <li key={index} className={itemClasses}>
81
93
  {item.href && !item.active ? (
82
- <a href={item.href} className={BREADCRUMB.CLASSES.LINK} onClick={item.onClick}>
83
- {linkContent}
84
- </a>
94
+ LinkComponent ? (
95
+ <LinkComponent {...linkProps}>{linkContent}</LinkComponent>
96
+ ) : (
97
+ <a {...linkProps}>{linkContent}</a>
98
+ )
85
99
  ) : (
86
100
  <span className={BREADCRUMB.CLASSES.LINK}>{linkContent}</span>
87
101
  )}
@@ -34,6 +34,7 @@ export const DropdownItem: React.FC<DropdownItemProps> = ({
34
34
  icon,
35
35
  onClick,
36
36
  className = '',
37
+ LinkComponent,
37
38
  ...props
38
39
  }) => {
39
40
  const { close } = useContext(DropdownContext);
@@ -61,20 +62,29 @@ export const DropdownItem: React.FC<DropdownItemProps> = ({
61
62
  .filter(Boolean)
62
63
  .join(' ');
63
64
 
65
+ const linkProps = {
66
+ href,
67
+ className: itemClasses,
68
+ onClick: handleClick,
69
+ role: 'menuitem',
70
+ tabIndex: 0,
71
+ ...props,
72
+ };
73
+
64
74
  if (href && !disabled) {
65
75
  return (
66
76
  <li>
67
- <a
68
- href={href}
69
- className={itemClasses}
70
- onClick={handleClick}
71
- role="menuitem"
72
- tabIndex={0}
73
- {...props}
74
- >
75
- {icon && <span className="c-dropdown__menu-item-icon">{icon}</span>}
76
- {children}
77
- </a>
77
+ {LinkComponent ? (
78
+ <LinkComponent {...linkProps}>
79
+ {icon && <span className="c-dropdown__menu-item-icon">{icon}</span>}
80
+ {children}
81
+ </LinkComponent>
82
+ ) : (
83
+ <a {...linkProps}>
84
+ {icon && <span className="c-dropdown__menu-item-icon">{icon}</span>}
85
+ {children}
86
+ </a>
87
+ )}
78
88
  </li>
79
89
  );
80
90
  }
@@ -42,6 +42,7 @@ export const NavItem = forwardRef<HTMLLIElement, NavItemProps>(
42
42
  className = '',
43
43
  disabled = false,
44
44
  'aria-expanded': ariaExpanded,
45
+ LinkComponent,
45
46
  },
46
47
  ref
47
48
  ) => {
@@ -132,19 +133,25 @@ export const NavItem = forwardRef<HTMLLIElement, NavItemProps>(
132
133
  // Use aria-expanded from props if provided, otherwise use local state
133
134
  const expanded = typeof ariaExpanded !== 'undefined' ? ariaExpanded : isActive;
134
135
 
136
+ const linkProps = {
137
+ ref: itemRef,
138
+ href: href || '#',
139
+ className: navLinkClass,
140
+ onClick: dropdown || megaMenu ? handleDropdownToggle : handleClick(onClick),
141
+ 'aria-disabled': disabled,
142
+ 'aria-expanded': dropdown || megaMenu ? expanded : undefined,
143
+ 'aria-current': (active && !dropdown && !megaMenu ? 'page' : undefined) as React.AriaAttributes['aria-current'],
144
+ };
145
+
135
146
  return (
136
147
  <li ref={ref} className={navItemClass} role="menuitem" aria-haspopup={dropdown || megaMenu}>
137
- <a
138
- ref={itemRef}
139
- href={href || '#'}
140
- className={navLinkClass}
141
- onClick={dropdown || megaMenu ? handleDropdownToggle : handleClick(onClick)}
142
- aria-disabled={disabled}
143
- aria-expanded={dropdown || megaMenu ? expanded : undefined}
144
- aria-current={active && !dropdown && !megaMenu ? 'page' : undefined}
145
- >
146
- {dropdown || megaMenu ? childContent[0] : children}
147
- </a>
148
+ {LinkComponent ? (
149
+ <LinkComponent {...linkProps}>
150
+ {dropdown || megaMenu ? childContent[0] : children}
151
+ </LinkComponent>
152
+ ) : (
153
+ <a {...linkProps}>{dropdown || megaMenu ? childContent[0] : children}</a>
154
+ )}
148
155
 
149
156
  {(dropdown || megaMenu) && childContent.length > 1 && childContent[1]}
150
157
  </li>
@@ -39,6 +39,7 @@ export const SideMenuItem = forwardRef<HTMLAnchorElement | HTMLButtonElement, Si
39
39
  className = '',
40
40
  target,
41
41
  rel,
42
+ LinkComponent,
42
43
  },
43
44
  ref
44
45
  ) => {
@@ -50,20 +51,27 @@ export const SideMenuItem = forwardRef<HTMLAnchorElement | HTMLButtonElement, Si
50
51
 
51
52
  const itemClass = generateSideMenuItemClass();
52
53
 
54
+ const linkProps = {
55
+ ref: ref as React.Ref<HTMLAnchorElement>,
56
+ href: disabled ? undefined : href,
57
+ className: itemClass,
58
+ onClick: handleClick(onClick),
59
+ 'aria-disabled': disabled,
60
+ 'aria-current': (active ? 'page' : undefined) as React.AriaAttributes['aria-current'],
61
+ target: target,
62
+ rel: rel,
63
+ tabIndex: disabled ? -1 : 0,
64
+ };
65
+
53
66
  // Render as link if href is provided
54
67
  if (href) {
55
- return (
56
- <a
57
- ref={ref as React.Ref<HTMLAnchorElement>}
58
- href={disabled ? undefined : href}
59
- className={itemClass}
60
- onClick={handleClick(onClick)}
61
- aria-disabled={disabled}
62
- aria-current={active ? 'page' : undefined}
63
- target={target}
64
- rel={rel}
65
- tabIndex={disabled ? -1 : 0}
66
- >
68
+ return LinkComponent ? (
69
+ <LinkComponent {...linkProps}>
70
+ {icon && <span className="c-side-menu__link-icon">{icon}</span>}
71
+ <span className="c-side-menu__link-text">{children}</span>
72
+ </LinkComponent>
73
+ ) : (
74
+ <a {...linkProps}>
67
75
  {icon && <span className="c-side-menu__link-icon">{icon}</span>}
68
76
  <span className="c-side-menu__link-text">{children}</span>
69
77
  </a>
@@ -1,153 +1,42 @@
1
- // Components Index - Explicit exports for better tree-shaking and compatibility
2
-
3
- // Import components directly to ensure they exist before exporting
4
- import { Accordion } from './Accordion/Accordion';
5
- import { Avatar } from './Avatar/Avatar';
6
- import { AvatarGroup } from './Avatar/AvatarGroup';
7
- import { Badge } from './Badge/Badge';
8
- import { Breadcrumb } from './Breadcrumb/Breadcrumb';
9
- import { Button } from './Button/Button';
10
- import { Callout } from './Callout/Callout';
11
- import { Card } from './Card/Card';
12
- import { Checkbox } from './Form/Checkbox';
13
- import { ColorModeToggle } from './ColorModeToggle/ColorModeToggle';
14
- import { Container } from '../layouts/Grid/Container';
15
- import { Countdown } from './Countdown/Countdown';
16
- import { DataTable } from './DataTable/DataTable';
17
- import { DatePicker } from './DatePicker/DatePicker';
18
- import { Dropdown } from './Dropdown/Dropdown';
19
- import { EdgePanel } from './EdgePanel/EdgePanel';
20
- import { Form } from './Form/Form';
21
- import { Grid } from '../layouts/Grid/Grid';
22
- import { GridCol } from '../layouts/Grid/GridCol';
23
- import { Hero } from './Hero/Hero';
24
- import { Icon } from './Icon/Icon';
25
- import { Input } from './Form/Input';
26
- import { List } from './List/List';
27
- import { MasonryGrid } from '../layouts/MasonryGrid/MasonryGrid';
28
- import { MasonryGridItem } from '../layouts/MasonryGrid/MasonryGridItem';
29
- import { Messages } from './Messages/Messages';
30
- import { Modal } from './Modal/Modal';
31
- import { Navbar } from './Navigation/Navbar/Navbar';
32
- import { Pagination } from './Pagination/Pagination';
33
- import { PhotoViewer } from './PhotoViewer/PhotoViewer';
34
- import { Popover } from './Popover/Popover';
35
- import { ProductReview } from './ProductReview/ProductReview';
36
- import { Progress } from './Progress/Progress';
37
- import { Radio } from './Form/Radio';
38
- import { Rating } from './Rating/Rating';
39
- import { River } from './River/River';
40
- import { Row } from '../layouts/Grid/Row';
41
- import { SectionIntro } from './SectionIntro/SectionIntro';
42
- import { Select } from './Form/Select';
43
- import { Spinner } from './Spinner/Spinner';
44
- import { Steps } from './Steps/Steps';
45
- import { Tab } from './Tab/Tab';
46
- import { Testimonial } from './Testimonial/Testimonial';
47
- import { Textarea } from './Form/Textarea';
48
- import { Todo } from './Todo/Todo';
49
- import { Toggle } from './Toggle/Toggle';
50
- import { Tooltip } from './Tooltip/Tooltip';
51
- import { Upload } from './Upload/Upload';
52
-
53
- // Export types
54
- export type { AccordionProps } from './Accordion/Accordion';
55
- export type { AvatarProps } from './Avatar/Avatar';
56
- export type { AvatarGroupProps } from './Avatar/AvatarGroup';
57
- export type { BadgeProps } from './Badge/Badge';
58
- export type { BreadcrumbProps } from './Breadcrumb/Breadcrumb';
59
- export type { ButtonProps } from './Button/Button';
60
- export type { CalloutProps } from './Callout/Callout';
61
- export type { CardProps } from './Card/Card';
62
- export type { CheckboxProps } from './Form/Checkbox';
63
- export type { ColorModeToggleProps } from './ColorModeToggle/ColorModeToggle';
64
- export type { ContainerProps } from '../layouts/Grid/Container';
65
- export type { CountdownProps } from './Countdown/Countdown';
66
- export type { DataTableProps } from './DataTable/DataTable';
67
- export type { DatePickerProps } from './DatePicker/DatePicker';
68
- export type { DropdownProps } from './Dropdown/Dropdown';
69
- export type { EdgePanelProps } from './EdgePanel/EdgePanel';
70
- export type { FormProps } from './Form/Form';
71
- export type { GridProps } from '../layouts/Grid/Grid';
72
- export type { GridColProps } from '../layouts/Grid/GridCol';
73
- export type { HeroProps } from './Hero/Hero';
74
- export type { IconProps } from './Icon/Icon';
75
- export type { InputProps } from './Form/Input';
76
- export type { ListProps } from './List/List';
77
- export type { MasonryGridProps } from '../layouts/MasonryGrid/MasonryGrid';
78
- export type { MasonryGridItemProps } from '../layouts/MasonryGrid/MasonryGridItem';
79
- export type { MessagesProps } from './Messages/Messages';
80
- export type { ModalProps } from './Modal/Modal';
81
- export type { NavbarProps } from './Navigation/Navbar/Navbar';
82
- export type { PaginationProps } from './Pagination/Pagination';
83
- export type { PhotoViewerProps } from './PhotoViewer/PhotoViewer';
84
- export type { PopoverProps } from './Popover/Popover';
85
- export type { ProductReviewProps } from './ProductReview/ProductReview';
86
- export type { ProgressProps } from './Progress/Progress';
87
- export type { RadioProps } from './Form/Radio';
88
- export type { RatingProps } from './Rating/Rating';
89
- export type { RiverProps } from './River/River';
90
- export type { RowProps } from '../layouts/Grid/Row';
91
- export type { SectionIntroProps } from './SectionIntro/SectionIntro';
92
- export type { SelectProps } from './Form/Select';
93
- export type { SpinnerProps } from './Spinner/Spinner';
94
- export type { StepsProps } from './Steps/Steps';
95
- export type { TabProps } from './Tab/Tab';
96
- export type { TestimonialProps } from './Testimonial/Testimonial';
97
- export type { TextareaProps } from './Form/Textarea';
98
- export type { TodoProps } from './Todo/Todo';
99
- export type { ToggleProps } from './Toggle/Toggle';
100
- export type { TooltipProps } from './Tooltip/Tooltip';
101
- export type { UploadProps } from './Upload/Upload';
102
-
103
- // Export components
104
- export {
105
- Accordion,
106
- Avatar,
107
- AvatarGroup,
108
- Badge,
109
- Breadcrumb,
110
- Button,
111
- Callout,
112
- Card,
113
- Checkbox,
114
- ColorModeToggle,
115
- Container,
116
- Countdown,
117
- DataTable,
118
- DatePicker,
119
- Dropdown,
120
- EdgePanel,
121
- Form,
122
- Grid,
123
- GridCol,
124
- Hero,
125
- Icon,
126
- Input,
127
- List,
128
- MasonryGrid,
129
- MasonryGridItem,
130
- Messages,
131
- Modal,
132
- Navbar,
133
- Pagination,
134
- PhotoViewer,
135
- Popover,
136
- ProductReview,
137
- Progress,
138
- Radio,
139
- Rating,
140
- River,
141
- Row,
142
- SectionIntro,
143
- Select,
144
- Spinner,
145
- Steps,
146
- Tab,
147
- Testimonial,
148
- Textarea,
149
- Todo,
150
- Toggle,
151
- Tooltip,
152
- Upload
153
- };
1
+ export { default as Accordion, type AccordionProps } from './Accordion/Accordion';
2
+ export { default as Avatar, type AvatarProps } from './Avatar/Avatar';
3
+ export { default as AvatarGroup, type AvatarGroupProps } from './Avatar/AvatarGroup';
4
+ export { default as Badge, type BadgeProps } from './Badge/Badge';
5
+ export { default as Breadcrumb, type BreadcrumbProps } from './Breadcrumb/Breadcrumb';
6
+ export { default as Button, type ButtonProps } from './Button/Button';
7
+ export { default as Callout, type CalloutProps } from './Callout/Callout';
8
+ export { default as Card, type CardProps } from './Card/Card';
9
+ export { default as Checkbox, type CheckboxProps } from './Form/Checkbox';
10
+ export { default as ColorModeToggle, type ColorModeToggleProps } from './ColorModeToggle/ColorModeToggle';
11
+ export { default as Countdown, type CountdownProps } from './Countdown/Countdown';
12
+ export { default as DataTable, type DataTableProps } from './DataTable/DataTable';
13
+ export { default as DatePicker, type DatePickerProps } from './DatePicker/DatePicker';
14
+ export { default as Dropdown, type DropdownProps } from './Dropdown/Dropdown';
15
+ export { default as EdgePanel, type EdgePanelProps } from './EdgePanel/EdgePanel';
16
+ export { default as Form, type FormProps } from './Form/Form';
17
+ export { default as Hero, type HeroProps } from './Hero/Hero';
18
+ export { default as Icon, type IconProps } from './Icon/Icon';
19
+ export { default as Input, type InputProps } from './Form/Input';
20
+ export { default as List, type ListProps } from './List/List';
21
+ export { default as Messages, type MessagesProps } from './Messages/Messages';
22
+ export { default as Modal, type ModalProps } from './Modal/Modal';
23
+ export { default as Navbar, type NavbarProps } from './Navigation/Navbar/Navbar';
24
+ export { default as Pagination, type PaginationProps } from './Pagination/Pagination';
25
+ export { default as PhotoViewer, type PhotoViewerProps } from './PhotoViewer/PhotoViewer';
26
+ export { default as Popover, type PopoverProps } from './Popover/Popover';
27
+ export { default as ProductReview, type ProductReviewProps } from './ProductReview/ProductReview';
28
+ export { default as Progress, type ProgressProps } from './Progress/Progress';
29
+ export { default as Radio, type RadioProps } from './Form/Radio';
30
+ export { default as Rating, type RatingProps } from './Rating/Rating';
31
+ export { default as River, type RiverProps } from './River/River';
32
+ export { default as SectionIntro, type SectionIntroProps } from './SectionIntro/SectionIntro';
33
+ export { default as Select, type SelectProps } from './Form/Select';
34
+ export { default as Spinner, type SpinnerProps } from './Spinner/Spinner';
35
+ export { default as Steps, type StepsProps } from './Steps/Steps';
36
+ export { default as Tab, type TabProps } from './Tab/Tab';
37
+ export { default as Testimonial, type TestimonialProps } from './Testimonial/Testimonial';
38
+ export { default as Textarea, type TextareaProps } from './Form/Textarea';
39
+ export { default as Todo, type TodoProps } from './Todo/Todo';
40
+ export { default as Toggle, type ToggleProps } from './Toggle/Toggle';
41
+ export { default as Tooltip, type TooltipProps } from './Tooltip/Tooltip';
42
+ export { default as Upload, type UploadProps } from './Upload/Upload';
@@ -54,3 +54,5 @@ export const Container = forwardRef<HTMLDivElement, ContainerProps>(
54
54
  );
55
55
 
56
56
  Container.displayName = 'Container';
57
+
58
+ export default Container;
@@ -65,3 +65,4 @@ export const Grid = forwardRef<HTMLDivElement, GridProps>(
65
65
  );
66
66
 
67
67
  Grid.displayName = 'Grid';
68
+ export default Grid;
@@ -158,3 +158,4 @@ export const GridCol = forwardRef<HTMLDivElement, GridColProps>(
158
158
  );
159
159
 
160
160
  GridCol.displayName = 'GridCol';
161
+ export default GridCol;
@@ -66,3 +66,5 @@ export const Row = forwardRef<HTMLDivElement, RowProps>(
66
66
  );
67
67
 
68
68
  Row.displayName = 'Row';
69
+
70
+ export default Row;
@@ -403,4 +403,6 @@ export const MasonryGrid = forwardRef<HTMLDivElement, MasonryGridProps>(
403
403
 
404
404
  MasonryGrid.displayName = 'MasonryGrid';
405
405
 
406
+ export default MasonryGrid;
407
+
406
408
  // Ensure loadingImages state resets when items/columns/imagesLoaded change
@@ -40,3 +40,5 @@ export const MasonryGridItem = forwardRef<HTMLDivElement, MasonryGridItemProps>(
40
40
  );
41
41
 
42
42
  MasonryGridItem.displayName = 'MasonryGridItem';
43
+
44
+ export default MasonryGridItem;
@@ -1,8 +1,3 @@
1
- // Export all layout components individually for better tree-shaking
2
- export * from './Grid';
3
- export * from './MasonryGrid';
4
-
5
- // Also provide a default export for convenience
6
1
  import * as Grid from './Grid';
7
2
  import * as MasonryGrid from './MasonryGrid';
8
3
 
@@ -11,4 +6,4 @@ const layouts = {
11
6
  ...MasonryGrid,
12
7
  };
13
8
 
14
- export default layouts;
9
+ export default layouts;
@@ -553,6 +553,11 @@ export interface NavItemProps extends BaseComponentProps {
553
553
  * Whether dropdown/mega menu is expanded
554
554
  */
555
555
  'aria-expanded'?: boolean;
556
+
557
+ /**
558
+ * Optional custom link component
559
+ */
560
+ LinkComponent?: React.ElementType;
556
561
  }
557
562
 
558
563
  /**
@@ -763,6 +768,11 @@ export interface SideMenuItemProps extends BaseComponentProps {
763
768
  * Link rel attribute
764
769
  */
765
770
  rel?: string;
771
+
772
+ /**
773
+ * Optional custom link component
774
+ */
775
+ LinkComponent?: React.ElementType;
766
776
  }
767
777
 
768
778
  /**
@@ -2113,6 +2123,11 @@ export interface DropdownItemProps extends BaseComponentProps {
2113
2123
  * Item click handler
2114
2124
  */
2115
2125
  onClick?: (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
2126
+
2127
+ /**
2128
+ * Optional custom link component
2129
+ */
2130
+ LinkComponent?: React.ElementType;
2116
2131
  }
2117
2132
 
2118
2133
  /**