feat(frontend): chat tabs, flat SVG icons, upload autosave, per-user rights
- Chat rework: Chats (private DMs with user search, online dots, unread badges) and Team chats tabs; shared message component with reactions, edit, image attachments, message search and typing indicators - Flat modern inline SVG icon set (no external dependency) replaces emoji chrome across nav, headers, buttons, tabs and settings - Uploaded avatar/background images apply instantly (auto-save) with confirmation note; per-user permission matrix in dashboard members - Login localized, invite header uses icon, comment header cleaned
This commit is contained in:
@@ -5,9 +5,11 @@ import { useThemeStore } from './stores/theme';
|
||||
import { useLocaleStore } from './stores/locale';
|
||||
import { useUiStore } from './stores/ui';
|
||||
import { fileUrl } from './files';
|
||||
import { connectSocket } from './socket';
|
||||
import SettingsWindow from './components/SettingsWindow.vue';
|
||||
import TimeTrackerButton from './components/TimeTrackerButton.vue';
|
||||
import Bell from './components/Bell.vue';
|
||||
import Icon from './components/Icon.vue';
|
||||
|
||||
const auth = useAuthStore();
|
||||
const theme = useThemeStore();
|
||||
@@ -32,6 +34,7 @@ onMounted(() => {
|
||||
locale.set(locale.locale);
|
||||
theme.apply();
|
||||
auth.applyPrefs();
|
||||
if (auth.isLoggedIn) connectSocket();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -41,7 +44,7 @@ onMounted(() => {
|
||||
<div v-if="auth.isLoggedIn" class="top-right">
|
||||
<Bell />
|
||||
<TimeTrackerButton />
|
||||
<button class="ghost icon-btn" @click="ui.openSettings()" title="⚙️">⚙️</button>
|
||||
<button class="ghost icon-btn" @click="ui.openSettings()" title="Settings"><Icon name="settings" /></button>
|
||||
</div>
|
||||
<router-view />
|
||||
<SettingsWindow />
|
||||
|
||||
Reference in New Issue
Block a user