@instincthub/react-ui 0.0.5 → 0.0.6

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.
Files changed (122) hide show
  1. package/README.md +4 -3
  2. package/dist/src/assets/css/bootstrap/display.css +21 -0
  3. package/dist/src/assets/css/bootstrap/readme/display.md +20 -0
  4. package/dist/src/assets/css/forms/input-fields.css +3 -2
  5. package/dist/src/assets/css/main.css +3 -3
  6. package/dist/src/assets/css/modals/modal-updates.css +6 -3
  7. package/dist/src/assets/css/modals/modal.css +1 -1
  8. package/dist/src/assets/css/navbar/sidenav.css +8 -0
  9. package/dist/src/assets/css/ui/content-viewer.css +1 -0
  10. package/dist/src/assets/css/ui/create-button.css +140 -0
  11. package/dist/src/assets/css/ui/pagination.css +359 -0
  12. package/dist/src/assets/css/ui/ui-index.css +2 -0
  13. package/dist/src/components/auth/LoginForm.js +1 -1
  14. package/dist/src/components/auth/ReactClientProviders.js +1 -1
  15. package/dist/src/components/forms/CheckBoxes.js +2 -0
  16. package/dist/src/components/forms/CheckBoxes.js.map +1 -0
  17. package/dist/src/components/forms/ChipsInput.js +1 -1
  18. package/dist/src/components/forms/FileField.js +2 -0
  19. package/dist/src/components/forms/FileField.js.map +1 -0
  20. package/dist/src/components/forms/FilterArray.js +1 -1
  21. package/dist/src/components/forms/FilterObjects.js +1 -1
  22. package/dist/src/components/forms/SearchField.js +1 -1
  23. package/dist/src/components/forms/SearchObjectsFromDB.js +1 -1
  24. package/dist/src/components/forms/TextArea.js +1 -1
  25. package/dist/src/components/forms/TextArea.js.map +1 -1
  26. package/dist/src/components/lib/auth/actions.js +1 -1
  27. package/dist/src/components/lib/auth/dbRequestst.js +1 -1
  28. package/dist/src/components/lib/auth/dbRequestst.js.map +1 -1
  29. package/dist/src/components/lib/convertArrayToObject.js +2 -0
  30. package/dist/src/components/lib/convertArrayToObject.js.map +1 -0
  31. package/dist/src/components/lib/createSubscription.js +2 -0
  32. package/dist/src/components/lib/createSubscription.js.map +1 -0
  33. package/dist/src/components/lib/elementIsVisibleInViewport.js +2 -0
  34. package/dist/src/components/lib/elementIsVisibleInViewport.js.map +1 -0
  35. package/dist/src/components/lib/fileToBase64.js +2 -0
  36. package/dist/src/components/lib/fileToBase64.js.map +1 -0
  37. package/dist/src/components/lib/formError.js +2 -0
  38. package/dist/src/components/lib/formError.js.map +1 -0
  39. package/dist/src/components/lib/getPriceObjects.js +2 -0
  40. package/dist/src/components/lib/getPriceObjects.js.map +1 -0
  41. package/dist/src/components/lib/helpFunction.js +1 -1
  42. package/dist/src/components/lib/helpFunction.js.map +1 -1
  43. package/dist/src/components/lib/index.js +1 -1
  44. package/dist/src/components/lib/index.js.map +1 -1
  45. package/dist/src/components/lib/modals/modals.js +1 -1
  46. package/dist/src/components/lib/modals/modals.js.map +1 -1
  47. package/dist/src/components/lib/paystack.js.map +1 -1
  48. package/dist/src/components/lib/permissions.js +1 -1
  49. package/dist/src/components/lib/permissions.js.map +1 -1
  50. package/dist/src/components/lib/redux/index.js +1 -1
  51. package/dist/src/components/lib/redux/rootReducer.js +1 -1
  52. package/dist/src/components/lib/redux/rootReducer.js.map +1 -1
  53. package/dist/src/components/lib/redux/slices/authSlice/selectors.js +2 -0
  54. package/dist/src/components/lib/redux/slices/authSlice/selectors.js.map +1 -0
  55. package/dist/src/components/lib/redux/slices/generics/arraySlice.js +2 -0
  56. package/dist/src/components/lib/redux/slices/generics/arraySlice.js.map +1 -0
  57. package/dist/src/components/lib/redux/slices/generics/objectSlice.js +2 -0
  58. package/dist/src/components/lib/redux/slices/generics/objectSlice.js.map +1 -0
  59. package/dist/src/components/lib/redux/slices/generics/selectors.js +2 -0
  60. package/dist/src/components/lib/redux/slices/generics/selectors.js.map +1 -0
  61. package/dist/src/components/navbar/ChannelListAvatar.js +1 -1
  62. package/dist/src/components/navbar/SideNavbar.js +1 -1
  63. package/dist/src/components/status/DeleteConfirmationModal.js +1 -1
  64. package/dist/src/components/status/ModalExamples.js +1 -1
  65. package/dist/src/components/status/MultiPurposeModal.js +1 -1
  66. package/dist/src/components/status/ReactTimeTracker.js +1 -1
  67. package/dist/src/components/ui/ComponentLists.js +2 -0
  68. package/dist/src/components/ui/ComponentLists.js.map +1 -0
  69. package/dist/src/components/ui/create-button/CreateButton.js +2 -0
  70. package/dist/src/components/ui/create-button/CreateButton.js.map +1 -0
  71. package/dist/src/components/ui/create-button/CreateButtonExample.js +2 -0
  72. package/dist/src/components/ui/create-button/CreateButtonExample.js.map +1 -0
  73. package/dist/src/components/ui/editor/CustomTextEditor.js +1 -1
  74. package/dist/src/components/ui/pagination/Pagination.js +2 -0
  75. package/dist/src/components/ui/pagination/Pagination.js.map +1 -0
  76. package/dist/src/components/ui/pagination/PaginationDemo.js +2 -0
  77. package/dist/src/components/ui/pagination/PaginationDemo.js.map +1 -0
  78. package/dist/src/components/ui/tables/IHubTableServer.js +1 -1
  79. package/dist/src/index.js +1 -1
  80. package/dist/src/types/components/auth/LoginForm.d.ts +3 -1
  81. package/dist/src/types/components/auth/index.d.ts +5 -0
  82. package/dist/src/types/components/forms/CheckBoxes.d.ts +33 -6
  83. package/dist/src/types/components/forms/CheckboxesField.d.ts +24 -1
  84. package/dist/src/types/components/forms/FileField.d.ts +8 -4
  85. package/dist/src/types/components/forms/FilterArray.d.ts +12 -2
  86. package/dist/src/types/components/forms/FilterObjects.d.ts +11 -3
  87. package/dist/src/types/components/forms/SearchField.d.ts +16 -0
  88. package/dist/src/types/components/forms/TextArea.d.ts +12 -0
  89. package/dist/src/types/components/forms/index.d.ts +49 -0
  90. package/dist/src/types/components/lib/auth/dbRequestst.d.ts +2 -0
  91. package/dist/src/types/components/lib/convertArrayToObject.d.ts +30 -0
  92. package/dist/src/types/components/lib/helpFunction.d.ts +4 -0
  93. package/dist/src/types/components/lib/index.d.ts +6 -6
  94. package/dist/src/types/components/lib/modals/modals.d.ts +2 -1
  95. package/dist/src/types/components/lib/permissions.d.ts +12 -1
  96. package/dist/src/types/components/lib/redux/rootReducer.d.ts +2 -0
  97. package/dist/src/types/components/lib/redux/slices/generics/arraySlice.d.ts +20 -0
  98. package/dist/src/types/components/lib/redux/slices/generics/index.d.ts +2 -0
  99. package/dist/src/types/components/lib/redux/slices/generics/objectSlice.d.ts +12 -0
  100. package/dist/src/types/components/lib/redux/slices/generics/selectors.d.ts +3 -0
  101. package/dist/src/types/components/lib/redux/slices/index.d.ts +2 -0
  102. package/dist/src/types/components/lib/redux/slices/selectors.d.ts +5 -0
  103. package/dist/src/types/components/lib/redux/store.d.ts +6 -0
  104. package/dist/src/types/components/navbar/index.d.ts +5 -0
  105. package/dist/src/types/components/status/MultiPurposeModal.d.ts +27 -10
  106. package/dist/src/types/components/status/index.d.ts +11 -0
  107. package/dist/src/types/components/tabs/index.d.ts +3 -0
  108. package/dist/src/types/components/theme/index.d.ts +6 -0
  109. package/dist/src/types/components/ui/create-button/CreateButton.d.ts +54 -0
  110. package/dist/src/types/components/ui/create-button/CreateButtonExample.d.ts +3 -0
  111. package/dist/src/types/components/ui/editor/CustomTextEditor.d.ts +7 -3
  112. package/dist/src/types/components/ui/index.d.ts +16 -0
  113. package/dist/src/types/components/ui/pagination/Pagination.d.ts +8 -0
  114. package/dist/src/types/components/ui/pagination/PaginationDemo.d.ts +3 -0
  115. package/dist/src/types/index.d.ts +9 -3
  116. package/dist/src/types/types/index.d.ts +37 -5
  117. package/dist/src/types/types/navbar.d.ts +1 -0
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +10 -2
  120. package/dist/src/components/ComponentLists.js +0 -2
  121. package/dist/src/components/ComponentLists.js.map +0 -1
  122. /package/dist/src/types/components/{ComponentLists.d.ts → ui/ComponentLists.d.ts} +0 -0
