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,6 +5,7 @@ import api from '../api';
|
||||
import { useWorkspaceStore } from '../stores/workspace';
|
||||
import { useLocaleStore } from '../stores/locale';
|
||||
import Sidebar from '../components/Sidebar.vue';
|
||||
import Icon from '../components/Icon.vue';
|
||||
|
||||
const ws = useWorkspaceStore();
|
||||
const L = useLocaleStore();
|
||||
@@ -77,7 +78,7 @@ onMounted(async () => {
|
||||
<Sidebar />
|
||||
<main class="main">
|
||||
<div class="topbar">
|
||||
<h2 style="margin: 0">🗓️ {{ L.t('cal.title') }} — {{ monthName }}</h2>
|
||||
<h2 style="margin: 0"><Icon name="calendar" :size="22" /> {{ L.t('cal.title') }} — {{ monthName }}</h2>
|
||||
<div class="row">
|
||||
<button class="ghost" @click="prev">◀</button>
|
||||
<button class="ghost" @click="goToday">{{ L.t('cal.today') }}</button>
|
||||
@@ -95,12 +96,12 @@ onMounted(async () => {
|
||||
:title="t.title"
|
||||
@click="router.push('/tasks')"
|
||||
>
|
||||
{{ t.status === 'done' ? '✅' : '📌' }} {{ t.title }}
|
||||
{{ t.status === 'done' ? '✅' : '▸' }} {{ t.title }}
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<p class="muted">📌 {{ L.t('task.due') }} → {{ L.t('cal.title') }} ✨</p>
|
||||
<p class="muted">▸ {{ L.t('task.due') }} → {{ L.t('cal.title') }} ✨</p>
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user