def test_steps_with_scrollable_wrapper_fasthtml_examples():
"""Test steps with scrollable wrapper from daisyUI v5 documentation."""
from fasthtml.common import Div, Ul, Li
from cjm_fasthtml_tailwind.utilities.layout import overflow
# Steps with scrollable wrapper
scrollable_steps = Div(
Ul(
Li("start", cls=str(step)),
Li("2", cls=combine_classes(step, step_colors.secondary)),
Li("3", cls=combine_classes(step, step_colors.secondary)),
Li("4", cls=combine_classes(step, step_colors.secondary)),
Li("5", cls=str(step)),
Li("6", cls=combine_classes(step, step_colors.accent)),
Li("7", cls=combine_classes(step, step_colors.accent)),
Li("8", cls=str(step)),
Li("9", cls=combine_classes(step, step_colors.error)),
Li("10", cls=combine_classes(step, step_colors.error)),
Li("11", cls=str(step)),
Li("12", cls=str(step)),
Li("13", cls=combine_classes(step, step_colors.warning)),
Li("14", cls=combine_classes(step, step_colors.warning)),
Li("15", cls=str(step)),
Li("16", cls=combine_classes(step, step_colors.neutral)),
Li("17", cls=combine_classes(step, step_colors.neutral)),
Li("18", cls=combine_classes(step, step_colors.neutral)),
Li("19", cls=combine_classes(step, step_colors.neutral)),
Li("20", cls=combine_classes(step, step_colors.neutral)),
Li("21", cls=combine_classes(step, step_colors.neutral)),
Li("22", cls=combine_classes(step, step_colors.neutral)),
Li("23", cls=combine_classes(step, step_colors.neutral)),
Li("end", cls=combine_classes(step, step_colors.neutral)),
cls=str(steps)
),
cls=str(overflow.x.auto)
)
# Verify structure
assert scrollable_steps.tag == "div"
assert scrollable_steps.attrs['class'] == "overflow-x-auto"
# Verify ul element
ul_element = scrollable_steps.children[0]
assert ul_element.tag == "ul"
assert ul_element.attrs['class'] == "steps"
# Verify total number of steps
assert len(ul_element.children) == 24
# Verify first step
first_li = ul_element.children[0]
assert first_li.tag == "li"
assert first_li.attrs['class'] == "step"
assert first_li.children[0] == "start"
# Verify some secondary colored steps (2-4)
for i in range(1, 4):
li = ul_element.children[i]
assert li.tag == "li"
assert "step" in li.attrs['class']
assert "step-secondary" in li.attrs['class']
assert li.children[0] == str(i + 1)
# Verify step 5 (no color)
step_5 = ul_element.children[4]
assert step_5.attrs['class'] == "step"
assert step_5.children[0] == "5"
# Verify accent colored steps (6-7)
for i in range(5, 7):
li = ul_element.children[i]
assert "step" in li.attrs['class']
assert "step-accent" in li.attrs['class']
assert li.children[0] == str(i + 1)
# Verify step 8 (no color)
step_8 = ul_element.children[7]
assert step_8.attrs['class'] == "step"
assert step_8.children[0] == "8"
# Verify error colored steps (9-10)
for i in range(8, 10):
li = ul_element.children[i]
assert "step" in li.attrs['class']
assert "step-error" in li.attrs['class']
assert li.children[0] == str(i + 1)
# Verify steps 11-12 (no color)
for i in range(10, 12):
li = ul_element.children[i]
assert li.attrs['class'] == "step"
assert li.children[0] == str(i + 1)
# Verify warning colored steps (13-14)
for i in range(12, 14):
li = ul_element.children[i]
assert "step" in li.attrs['class']
assert "step-warning" in li.attrs['class']
assert li.children[0] == str(i + 1)
# Verify step 15 (no color)
step_15 = ul_element.children[14]
assert step_15.attrs['class'] == "step"
assert step_15.children[0] == "15"
# Verify neutral colored steps (16-23)
for i in range(15, 23):
li = ul_element.children[i]
assert "step" in li.attrs['class']
assert "step-neutral" in li.attrs['class']
assert li.children[0] == str(i + 1)
# Verify last step
last_li = ul_element.children[23]
assert last_li.tag == "li"
assert "step" in last_li.attrs['class']
assert "step-neutral" in last_li.attrs['class']
assert last_li.children[0] == "end"
return scrollable_steps
# Run the tests
test_steps_with_scrollable_wrapper_fasthtml_examples()