1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
use *;
/// A list of titled rows with optional descriptions and trailing meta text.
///
/// Renders a `c_euv_list` column holding one `c_euv_list_item` per entry.
/// Each row holds a `c_euv_list_item_body` column with the
/// `c_euv_list_item_title` and — when the description is not empty — the
/// `c_euv_list_item_desc` line underneath it; a non-empty meta string
/// renders as a `c_euv_list_item_meta` at the trailing edge of the row.
///
/// The rows are built before the `html!` block rather than with a `for`
/// loop inside it: the per-row class values are plain strings resolved
/// once per row, and the borrowed row list cannot satisfy the `'static`
/// bound the reactive attribute closure needs.
///
/// # Arguments
///
/// - `VirtualNode<EuvListProps>` - The props node containing the rows and the empty-state text.
///
/// # Returns
///
/// - `VirtualNode` - The list virtual DOM tree.
/// Renders one list row: the body column plus the optional trailing meta.
///
/// The description line is skipped when the description is empty, and the
/// meta block is skipped when the meta text is empty, so a one-line row
/// leaves no empty gap in the body column and no dangling block at the
/// trailing edge.
///
/// # Arguments
///
/// - `EuvListItem` - The row to render, consumed.
///
/// # Returns
///
/// - `VirtualNode` - The list row virtual DOM tree.