import {useState} from 'react' import {Box, Check, Terminal} from 'lucide-react' import amazonLinuxImage from '../../../../OS_img/amazon_Linux.png' import nginxImage from '../../../../OS_img/nginx.svg' import nodeJsImage from '../../../../OS_img/node-js.svg' import ubuntuImage from '../../../../OS_img/Ubuntu_Linux.png' import wordpressImage from '../../../../OS_img/wordpress.svg' import {ServerLaunchProgress} from './ServerLaunchProgress' type Blueprint = { id: string name: string description: string kind: 'app' | 'os' icon?: string available: boolean unavailableReason?: string } const blueprints: Blueprint[] = [ {id: 'nginx', name: 'Nginx', description: 'Nginx web server', kind: 'app', icon: nginxImage, available: true}, {id: 'nodejs', name: 'Node.js', description: 'Node.js current LTS application server', kind: 'app', icon: nodeJsImage, available: true}, {id: 'wordpress', name: 'WordPress', description: 'WordPress application stack with managed MariaDB', kind: 'app', icon: wordpressImage, available: true}, {id: 'ubuntu_22_04', name: 'Ubuntu 22.04 LTS', description: 'Ubuntu Linux', kind: 'os', icon: ubuntuImage, available: true}, {id: 'ubuntu_24_04', name: 'Ubuntu 24.04 LTS', description: 'Ubuntu Linux', kind: 'os', icon: ubuntuImage, available: true}, {id: 'amazon_linux_2023', name: 'Amazon Linux 2023', description: 'Amazon Linux', kind: 'os', icon: amazonLinuxImage, available: true}, ] const plans = [ {id: 'nano_3_0', name: 'Nano', detail: '1 vCPU, 512 MB RAM, 20 GB SSD'}, {id: 'micro_3_0', name: 'Micro', detail: '2 vCPU, 1 GB RAM, 40 GB SSD'}, {id: 'small_3_0', name: 'Small', detail: '2 vCPU, 2 GB RAM, 60 GB SSD'}, {id: 'medium_3_0', name: 'Medium', detail: '2 vCPU, 4 GB RAM, 80 GB SSD'}, ] interface LightsailLaunchPanelProps { isSubmitting: boolean submitError: string | null onCancel: () => void onSubmit: (values: Record) => void } export function LightsailLaunchPanel({isSubmitting, submitError, onCancel, onSubmit}: LightsailLaunchPanelProps) { const [category, setCategory] = useState<'app' | 'os'>('app') const [blueprintId, setBlueprintId] = useState('nginx') const [bundleId, setBundleId] = useState('nano_3_0') const [name, setName] = useState('') const [availabilityZone, setAvailabilityZone] = useState('us-east-1a') const visibleBlueprints = blueprints.filter((blueprint) => blueprint.kind === category) function selectCategory(next: 'app' | 'os') { setCategory(next) setBlueprintId(blueprints.find((blueprint) => blueprint.kind === next && blueprint.available)?.id ?? '') } return

Amazon Lightsail

Create an instance

Choose a blueprint, a plan, and a name. The instance launches locally on TheCloud.

Select a platform

Select a blueprint

{visibleBlueprints.map((blueprint) => )}

Choose your instance plan

{plans.map((plan) => )}
{isSubmitting && } {submitError &&

{submitError}

}
}