use crate::leptos_animated::AnimatedIconType;
pub fn get_icon_css(icon_type: AnimatedIconType) -> Option<&'static str> {
match icon_type {
AnimatedIconType::AArrowDownAnimate => Some(AARROWDOWN_CSS),
AnimatedIconType::AirVentAnimate => Some(AIRVENT_CSS),
AnimatedIconType::AlarmClockAnimate => Some(ALARMCLOCK_CSS),
AnimatedIconType::HeartAnimate => Some(HEART_CSS),
AnimatedIconType::PlusAnimate => Some(PLUS_CSS),
}
}
static AARROWDOWN_CSS: &str = r#"/* Letter "A" animation - targeting specific paths */
[data-name="AArrowDownAnimate"]:hover path[d="M3.5 13h6"],
[data-name="AArrowDownAnimate"]:hover path[d="m2 16 4.5-9 4.5 9"] {
animation: letterAnimate 0.3s ease-in-out;
}
/* Arrow animation - targeting specific paths with delay */
[data-name="AArrowDownAnimate"]:hover path[d="M18 7v9"],
[data-name="AArrowDownAnimate"]:hover path[d="m14 12 4 4 4-4"] {
animation: arrowAnimate 0.3s ease-in-out 0.2s both;
}
@keyframes letterAnimate {
0% { opacity: 0; transform: scale(0.8); }
100% { opacity: 1; transform: scale(1); }
}
@keyframes arrowAnimate {
0% { opacity: 0; transform: translateY(-10px); }
100% { opacity: 1; transform: translateY(0); }
}"#;
static AIRVENT_CSS: &str = r#"/* Air vent wind animation - first wind path (immediate) */
[data-name="AirVentAnimate"]:hover path[d="M18 17.5a2.5 2.5 0 1 1-4 2.03V12"] {
animation: windAnimate1 0.5s ease-in-out;
}
/* Air vent wind animation - second wind path (delayed) */
[data-name="AirVentAnimate"]:hover path[d="M6.6 15.572A2 2 0 1 0 10 17v-5"] {
animation: windAnimate2 0.5s ease-in-out 0.2s both;
}
@keyframes windAnimate1 {
0% { opacity: 0; transform: scale(0.8); }
100% { opacity: 1; transform: scale(1); }
}
@keyframes windAnimate2 {
0% { opacity: 0; transform: scale(0.8); }
100% { opacity: 1; transform: scale(1); }
}"#;
static ALARMCLOCK_CSS: &str = r#"/* Primary alarm clock elements - clock face circle, hands, and bottom legs */
[data-name="AlarmClockAnimate"]:hover circle[cx="12"],
[data-name="AlarmClockAnimate"]:hover path[d="M12 9v4l2 2"],
[data-name="AlarmClockAnimate"]:hover path[d="M6.38 18.7 4 21"],
[data-name="AlarmClockAnimate"]:hover path[d="M17.64 18.67 20 21"] {
animation: primaryAlarmShake 0.3s linear infinite;
}
/* Secondary alarm clock elements - top alarm bells with more intense movement */
[data-name="AlarmClockAnimate"]:hover path[d="M5 3 2 6"],
[data-name="AlarmClockAnimate"]:hover path[d="m22 6-3-3"] {
animation: secondaryAlarmShake 0.3s linear infinite;
}
@keyframes primaryAlarmShake {
0% { transform: translateX(-1px) translateY(-1.5px); }
16.67% { transform: translateX(1px) translateY(-1.5px); }
33.33% { transform: translateX(-1px) translateY(-1.5px); }
50% { transform: translateX(1px) translateY(-1.5px); }
66.67% { transform: translateX(-1px) translateY(-1.5px); }
83.33% { transform: translateX(0) translateY(-1.5px); }
100% { transform: translateX(-1px) translateY(-1.5px); }
}
@keyframes secondaryAlarmShake {
0% { transform: translateX(-2px) translateY(-2.5px); }
16.67% { transform: translateX(2px) translateY(-2.5px); }
33.33% { transform: translateX(-2px) translateY(-2.5px); }
50% { transform: translateX(2px) translateY(-2.5px); }
66.67% { transform: translateX(-2px) translateY(-2.5px); }
83.33% { transform: translateX(0) translateY(-2.5px); }
100% { transform: translateX(-2px) translateY(-2.5px); }
}"#;
static HEART_CSS: &str = r#"[data-name="HeartAnimate"]:hover {
animation: HeartAnimation 1.2s ease-in-out;
}
@keyframes HeartAnimation {
0% { transform: scale(1); }
14% { transform: scale(1.15); }
28% { transform: scale(1); }
42% { transform: scale(1.08); }
56% { transform: scale(1); }
100% { transform: scale(1); }
}"#;
static PLUS_CSS: &str = r#"[data-name="PlusAnimate"] {
transition: transform 0.7s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
[data-name="PlusAnimate"]:hover {
transform: rotate(180deg);
}"#;