Comparing old include method vs new cotton component method for Button, Input, and Card components
Test 1: All Variants (Default Size)
Default Variant
Destructive Variant
Outline Variant
Secondary Variant
Ghost Variant
Link Variant
Test 2: All Sizes (Default Variant)
Default Size
Small Size
Large Size
Icon Size
Test 6: Complex Combinations
Destructive + Large + Icon + HTMX
Outline + Small + Right Icon + Custom Attributes
Test 7: Legacy Underscore Props vs Modern Hyphenated Attributes
This test verifies backward compatibility - cotton components should accept both legacy underscore props (hx_get, x_data) and modern hyphenated attributes (hx-get, x-data).
Legacy hx_get vs Modern hx-get
Legacy hx_post vs Modern hx-post
Legacy x_data vs Modern x-data
Legacy onclick vs Modern onclick
Legacy type vs Modern type
Legacy disabled vs Modern disabled
Complex Legacy Props Combination
Alpine.js x_on Special Case
Test 8: Input Component Comparison
Basic Text Input
Email Input with Value
Password Input
Number Input with Min/Max
Disabled Input
Readonly Input
Input with Custom Class
Input with HTMX Attributes
Input with Alpine.js
Test 8: Card Component Comparison
Basic Card with Title
Card with Title and Description
Card with Custom Header Content
Card with Body Content (instead of slot)
Card with Footer
Complete Card (All Sections)
Card with Custom Classes
Content-Only Card (No Header)