feature: Added Label component

This commit is contained in:
Paul Valerie GOMA 2025-07-21 23:42:59 +02:00
parent 93fccc88bb
commit 29a0094b50

View File

@ -0,0 +1,48 @@
<script setup lang="ts">
import type IVLabel from './IVLabel.type';
import styles from '@visua/typography.module.css';
import VHint from '../hint/VHint.vue';
const props = withDefaults(defineProps<IVLabel>(), {
type: 'default',
disabled: false,
required: false,
hint: undefined,
});
</script>
<template>
<label
:for="props.for"
:class="[styles['text-body-MD-standard-text-Regular'], {
'label': props.type === 'default',
'success': props.type === 'success',
'error': props.type === 'error',
'disabled': props.disabled,
}]"
:aria-label="props.label"
:aria-disabled="props.disabled"
:aria-required="props.required"
>
{{ props.label }}
<slot name="required-type">
<span
v-if="'required' in $attrs && $attrs.required !== false"
:class="{ 'required': props.required }"
>*</span>
</slot>
<VHint
v-if="props.hint"
:title="props.hint"
:disabled="props.disabled"
/>
</label>
</template>
<style lang="css" scoped>
.label {color: var(--text-label-grey);}
.success {color: var(--text-default-success);}
.error {color: var(--text-default-error);}
.disabled {color: var(--text-disabled-grey);}
.required {color: var(--minor-red-marianne);}
</style>