feat: refonte UX du dashboard (coquille, tri/filtre/pagination, ⌘K, toasts)

Refonte front (packages/web) : coquille applicative partagée (sidebar desktop +
barre d'onglets mobile + PageHeader, langue/push/logout centralisés) pilotée par
route.meta.layout ; design system (BaseButton/BaseBadge/SegmentedControl/EmptyState/
SkeletonRow, anneau de focus, icônes @lucide/vue) ; tri/filtre/recherche/pagination
côté client via useListControls (+ synchro URL) sur sessions/worktrees/groupes ;
section « À traiter », palette de commandes ⌘K, toasts. Aucune modif serveur/protocole/DB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 11:47:36 +02:00
parent f015a105f9
commit b80e68e539
41 changed files with 2416 additions and 448 deletions

View File

@@ -25,9 +25,9 @@
/>
</label>
<p v-if="error" class="text-sm text-red-400">{{ error }}</p>
<button type="submit" class="btn-primary" :disabled="submitting || token.trim() === ''">
<BaseButton type="submit" variant="primary" :loading="submitting" :disabled="token.trim() === ''">
{{ submitting ? t('login.submitting') : t('login.submit') }}
</button>
</BaseButton>
</form>
</div>
</template>
@@ -39,6 +39,7 @@ import { useI18n } from 'vue-i18n';
import { useAuthStore } from '../stores/auth';
import { ApiError } from '../lib/api';
import LanguageSwitcher from '../components/LanguageSwitcher.vue';
import BaseButton from '../components/ui/BaseButton.vue';
const { t } = useI18n();
const route = useRoute();