diff --git a/apps/web/src/components/settings/ProviderSettingsPanel.tsx b/apps/web/src/components/settings/ProviderSettingsPanel.tsx index 6f46870ed76d51646d77a48c5b60502f9a4b28e2..c56e5e0b5fcf4969d8b40b58778067abb0f9bc35 100644 --- a/apps/web/src/components/settings/ProviderSettingsPanel.tsx +++ b/apps/web/src/components/settings/ProviderSettingsPanel.tsx @@ -1154,6 +1154,25 @@ export function EnvironmentProviderSettings({ + setIsAddInstanceDialogOpen(true)} + aria-label="Add provider" + > + + + } + /> + Add provider + + ) : null + } headerAction={
@@ -1181,23 +1200,6 @@ export function EnvironmentProviderSettings({ /> Refresh provider status - {!readOnly ? ( - - setIsAddInstanceDialogOpen(true)} - aria-label="Add provider" - > - - - } - /> - Add provider - - ) : null}
} > @@ -1227,6 +1229,16 @@ export function EnvironmentProviderSettings({ >
{rows.map((row) => renderProviderInstance(row, "list"))} + {!readOnly ? ( + + ) : null}
diff --git a/apps/web/src/components/settings/settingsLayout.tsx b/apps/web/src/components/settings/settingsLayout.tsx index c455792eb9420813c0671c2fda1e981c8ceb92a1..99a47cb5aa6520dedec4e39f1de57a74af1cd5c9 100644 --- a/apps/web/src/components/settings/settingsLayout.tsx +++ b/apps/web/src/components/settings/settingsLayout.tsx @@ -176,6 +176,7 @@ export function SettingsSection({ title, hideTitle = false, icon, + titleAction, headerAction, variant = "grouped", children, @@ -185,6 +186,8 @@ export function SettingsSection({ title: string; hideTitle?: boolean; icon?: ReactNode; + /** Small control shown right after the title, such as an add button. */ + titleAction?: ReactNode; headerAction?: ReactNode; variant?: "grouped" | "plain"; children: ReactNode; @@ -205,11 +208,12 @@ export function SettingsSection({ data-settings-scroll-target className="flex min-h-7 items-start justify-between gap-4 px-3 sm:px-4" > -
+

{icon} {title}

+ {titleAction}
{headerAction}