@@ -14,6 +14,17 @@ interface MultiPurposeModalProps {
14
14
  disableScroll?: boolean;
15
15
  handleSubmit?: (e: React.FormEvent<HTMLFormElement>) => void;
16
16
  removeForm?: boolean;
17
+ /**
18
+ * Controls whether the modal should force re-render when children change
19
+ * @default true
20
+ * Set to false when using forms or components that manage their own state
21
+ */
22
+ enableContentRefresh?: boolean;
23
+ /**
24
+ * Preserves scroll position when content refreshes (only works when enableContentRefresh is true)
25
+ * @default true
26
+ */
27
+ preserveScrollPosition?: boolean;
17
28
  }
18
29
  /**
19
30
  * A multipurpose modal component for InstinctHub applications
@@ -21,20 +32,24 @@ interface MultiPurposeModalProps {
21
32
  * @component
22
33
  * @example
23
34
  * ```tsx
35
+ * // For forms - disable content refresh to prevent scroll jumping
24
36
  * <MultiPurposeModal
25
37
  * isOpen={isOpen}
26
38
  * onClose={onClose}
27
- * title="Some Title"
28
- * size="medium"
29
- * showFooter={true}
30
- * footerContent={<div>Some Footer Content</div>}
31
- * showCloseButton={true}
32
- * closeOnOverlayClick={true}
33
- * className="ihub-modal-class"
34
- * disableScroll={true}
35
- * handleSubmit={handleSubmit}
39
+ * title="User Form"
40
+ * enableContentRefresh={false}
36
41
  * >
37
- * <div>Some Content</div>
42
+ * <UserForm />
43
+ * </MultiPurposeModal>
44
+ *
45
+ * // For dynamic content - enable content refresh (default behavior)
46
+ * <MultiPurposeModal
47
+ * isOpen={isOpen}
48
+ * onClose={onClose}
49
+ * title="Dynamic Content"
50
+ * enableContentRefresh={true}
51
+ * >
52
+ * {dynamicContent}
38
53
  * </MultiPurposeModal>
39
54
  * ```
40
55
  *
@@ -52,6 +67,8 @@ interface MultiPurposeModalProps {
52
67
  * @param disableScroll Whether to disable body scrolling when modal is open
53
68
  * @param handleSubmit Function to call when the modal is submitted
54
69
  * @param removeForm Whether to remove the default form element
70
+ * @param enableContentRefresh Whether to force re-render when children change (default: true)
71
+ * @param preserveScrollPosition Whether to maintain scroll position during refreshes (default: true)
55
72
  */
