mirror of
https://github.com/gosticks/plane.git
synced 2025-10-16 12:45:33 +00:00
* chore: sidebar peek state added to theme store * chore: extended sidebar wrapper added * chore: resizeable sidebar component added * chore: appsidebar root component * chore: updated sidebar and applied necessary changes across codebase * chore: code refactor * chore: code refactor * chore: code refactor * chore: breadcrumb changes * chore: sidebar improvements and fixes * chore: enhancements and fixes * fix: peek sidebar leave * chore: code refactor * chore: code refactor * chore: code refactor * chore: icons added * chore: add dock variable and toggle function to theme store * chore: code refactor * chore: code refactor * chore: code refactor * chore: theme and workspace store updated * chore: workspace content wrapper and apprail context * chore: workspace and project wrapper updated * chore: app rail component * chore: content wrapper * chore: sidebar component updated * chore: layout changes and code refactoring * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor * chore: appsidebar toggle button * chore: code refactor * chore: workspace menu improvements * chore: sidebar spacing and padding improvements * chore: settings layout improvement * chore: enhancements * chore: extended sidebar code refactor * chore: code refactor * fix: merge conflict * fix: merge conflict * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import React, { createContext, ReactNode } from "react";
|
|
import { observer } from "mobx-react";
|
|
import { useParams } from "next/navigation";
|
|
// hooks
|
|
import useLocalStorage from "@/hooks/use-local-storage";
|
|
|
|
export interface AppRailContextType {
|
|
isEnabled: boolean;
|
|
shouldRenderAppRail: boolean;
|
|
toggleAppRail: (value?: boolean) => void;
|
|
}
|
|
|
|
const AppRailContext = createContext<AppRailContextType | undefined>(undefined);
|
|
|
|
export { AppRailContext };
|
|
|
|
interface AppRailProviderProps {
|
|
children: ReactNode;
|
|
}
|
|
|
|
export const AppRailProvider = observer(({ children }: AppRailProviderProps) => {
|
|
const { workspaceSlug } = useParams();
|
|
const { storedValue: isAppRailVisible, setValue: setIsAppRailVisible } = useLocalStorage<boolean>(
|
|
`APP_RAIL_${workspaceSlug}`,
|
|
false
|
|
);
|
|
|
|
const isEnabled = false;
|
|
|
|
const toggleAppRail = (value?: boolean) => {
|
|
if (value === undefined) {
|
|
setIsAppRailVisible(!isAppRailVisible);
|
|
} else {
|
|
setIsAppRailVisible(value);
|
|
}
|
|
};
|
|
|
|
const contextValue: AppRailContextType = {
|
|
isEnabled,
|
|
shouldRenderAppRail: !!isAppRailVisible && isEnabled,
|
|
toggleAppRail,
|
|
};
|
|
|
|
return <AppRailContext.Provider value={contextValue}>{children}</AppRailContext.Provider>;
|
|
});
|