#!/usr/bin/env bash # Component/Page/Service generator script for justfile set -euo pipefail NAME="$1" TYPE="$2" echo "🛠️ Creating new ${TYPE}: ${NAME}" case "${TYPE}" in "component"|"comp") mkdir -p "crates/client/src/components" NAME_KEBAB=$(echo "${NAME}" | tr '[:upper:]' '[:lower:]' | tr '_' '-') cat > "crates/client/src/components/${NAME}.rs" << EOF use leptos::*; #[component] pub fn ${NAME}() -> impl IntoView { view! {

"${NAME}"

"New component created by Claude Code"

} } EOF echo "✅ Component created: crates/client/src/components/${NAME}.rs" ;; "page") mkdir -p "crates/client/src/pages" NAME_KEBAB=$(echo "${NAME}" | tr '[:upper:]' '[:lower:]' | tr '_' '-') cat > "crates/client/src/pages/${NAME}.rs" << EOF use leptos::*; use leptos_meta::*; #[component] pub fn ${NAME}() -> impl IntoView { view! { <div class="page-${NAME_KEBAB}"> <h1>"${NAME}"</h1> <p>"New page created by Claude Code"</p> </div> } } EOF echo "✅ Page created: crates/client/src/pages/${NAME}.rs" ;; "service"|"srv") mkdir -p "crates/server/src/services" cat > "crates/server/src/services/${NAME}.rs" << EOF use anyhow::Result; pub struct ${NAME}Service { // Add service fields here } impl ${NAME}Service { pub fn new() -> Self { Self { // Initialize service } } pub async fn example_method(&self) -> Result<String> { Ok("${NAME} service response".to_string()) } } EOF echo "✅ Service created: crates/server/src/services/${NAME}.rs" ;; *) echo "❌ Unknown component type: ${TYPE}" echo "Available types: component, page, service" exit 1 ;; esac