def test_hero_with_form_fasthtml_examples():
"""Test hero with form example from daisyUI v5 documentation."""
from fasthtml.common import Div, H1, P, Button, Input, Label, Fieldset, A
from cjm_fasthtml_tailwind.utilities.sizing import min_h, max_w, w
from cjm_fasthtml_tailwind.utilities.typography import font_size, font_weight, font_family, text_color, text_align
from cjm_fasthtml_tailwind.utilities.spacing import p, m
from cjm_fasthtml_tailwind.utilities.flexbox_and_grid import flex, shrink
from cjm_fasthtml_tailwind.utilities.effects import shadow
from cjm_fasthtml_daisyui.utilities.semantic_colors import bg_dui
from cjm_fasthtml_daisyui.components.actions.button import btn, btn_colors
from cjm_fasthtml_daisyui.components.data_display.card import card, card_body
from cjm_fasthtml_daisyui.components.data_input.text_input import text_input
from cjm_fasthtml_daisyui.components.data_input.label import label
from cjm_fasthtml_daisyui.components.navigation.link import link, link_styles
from cjm_fasthtml_daisyui.components.data_input.fieldset import fieldset
# Hero with form
hero_with_form = Div(
Div(
Div(
H1("Login now!", cls=combine_classes(font_size._5xl, font_weight.bold)),
P(
"Provident cupiditate voluptatem et in. Quaerat fugiat ut assumenda excepturi exercitationem quasi. In deleniti eaque aut repudiandae et a id nisi.",
cls=str(p.y._6)
),
cls=combine_classes(text_align.center, text_align.left.lg)
),
Div(
Div(
Fieldset(
Label("Email", cls=str(label)),
Input(type="email", placeholder="Email", cls=str(text_input)),
Label("Password", cls=str(label)),
Input(type="password", placeholder="Password", cls=str(text_input)),
Div(
A("Forgot password?", cls=combine_classes(link, link_styles.hover))
),
Button("Login", cls=combine_classes(btn, btn_colors.neutral, m.t._4)),
cls=str(fieldset)
),
cls=str(card_body)
),
cls=combine_classes(card, bg_dui.base_100, w.full, max_w.sm, shrink._0, shadow._2xl)
),
cls=combine_classes(hero_content, flex.col, flex.row_reverse.lg)
),
cls=combine_classes(hero, bg_dui.base_200, min_h.screen)
)
# Verify structure
assert "hero" in hero_with_form.attrs['class']
assert "bg-base-200" in hero_with_form.attrs['class']
assert "min-h-screen" in hero_with_form.attrs['class']
# Verify hero-content
hero_content_div = hero_with_form.children[0]
assert "hero-content" in hero_content_div.attrs['class']
assert "flex-col" in hero_content_div.attrs['class']
assert "lg:flex-row-reverse" in hero_content_div.attrs['class']
# Verify text content div
text_div = hero_content_div.children[0]
assert text_div.tag == "div"
assert "text-center" in text_div.attrs['class']
assert "lg:text-left" in text_div.attrs['class']
# Verify H1
h1_element = text_div.children[0]
assert h1_element.tag == "h1"
assert "text-5xl" in h1_element.attrs['class']
assert "font-bold" in h1_element.attrs['class']
assert h1_element.children[0] == "Login now!"
# Verify P
p_element = text_div.children[1]
assert p_element.tag == "p"
assert "py-6" in p_element.attrs['class']
# Verify card
card_div = hero_content_div.children[1]
assert "card" in card_div.attrs['class']
assert "bg-base-100" in card_div.attrs['class']
assert "w-full" in card_div.attrs['class']
assert "max-w-sm" in card_div.attrs['class']
assert "shrink-0" in card_div.attrs['class']
assert "shadow-2xl" in card_div.attrs['class']
# Verify card body
card_body_div = card_div.children[0]
assert "card-body" in card_body_div.attrs['class']
# Verify fieldset
fieldset_element = card_body_div.children[0]
assert fieldset_element.tag == "fieldset"
assert fieldset_element.attrs['class'] == "fieldset"
# Verify first label and input (Email)
assert fieldset_element.children[0].tag == "label"
assert "label" in fieldset_element.children[0].attrs['class']
assert fieldset_element.children[0].children[0] == "Email"
assert fieldset_element.children[1].tag == "input"
assert fieldset_element.children[1].attrs['type'] == "email"
assert "input" in fieldset_element.children[1].attrs['class']
assert fieldset_element.children[1].attrs['placeholder'] == "Email"
# Verify second label and input (Password)
assert fieldset_element.children[2].tag == "label"
assert "label" in fieldset_element.children[2].attrs['class']
assert fieldset_element.children[2].children[0] == "Password"
assert fieldset_element.children[3].tag == "input"
assert fieldset_element.children[3].attrs['type'] == "password"
assert "input" in fieldset_element.children[3].attrs['class']
assert fieldset_element.children[3].attrs['placeholder'] == "Password"
# Verify forgot password link
link_div = fieldset_element.children[4]
assert link_div.tag == "div"
assert link_div.children[0].tag == "a"
assert "link" in link_div.children[0].attrs['class']
assert "link-hover" in link_div.children[0].attrs['class']
assert link_div.children[0].children[0] == "Forgot password?"
# Verify login button
login_button = fieldset_element.children[5]
assert login_button.tag == "button"
assert "btn" in login_button.attrs['class']
assert "btn-neutral" in login_button.attrs['class']
assert "mt-4" in login_button.attrs['class']
assert login_button.children[0] == "Login"
return Div(hero_with_form)
# Run the tests
test_hero_with_form_fasthtml_examples()