56
73
  declare const MultiPurposeModal: React.FC<MultiPurposeModalProps>;
57
74
  export default MultiPurposeModal;
@@ -0,0 +1,11 @@
1
+ export { default as TimeTracker } from "./ReactTimeTracker";
2
+ export { default as SessionHandleProvider } from "./SessionHandleProvider";
3
+ export { default as Error500 } from "./Error500";
4
+ export { default as ErrorState } from "./ErrorState";
5
+ export { default as ReactTimeTracker } from "./ReactTimeTracker";
6
+ export { default as DeleteConfirmationModal } from "./DeleteConfirmationModal";
7
+ export { default as CopyToClipboard } from "./CopyToClipBoard";
8
+ export { default as MultiPurposeModal } from "./MultiPurposeModal";
9
+ export { default as ModalExamples } from "./ModalExamples";
10
+ export { default as NotFound } from "./NotFound";
11
+ export { default as Unauthorized } from "./Unauthorized";
@@ -0,0 +1,3 @@
1
+ export { default as Tabs } from "./Tabs";
2
+ export { default as VerticalTabs } from "./VerticalTabs";
3
+ export { default as TabContent } from "./TabContent";
@@ -0,0 +1,6 @@
1
+ export { default as ChangeStyleVariable } from "./ChangeStyleVariable";
2
+ export { default as DarkModeProvider } from "./DarkModeProvider";
3
+ export { default as LoadingAnimate } from "./LoadingAnimate";
4
+ export { default as SessionProviders } from "./SessionProviders";
5
+ export { default as SessionExpiresLogout } from "./signout/SessionExpiresLogout";
6
+ export { default as SignOutSession } from "./signout/SignOutSession";
@@ -0,0 +1,54 @@
1
+ import React from "react";
2
+ interface CreateButtonProps {
3
+ /** Text to display on the button */
4
+ label?: string;
5
+ /** Search parameter key-value to add to URL */
6
+ searchParam?: {
7
+ key: string;
8
+ value: string;
9
+ };
10
+ /** Fallback function when no searchParam is provided */
11
+ onClick?: () => void;
12
+ /** Button variant style */
13
+ variant?: "primary" | "outlined" | "important" | "danger";
14
+ /** Whether the button is disabled */
15
+ disabled?: boolean;
16
+ /** Additional CSS classes */
17
+ className?: string;
18
+ /** Button size */
19
+ size?: "small" | "medium" | "large";
20
+ /** Show loading state */
21
+ loading?: boolean;
22
+ /** Icon to display before text */
23
+ icon?: React.ReactNode;
24
+ /** Whether to show animation effects */
25
+ animated?: boolean;
26
+ /** Additional HTML button attributes */
27
+ buttonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
28
+ }
29
+ /**
30
+ * Modern create button component with URL search parameter support
31
+ * @example
32
+ * ```tsx
33
+ * <CreateButton
34
+ * label="Create Course"
35
+ * searchParam={{ key: "create", value: "course" }}
36
+ * variant="important"
37
+ * animated={true}
38
+ * />
39
+ * @param props - Component props
40
+ * @param props.label - Button text
41
+ * @param props.searchParam - Search parameter to add to URL
42
+ * @param props.onClick - Callback function for click events
43
+ * @param props.variant - Button variant style
44
+ * @param props.disabled - Disable the button
45
+ * @param props.className - Additional CSS class name
46
+ * @param props.size - Button size
47
+ * @param props.loading - Loading state
48
+ * @param props.icon - Icon to display before text
49
+ * @param props.animated - Animated button spinner
50
+ * @param props.buttonProps - Additional button props
51
+ * @returns JSX.Element
52
+ */
53
+ declare const CreateButton: React.FC<CreateButtonProps>;
54
+ export default CreateButton;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const CreateButtonExample: React.FC;
3
+ export default CreateButtonExample;
@@ -2,14 +2,15 @@ interface TextEditorProps {
2
2
  label?: string;
3
3
  name?: string;
4
4
  note?: string;
5
- onChange: (html: string) => void;
5
+ onChange?: (html: string) => void;
6
6
  setIsEditing?: (html: boolean) => void;
7
7
  isEditing?: boolean;
8
- content: string;
8
+ content?: string;
9
9
  charLimit?: number;
10
10
  placeholder?: string;
11
11
  lastUpdated?: string;
12
12
  showPreviewBtn?: boolean;
13
+ required?: boolean;
13
14
  }
