mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-22 22:00:00 +00:00
🎯 Zero Dependencies Achieved: - Remove lucide-leptos from workspace dependencies - Replace all conditional compilation with inline SVG icons - Update examples to use inline SVG instead of external icon library - Add examples to workspace for proper build integration 🔧 Technical Changes: - Remove lucide-leptos from root Cargo.toml workspace dependencies - Update examples Cargo.toml to remove lucide-leptos references - Replace all conditional #[cfg(feature = "lucide-leptos")] with inline SVG - Update button, alert, and card examples with proper SVG icons - Update lazy_loading.rs to reference inline-svg instead of lucide-leptos - Update scripts to reflect resolved compatibility issue ✅ Benefits: - Zero external icon library dependencies - Better performance with inline SVG - Full compatibility with Leptos v0.8 - Consistent approach across all components and examples - No version conflicts or compatibility issues 📦 Status: - Examples build successfully with only warnings (no errors) - All lucide-leptos references removed from source code - Ready for production use with zero dependencies
174 lines
4.3 KiB
Bash
Executable File
174 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 🚀 Comprehensive leptos-shadcn-ui Package Publisher
|
|
# This script updates all packages to v0.3.0 and publishes them to crates.io
|
|
|
|
set -e # Exit on any error
|
|
|
|
echo "🚀 leptos-shadcn-ui Package Publisher v0.3.0"
|
|
echo "📦 Publishing 100% TDD Implementation to crates.io"
|
|
echo ""
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to print colored output
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Step 1: Update all package versions to 0.3.0
|
|
print_status "Step 1: Updating all package versions to 0.3.0..."
|
|
|
|
# Find all Cargo.toml files in packages/leptos
|
|
find packages/leptos -name "Cargo.toml" -type f | while read -r cargo_file; do
|
|
# Check if the file contains version = "0.2.0"
|
|
if grep -q 'version = "0.2.0"' "$cargo_file"; then
|
|
print_status "Updating version in $cargo_file"
|
|
sed -i '' 's/version = "0.2.0"/version = "0.3.0"/' "$cargo_file"
|
|
fi
|
|
done
|
|
|
|
print_success "All package versions updated to 0.3.0"
|
|
|
|
# Step 2: Commit version changes
|
|
print_status "Step 2: Committing version changes..."
|
|
git add packages/leptos/*/Cargo.toml
|
|
git commit -m "🚀 Bump all packages to v0.3.0 for latest TDD implementation" || {
|
|
print_warning "No changes to commit (versions already updated)"
|
|
}
|
|
|
|
# Step 3: Push changes to GitHub
|
|
print_status "Step 3: Pushing changes to GitHub..."
|
|
git push origin main
|
|
|
|
# Step 4: Publish packages
|
|
print_status "Step 4: Publishing packages to crates.io..."
|
|
|
|
# List of packages to publish (in dependency order)
|
|
packages=(
|
|
"button" # Already published
|
|
"input" # Already published
|
|
"card" # Already published
|
|
"checkbox" # Already published
|
|
"label"
|
|
"switch"
|
|
"radio-group"
|
|
"select"
|
|
"textarea"
|
|
"separator"
|
|
"tabs"
|
|
"accordion"
|
|
"dialog"
|
|
"popover"
|
|
"tooltip"
|
|
"alert"
|
|
"badge"
|
|
"skeleton"
|
|
"progress"
|
|
"toast"
|
|
"table"
|
|
"slider"
|
|
"toggle"
|
|
"carousel"
|
|
"form"
|
|
"combobox"
|
|
"command"
|
|
"input-otp"
|
|
"breadcrumb"
|
|
"navigation-menu"
|
|
"context-menu"
|
|
"dropdown-menu"
|
|
"menubar"
|
|
"hover-card"
|
|
"aspect-ratio"
|
|
"collapsible"
|
|
"scroll-area"
|
|
"sheet"
|
|
"drawer"
|
|
"alert-dialog"
|
|
"avatar"
|
|
"calendar"
|
|
"date-picker"
|
|
"pagination"
|
|
"error-boundary"
|
|
"lazy-loading"
|
|
)
|
|
|
|
# Track published packages
|
|
published_count=0
|
|
total_count=${#packages[@]}
|
|
|
|
for package in "${packages[@]}"; do
|
|
package_dir="packages/leptos/$package"
|
|
|
|
if [ ! -d "$package_dir" ]; then
|
|
print_warning "Package directory $package_dir not found, skipping..."
|
|
continue
|
|
fi
|
|
|
|
print_status "Publishing leptos-shadcn-$package v0.3.0... ($((published_count + 1))/$total_count)"
|
|
|
|
cd "$package_dir"
|
|
|
|
# Check if package is already published at 0.3.0
|
|
if cargo search "leptos-shadcn-$package" | grep -q "0.3.0"; then
|
|
print_success "leptos-shadcn-$package v0.3.0 already published, skipping..."
|
|
cd ../../..
|
|
continue
|
|
fi
|
|
|
|
# Publish the package
|
|
if cargo publish; then
|
|
print_success "✅ Successfully published leptos-shadcn-$package v0.3.0"
|
|
published_count=$((published_count + 1))
|
|
else
|
|
print_error "❌ Failed to publish leptos-shadcn-$package"
|
|
cd ../../..
|
|
exit 1
|
|
fi
|
|
|
|
cd ../../..
|
|
|
|
# Wait between publishes to avoid rate limiting
|
|
if [ $published_count -lt $total_count ]; then
|
|
print_status "Waiting 3 seconds before next publish..."
|
|
sleep 3
|
|
fi
|
|
done
|
|
|
|
# Final summary
|
|
echo ""
|
|
echo "🎉 Package Publishing Complete!"
|
|
echo "📊 Summary:"
|
|
echo " - Total packages: $total_count"
|
|
echo " - Successfully published: $published_count"
|
|
echo " - Already published: $((total_count - published_count))"
|
|
echo ""
|
|
echo "🔗 Your packages are now available on crates.io!"
|
|
echo "📚 Developers can now install your 100% TDD implementation:"
|
|
echo ""
|
|
echo " [dependencies]"
|
|
echo " leptos-shadcn-button = \"0.3.0\""
|
|
echo " leptos-shadcn-input = \"0.3.0\""
|
|
echo " leptos-shadcn-card = \"0.3.0\""
|
|
echo " # ... and many more!"
|
|
echo ""
|
|
echo "🏆 Congratulations on publishing your comprehensive TDD implementation!"
|