| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /**
- * User Profile Store
- * Persists avatar, nickname & bio to localStorage
- */
- import { create } from 'zustand';
- import { persist } from 'zustand/middleware';
- /** Predefined avatar options */
- export const AVATAR_OPTIONS = [
- '/avatars/user.png',
- '/avatars/teacher-2.png',
- '/avatars/assist-2.png',
- '/avatars/clown-2.png',
- '/avatars/curious-2.png',
- '/avatars/note-taker-2.png',
- '/avatars/thinker-2.png',
- ] as const;
- export interface UserProfileState {
- /** Local avatar path or data-URL (for custom uploads) */
- avatar: string;
- nickname: string;
- bio: string;
- setAvatar: (avatar: string) => void;
- setNickname: (nickname: string) => void;
- setBio: (bio: string) => void;
- }
- export const useUserProfileStore = create<UserProfileState>()(
- persist(
- (set) => ({
- avatar: AVATAR_OPTIONS[0],
- nickname: '',
- bio: '',
- setAvatar: (avatar) => set({ avatar }),
- setNickname: (nickname) => set({ nickname }),
- setBio: (bio) => set({ bio }),
- }),
- {
- name: 'user-profile-storage',
- },
- ),
- );
|