mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-23 06:10:01 +00:00
- Migrate all 46 components to Leptos v0.8 attribute system - Fix Signal trait bound issues by wrapping signal access in move || closures - Update attribute syntax: class=computed_class -> class=move || computed_class.get() - Fix date-picker component signal handling for Calendar component - All components now compile successfully with Leptos v0.8 - Create automated migration script for future reference Migration Summary: - Button, Input, Label: Manual migration completed - 42 additional components: Automated migration via script - Date-picker: Special handling for Signal<Vec<CalendarDate>> requirements - All components tested and verified to compile Breaking Changes: - Attribute syntax changes require updating user code - Signal access patterns updated for v0.8 compatibility Ready for v0.6.0 release with full Leptos v0.8 support
124 lines
3.9 KiB
Bash
Executable File
124 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🚀 Leptos v0.8 Migration Script
|
|
# Automatically migrates all leptos-shadcn-ui components to Leptos v0.8 compatibility
|
|
|
|
set -e
|
|
|
|
echo "🚀 Starting Leptos v0.8 Migration for all components..."
|
|
|
|
# Define the components to migrate
|
|
COMPONENTS=(
|
|
"checkbox"
|
|
"switch"
|
|
"radio-group"
|
|
"select"
|
|
"textarea"
|
|
"card"
|
|
"separator"
|
|
"tabs"
|
|
"accordion"
|
|
"dialog"
|
|
"popover"
|
|
"tooltip"
|
|
"alert"
|
|
"badge"
|
|
"skeleton"
|
|
"progress"
|
|
"toast"
|
|
"table"
|
|
"calendar"
|
|
"date-picker"
|
|
"pagination"
|
|
"slider"
|
|
"toggle"
|
|
"carousel"
|
|
"form"
|
|
"combobox"
|
|
"command"
|
|
"input-otp"
|
|
"breadcrumb"
|
|
"navigation-menu"
|
|
"context-menu"
|
|
"dropdown-menu"
|
|
"menubar"
|
|
"hover-card"
|
|
"alert-dialog"
|
|
"sheet"
|
|
"drawer"
|
|
"scroll-area"
|
|
"aspect-ratio"
|
|
"resizable"
|
|
"avatar"
|
|
"collapsible"
|
|
)
|
|
|
|
# Function to migrate a component
|
|
migrate_component() {
|
|
local component=$1
|
|
local component_path="packages/leptos/$component"
|
|
|
|
echo "📦 Migrating $component..."
|
|
|
|
if [ ! -d "$component_path" ]; then
|
|
echo "⚠️ Component $component not found, skipping..."
|
|
return
|
|
fi
|
|
|
|
# Migrate default.rs
|
|
if [ -f "$component_path/src/default.rs" ]; then
|
|
echo " 🔧 Updating default.rs..."
|
|
sed -i '' 's/class=computed_class/class=move || computed_class.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/id=id\.get()/id=move || id.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/disabled=disabled/disabled=move || disabled.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/value=value\.get()/value=move || value.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/placeholder=placeholder\.get()/placeholder=move || placeholder.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/input_type=input_type\.get()/input_type=move || input_type.get()/g' "$component_path/src/default.rs"
|
|
sed -i '' 's/r#type=input_type\.get()/r#type=move || input_type.get()/g' "$component_path/src/default.rs"
|
|
fi
|
|
|
|
# Migrate new_york.rs
|
|
if [ -f "$component_path/src/new_york.rs" ]; then
|
|
echo " 🔧 Updating new_york.rs..."
|
|
sed -i '' 's/class=computed_class/class=move || computed_class.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/id=id\.get()/id=move || id.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/disabled=disabled/disabled=move || disabled.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/value=value\.get()/value=move || value.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/placeholder=placeholder\.get()/placeholder=move || placeholder.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/input_type=input_type\.get()/input_type=move || input_type.get()/g' "$component_path/src/new_york.rs"
|
|
sed -i '' 's/r#type=input_type\.get()/r#type=move || input_type.get()/g' "$component_path/src/new_york.rs"
|
|
fi
|
|
|
|
# Test the component
|
|
echo " 🧪 Testing $component..."
|
|
if cargo check -p "leptos-shadcn-$component" > /dev/null 2>&1; then
|
|
echo " ✅ $component migrated successfully!"
|
|
else
|
|
echo " ❌ $component failed to compile, manual review needed"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Migrate all components
|
|
echo "📋 Migrating ${#COMPONENTS[@]} components..."
|
|
|
|
for component in "${COMPONENTS[@]}"; do
|
|
migrate_component "$component"
|
|
done
|
|
|
|
echo ""
|
|
echo "🎉 Migration complete!"
|
|
echo ""
|
|
echo "📊 Summary:"
|
|
echo " - Components migrated: ${#COMPONENTS[@]}"
|
|
echo " - Status: All components should now be compatible with Leptos v0.8"
|
|
echo ""
|
|
echo "🧪 Next steps:"
|
|
echo " 1. Run 'cargo test --workspace' to verify all tests pass"
|
|
echo " 2. Run 'cargo check --workspace' to verify all components compile"
|
|
echo " 3. Test components in a real application"
|
|
echo " 4. Update version to v0.6.0"
|
|
echo " 5. Publish to crates.io"
|
|
echo ""
|
|
echo "🚀 Ready for Leptos v0.8!"
|