"use client"; /* * Documentation: * Settings Page — https://app.subframe.com/f023064a5ca0/library?component=Settings+Page_53f07300-26e0-4199-9638-0ee2178f4587 */ import React from "react"; import * as SubframeUtils from "../../utils"; export interface SettingRowProps extends React.HTMLAttributes { label?: React.ReactNode; helpText?: React.ReactNode; select?: React.ReactNode; className?: string; } const SettingRow = React.forwardRef( function SettingRow( { label, helpText, select, className, ...otherProps }: SettingRowProps, ref ) { return (
{label ? ( {label} ) : null} {helpText ? ( {helpText} ) : null}
{select ? (
{select}
) : null}
); } ); export interface SwitchSettingProps extends React.HTMLAttributes { label?: React.ReactNode; description?: React.ReactNode; _switch?: React.ReactNode; className?: string; } const SwitchSetting = React.forwardRef( function SwitchSetting( { label, description, _switch, className, ...otherProps }: SwitchSettingProps, ref ) { return (
{label ? ( {label} ) : null}
{description ? ( {description} ) : null}
{_switch ? (
{_switch}
) : null}
); } ); export interface SectionHeaderProps extends Omit, "title"> { title?: React.ReactNode; description?: React.ReactNode; className?: string; } const SectionHeader = React.forwardRef( function SectionHeader( { title, description, className, ...otherProps }: SectionHeaderProps, ref ) { return (
{title ? ( {title} ) : null} {description ? ( {description} ) : null}
); } ); export interface NeutralCardProps extends React.HTMLAttributes { children?: React.ReactNode; className?: string; } const NeutralCard = React.forwardRef( function NeutralCard( { children, className, ...otherProps }: NeutralCardProps, ref ) { return (
{children ? (
{children}
) : null}
); } ); export interface DividerProps extends React.HTMLAttributes { className?: string; } const Divider = React.forwardRef(function Divider( { className, ...otherProps }: DividerProps, ref ) { return (
); }); export interface MultiColumnLayoutProps extends React.HTMLAttributes { colums?: React.ReactNode; className?: string; } const MultiColumnLayout = React.forwardRef< HTMLDivElement, MultiColumnLayoutProps >(function MultiColumnLayout( { colums, className, ...otherProps }: MultiColumnLayoutProps, ref ) { return (
{colums ? (
{colums}
) : null}
); }); export interface SettingsPageRootProps extends React.HTMLAttributes { pageTitle?: React.ReactNode; pageDescription?: React.ReactNode; tabs?: React.ReactNode; children?: React.ReactNode; className?: string; } const SettingsPageRoot = React.forwardRef< HTMLDivElement, SettingsPageRootProps >(function SettingsPageRoot( { pageTitle, pageDescription, tabs, children, className, ...otherProps }: SettingsPageRootProps, ref ) { return (
{tabs ? (
{tabs}
) : null}
{pageTitle ? ( {pageTitle} ) : null} {pageDescription ? ( {pageDescription} ) : null}
{children ? (
{children}
) : null}
); }); export const SettingsPage = Object.assign(SettingsPageRoot, { SettingRow, SwitchSetting, SectionHeader, NeutralCard, Divider, MultiColumnLayout, });