- Fix useActiveUrl to use prefix matching (matching Sendkit pattern) so sidebar and settings nav tabs properly highlight the active page - Make user reactive (computed) in Profile.vue and NavUser.vue so photo upload/delete reflects immediately without page reload - Update Avatar component to use simple v-if/v-else instead of Reka UI AvatarImage/AvatarFallback which cached internal loading state - Remove rounded="full" from PhotoUpload usage to match Sendkit (rounded-lg) - Add workspace logo upload/delete routes and controller methods - Replace workspace logo attribute (array) with has_logo/logo_url accessors - Pass logo_url in AuthWorkspaceResource so sidebar shows workspace logo
21 lines
734 B
TypeScript
21 lines
734 B
TypeScript
import { createContext } from "reka-ui"
|
|
import type { ComputedRef, Ref } from 'vue';
|
|
|
|
export type SidebarContext = {
|
|
state: ComputedRef<'expanded' | 'collapsed'>;
|
|
open: Ref<boolean>;
|
|
setOpen: (value: boolean) => void;
|
|
isMobile: Ref<boolean>;
|
|
openMobile: Ref<boolean>;
|
|
setOpenMobile: (value: boolean) => void;
|
|
toggleSidebar: () => void;
|
|
};
|
|
|
|
export const SIDEBAR_COOKIE_NAME = "sidebar_state"
|
|
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
|
|
export const SIDEBAR_WIDTH = "16rem"
|
|
export const SIDEBAR_WIDTH_MOBILE = "18rem"
|
|
export const SIDEBAR_WIDTH_ICON = "3rem"
|
|
export const SIDEBAR_KEYBOARD_SHORTCUT = "b"
|
|
|
|
export const [useSidebar, provideSidebarContext] = createContext<SidebarContext>("Sidebar")
|