14
15
  /**
15
16
  * CustomTextEditor is a component that allows you to create a text editor with a menu bar and a preview button.
@@ -34,8 +35,11 @@ interface TextEditorProps {
34
35
  * @param {string} props.placeholder - The placeholder for the editor.
35
36
  * @param {string} props.lastUpdated - The last updated date for the editor.
36
37
  * @param {boolean} props.showPreviewBtn - Whether to show the preview button.
38
+ * @param {string} props.note - The note to display below the editor.
39
+ * @param {function} props.setIsEditing - Function to set the editing state.
40
+ * @param {boolean} props.required - Whether the editor is required.
37
41
  * @returns {React.ReactNode} The CustomTextEditor component.
38
42
  *
39
43
  */
40
- export default function CustomTextEditor({ label, name, note, onChange, setIsEditing, content, isEditing, charLimit, placeholder, lastUpdated, showPreviewBtn, }: TextEditorProps): import("react/jsx-runtime").JSX.Element;
44
+ export default function CustomTextEditor({ label, name, note, onChange, setIsEditing, content, isEditing, charLimit, placeholder, lastUpdated, showPreviewBtn, required, }: TextEditorProps): import("react/jsx-runtime").JSX.Element;
41
45
  export {};
@@ -0,0 +1,16 @@
1
+ export { default as CustomTextEditor } from "./editor/CustomTextEditor";
2
+ export { default as ContentViewer } from "./viewer/ContentViewer";
3
+ export { default as ContentViewOrEdit } from "./viewer/ContentViewOrEdit";
4
+ export { default as CodeDisplay } from "./viewer/CodeDisplay";
5
+ export { default as IHubTable } from "./tables/IHubTable";
6
+ export { default as IHubTableServer } from "./tables/IHubTableServer";
7
+ export { default as OrDivider } from "./OrDivider";
8
+ export { default as RandomGradientImage } from "./images/RandomGradientImage";
9
+ export { default as Dialog } from "./dialogs/Dialog";
10
+ export { default as Badge } from "./Badge";
11
+ export { default as Action } from "./Action";
12
+ export { default as Dropdown } from "./Dropdown";
13
+ export { default as ColorPicker } from "./ColorPicker";
14
+ export { default as ComponentLists } from "./ComponentLists";
15
+ export * from "./cards";
16
+ export * from "./charts";
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { PaginationPropsType } from "@/types";
3
+ /**
4
+ * Enhanced Pagination Component with API Integration
5
+ * Handles pagination, search, and filtering with automatic API calls
6
+ */
7
+ declare const Pagination: React.FC<PaginationPropsType>;
8
+ export default Pagination;
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ declare const PaginationDemo: React.FC;
3
+ export default PaginationDemo;
@@ -44,12 +44,14 @@ export { default as InputText } from "./components/forms/InputText";
44
44
  export { default as InputTextarea } from "./components/forms/InputTextarea";
