5c8ad2738a
Sidebar: убраны Менеджеры/Напоминания; Работа в порядке Проекты/Сделки/Канбан/Дашборд; Команда — только Настройки; снят useRemindersStore (был только под reminders badge). Topbar: тёмный фон linear-gradient(noir → #04261E) совпадающий с sidebar #1271; убран breadcrumb «Рабочая область»; v-toolbar__content padding-left:240 (не уходит под sidebar). DevIndexBadge: top:64 (ниже топбара, не перекрывает user-chip). Vitest AppLayout 15/15 PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
62 lines
1.8 KiB
Vue
62 lines
1.8 KiB
Vue
<template>
|
|
<div v-if="index" class="dev-index-badge" :class="{ 'is-dialog': dialogMode }">
|
|
<span class="dev-index-num">{{ index }}</span>
|
|
<span class="dev-index-label">{{ label }}</span>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
/**
|
|
* Dev-only визуальный badge: показывает индекс и название текущего экрана/компонента
|
|
* для упрощения обратной связи на localhost («элемент 16: бага X»).
|
|
*
|
|
* Использование:
|
|
* - Layout-уровень: `<DevIndexBadge :index="route.meta.devIndex" :label="route.meta.devLabel" />`
|
|
* - Inline (диалоги/sub-компоненты): `<DevIndexBadge :index="18" label="NewProjectDialog" :dialog-mode="true" />`
|
|
*
|
|
* Не отображается если `index` falsy (null/undefined/0/'').
|
|
* `dialogMode` переключает position: fixed → absolute для встраивания внутрь карточек.
|
|
*/
|
|
defineProps<{
|
|
index: number | string | null | undefined;
|
|
label?: string;
|
|
dialogMode?: boolean;
|
|
}>();
|
|
</script>
|
|
|
|
<style scoped>
|
|
.dev-index-badge {
|
|
position: fixed;
|
|
top: 64px;
|
|
right: 8px;
|
|
z-index: 9000;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
background: #0f6e56;
|
|
color: #fff;
|
|
padding: 4px 10px;
|
|
border-radius: 4px;
|
|
font-family: 'JetBrains Mono', ui-monospace, monospace;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
pointer-events: none;
|
|
opacity: 0.92;
|
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
|
|
}
|
|
.dev-index-badge.is-dialog {
|
|
position: absolute;
|
|
z-index: 10000;
|
|
}
|
|
.dev-index-num {
|
|
background: rgba(255, 255, 255, 0.22);
|
|
padding: 1px 6px;
|
|
border-radius: 3px;
|
|
min-width: 22px;
|
|
text-align: center;
|
|
}
|
|
.dev-index-label {
|
|
letter-spacing: 0.02em;
|
|
}
|
|
</style>
|