diff --git a/hero-robots-restored.png b/hero-robots-restored.png new file mode 100644 index 00000000..265fcce2 Binary files /dev/null and b/hero-robots-restored.png differ diff --git a/landing/components/hero/CyberHeroFeatureStrip.vue b/landing/components/hero/CyberHeroFeatureStrip.vue index cdc354ff..2e7eab41 100644 --- a/landing/components/hero/CyberHeroFeatureStrip.vue +++ b/landing/components/hero/CyberHeroFeatureStrip.vue @@ -6,10 +6,24 @@ import { mdiShieldCheckOutline, mdiMonitorDashboard, } from "@mdi/js"; -import { getLocalizedHeroFeatureRail } from "~/data/heroScene"; +import { + heroCollaborationFeature, + getLocalizedHeroFeatureRail, + getLocalizedHeroReviewerFeatureCard, + type HeroMessage, + type HeroMessagePhase, +} from "~/data/heroScene"; + +const props = defineProps<{ + activeMessage?: HeroMessage | null; + phase?: HeroMessagePhase; + reducedMotion?: boolean; +}>(); const { locale } = useI18n(); const localizedHeroFeatureRail = computed(() => getLocalizedHeroFeatureRail(locale.value)); +const localizedHeroReviewerFeatureCard = computed(() => getLocalizedHeroReviewerFeatureCard(locale.value)); +const statusLabel = computed(() => locale.value === "ru" ? "Статус:" : "Status:"); const icons = [ mdiRobotOutline, @@ -18,10 +32,74 @@ const icons = [ mdiShieldCheckOutline, mdiMonitorDashboard, ] as const; + +const reviewerIsSender = computed(() => + props.activeMessage?.from === "reviewer" && props.phase !== "cooldown", +); +const reviewerIsReceiver = computed(() => + props.activeMessage?.to === "reviewer" && props.phase === "receiver", +); +const reviewerIsActive = computed(() => reviewerIsSender.value || reviewerIsReceiver.value); +const reviewerBubbleText = computed(() => { + if (!props.activeMessage || props.reducedMotion) return null; + if (props.activeMessage.from === "reviewer" && (props.phase === "sender" || props.phase === "packet")) { + return props.activeMessage.text; + } + if (props.activeMessage.to === "reviewer" && props.phase === "receiver") { + return props.activeMessage.response; + } + return null; +});