45
45
  export { default as SearchObjectsFromDB } from "./components/forms/SearchObjectsFromDB";
46
46
  export { default as ToggleButton } from "./components/forms/ToggleButton";
47
- export { default as CheckboxesField } from "./components/forms/CheckboxesField";
47
+ export { default as CheckBoxesField } from "./components/forms/CheckboxesField";
48
+ export { default as CheckBoxes } from "./components/forms/CheckBoxes";
48
49
  export { default as DateInputPicker } from "./components/forms/DateInputPicker";
49
50
  export { default as ChipsInput } from "./components/forms/ChipsInput";
50
51
  export { default as RadioButton } from "./components/forms/radio-btn/RadioButton";
51
52
  export { default as RadioGroup } from "./components/forms/radio-btn/RadioGroup";
52
53
  export { default as InputAmount } from "./components/forms/InputAmount";
54
+ export { default as FileField } from "./components/forms/FileField";
53
55
  export { default as ChannelListAvatar } from "./components/navbar/ChannelListAvatar";
54
56
  export { default as MenuDropdown } from "./components/navbar/MenuDropdown";
55
57
  export { default as Breadcrumb } from "./components/navbar/Breadcrumb";
@@ -65,11 +67,16 @@ export { default as IHubTable } from "./components/ui/tables/IHubTable";
65
67
  export { default as IHubTableServer } from "./components/ui/tables/IHubTableServer";
66
68
  export { default as OrDivider } from "./components/ui/OrDivider";
67
69
  export { default as RandomGradientImage } from "./components/ui/images/RandomGradientImage";
