- {t('cliproxyPage.providers')}
+ {authLoading ? (
+
- {providerSections.map((section) => (
-
-
-
- {t(section.labelKey)}
-
-
- {t(section.hintKey)}
-
-
-
- {section.items.map((status) => (
-
handleSelectProvider(status.provider)}
- />
- ))}
+ ) : (
+
+ {providerSections.map((section) => (
+
+
+
+ {t(section.labelKey)}
+
+ {t(section.hintKey)}
+
+
+ {section.items.map((status) => (
+
handleSelectProvider(status.provider)}
+ />
+ ))}
+
+
+ ))}
+
+ )}
+
+ {/* Variants Section */}
+ {variants.length > 0 && (
+ <>
+
+
+ {t('cliproxyPage.variants')}
+
+
+ {variants.map((variant) => (
+ p.provider === variant.provider)}
+ isSelected={selectedVariant === variant.name}
+ onSelect={() => handleSelectVariant(variant.name)}
+ onDelete={() => deleteMutation.mutate(variant.name)}
+ isDeleting={deleteMutation.isPending}
+ />
))}
- )}
-
- {/* Variants Section */}
- {variants.length > 0 && (
- <>
-
-
- {t('cliproxyPage.variants')}
-
-
- {variants.map((variant) => (
- p.provider === variant.provider)}
- isSelected={selectedVariant === variant.name}
- onSelect={() => handleSelectVariant(variant.name)}
- onDelete={() => deleteMutation.mutate(variant.name)}
- isDeleting={deleteMutation.isPending}
- />
- ))}
-
- >
- )}
-
-
-
- {/* Proxy Status Widget */}
-
+
- {/* Footer Stats */}
-
-
- {t('cliproxyPage.providerCount', { count: providers.length })}
-
-
- {t('cliproxyPage.connectedCount', {
- count: providers.filter((p) => p.authenticated).length,
- })}
-
-
-
+ {/* Proxy Status Widget */}
+
- {/* Right Panel */}
-
- {selectedVariantData && parentAuthForVariant ? (
- <>
-
+
+ {t('cliproxyPage.providerCount', { count: providers.length })}
+
+
+ {t('cliproxyPage.connectedCount', {
+ count: providers.filter((p) => p.authenticated).length,
+ })}
+
+
+
+
+ );
+
+ const detail = (
+
+ {selectedVariantData && parentAuthForVariant ? (
+ <>
+
+ ) : undefined
+ }
+ onAddAccount={() =>
+ setAddAccountProvider({
provider: selectedVariantData.provider,
- })}
- authStatus={parentAuthForVariant}
- catalog={catalogs[selectedVariantData.provider]}
- routing={routingHints[selectedVariantData.provider]}
- logoProvider={selectedVariantData.provider}
- baseProvider={selectedVariantData.provider}
- defaultTarget={selectedVariantData.target}
- isRemoteMode={isRemoteMode}
- port={selectedVariantData.port}
- topNotice={
- showAccountSafetyWarning ? (
-
- ) : undefined
- }
- onAddAccount={() =>
- setAddAccountProvider({
- provider: selectedVariantData.provider,
- displayName: parentAuthForVariant.displayName,
- isFirstAccount: (parentAuthForVariant.accounts?.length || 0) === 0,
- })
- }
- onSetDefault={(accountId) =>
- setDefaultMutation.mutate({
- provider: selectedVariantData.provider,
- accountId,
- })
- }
- onRemoveAccount={(accountId) =>
- removeMutation.mutate({
- provider: selectedVariantData.provider,
- accountId,
- })
- }
- onPauseToggle={(accountId, paused) =>
- handlePauseToggle(selectedVariantData.provider, accountId, paused)
- }
- onSoloMode={(accountId) => handleSoloMode(selectedVariantData.provider, accountId)}
- onBulkPause={(accountIds) =>
- handleBulkPause(selectedVariantData.provider, accountIds)
- }
- onBulkResume={(accountIds) =>
- handleBulkResume(selectedVariantData.provider, accountIds)
- }
- isRemovingAccount={removeMutation.isPending}
- isPausingAccount={pauseMutation.isPending || resumeMutation.isPending}
- isSoloingAccount={soloMutation.isPending}
- isBulkPausing={bulkPauseMutation.isPending}
- isBulkResuming={bulkResumeMutation.isPending}
- />
- >
- ) : selectedStatus ? (
- <>
-
- ) : undefined
- }
- onAddAccount={() =>
- setAddAccountProvider({
- provider: selectedStatus.provider,
- displayName: selectedStatus.displayName,
- isFirstAccount: (selectedStatus.accounts?.length || 0) === 0,
- })
- }
- onSetDefault={(accountId) =>
- setDefaultMutation.mutate({
- provider: selectedStatus.provider,
- accountId,
- })
- }
- onRemoveAccount={(accountId) =>
- removeMutation.mutate({
- provider: selectedStatus.provider,
- accountId,
- })
- }
- onPauseToggle={(accountId, paused) =>
- handlePauseToggle(selectedStatus.provider, accountId, paused)
- }
- onSoloMode={(accountId) => handleSoloMode(selectedStatus.provider, accountId)}
- onBulkPause={(accountIds) => handleBulkPause(selectedStatus.provider, accountIds)}
- onBulkResume={(accountIds) => handleBulkResume(selectedStatus.provider, accountIds)}
- isRemovingAccount={removeMutation.isPending}
- isPausingAccount={pauseMutation.isPending || resumeMutation.isPending}
- isSoloingAccount={soloMutation.isPending}
- isBulkPausing={bulkPauseMutation.isPending}
- isBulkResuming={bulkResumeMutation.isPending}
- />
- >
- ) : (
-
setWizardOpen(true)} />
- )}
-
+ displayName: parentAuthForVariant.displayName,
+ isFirstAccount: (parentAuthForVariant.accounts?.length || 0) === 0,
+ })
+ }
+ onSetDefault={(accountId) =>
+ setDefaultMutation.mutate({
+ provider: selectedVariantData.provider,
+ accountId,
+ })
+ }
+ onRemoveAccount={(accountId) =>
+ removeMutation.mutate({
+ provider: selectedVariantData.provider,
+ accountId,
+ })
+ }
+ onPauseToggle={(accountId, paused) =>
+ handlePauseToggle(selectedVariantData.provider, accountId, paused)
+ }
+ onSoloMode={(accountId) => handleSoloMode(selectedVariantData.provider, accountId)}
+ onBulkPause={(accountIds) => handleBulkPause(selectedVariantData.provider, accountIds)}
+ onBulkResume={(accountIds) =>
+ handleBulkResume(selectedVariantData.provider, accountIds)
+ }
+ isRemovingAccount={removeMutation.isPending}
+ isPausingAccount={pauseMutation.isPending || resumeMutation.isPending}
+ isSoloingAccount={soloMutation.isPending}
+ isBulkPausing={bulkPauseMutation.isPending}
+ isBulkResuming={bulkResumeMutation.isPending}
+ />
+ >
+ ) : selectedStatus ? (
+ <>
+
+ ) : undefined
+ }
+ onAddAccount={() =>
+ setAddAccountProvider({
+ provider: selectedStatus.provider,
+ displayName: selectedStatus.displayName,
+ isFirstAccount: (selectedStatus.accounts?.length || 0) === 0,
+ })
+ }
+ onSetDefault={(accountId) =>
+ setDefaultMutation.mutate({
+ provider: selectedStatus.provider,
+ accountId,
+ })
+ }
+ onRemoveAccount={(accountId) =>
+ removeMutation.mutate({
+ provider: selectedStatus.provider,
+ accountId,
+ })
+ }
+ onPauseToggle={(accountId, paused) =>
+ handlePauseToggle(selectedStatus.provider, accountId, paused)
+ }
+ onSoloMode={(accountId) => handleSoloMode(selectedStatus.provider, accountId)}
+ onBulkPause={(accountIds) => handleBulkPause(selectedStatus.provider, accountIds)}
+ onBulkResume={(accountIds) => handleBulkResume(selectedStatus.provider, accountIds)}
+ isRemovingAccount={removeMutation.isPending}
+ isPausingAccount={pauseMutation.isPending || resumeMutation.isPending}
+ isSoloingAccount={soloMutation.isPending}
+ isBulkPausing={bulkPauseMutation.isPending}
+ isBulkResuming={bulkResumeMutation.isPending}
+ />
+ >
+ ) : (
+
setWizardOpen(true)} />
+ )}
+