{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "settings-menu", "type": "registry:ui", "title": "Settings Menu", "description": "Grouped settings list built on list-item.", "registryDependencies": [ "https://raw.githubusercontent.com/truongnat/rnui/main/registry/dist/nativewind/utils.json", "https://raw.githubusercontent.com/truongnat/rnui/main/registry/dist/nativewind/text.json", "https://raw.githubusercontent.com/truongnat/rnui/main/registry/dist/nativewind/theme.json", "https://raw.githubusercontent.com/truongnat/rnui/main/registry/dist/nativewind/list-item.json" ], "files": [ { "path": "registry/shared/ui/settings-menu.tsx", "type": "registry:ui", "target": "components/ui/settings-menu.tsx", "content": "import type { ReactNode } from 'react';\nimport { View, type ViewProps } from 'react-native';\nimport {\n ListItem,\n ListSectionTitle,\n ListSeparator,\n} from '@/components/ui/list-item';\nimport { cn } from '@/lib/utils';\n\nexport interface SettingsMenuItem {\n key: string;\n title: string;\n subtitle?: string;\n leading?: ReactNode;\n /** Trailing node — value text, switch, badge… Overrides chevron. */\n trailing?: ReactNode;\n onPress?: () => void;\n}\n\nexport interface SettingsMenuSection {\n title?: string;\n items: SettingsMenuItem[];\n}\n\nexport interface SettingsMenuProps extends ViewProps {\n sections: SettingsMenuSection[];\n className?: string;\n}\n\nexport function SettingsMenu({\n sections,\n className,\n ...props\n}: SettingsMenuProps) {\n return (\n \n {sections.map((section, si) => (\n \n {section.title && (\n {section.title}\n )}\n \n {section.items.map((item, ii) => (\n \n \n {ii < section.items.length - 1 && }\n \n ))}\n \n \n ))}\n \n );\n}\n" } ] }