{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "tetra-ui",
  "homepage": "https://tetra-ui.com",
  "items": [
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "A vertically stacked set of interactive headings that reveal associated content sections.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": ["@tetra-ui/icons", "@tetra-ui/slot"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/accordion.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "action-input",
      "type": "registry:ui",
      "title": "Action Input",
      "description": "A component that allows a user to trigger an action and displays a value attached to the action.",
      "registryDependencies": ["@tetra-ui/icons", "@tetra-ui/input"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/action-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "Displays a badge.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A component to display a button and allows a user to trigger an action.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "Displays a card with a header, content, and footer.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "A control that allows users to toggle between checked and unchecked states.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": ["@tetra-ui/icons", "@tetra-ui/input"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "choicebox",
      "type": "registry:ui",
      "title": "Choicebox",
      "description": "A group of selectable cards for single or multiple choice.",
      "registryDependencies": [
        "@tetra-ui/checkbox",
        "@tetra-ui/input",
        "@tetra-ui/radio",
        "@tetra-ui/stack"
      ],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/choicebox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "chip",
      "type": "registry:ui",
      "title": "Chip",
      "description": "Displays a compact, rounded chip element.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/chip.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "empty",
      "type": "registry:ui",
      "title": "Empty",
      "description": "Displays an empty state.",
      "registryDependencies": ["@tetra-ui/text"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/empty.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "form",
      "type": "registry:ui",
      "title": "Form",
      "description": "Components and utilities that help you compose forms with react-hook-form.",
      "registryDependencies": ["@tetra-ui/label"],
      "dependencies": ["react-hook-form"],
      "devDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/form.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "heading",
      "type": "registry:ui",
      "title": "Heading",
      "description": "A component to display headings.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/heading.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "icons",
      "type": "registry:ui",
      "title": "Icons",
      "description": "Icon components styled with Tailwind classes for React Native.",
      "dependencies": ["react-native-svg"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/icons/index.ts",
          "type": "registry:component"
        },
        {
          "path": "../../packages/tetra-ui/src/components/icons/styled-icon.tsx",
          "type": "registry:component"
        }
      ]
    },
    {
      "name": "inline-list",
      "type": "registry:ui",
      "title": "Inline List",
      "description": "A grouped list section for settings-style rows with flexible leading and trailing addons.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/inline-list.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A core component that allows users to enter text.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": ["@tetra-ui/button"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "label",
      "type": "registry:ui",
      "title": "Label",
      "description": "A label component used to accompany form inputs.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/label.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "menu",
      "type": "registry:ui",
      "title": "Menu",
      "description": "A composable native menu built on Expo UI, with support for groups, separators, and nested submenus.",
      "dependencies": ["@expo/ui", "@expo/material-symbols"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/menu/index.ts",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/menu/menu.types.ts",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/menu/menu.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/menu/menu.ios.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/menu/menu.android.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "bottom-sheet",
      "type": "registry:ui",
      "title": "Bottom Sheet",
      "description": "Interactive bottom sheet built on Expo UI with native snap points, gestures, and keyboard support.",
      "dependencies": [
        "@expo/ui",
        "react-native-reanimated",
        "react-native-keyboard-controller",
        "react-native-safe-area-context"
      ],
      "registryDependencies": [
        "@tetra-ui/button",
        "@tetra-ui/icons",
        "@tetra-ui/slot"
      ],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/index.ts",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/types.ts",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/bottom-sheet-context.ts",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/bottom-sheet-common.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/bottom-sheet.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/bottom-sheet.ios.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/components/bottom-sheet/bottom-sheet.android.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "native-sheet",
      "type": "registry:ui",
      "title": "Native Sheet",
      "description": "A sheet component that can be used to display content in a modal.",
      "dependencies": [
        "react-native-reanimated",
        "react-native-safe-area-context",
        "react-native-worklets"
      ],
      "registryDependencies": [
        "@tetra-ui/button",
        "@tetra-ui/icons",
        "@tetra-ui/slot"
      ],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/native-sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "otp-input",
      "type": "registry:ui",
      "title": "OTP Input",
      "description": "A component for entering one-time passwords with individual character slots.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": ["@tetra-ui/input", "@tetra-ui/text"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/otp-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "password-input",
      "type": "registry:ui",
      "title": "Password Input",
      "description": "An input component that allows users to enter a password.",
      "registryDependencies": [
        "@tetra-ui/icons",
        "@tetra-ui/input",
        "@tetra-ui/text-input"
      ],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/password-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "Displays content in a portal relative to the triggering button element.",
      "dependencies": [
        "react-native-reanimated",
        "react-native-safe-area-context"
      ],
      "registryDependencies": ["@tetra-ui/portal", "@tetra-ui/slot"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/popover.tsx",
          "type": "registry:ui"
        },
        {
          "path": "../../packages/tetra-ui/src/hooks/use-relative-position.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "Displays an indicator showing the completion progress of a task.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": ["@tetra-ui/text"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/progress.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio",
      "type": "registry:ui",
      "title": "Radio",
      "description": "A control that indicates a selected option within a group.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/radio.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "portal",
      "type": "registry:ui",
      "title": "Portal",
      "description": "Renders children into a different part of the app.",
      "dependencies": ["react-native-screens"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/portal.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "search-input",
      "type": "registry:ui",
      "title": "Search Input",
      "description": "An input component that allows users to search for content.",
      "registryDependencies": ["@tetra-ui/icons", "@tetra-ui/input"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/search-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A component that allows users to select a value from a list of options.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": [
        "@tetra-ui/action-input",
        "@tetra-ui/bottom-sheet",
        "@tetra-ui/icons",
        "@tetra-ui/input",
        "@tetra-ui/popover",
        "@tetra-ui/slot",
        "@tetra-ui/text"
      ],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "Divides content with a horizontal or vertical line.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "A component to display placeholder content while in a loading state.",
      "dependencies": ["react-native-reanimated"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A control for selecting a value from a continuous or stepped range.",
      "dependencies": ["@expo/ui"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/slider.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "slot",
      "type": "registry:ui",
      "title": "Slot",
      "description": "A utility component that allows merging props onto an optional child component.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/slot.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "stack",
      "type": "registry:ui",
      "title": "Stack",
      "description": "A layout component that stacks children horizontally or vertically with consistent spacing.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/stack.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "A control that allows users to toggle between checked and unchecked states.",
      "dependencies": ["@expo/ui"],
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "text",
      "type": "registry:ui",
      "title": "Text",
      "description": "A lightweight wrapper around the React Native Text component to provide default styles.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/text.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "text-input",
      "type": "registry:ui",
      "title": "TextInput",
      "description": "A component that allows users to enter text.",
      "registryDependencies": ["@tetra-ui/input"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/text-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea-input",
      "type": "registry:ui",
      "title": "Textarea Input",
      "description": "A component that allows users to enter larger text.",
      "registryDependencies": [],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/textarea-input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "toast",
      "type": "registry:ui",
      "title": "Toast",
      "description": "An opinionated toast component for React Native.",
      "dependencies": [
        "sonner-native",
        "react-native-gesture-handler",
        "react-native-reanimated",
        "react-native-safe-area-context",
        "react-native-screens",
        "react-native-svg",
        "react-native-worklets"
      ],
      "registryDependencies": ["@tetra-ui/icons", "@tetra-ui/text"],
      "files": [
        {
          "path": "../../packages/tetra-ui/src/components/toast.tsx",
          "type": "registry:ui"
        }
      ]
    }
  ]
}
