diff --git a/components/ui/input.tsx b/components/ui/input.tsx index ffe15da..2978f8e 100644 --- a/components/ui/input.tsx +++ b/components/ui/input.tsx @@ -1 +1,28 @@ -export { Input, Textarea, type InputProps, type InputAreaProps as TextareaProps } from "@cloudflare/kumo/components/input"; +"use client"; + +import * as React from "react"; +import { + Input as KumoInput, + Textarea as KumoTextarea, + type InputAreaProps as KumoTextareaProps, + type InputProps as KumoInputProps, +} from "@cloudflare/kumo/components/input"; + +import { cn } from "@/lib/utils"; + +export type InputProps = KumoInputProps; +export type TextareaProps = KumoTextareaProps; + +export const Input = React.forwardRef(function Input( + { className, ...props }, + ref, +): React.ReactElement { + return ; +}); + +export const Textarea = React.forwardRef(function Textarea( + { className, ...props }, + ref, +): React.ReactElement { + return ; +}); diff --git a/components/ui/select.tsx b/components/ui/select.tsx index 27fe176..e5596eb 100644 --- a/components/ui/select.tsx +++ b/components/ui/select.tsx @@ -3,6 +3,8 @@ import * as React from "react"; import { Select as KumoSelect } from "@cloudflare/kumo/components/select"; +import { cn } from "@/lib/utils"; + export type SelectOption = { value: string; label: React.ReactNode; @@ -24,6 +26,7 @@ type SelectProps = { }; export function Select({ + className, onValueChange, options, placeholder, @@ -33,6 +36,7 @@ export function Select({ }: SelectProps): React.ReactElement { return ( + className={cn("w-full", className)} defaultValue={defaultValue} onValueChange={(nextValue) => onValueChange?.(String(nextValue))} placeholder={placeholder} diff --git a/modules/settings/components/GlobalSettingsClient.tsx b/modules/settings/components/GlobalSettingsClient.tsx index b792c27..2aafabc 100644 --- a/modules/settings/components/GlobalSettingsClient.tsx +++ b/modules/settings/components/GlobalSettingsClient.tsx @@ -65,29 +65,47 @@ export function GlobalSettingsClient({ settings }: GlobalSettingsClientProps): R 控制全站公开注册能力和 OIDC 登录入口总开关。 - +
+ + 开放公开注册 + 关闭后普通注册不可用;邀请链接仍可使用。 + + } + name="registrationEnabled" + /> +
- +
+ + 启用 OIDC 登录 + 作为平台级总开关,机构级 OIDC 配置仍可单独管理。 + + } + name="oidcEnabled" + /> +
- +
+ + OIDC 自动开户 + 首次 OIDC 登录时按声明信息创建账号,默认进入等待分配。 + + } + name="oidcAutoProvision" + /> +
@@ -101,40 +119,33 @@ export function GlobalSettingsClient({ settings }: GlobalSettingsClientProps): R
- - + +
- +
- - + +
- + {message ? (

diff --git a/modules/settings/components/OrganizationDetailClient.tsx b/modules/settings/components/OrganizationDetailClient.tsx index 4abbc11..1b556e2 100644 --- a/modules/settings/components/OrganizationDetailClient.tsx +++ b/modules/settings/components/OrganizationDetailClient.tsx @@ -71,73 +71,86 @@ export function OrganizationDetailClient({

-