/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import type { ComponentProps, ReactNode } from 'react' import { cn } from '@/lib/utils' import { FormItem } from '@/components/ui/form' import { Label } from '@/components/ui/label' import { Switch } from '@/components/ui/switch' type SettingsFormGridProps = { children: ReactNode className?: string } type SettingsFormGridItemProps = SettingsFormGridProps & { span?: 'default' | 'full' } type SettingsSwitchItemProps = ComponentProps type SettingsSwitchRowProps = ComponentProps<'div'> type SettingsControlGroupProps = ComponentProps<'div'> type SettingsControlChildrenProps = ComponentProps<'div'> type SettingsSwitchFieldProps = SettingsSwitchRowProps & { checked: boolean onCheckedChange: (checked: boolean) => void label: ReactNode description?: ReactNode disabled?: boolean } const settingsSwitchRowClassName = 'flex min-w-0 flex-row items-center justify-between gap-4 border-b py-2.5 last:border-b-0' export function SettingsFormGrid(props: SettingsFormGridProps) { return (
{props.children}
) } export function SettingsFormGridItem(props: SettingsFormGridItemProps) { return (
{props.children}
) } export function SettingsSwitchItem({ className, ...props }: SettingsSwitchItemProps) { return ( ) } export function SettingsSwitchRow({ className, ...props }: SettingsSwitchRowProps) { return (
) } export function SettingsSwitchField({ checked, onCheckedChange, label, description, disabled, className, ...props }: SettingsSwitchFieldProps) { return ( {description ? (

{description}

) : null}
) } export function SettingsSwitchContent(props: SettingsFormGridProps) { return (
{props.children}
) } export function SettingsControlGroup({ className, ...props }: SettingsControlGroupProps) { return (
) } export function SettingsControlChildren({ className, ...props }: SettingsControlChildrenProps) { return (
) } export function SettingsForm({ className, ...props }: ComponentProps<'form'>) { return (
*:not([data-slot=form-item])]:col-span-2', 'lg:[&>[data-settings-form-span=full]]:col-span-2', 'lg:[&>[data-slot=alert]]:col-span-2', '[&>[data-slot=form-item]]:min-w-0', 'lg:[&>[data-slot=form-item]:has(textarea)]:col-span-2', 'lg:[&>[data-slot=form-item]:has([data-slot=switch])]:col-span-2', className )} {...props} /> ) }