Deux lots regroupés sur la branche feat/absence-management. Suppression complète du portail client : - retire ROLE_CLIENT (security.yaml) ; User::getRoles() ajoute toujours ROLE_USER - supprime l'entité ClientTicket (+ repo, states, relations), User.client et User.allowedProjects, NotificationService, ProjectAllowedExtension, le bloc ROLE_CLIENT de MailAccessChecker - front : pages /portal, layout portal, composants client-ticket/, AdminClientTicketTab, services/dto/i18n/docs associés - fixtures : retire les users client-liot / client-acme - migration Version20260522110000 (drop client_ticket, user_allowed_projects, colonnes liées ; task_document.task_id -> NOT NULL) - tests : retire les cas obsolètes testant le blocage des clients sur le mail Module gestion des absences (WIP) : - entités / migrations (Version20260521160000, Version20260522090000) - pages absences.vue / team-absences.vue, composants frontend/components/absence/ - services front, AccrueLeaveCommand, PublicHolidayController Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
856 B
Vue
33 lines
856 B
Vue
<template>
|
|
<span
|
|
class="inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium whitespace-nowrap"
|
|
:class="variantClass"
|
|
>
|
|
<Icon v-if="icon" :name="icon" size="14" />
|
|
{{ label }}
|
|
</span>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
type Variant = 'neutral' | 'info' | 'success' | 'warning' | 'danger'
|
|
|
|
const props = withDefaults(defineProps<{
|
|
label: string
|
|
variant?: Variant
|
|
icon?: string
|
|
}>(), {
|
|
variant: 'neutral',
|
|
icon: '',
|
|
})
|
|
|
|
const VARIANT_CLASSES: Record<Variant, string> = {
|
|
neutral: 'bg-neutral-100 text-neutral-700',
|
|
info: 'bg-blue-100 text-blue-800',
|
|
success: 'bg-green-100 text-green-800',
|
|
warning: 'bg-amber-100 text-amber-800',
|
|
danger: 'bg-red-100 text-red-800',
|
|
}
|
|
|
|
const variantClass = computed(() => VARIANT_CLASSES[props.variant])
|
|
</script>
|