import * as React from "react" import { Tabs as TabsPrimitive, Dialog as DialogPrimitive } from "radix-ui" import { cn } from "@/lib/utils" import { DialogContent } from "./dialog" /** * Sample Usage: * * * * ...your content... * * * setOpen(false)} defaultValue="preferences"> * * * } label="Preferences" value="preferences" /> * } label="Matching Rules" value="rules" /> * * * } label="Bank Accounts" value="bank-accounts" /> * } label="Masters" value="masters" /> * * * * * * * * * * * */ type SettingsDialogContextValue = { onClose?: VoidFunction } const SettingsDialogContext = React.createContext({}) /** * Exposes `onClose` to descendant panels so they can dismiss the dialog after * a successful save without prop-drilling. */ export const useSettingsDialog = () => React.useContext(SettingsDialogContext) type SettingsDialogProps = Omit< React.ComponentProps, "orientation" > & { onClose?: VoidFunction contentClassName?: string } function SettingsDialog({ children, className, contentClassName, onClose, ...props }: SettingsDialogProps) { const contextValue = React.useMemo(() => ({ onClose }), [onClose]) return ( {children} ) } function SettingsTabs({ className, ...props }: React.ComponentProps) { return ( ) } type SettingsTabGroupProps = React.ComponentProps<"div"> & { header?: React.ReactNode } function SettingsTabGroup({ children, header, className, ...props }: SettingsTabGroupProps) { return (
{header && (
{header}
)}
) } type SettingsTabItemProps = React.ComponentProps & { icon?: React.ReactNode label: React.ReactNode } function SettingsTabItem({ icon, label, className, ...props }: SettingsTabItemProps) { return (
{icon && (
{icon}
)} {label}
) } function SettingsPanels({ className, ...props }: React.ComponentProps<"div">) { return (
) } function SettingsPanel({ className, ...props }: React.ComponentProps) { return ( ) } /** * Usage: * * }> * * Settings * Settings description * * */ function SettingsPanelHeader({ className, children, actions, ...props }: React.ComponentProps<"div"> & { actions?: React.ReactNode }) { return (
{children}
{actions}
) } function SettingsPanelTitle({ className, ...props }: React.ComponentProps) { return ( ) } function SettingsPanelDescription({ className, ...props }: React.ComponentProps) { return ( ) } function SettingsPanelContent({ className, ...props }: React.ComponentProps<"div">) { return (
) } export { SettingsDialog, SettingsTabs, SettingsTabGroup, SettingsTabItem, SettingsPanels, SettingsPanel, SettingsPanelHeader, SettingsPanelTitle, SettingsPanelDescription, SettingsPanelContent }