70
+ export { default as ComponentLists } from "./components/ui/ComponentLists";
71
+ export { default as Action } from "./components/ui/Action";
68
72
  export { default as Dialog } from "./components/ui/dialogs/Dialog";
69
73
  export { default as Badge } from "./components/ui/Badge";
70
- export { default as Action } from "./components/ui/Action";
71
74
  export { default as Dropdown } from "./components/ui/Dropdown";
72
75
  export { default as ColorPicker } from "./components/ui/ColorPicker";
76
+ export { default as Pagination } from "./components/ui/pagination/Pagination";
77
+ export { default as PaginationDemo } from "./components/ui/pagination/PaginationDemo";
78
+ export { default as CreateButton } from "./components/ui/create-button/CreateButton";
79
+ export { default as CreateButtonExample } from "./components/ui/create-button/CreateButtonExample";
73
80
  export * from "./components/ui/cards";
74
81
  export * from "./components/ui/charts";
75
82
  export { default as ChangeStyleVariable } from "./components/theme/ChangeStyleVariable";
@@ -92,4 +99,3 @@ export { default as Unauthorized } from "./components/status/Unauthorized";
92
99
  export { default as Tabs } from "./components/tabs/Tabs";
93
100
  export { default as VerticalTabs } from "./components/tabs/VerticalTabs";
94
101
  export { default as TabContent } from "./components/tabs/TabContent";
95
- export { default as ComponentLists } from "./components/ComponentLists";
@@ -247,6 +247,8 @@ export interface LoginFormPropsType {
247
247
  endpointPath?: string;
248
248
  verificationPath?: string;
249
249
  redirectPath?: string;
250
+ hideResetPassword?: boolean;
251
+ hideSignup?: boolean;
250
252
  type?: string | "sis" | "skills" | "lms" | "crm" | "ecommerce" | "inventory" | "hr";
251
253
  }
252
254
  export interface DropdownOptionType {
@@ -348,16 +350,16 @@ export interface PaystackConfigObjectType {
348
350
  metadata?: PaystackMetadataType;
349
351
  }
350
352
  export interface PaystackConfigType {
351
- authorization_code?: string;
352
- reference: string;
353
353
  email: string;
354
354
  first_name: string;
355
355
  last_name: string;
356
356
  currency: string;
357
357
  amount: number;
358
- publicKey: string | undefined;
359
- key: string | undefined;
360
- callback_url: string;
358
+ reference?: string;
359
+ authorization_code?: string;
360
+ publicKey?: string | undefined;
361
+ key?: string | undefined;
362
+ callback_url?: string;
361
363
  metadata?: PaystackMetadataType;
362
364
  }
363
365
  export interface PaystackResponseType {
@@ -419,3 +421,33 @@ export interface PaymentReferenceType {
419
421
  redirecturl?: string;
420
422
  [key: string]: any;
421
423
  }
424
+ export interface PaginationData {
425
+ count: number;
426
+ next: string | null;
427
+ previous: string | null;
428
+ results: any[];
429
+ }
430
+ export interface PaginationPropsType {
431
+ /** Current offset value from URL params */
432
+ offset: string | number;
433
+ /** Pagination data from API response */
434
+ data: PaginationData;
435
+ /** Number of items per page */
436
+ limit: number;
437
+ /** API endpoint path */
438
+ urlPath: string;
439
+ /** Function to update data state */
440
+ setData: React.Dispatch<React.SetStateAction<any>>;
441
+ /** Authentication token */
442
+ token?: string | null;
443
+ /** Current tab filter value */
444
+ tabsValues?: string;
445
+ /** Current search query */
446
+ searchValues?: string;
447
+ /** Maximum number of page buttons to show */
448
+ rangeLimit?: number;
449
+ /** Additional CSS classes */
450
+ className?: string;
451
+ /** Whether to show first/last buttons */
452
+ showFirstLast?: boolean;
453
+ }
@@ -39,6 +39,7 @@ export interface NavLinkItem extends NavItemBase {
39
39
  isExternal?: boolean;
40
40
  /** Access control - function to determine if user has access */
41
41
  hasAccess?: () => boolean;
42
+ children?: NavItemType[];
42
43
  }
43
44
  /**
44
45
  * Navigation group with submenu items