currencyService = $currencyService; } public function mount(): void { $this->selected = $this->currencyService->getCurrentCurrency(); } #[Computed] public function currencies(): array { $supported = $this->currencyService->getSupportedCurrencies(); $baseCurrency = $this->currencyService->getBaseCurrency(); $currencies = []; foreach ($supported as $code => $config) { $currencies[$code] = [ 'code' => $code, 'name' => $config['name'], 'symbol' => $config['symbol'], 'flag' => $config['flag'] ?? strtolower(substr($code, 0, 2)), 'isBase' => $code === $baseCurrency, ]; } return $currencies; } #[Computed] public function currentCurrency(): array { return $this->currencies[$this->selected] ?? [ 'code' => $this->selected, 'name' => $this->selected, 'symbol' => $this->selected, 'flag' => '', 'isBase' => false, ]; } /** * Select a currency. */ public function selectCurrency(string $currency): void { $currency = strtoupper($currency); if (! $this->currencyService->isSupported($currency)) { return; } $this->selected = $currency; $this->currencyService->setCurrentCurrency($currency); // Emit event for parent components $this->dispatch('currency-changed', currency: $currency); } public function render() { return view('commerce::web.components.currency-selector'); } }