{move || { let chapter_data = stable_chapter_data.get(); let verses = &chapter_data.verses; let verse_ranges = highlighted_verses.get(); // Single reactive read - + // Pre-allocate vector with exact capacity for better memory efficiency let mut verse_views = Vec::with_capacity(verses.len()); - + for verse in verses { let is_highlighted = verse_ranges.iter().any(|range| range.contains(verse.verse)); - + // Use theme colors via CSS custom properties let verse_number_class = if is_highlighted { "text-xs font-semibold mr-1 align-sub" } else { "text-xs mr-1 align-sub" }; - + let verse_number_style = if is_highlighted { "color: var(--theme-verse-number-highlighted)" } else { "color: var(--theme-verse-number)" }; - + let verse_text_class = if is_highlighted { "font-bold px-1 rounded" } else { "" }; - + let verse_text_style = if is_highlighted { "color: var(--theme-verse-text-highlighted); background-color: var(--theme-verse-background-highlighted)" } else { "color: var(--theme-text-primary)" }; - + let tabindex = if is_highlighted { "0" } else { "-1" }; // Clone verse text for view (required by Leptos) let verse_text = verse.text.clone(); let verse_number = verse.verse; - + verse_views.push(view! { <> - } > - - }); } - + verse_views }}