Files
privacy.sexy/src/presentation/components/Scripts/Menu/Recommendation/RecommendationDocumentation.vue
undergroundwires abe03cef3f Refactor styles to match new CSS nesting behavior
This commit refactors SCSS to resolve deprecation warnings related to
mixed declaration after nested rules.

Sass is changing how it processes declarations that appear after nested
rules to align with CSS standards. Previously, Sass would hoist
declarations to avoid duplicating selectors, However, this behavior will
soon change to make declarations apply in the order they appear, as per
CSS standards.
2024-07-20 11:56:31 +02:00

119 lines
2.3 KiB
Vue

<template>
<section>
<p class="privacy-rating">
Privacy: <CircleRating :rating="privacyRating" />
</p>
<hr />
<p>
{{ description }}
</p>
<p class="recommendation">
<AppIcon icon="lightbulb" class="icon" />
<span>{{ recommendation }}</span>
</p>
<p
v-if="includes?.length > 0"
class="includes"
>
<AppIcon icon="square-check" class="icon" />
<span>
Includes:
<ul>
<li
v-for="inclusionItem in includes"
:key="inclusionItem"
>
{{ inclusionItem }}
</li>
</ul>
</span>
</p>
<p
v-if="considerations?.length > 0"
class="considerations"
>
<AppIcon icon="triangle-exclamation" class="icon" />
<span>
<strong>Considerations:</strong>
<ul>
<li
v-for="considerationItem in considerations"
:key="considerationItem"
>
{{ considerationItem }}
</li>
</ul>
</span>
</p>
</section>
</template>
<script lang="ts">
import { type PropType, defineComponent } from 'vue';
import AppIcon from '@/presentation/components/Shared/Icon/AppIcon.vue';
import CircleRating from './Rating/CircleRating.vue';
export default defineComponent({
components: {
CircleRating,
AppIcon,
},
props: {
privacyRating: {
type: Number,
required: true,
},
description: {
type: String,
required: true,
},
recommendation: {
type: String,
required: true,
},
includes: {
type: Array as PropType<ReadonlyArray<string>>,
default: () => [],
},
considerations: {
type: Array as PropType<ReadonlyArray<string>>,
default: () => [],
},
},
});
</script>
<style scoped lang="scss">
@use "@/presentation/assets/styles/main" as *;
@mixin horizontal-stack {
display: flex;
gap: $spacing-relative-small;
}
@mixin apply-icon-color($color) {
.icon {
color: $color;
}
}
.privacy-rating {
text-align: center;
}
.includes {
@include horizontal-stack;
@include apply-icon-color($color-success);
}
.considerations {
@include horizontal-stack;
@include apply-icon-color($color-danger);
}
.recommendation {
align-items: center;
@include horizontal-stack;
@include apply-icon-color($color-caution);
}
</style>