feat(electrobun): project wizard phases 1-5 (WIP)

- sanitize.ts: input sanitization (trim, control chars, path traversal)
- provider-scanner.ts: detect Claude/Codex/Ollama/Gemini availability
- model-fetcher.ts: live model lists from 4 provider APIs
- ModelConfigPanel.svelte: per-provider config (thinking, effort, sandbox, temperature)
- WizardStep1-3.svelte: split wizard into composable steps
- CustomDropdown/Checkbox/Radio: themed UI components
- provider-handlers.ts: provider.scan + provider.models RPC
- Wire providers into wizard step 3 (live detection + model lists)
- Replace native selects in 5 settings panels with CustomDropdown
This commit is contained in:
Hibryda 2026-03-23 13:05:07 +01:00
parent b7fc3a0f9b
commit d4014a193d
25 changed files with 2112 additions and 759 deletions

View file

@ -0,0 +1,52 @@
/**
* Icon and color data for the Project Wizard.
*
* Lucide icon names mapped to display labels.
* Catppuccin accent color list for project color selection.
*/
/** Lucide icon choices for projects. Key = Lucide component name. */
export const PROJECT_ICONS: Array<{ name: string; label: string }> = [
{ name: 'Terminal', label: 'Terminal' },
{ name: 'Server', label: 'Server' },
{ name: 'Globe', label: 'Web' },
{ name: 'Code', label: 'Code' },
{ name: 'Database', label: 'Database' },
{ name: 'Cpu', label: 'CPU' },
{ name: 'Zap', label: 'Zap' },
{ name: 'Shield', label: 'Shield' },
{ name: 'Rocket', label: 'Rocket' },
{ name: 'Bug', label: 'Bug' },
{ name: 'Puzzle', label: 'Plugin' },
{ name: 'Box', label: 'Package' },
{ name: 'Layers', label: 'Layers' },
{ name: 'GitBranch', label: 'Branch' },
{ name: 'Wifi', label: 'Network' },
{ name: 'Lock', label: 'Security' },
{ name: 'FlaskConical', label: 'Lab' },
{ name: 'Sparkles', label: 'AI' },
{ name: 'FileCode', label: 'Script' },
{ name: 'Wrench', label: 'Tools' },
{ name: 'Folder', label: 'Folder' },
{ name: 'Bot', label: 'Bot' },
{ name: 'Cloud', label: 'Cloud' },
{ name: 'HardDrive', label: 'Storage' },
];
/** Catppuccin accent colors for project color selection. */
export const ACCENT_COLORS: Array<{ name: string; var: string }> = [
{ name: 'Rosewater', var: '--ctp-rosewater' },
{ name: 'Flamingo', var: '--ctp-flamingo' },
{ name: 'Pink', var: '--ctp-pink' },
{ name: 'Mauve', var: '--ctp-mauve' },
{ name: 'Red', var: '--ctp-red' },
{ name: 'Maroon', var: '--ctp-maroon' },
{ name: 'Peach', var: '--ctp-peach' },
{ name: 'Yellow', var: '--ctp-yellow' },
{ name: 'Green', var: '--ctp-green' },
{ name: 'Teal', var: '--ctp-teal' },
{ name: 'Sky', var: '--ctp-sky' },
{ name: 'Sapphire', var: '--ctp-sapphire' },
{ name: 'Blue', var: '--ctp-blue' },
{ name: 'Lavender', var: '--ctp-lavender' },
];