@campxdev/react-blueprint 3.0.0-alpha.5 → 3.0.0-alpha.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.
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/types/src/components/Assets/ErrorPages/ComingSoon.d.ts +24 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/InternalServerError.d.ts +20 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/NoInternetConnection.d.ts +20 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/NoItemFound.d.ts +28 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/PageNotFound.d.ts +21 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/ResourceNotFound.d.ts +21 -0
- package/dist/cjs/types/src/components/Assets/ErrorPages/UnAuthorized.d.ts +31 -0
- package/dist/cjs/types/src/components/Assets/Icons/Icons.d.ts +54 -0
- package/dist/cjs/types/src/components/Charts/BarChart/BarChart.d.ts +38 -0
- package/dist/cjs/types/src/components/Charts/BarChart/HorizontalBarChart.d.ts +93 -0
- package/dist/cjs/types/src/components/Charts/BarChart/VerticalBarChart.d.ts +110 -0
- package/dist/cjs/types/src/components/Charts/LineChart/LineChart.d.ts +89 -0
- package/dist/cjs/types/src/components/Charts/PieChart/PieChart.d.ts +86 -0
- package/dist/cjs/types/src/components/Charts/TreeMap/TreeMap.d.ts +74 -0
- package/dist/cjs/types/src/components/DataDisplay/Accordion/Accordion.d.ts +54 -0
- package/dist/cjs/types/src/components/DataDisplay/ActivityLogView/ActivityLogFilter.d.ts +35 -0
- package/dist/cjs/types/src/components/DataDisplay/ActivityLogView/ActivityLogView.d.ts +78 -0
- package/dist/cjs/types/src/components/DataDisplay/Avatar/Avatar.d.ts +40 -0
- package/dist/cjs/types/src/components/DataDisplay/Chip/Chip.d.ts +28 -0
- package/dist/cjs/types/src/components/DataDisplay/Chips/Chips.d.ts +55 -0
- package/dist/cjs/types/src/components/DataDisplay/DataTable/DataTable.d.ts +95 -0
- package/dist/cjs/types/src/components/DataDisplay/DataTable/components/TablePagination.d.ts +35 -0
- package/dist/cjs/types/src/components/DataDisplay/EmptyIllustration/EmptyIllustration.d.ts +30 -0
- package/dist/cjs/types/src/components/DataDisplay/ReactJoyride/ReactJoyride.d.ts +64 -0
- package/dist/cjs/types/src/components/DataDisplay/Separator/Separator.d.ts +30 -0
- package/dist/cjs/types/src/components/DataDisplay/Skeleton/Skeleton.d.ts +20 -0
- package/dist/cjs/types/src/components/DataDisplay/StatusCard/StatusCard.d.ts +36 -0
- package/dist/cjs/types/src/components/DataDisplay/Timeline/Timeline.d.ts +58 -0
- package/dist/cjs/types/src/components/DataDisplay/Typography/Typography.d.ts +25 -0
- package/dist/cjs/types/src/components/Feedback/Alert/Alert.d.ts +31 -0
- package/dist/cjs/types/src/components/Feedback/Snackbar/Snackbar.d.ts +54 -0
- package/dist/cjs/types/src/components/Feedback/Spinner/Spinner.d.ts +15 -0
- package/dist/cjs/types/src/components/Feedback/Tooltip/Tooltip.d.ts +54 -0
- package/dist/cjs/types/src/components/Input/Button/Button.d.ts +26 -0
- package/dist/cjs/types/src/components/Input/DatePicker/DatePicker.d.ts +41 -0
- package/dist/cjs/types/src/components/Input/DateTimePicker/DateTimePicker.d.ts +42 -0
- package/dist/cjs/types/src/components/Input/FileUpload/FileUpload.d.ts +41 -0
- package/dist/cjs/types/src/components/Input/FormActions/FormActions.d.ts +37 -0
- package/dist/cjs/types/src/components/Input/FormControlWrapper/FormControlWrapper.d.ts +31 -0
- package/dist/cjs/types/src/components/Input/FormWrapper/FormWrapper.d.ts +20 -0
- package/dist/cjs/types/src/components/Input/HelpButton/HelpButton.d.ts +14 -0
- package/dist/cjs/types/src/components/Input/IconButtons/IconButtons/DeleteButton.d.ts +16 -0
- package/dist/cjs/types/src/components/Input/IconButtons/IconButtons/EditButton.d.ts +16 -0
- package/dist/cjs/types/src/components/Input/IconButtons/IconButtons/RedirectButton.d.ts +16 -0
- package/dist/cjs/types/src/components/Input/IconButtons/IconButtons/ViewButton.d.ts +16 -0
- package/dist/cjs/types/src/components/Input/IconButtons/IconButtons.d.ts +18 -0
- package/dist/cjs/types/src/components/Input/LabelWrapper/LabelWrapper.d.ts +26 -0
- package/dist/cjs/types/src/components/Input/MultiCheckBox/MultiCheckBox.d.ts +34 -0
- package/dist/cjs/types/src/components/Input/MultiSelect/MultiSelect.d.ts +40 -0
- package/dist/cjs/types/src/components/Input/OtpInput/OtpInput.d.ts +29 -0
- package/dist/cjs/types/src/components/Input/PasswordField/PasswordField.d.ts +34 -0
- package/dist/cjs/types/src/components/Input/RadioGroup/RadioGroup.d.ts +38 -0
- package/dist/cjs/types/src/components/Input/SearchBar/SearchBar.d.ts +26 -0
- package/dist/cjs/types/src/components/Input/Select/Select.d.ts +32 -0
- package/dist/cjs/types/src/components/Input/SingleCheckBox/SingleCheckBox.d.ts +29 -0
- package/dist/cjs/types/src/components/Input/SingleSelect/SingleSelect.d.ts +40 -0
- package/dist/cjs/types/src/components/Input/Switch/Switch.d.ts +23 -0
- package/dist/cjs/types/src/components/Input/Tags/Tags.d.ts +26 -0
- package/dist/cjs/types/src/components/Input/TextField/TextField.d.ts +35 -0
- package/dist/cjs/types/src/components/Input/Textarea/Textarea.d.ts +36 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/AppLayout.d.ts +32 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/components/MenuToggleButton.d.ts +16 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/components/Sidebar/MenuBar.d.ts +26 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/components/Sidebar/MenuItem.d.ts +37 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/components/Sidebar/Sidebar.d.ts +30 -1
- package/dist/cjs/types/src/components/Layout/AppLayout/components/Sidebar/StyledComponents.d.ts +139 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/components/UserProfilePopup.d.ts +34 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/context/SidebarContext.d.ts +48 -0
- package/dist/cjs/types/src/components/Layout/AppLayout/types.d.ts +1 -1
- package/dist/cjs/types/src/components/Layout/PageContent/PageContent.d.ts +19 -0
- package/dist/cjs/types/src/components/Layout/PageHeader/PageHeader.d.ts +46 -0
- package/dist/cjs/types/src/components/Layout/PageHeader/components/SearchBar.d.ts +22 -0
- package/dist/cjs/types/src/components/Layout/UserBox/UserBox.d.ts +40 -0
- package/dist/cjs/types/src/components/Navigation/Breadcrumbs/Breadcrumbs.d.ts +33 -0
- package/dist/cjs/types/src/components/Navigation/Calendar/Calendar.d.ts +63 -0
- package/dist/cjs/types/src/components/Navigation/ConfirmDialog/ConfirmDialog.d.ts +64 -0
- package/dist/cjs/types/src/components/Navigation/Dialog/Dialog.d.ts +55 -0
- package/dist/cjs/types/src/components/Navigation/DialogButton/DialogButton.d.ts +64 -0
- package/dist/cjs/types/src/components/Navigation/DropDownMenu/DropDownMenu.d.ts +73 -0
- package/dist/cjs/types/src/components/Navigation/PreviewFiles/PreviewFiles.d.ts +54 -0
- package/dist/cjs/types/src/components/Navigation/Stepper/Stepper.d.ts +55 -10
- package/dist/cjs/types/src/components/Navigation/TabsContainer/TabsContainer.d.ts +80 -0
- package/dist/cjs/types/src/components/Navigation/UploadDialog/UploadDialog.d.ts +64 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/types/src/components/Assets/ErrorPages/ComingSoon.d.ts +24 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/InternalServerError.d.ts +20 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/NoInternetConnection.d.ts +20 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/NoItemFound.d.ts +28 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/PageNotFound.d.ts +21 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/ResourceNotFound.d.ts +21 -0
- package/dist/esm/types/src/components/Assets/ErrorPages/UnAuthorized.d.ts +31 -0
- package/dist/esm/types/src/components/Assets/Icons/Icons.d.ts +54 -0
- package/dist/esm/types/src/components/Charts/BarChart/BarChart.d.ts +38 -0
- package/dist/esm/types/src/components/Charts/BarChart/HorizontalBarChart.d.ts +93 -0
- package/dist/esm/types/src/components/Charts/BarChart/VerticalBarChart.d.ts +110 -0
- package/dist/esm/types/src/components/Charts/LineChart/LineChart.d.ts +89 -0
- package/dist/esm/types/src/components/Charts/PieChart/PieChart.d.ts +86 -0
- package/dist/esm/types/src/components/Charts/TreeMap/TreeMap.d.ts +74 -0
- package/dist/esm/types/src/components/DataDisplay/Accordion/Accordion.d.ts +54 -0
- package/dist/esm/types/src/components/DataDisplay/ActivityLogView/ActivityLogFilter.d.ts +35 -0
- package/dist/esm/types/src/components/DataDisplay/ActivityLogView/ActivityLogView.d.ts +78 -0
- package/dist/esm/types/src/components/DataDisplay/Avatar/Avatar.d.ts +40 -0
- package/dist/esm/types/src/components/DataDisplay/Chip/Chip.d.ts +28 -0
- package/dist/esm/types/src/components/DataDisplay/Chips/Chips.d.ts +55 -0
- package/dist/esm/types/src/components/DataDisplay/DataTable/DataTable.d.ts +95 -0
- package/dist/esm/types/src/components/DataDisplay/DataTable/components/TablePagination.d.ts +35 -0
- package/dist/esm/types/src/components/DataDisplay/EmptyIllustration/EmptyIllustration.d.ts +30 -0
- package/dist/esm/types/src/components/DataDisplay/ReactJoyride/ReactJoyride.d.ts +64 -0
- package/dist/esm/types/src/components/DataDisplay/Separator/Separator.d.ts +30 -0
- package/dist/esm/types/src/components/DataDisplay/Skeleton/Skeleton.d.ts +20 -0
- package/dist/esm/types/src/components/DataDisplay/StatusCard/StatusCard.d.ts +36 -0
- package/dist/esm/types/src/components/DataDisplay/Timeline/Timeline.d.ts +58 -0
- package/dist/esm/types/src/components/DataDisplay/Typography/Typography.d.ts +25 -0
- package/dist/esm/types/src/components/Feedback/Alert/Alert.d.ts +31 -0
- package/dist/esm/types/src/components/Feedback/Snackbar/Snackbar.d.ts +54 -0
- package/dist/esm/types/src/components/Feedback/Spinner/Spinner.d.ts +15 -0
- package/dist/esm/types/src/components/Feedback/Tooltip/Tooltip.d.ts +54 -0
- package/dist/esm/types/src/components/Input/Button/Button.d.ts +26 -0
- package/dist/esm/types/src/components/Input/DatePicker/DatePicker.d.ts +41 -0
- package/dist/esm/types/src/components/Input/DateTimePicker/DateTimePicker.d.ts +42 -0
- package/dist/esm/types/src/components/Input/FileUpload/FileUpload.d.ts +41 -0
- package/dist/esm/types/src/components/Input/FormActions/FormActions.d.ts +37 -0
- package/dist/esm/types/src/components/Input/FormControlWrapper/FormControlWrapper.d.ts +31 -0
- package/dist/esm/types/src/components/Input/FormWrapper/FormWrapper.d.ts +20 -0
- package/dist/esm/types/src/components/Input/HelpButton/HelpButton.d.ts +14 -0
- package/dist/esm/types/src/components/Input/IconButtons/IconButtons/DeleteButton.d.ts +16 -0
- package/dist/esm/types/src/components/Input/IconButtons/IconButtons/EditButton.d.ts +16 -0
- package/dist/esm/types/src/components/Input/IconButtons/IconButtons/RedirectButton.d.ts +16 -0
- package/dist/esm/types/src/components/Input/IconButtons/IconButtons/ViewButton.d.ts +16 -0
- package/dist/esm/types/src/components/Input/IconButtons/IconButtons.d.ts +18 -0
- package/dist/esm/types/src/components/Input/LabelWrapper/LabelWrapper.d.ts +26 -0
- package/dist/esm/types/src/components/Input/MultiCheckBox/MultiCheckBox.d.ts +34 -0
- package/dist/esm/types/src/components/Input/MultiSelect/MultiSelect.d.ts +40 -0
- package/dist/esm/types/src/components/Input/OtpInput/OtpInput.d.ts +29 -0
- package/dist/esm/types/src/components/Input/PasswordField/PasswordField.d.ts +34 -0
- package/dist/esm/types/src/components/Input/RadioGroup/RadioGroup.d.ts +38 -0
- package/dist/esm/types/src/components/Input/SearchBar/SearchBar.d.ts +26 -0
- package/dist/esm/types/src/components/Input/Select/Select.d.ts +32 -0
- package/dist/esm/types/src/components/Input/SingleCheckBox/SingleCheckBox.d.ts +29 -0
- package/dist/esm/types/src/components/Input/SingleSelect/SingleSelect.d.ts +40 -0
- package/dist/esm/types/src/components/Input/Switch/Switch.d.ts +23 -0
- package/dist/esm/types/src/components/Input/Tags/Tags.d.ts +26 -0
- package/dist/esm/types/src/components/Input/TextField/TextField.d.ts +35 -0
- package/dist/esm/types/src/components/Input/Textarea/Textarea.d.ts +36 -0
- package/dist/esm/types/src/components/Layout/AppLayout/AppLayout.d.ts +32 -0
- package/dist/esm/types/src/components/Layout/AppLayout/components/MenuToggleButton.d.ts +16 -0
- package/dist/esm/types/src/components/Layout/AppLayout/components/Sidebar/MenuBar.d.ts +26 -0
- package/dist/esm/types/src/components/Layout/AppLayout/components/Sidebar/MenuItem.d.ts +37 -0
- package/dist/esm/types/src/components/Layout/AppLayout/components/Sidebar/Sidebar.d.ts +30 -1
- package/dist/esm/types/src/components/Layout/AppLayout/components/Sidebar/StyledComponents.d.ts +139 -0
- package/dist/esm/types/src/components/Layout/AppLayout/components/UserProfilePopup.d.ts +34 -0
- package/dist/esm/types/src/components/Layout/AppLayout/context/SidebarContext.d.ts +48 -0
- package/dist/esm/types/src/components/Layout/AppLayout/types.d.ts +1 -1
- package/dist/esm/types/src/components/Layout/PageContent/PageContent.d.ts +19 -0
- package/dist/esm/types/src/components/Layout/PageHeader/PageHeader.d.ts +46 -0
- package/dist/esm/types/src/components/Layout/PageHeader/components/SearchBar.d.ts +22 -0
- package/dist/esm/types/src/components/Layout/UserBox/UserBox.d.ts +40 -0
- package/dist/esm/types/src/components/Navigation/Breadcrumbs/Breadcrumbs.d.ts +33 -0
- package/dist/esm/types/src/components/Navigation/Calendar/Calendar.d.ts +63 -0
- package/dist/esm/types/src/components/Navigation/ConfirmDialog/ConfirmDialog.d.ts +64 -0
- package/dist/esm/types/src/components/Navigation/Dialog/Dialog.d.ts +55 -0
- package/dist/esm/types/src/components/Navigation/DialogButton/DialogButton.d.ts +64 -0
- package/dist/esm/types/src/components/Navigation/DropDownMenu/DropDownMenu.d.ts +73 -0
- package/dist/esm/types/src/components/Navigation/PreviewFiles/PreviewFiles.d.ts +54 -0
- package/dist/esm/types/src/components/Navigation/Stepper/Stepper.d.ts +55 -10
- package/dist/esm/types/src/components/Navigation/TabsContainer/TabsContainer.d.ts +80 -0
- package/dist/esm/types/src/components/Navigation/UploadDialog/UploadDialog.d.ts +64 -0
- package/dist/index.d.ts +2953 -12
- package/dist/styles.css +30 -9
- package/package.json +1 -1
- package/src/components/Assets/ErrorPages/ComingSoon.tsx +24 -0
- package/src/components/Assets/ErrorPages/InternalServerError.tsx +20 -0
- package/src/components/Assets/ErrorPages/NoInternetConnection.tsx +20 -0
- package/src/components/Assets/ErrorPages/NoItemFound.tsx +28 -0
- package/src/components/Assets/ErrorPages/PageNotFound.tsx +21 -0
- package/src/components/Assets/ErrorPages/ResourceNotFound.tsx +21 -0
- package/src/components/Assets/ErrorPages/UnAuthorized.tsx +31 -0
- package/src/components/Assets/Icons/Icons.tsx +55 -1
- package/src/components/Charts/BarChart/BarChart.tsx +38 -0
- package/src/components/Charts/BarChart/HorizontalBarChart.tsx +93 -0
- package/src/components/Charts/BarChart/VerticalBarChart.tsx +110 -0
- package/src/components/Charts/LineChart/LineChart.tsx +89 -0
- package/src/components/Charts/PieChart/PieChart.tsx +86 -0
- package/src/components/Charts/TreeMap/TreeMap.tsx +90 -0
- package/src/components/DataDisplay/Accordion/Accordion.tsx +54 -0
- package/src/components/DataDisplay/ActivityLogView/ActivityLogFilter.tsx +35 -0
- package/src/components/DataDisplay/ActivityLogView/ActivityLogView.tsx +84 -0
- package/src/components/DataDisplay/Avatar/Avatar.tsx +40 -0
- package/src/components/DataDisplay/Chip/Chip.tsx +28 -0
- package/src/components/DataDisplay/Chips/Chips.tsx +56 -0
- package/src/components/DataDisplay/DataTable/DataTable.tsx +95 -0
- package/src/components/DataDisplay/DataTable/components/TablePagination.tsx +35 -0
- package/src/components/DataDisplay/EmptyIllustration/EmptyIllustration.tsx +31 -0
- package/src/components/DataDisplay/ReactJoyride/ReactJoyride.tsx +64 -0
- package/src/components/DataDisplay/Separator/Separator.tsx +32 -0
- package/src/components/DataDisplay/Skeleton/Skeleton.tsx +20 -0
- package/src/components/DataDisplay/StatusCard/StatusCard.tsx +36 -0
- package/src/components/DataDisplay/Timeline/Timeline.tsx +58 -0
- package/src/components/DataDisplay/Typography/Typography.tsx +25 -0
- package/src/components/Feedback/Alert/Alert.tsx +38 -0
- package/src/components/Feedback/Snackbar/Snackbar.tsx +54 -0
- package/src/components/Feedback/Spinner/Spinner.tsx +15 -0
- package/src/components/Feedback/Tooltip/Tooltip.tsx +54 -0
- package/src/components/Input/Button/Button.tsx +26 -0
- package/src/components/Input/DatePicker/DatePicker.tsx +41 -0
- package/src/components/Input/DateTimePicker/DateTimePicker.tsx +42 -0
- package/src/components/Input/FileUpload/FileUpload.tsx +41 -0
- package/src/components/Input/FormActions/FormActions.tsx +37 -0
- package/src/components/Input/FormControlWrapper/FormControlWrapper.tsx +31 -0
- package/src/components/Input/FormWrapper/FormWrapper.tsx +20 -0
- package/src/components/Input/HelpButton/HelpButton.tsx +14 -0
- package/src/components/Input/IconButtons/IconButtons/DeleteButton.tsx +16 -0
- package/src/components/Input/IconButtons/IconButtons/EditButton.tsx +16 -0
- package/src/components/Input/IconButtons/IconButtons/RedirectButton.tsx +16 -0
- package/src/components/Input/IconButtons/IconButtons/ViewButton.tsx +16 -0
- package/src/components/Input/IconButtons/IconButtons.tsx +18 -0
- package/src/components/Input/LabelWrapper/LabelWrapper.tsx +26 -0
- package/src/components/Input/MultiCheckBox/MultiCheckBox.tsx +34 -0
- package/src/components/Input/MultiSelect/MultiSelect.tsx +40 -0
- package/src/components/Input/OtpInput/OtpInput.tsx +29 -0
- package/src/components/Input/PasswordField/PasswordField.tsx +34 -0
- package/src/components/Input/RadioGroup/RadioGroup.tsx +38 -0
- package/src/components/Input/SearchBar/SearchBar.tsx +26 -0
- package/src/components/Input/Select/Select.tsx +41 -0
- package/src/components/Input/SingleCheckBox/SingleCheckBox.tsx +29 -0
- package/src/components/Input/SingleSelect/SingleSelect.tsx +40 -0
- package/src/components/Input/Switch/Switch.tsx +23 -0
- package/src/components/Input/Tags/Tags.tsx +26 -0
- package/src/components/Input/TextField/TextField.tsx +35 -0
- package/src/components/Input/Textarea/Textarea.tsx +36 -0
- package/src/components/Layout/AppLayout/AppLayout.tsx +33 -1
- package/src/components/Layout/AppLayout/components/MenuToggleButton.tsx +16 -0
- package/src/components/Layout/AppLayout/components/Sidebar/MenuBar.tsx +26 -0
- package/src/components/Layout/AppLayout/components/Sidebar/MenuItem.tsx +51 -1
- package/src/components/Layout/AppLayout/components/Sidebar/Sidebar.tsx +173 -104
- package/src/components/Layout/AppLayout/components/Sidebar/StyledComponents.tsx +139 -9
- package/src/components/Layout/AppLayout/components/UserProfilePopup.tsx +34 -0
- package/src/components/Layout/AppLayout/context/SidebarContext.tsx +48 -0
- package/src/components/Layout/AppLayout/types.ts +1 -1
- package/src/components/Layout/PageContent/PageContent.tsx +19 -0
- package/src/components/Layout/PageHeader/PageHeader.tsx +46 -0
- package/src/components/Layout/PageHeader/components/SearchBar.tsx +22 -0
- package/src/components/Layout/UserBox/UserBox.tsx +40 -0
- package/src/components/Navigation/Breadcrumbs/Breadcrumbs.tsx +33 -0
- package/src/components/Navigation/Calendar/Calendar.tsx +63 -0
- package/src/components/Navigation/ConfirmDialog/ConfirmDialog.tsx +64 -0
- package/src/components/Navigation/Dialog/Dialog.tsx +55 -0
- package/src/components/Navigation/DialogButton/DialogButton.tsx +64 -0
- package/src/components/Navigation/DropDownMenu/DropDownMenu.tsx +73 -0
- package/src/components/Navigation/PreviewFiles/PreviewFiles.tsx +93 -0
- package/src/components/Navigation/Stepper/Stepper.tsx +56 -10
- package/src/components/Navigation/TabsContainer/TabsContainer.tsx +80 -0
- package/src/components/Navigation/UploadDialog/UploadDialog.tsx +64 -0
- package/src/shadcn-components/Layout/Sheet/Sheet.tsx +2 -2
|
@@ -6,6 +6,38 @@ import { Sidebar } from './components/Sidebar/Sidebar';
|
|
|
6
6
|
import { SidebarProvider, useSidebar } from './context/SidebarContext';
|
|
7
7
|
import { AppLayoutProps } from './types';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* AppLayout Component
|
|
11
|
+
*
|
|
12
|
+
* Main layout component that provides a persistent sidebar navigation structure with responsive behavior.
|
|
13
|
+
* Automatically collapses on small screens and wraps content in a SidebarProvider for state management.
|
|
14
|
+
* Includes a floating help docs button in the bottom-right corner.
|
|
15
|
+
*
|
|
16
|
+
* @param {React.ReactNode} children - Main content to render inside the layout
|
|
17
|
+
* @param {SideMenuItemProps[]} menu - Navigation menu items for the sidebar
|
|
18
|
+
* @param {ReactNode | ((params: { collapsed: boolean }) => ReactNode)} [actions] - Optional action elements or function that receives collapsed state
|
|
19
|
+
* @param {string} [mainContainerClassName=''] - Additional CSS classes for the main content container
|
|
20
|
+
* @param {HelpDocsConfig} [helpDocsConfig] - Configuration for context-based help documentation
|
|
21
|
+
* @param {boolean} [initialCollapsed] - Initial state of sidebar collapse (auto-determined on small screens)
|
|
22
|
+
* @param {UserProfilePopupProps} [userProfileParams] - Configuration for user profile popup/menu
|
|
23
|
+
*
|
|
24
|
+
* @returns {React.ReactElement} The complete app layout with sidebar and main content area
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <AppLayout
|
|
29
|
+
* menu={menuItems}
|
|
30
|
+
* userProfileParams={{
|
|
31
|
+
* userFullName: "John Doe",
|
|
32
|
+
* email: "john@example.com",
|
|
33
|
+
* onLogout: handleLogout
|
|
34
|
+
* }}
|
|
35
|
+
* actions={<ActionButtons />}
|
|
36
|
+
* >
|
|
37
|
+
* <YourContent />
|
|
38
|
+
* </AppLayout>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
9
41
|
export const AppLayout: React.FC<AppLayoutProps> = ({
|
|
10
42
|
children,
|
|
11
43
|
menu,
|
|
@@ -73,7 +105,7 @@ const AppLayoutContent: React.FC<AppLayoutProps> = ({
|
|
|
73
105
|
display: 'flex',
|
|
74
106
|
flexDirection: 'column',
|
|
75
107
|
}}
|
|
76
|
-
className={`w-full p-0 ${mainContainerClassName}`}
|
|
108
|
+
className={`w-full p-0 bg-background ${mainContainerClassName}`}
|
|
77
109
|
>
|
|
78
110
|
{children}
|
|
79
111
|
</div>
|
|
@@ -9,6 +9,22 @@ interface MenuToggleButtonProps {
|
|
|
9
9
|
className?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* MenuToggleButton Component
|
|
14
|
+
*
|
|
15
|
+
* Mobile-only button that toggles the sidebar visibility. This button is hidden on desktop screens
|
|
16
|
+
* (above 768px width) using the Tailwind media query. Useful for including in page headers
|
|
17
|
+
* on mobile devices to control sidebar drawer visibility.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} [className=''] - Additional CSS classes to apply to the button
|
|
20
|
+
*
|
|
21
|
+
* @returns {React.ReactElement} A menu toggle button (empty fragment on desktop)
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <MenuToggleButton className="ml-4" />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
12
28
|
export const MenuToggleButton: React.FC<MenuToggleButtonProps> = ({
|
|
13
29
|
className = '',
|
|
14
30
|
}) => {
|
|
@@ -17,6 +17,32 @@ const containerVariants = {
|
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* MenuBar Component
|
|
22
|
+
*
|
|
23
|
+
* Container component that renders the current menu level with optional back navigation.
|
|
24
|
+
* Displays a header with "Back" button when viewing nested menus and animates menu item
|
|
25
|
+
* appearance using staggered animations. Supports both collapsed and expanded sidebar states.
|
|
26
|
+
*
|
|
27
|
+
* @param {MenuState} currentMenuState - Current menu level state with menu items, title, and path
|
|
28
|
+
* @param {(params: InternalMenuClickHandlerProps) => void} internalMenuClickHandler - Callback to navigate into nested menus
|
|
29
|
+
* @param {() => void} previousMenuClickHandler - Callback to navigate back to previous menu level
|
|
30
|
+
* @param {() => void} [onClose] - Optional callback to close the mobile drawer
|
|
31
|
+
* @param {boolean} [collapsed] - Whether the sidebar is collapsed
|
|
32
|
+
* @param {(collapsed: boolean) => void} [setCollapsed] - Function to update sidebar collapse state
|
|
33
|
+
*
|
|
34
|
+
* @returns {React.ReactElement} Animated menu container with menu items and optional back button
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <MenuBar
|
|
39
|
+
* currentMenuState={menuState}
|
|
40
|
+
* internalMenuClickHandler={handleInternalClick}
|
|
41
|
+
* previousMenuClickHandler={handleBack}
|
|
42
|
+
* collapsed={false}
|
|
43
|
+
* />
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
20
46
|
export const MenuBar: React.FC<MenuBarProps> = ({
|
|
21
47
|
currentMenuState,
|
|
22
48
|
internalMenuClickHandler,
|
|
@@ -17,6 +17,43 @@ import {
|
|
|
17
17
|
SubMenuItemContainer,
|
|
18
18
|
} from './StyledComponents';
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* MenuItem Component
|
|
22
|
+
*
|
|
23
|
+
* Renders a single menu item that can be one of three types:
|
|
24
|
+
* 1. **Internal Menu Item** (has nested menu): Shows a back arrow on hover, opens nested menu on click
|
|
25
|
+
* 2. **Sub Menu Item** (has expandable sub-items): Shows chevron icon, expands/collapses sub-items below
|
|
26
|
+
* 3. **Regular Link Item** (direct navigation): Direct link to a route
|
|
27
|
+
*
|
|
28
|
+
* Automatically shows tooltips when collapsed and handles drawer closing logic for mobile.
|
|
29
|
+
* Supports route matching to highlight the active menu item based on current URL.
|
|
30
|
+
*
|
|
31
|
+
* @param {number} index - Unique index of the menu item in the list
|
|
32
|
+
* @param {SideMenuItemProps} menuItem - Menu item configuration with name, path, icon, and optional menu/subMenu
|
|
33
|
+
* @param {string | null} currentMenuPath - Current path prefix for building full paths (for nested menus)
|
|
34
|
+
* @param {(params: InternalMenuClickHandlerProps) => void} internalMenuClickHandler - Callback when opening a nested/internal menu
|
|
35
|
+
* @param {() => void} [onClose] - Optional callback to close the mobile drawer after navigation
|
|
36
|
+
* @param {boolean} [collapsed] - Whether the sidebar is in collapsed state
|
|
37
|
+
* @param {(collapsed: boolean) => void} [setCollapsed] - Function to update sidebar collapse state
|
|
38
|
+
*
|
|
39
|
+
* @returns {React.ReactElement} Animated menu item with appropriate interactive elements
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <MenuItem
|
|
44
|
+
* index={0}
|
|
45
|
+
* menuItem={{
|
|
46
|
+
* name: "Dashboard",
|
|
47
|
+
* path: "/dashboard",
|
|
48
|
+
* icon: <DashboardIcon />,
|
|
49
|
+
* menu: subMenuItems // For nested menus
|
|
50
|
+
* }}
|
|
51
|
+
* currentMenuPath="/admin"
|
|
52
|
+
* internalMenuClickHandler={handleMenuClick}
|
|
53
|
+
* collapsed={false}
|
|
54
|
+
* />
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
20
57
|
export const MenuItem: React.FC<MenuItemProps> = ({
|
|
21
58
|
index,
|
|
22
59
|
menuItem,
|
|
@@ -230,7 +267,20 @@ export const MenuItem: React.FC<MenuItemProps> = ({
|
|
|
230
267
|
);
|
|
231
268
|
};
|
|
232
269
|
|
|
233
|
-
|
|
270
|
+
/**
|
|
271
|
+
* SubMenuItem Component
|
|
272
|
+
*
|
|
273
|
+
* Internal component that renders an individual sub-menu item (child item within an expandable menu).
|
|
274
|
+
* These are leaf nodes that directly navigate to routes. Automatically closes the mobile drawer
|
|
275
|
+
* on navigation since they are terminal menu items.
|
|
276
|
+
*
|
|
277
|
+
* @param {number} index - Unique index of the sub-menu item
|
|
278
|
+
* @param {{ name: string; path: string }} subMenuItem - Sub-menu item data with name and path
|
|
279
|
+
* @param {string} subMenuButtonPath - Parent menu's path prefix for building full navigation path
|
|
280
|
+
* @param {() => void} [onClose] - Optional callback to close the mobile drawer after navigation
|
|
281
|
+
*
|
|
282
|
+
* @returns {React.ReactElement} A navigation link for the sub-menu item
|
|
283
|
+
*/
|
|
234
284
|
const SubMenuItem: React.FC<{
|
|
235
285
|
index: number;
|
|
236
286
|
subMenuItem: { name: string; path: string };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Sheet, SheetContent } from '@/shadcn-components/Layout/Sheet/Sheet';
|
|
2
|
+
import { motion } from 'framer-motion';
|
|
2
3
|
import { PanelLeftClose, PanelLeftOpen } from 'lucide-react';
|
|
3
4
|
import React, { ReactNode, useState } from 'react';
|
|
4
5
|
import { useMediaQuery } from '../../../../../hooks/useMediaQuery';
|
|
@@ -6,7 +7,7 @@ import { CampxFullLogoIcon } from '../../../../Assets/Icons/IconComponents/Campx
|
|
|
6
7
|
import { CampxIcon } from '../../../../Assets/Icons/IconComponents/CampxIcon';
|
|
7
8
|
import { Button } from '../../../../Input/Button/Button';
|
|
8
9
|
import { UserProfilePopup, UserProfilePopupProps } from '../UserProfilePopup';
|
|
9
|
-
import { SideMenuItemProps } from './interfaces';
|
|
10
|
+
import { SideMenuItemProps, SidebarNavigationHook } from './interfaces';
|
|
10
11
|
import { MenuBar } from './MenuBar';
|
|
11
12
|
import { useSidebarNavigation } from './useSidebarNavigation';
|
|
12
13
|
|
|
@@ -14,7 +15,7 @@ interface SidebarProps {
|
|
|
14
15
|
/** Menu items for navigation */
|
|
15
16
|
menu: SideMenuItemProps[];
|
|
16
17
|
/**User profile Params */
|
|
17
|
-
userProfileParams
|
|
18
|
+
userProfileParams?: UserProfilePopupProps;
|
|
18
19
|
/** Whether the sidebar is collapsed */
|
|
19
20
|
collapsed: boolean;
|
|
20
21
|
/** Function to toggle sidebar collapse state */
|
|
@@ -23,6 +24,140 @@ interface SidebarProps {
|
|
|
23
24
|
actions: ReactNode;
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
interface SidebarContentProps {
|
|
28
|
+
collapsed: boolean;
|
|
29
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
30
|
+
onToggle: () => void;
|
|
31
|
+
isSmallScreen: boolean;
|
|
32
|
+
navigation: SidebarNavigationHook;
|
|
33
|
+
userProfileParams?: UserProfilePopupProps;
|
|
34
|
+
actions: ReactNode;
|
|
35
|
+
hovered: boolean;
|
|
36
|
+
setHovered: (hovered: boolean) => void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* SidebarContent Component
|
|
41
|
+
* Renders the actual sidebar UI content (header, menu, footer)
|
|
42
|
+
* This component is reused for both mobile and desktop layouts
|
|
43
|
+
*/
|
|
44
|
+
const SidebarContent: React.FC<SidebarContentProps> = ({
|
|
45
|
+
collapsed,
|
|
46
|
+
setCollapsed,
|
|
47
|
+
onToggle,
|
|
48
|
+
isSmallScreen,
|
|
49
|
+
navigation,
|
|
50
|
+
userProfileParams,
|
|
51
|
+
actions,
|
|
52
|
+
hovered,
|
|
53
|
+
setHovered,
|
|
54
|
+
}) => (
|
|
55
|
+
<SidebarContainer>
|
|
56
|
+
{/* Sidebar Header */}
|
|
57
|
+
<div
|
|
58
|
+
className={`flex flex-row justify-between items-center h-16 ${
|
|
59
|
+
collapsed && !isSmallScreen ? '' : 'px-4'
|
|
60
|
+
} md:h-[54px]`}
|
|
61
|
+
>
|
|
62
|
+
{/* Logo - Show icon when collapsed (desktop only), full logo otherwise */}
|
|
63
|
+
{collapsed && !isSmallScreen ? (
|
|
64
|
+
<div
|
|
65
|
+
onClick={() => {
|
|
66
|
+
setHovered(false);
|
|
67
|
+
onToggle();
|
|
68
|
+
}}
|
|
69
|
+
onMouseEnter={() => setHovered(true)}
|
|
70
|
+
onMouseLeave={() => setHovered(false)}
|
|
71
|
+
className="w-full hover:cursor-ew-resize flex justify-center"
|
|
72
|
+
>
|
|
73
|
+
{hovered ? <PanelLeftOpen size={20} /> : <CampxIcon size={32} />}
|
|
74
|
+
</div>
|
|
75
|
+
) : (
|
|
76
|
+
<>
|
|
77
|
+
<CampxFullLogoIcon />
|
|
78
|
+
<Button
|
|
79
|
+
onClick={onToggle}
|
|
80
|
+
variant="ghost"
|
|
81
|
+
size="icon-sm"
|
|
82
|
+
className="hover:cursor-ew-resize"
|
|
83
|
+
>
|
|
84
|
+
<PanelLeftClose size={20} />
|
|
85
|
+
</Button>
|
|
86
|
+
</>
|
|
87
|
+
)}
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
{/* Menu Content */}
|
|
91
|
+
<motion.div
|
|
92
|
+
key={`sidebar-${navigation.currentMenuState.title || 'main'}`}
|
|
93
|
+
initial={{ x: navigation.menuPosition }}
|
|
94
|
+
animate={{ x: 0 }}
|
|
95
|
+
transition={{
|
|
96
|
+
duration: 0.3,
|
|
97
|
+
ease: navigation.menuPosition ? 'circOut' : 'circIn',
|
|
98
|
+
}}
|
|
99
|
+
className="h-[calc(100%-165px)] w-full"
|
|
100
|
+
onClick={() => setCollapsed(false)}
|
|
101
|
+
>
|
|
102
|
+
<MenuBar
|
|
103
|
+
currentMenuState={navigation.currentMenuState}
|
|
104
|
+
menuPosition={navigation.menuPosition}
|
|
105
|
+
internalMenuClickHandler={navigation.internalMenuClickHandler}
|
|
106
|
+
previousMenuClickHandler={navigation.previousMenuClickHandler}
|
|
107
|
+
onClose={isSmallScreen ? onToggle : undefined}
|
|
108
|
+
collapsed={isSmallScreen ? false : collapsed}
|
|
109
|
+
setCollapsed={setCollapsed}
|
|
110
|
+
/>
|
|
111
|
+
</motion.div>
|
|
112
|
+
|
|
113
|
+
{/* Footer */}
|
|
114
|
+
{(actions || userProfileParams) && (
|
|
115
|
+
<div className="fixed bottom-0 left-0 border-t border-border flex flex-col gap-1">
|
|
116
|
+
{actions}
|
|
117
|
+
{userProfileParams && (
|
|
118
|
+
<UserProfilePopup
|
|
119
|
+
userFullName={userProfileParams?.userFullName}
|
|
120
|
+
email={userProfileParams?.email}
|
|
121
|
+
onLogout={userProfileParams?.onLogout}
|
|
122
|
+
onAccountClick={userProfileParams?.onAccountClick}
|
|
123
|
+
profileActions={userProfileParams?.profileActions}
|
|
124
|
+
collapsed={isSmallScreen ? false : collapsed}
|
|
125
|
+
/>
|
|
126
|
+
)}
|
|
127
|
+
</div>
|
|
128
|
+
)}
|
|
129
|
+
</SidebarContainer>
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Sidebar Component
|
|
134
|
+
*
|
|
135
|
+
* Responsive sidebar navigation component that displays differently on mobile and desktop:
|
|
136
|
+
* - **Mobile**: Renders as a collapsible Sheet drawer
|
|
137
|
+
* - **Desktop**: Renders as an animated fixed-width sidebar with collapse/expand animation
|
|
138
|
+
*
|
|
139
|
+
* Manages menu navigation state, hover effects, and user profile popup. Automatically
|
|
140
|
+
* handles internal menu navigation and animated transitions between menu levels.
|
|
141
|
+
*
|
|
142
|
+
* @param {SideMenuItemProps[]} menu - Navigation menu items with support for nested/internal menus and sub-menus
|
|
143
|
+
* @param {UserProfilePopupProps} userProfileParams - User profile configuration including name, email, and action handlers
|
|
144
|
+
* @param {boolean} collapsed - Current collapse state of the sidebar
|
|
145
|
+
* @param {(collapsed: boolean) => void} setCollapsed - Function to update the collapse state
|
|
146
|
+
* @param {ReactNode} actions - Action elements to display in the sidebar footer (above user profile)
|
|
147
|
+
*
|
|
148
|
+
* @returns {React.ReactElement} Responsive sidebar component (Sheet on mobile, animated div on desktop)
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```tsx
|
|
152
|
+
* <Sidebar
|
|
153
|
+
* menu={navigationMenu}
|
|
154
|
+
* collapsed={sidebarCollapsed}
|
|
155
|
+
* setCollapsed={setSidebarCollapsed}
|
|
156
|
+
* userProfileParams={userProfile}
|
|
157
|
+
* actions={<CustomActions />}
|
|
158
|
+
* />
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
26
161
|
export const Sidebar: React.FC<SidebarProps> = ({
|
|
27
162
|
menu,
|
|
28
163
|
userProfileParams,
|
|
@@ -32,115 +167,49 @@ export const Sidebar: React.FC<SidebarProps> = ({
|
|
|
32
167
|
}) => {
|
|
33
168
|
const [hovered, setHovered] = useState(false);
|
|
34
169
|
const isSmallScreen = useMediaQuery('(max-width: 768px)');
|
|
35
|
-
// Use the navigation hook
|
|
36
170
|
const navigation = useSidebarNavigation(menu);
|
|
37
171
|
|
|
38
172
|
const onToggle = () => {
|
|
39
173
|
setCollapsed(!collapsed);
|
|
40
174
|
};
|
|
41
175
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
</AnimatePresence>
|
|
176
|
+
// Sidebar content component with all shared props
|
|
177
|
+
const sidebarContent = (
|
|
178
|
+
<SidebarContent
|
|
179
|
+
collapsed={collapsed}
|
|
180
|
+
setCollapsed={setCollapsed}
|
|
181
|
+
onToggle={onToggle}
|
|
182
|
+
isSmallScreen={isSmallScreen}
|
|
183
|
+
navigation={navigation}
|
|
184
|
+
userProfileParams={userProfileParams}
|
|
185
|
+
actions={actions}
|
|
186
|
+
hovered={hovered}
|
|
187
|
+
setHovered={setHovered}
|
|
188
|
+
/>
|
|
189
|
+
);
|
|
57
190
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
>
|
|
69
|
-
<SidebarContainer>
|
|
70
|
-
{/* Sidebar Header */}
|
|
71
|
-
<div
|
|
72
|
-
className={`flex flex-row justify-between items-center h-16 ${
|
|
73
|
-
collapsed ? '' : 'px-4'
|
|
74
|
-
} md:h-[54px]`}
|
|
75
|
-
>
|
|
76
|
-
{/* Logo - Show icon when collapsed, full logo when expanded */}
|
|
77
|
-
{collapsed ? (
|
|
78
|
-
<div
|
|
79
|
-
onClick={() => {
|
|
80
|
-
setHovered(false);
|
|
81
|
-
onToggle();
|
|
82
|
-
}}
|
|
83
|
-
onMouseEnter={() => setHovered(true)}
|
|
84
|
-
onMouseLeave={() => setHovered(false)}
|
|
85
|
-
className="w-full hover:cursor-ew-resize flex justify-center"
|
|
86
|
-
>
|
|
87
|
-
{hovered ? (
|
|
88
|
-
<PanelLeftOpen size={20} />
|
|
89
|
-
) : (
|
|
90
|
-
<CampxIcon size={32} />
|
|
91
|
-
)}
|
|
92
|
-
</div>
|
|
93
|
-
) : (
|
|
94
|
-
<>
|
|
95
|
-
<CampxFullLogoIcon />
|
|
96
|
-
<Button
|
|
97
|
-
onClick={onToggle}
|
|
98
|
-
variant="ghost"
|
|
99
|
-
size="icon-sm"
|
|
100
|
-
className="hover:cursor-ew-resize"
|
|
101
|
-
>
|
|
102
|
-
<PanelLeftClose size={20} />
|
|
103
|
-
</Button>
|
|
104
|
-
</>
|
|
105
|
-
)}
|
|
106
|
-
</div>
|
|
191
|
+
// Mobile: Wrap with Sheet
|
|
192
|
+
if (isSmallScreen) {
|
|
193
|
+
return (
|
|
194
|
+
<Sheet open={!collapsed} onOpenChange={(open) => setCollapsed(!open)}>
|
|
195
|
+
<SheetContent side="left" className="w-[250px] p-0 [&>button]:hidden">
|
|
196
|
+
{sidebarContent}
|
|
197
|
+
</SheetContent>
|
|
198
|
+
</Sheet>
|
|
199
|
+
);
|
|
200
|
+
}
|
|
107
201
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
>
|
|
120
|
-
<MenuBar
|
|
121
|
-
currentMenuState={navigation.currentMenuState}
|
|
122
|
-
menuPosition={navigation.menuPosition}
|
|
123
|
-
internalMenuClickHandler={navigation.internalMenuClickHandler}
|
|
124
|
-
previousMenuClickHandler={navigation.previousMenuClickHandler}
|
|
125
|
-
onClose={isSmallScreen ? onToggle : undefined}
|
|
126
|
-
collapsed={collapsed}
|
|
127
|
-
setCollapsed={setCollapsed}
|
|
128
|
-
/>
|
|
129
|
-
</motion.div>
|
|
130
|
-
<div className="fixed bottom-0 left-0 border-t border-border">
|
|
131
|
-
{actions}
|
|
132
|
-
<UserProfilePopup
|
|
133
|
-
userFullName={userProfileParams?.userFullName}
|
|
134
|
-
email={userProfileParams?.email}
|
|
135
|
-
onLogout={userProfileParams?.onLogout}
|
|
136
|
-
onAccountClick={userProfileParams?.onAccountClick}
|
|
137
|
-
profileActions={userProfileParams?.profileActions}
|
|
138
|
-
collapsed={collapsed}
|
|
139
|
-
/>
|
|
140
|
-
</div>
|
|
141
|
-
</SidebarContainer>
|
|
142
|
-
</motion.div>
|
|
143
|
-
</>
|
|
202
|
+
// Desktop: Wrap with Framer Motion for width animation
|
|
203
|
+
return (
|
|
204
|
+
<motion.div
|
|
205
|
+
animate={{
|
|
206
|
+
width: collapsed ? '64px' : '250px',
|
|
207
|
+
}}
|
|
208
|
+
transition={{ duration: 0.3, ease: [0.32, 0.72, 0, 1] }}
|
|
209
|
+
className="relative h-screen flex-shrink-0"
|
|
210
|
+
>
|
|
211
|
+
{sidebarContent}
|
|
212
|
+
</motion.div>
|
|
144
213
|
);
|
|
145
214
|
};
|
|
146
215
|
|