+ Bringing{' '}
+
+ shadcn/ui
+ {' '}
+ to React Native. Beautifully crafted components with Nativewind, open source, and{' '}
+ almost as easy to use.
+
+
+
+
+
+
+ {/* */}
+ {/* */}
+
+
+ );
+}
diff --git a/apps/docs/app/api/search/route.ts b/apps/docs/app/api/search/route.ts
new file mode 100644
index 00000000..0460493d
--- /dev/null
+++ b/apps/docs/app/api/search/route.ts
@@ -0,0 +1,4 @@
+import { source } from '@docs/lib/source';
+import { createFromSource } from 'fumadocs-core/search/server';
+
+export const { GET } = createFromSource(source);
diff --git a/apps/docs/app/docs/[[...slug]]/page.tsx b/apps/docs/app/docs/[[...slug]]/page.tsx
new file mode 100644
index 00000000..ed82edf7
--- /dev/null
+++ b/apps/docs/app/docs/[[...slug]]/page.tsx
@@ -0,0 +1,217 @@
+import { Button } from '@docs/components/ui/button';
+import { source } from '@docs/lib/source';
+import { cn } from '@docs/lib/utils';
+import { findNeighbour } from 'fumadocs-core/server';
+import { CodeBlock, Pre } from 'fumadocs-ui/components/codeblock';
+import defaultMdxComponents from 'fumadocs-ui/mdx';
+import { DocsBody, DocsDescription, DocsPage, DocsTitle } from 'fumadocs-ui/page';
+import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';
+import Link from 'next/link';
+import { notFound } from 'next/navigation';
+
+export default async function Page(props: { params: Promise<{ slug?: string[] }> }) {
+ const params = await props.params;
+ const page = source.getPage(params.slug);
+ if (!page) notFound();
+
+ const MDX = page.data.body;
+
+ return (
+ : null,
+ }}
+ footer={{
+ component: ,
+ }}>
+
+
+ The React Native Reusables App (“the App”) is an interactive developer tool that allows
+ users to explore, preview, and interact with a wide range of UI components and blocks
+ provided by the React Native Reusables project. It is designed for developers and designers
+ who want to evaluate, learn from, and integrate these components into their own
+ applications.
+
+
+
1. Information We Collect
+
+ We do not collect, store, or share any personal data. At this time, the App does not require
+ authentication and does not track user behavior, usage statistics, or analytics data.
+
+
+
2. Authentication
+
+ No authentication mechanisms are currently implemented. If authentication is added in the
+ future, this Privacy Policy will be updated to reflect that change.
+
+
+
3. Data Usage and Sharing
+
Since we do not collect any data, we do not share any data with third parties.
+
+
4. Changes to This Policy
+
+ We may update this Privacy Policy if features change. If we do, we will revise the
+ “Effective Date” at the top of this page. For any significant changes, we may provide
+ additional notice within the app.
+
+
+
5. Contact
+
+ If you have any questions about this Privacy Policy or the App, please contact us at:
+ mrzachnugent@gmail.com
+
+
+ );
+}
diff --git a/apps/docs/app/showcase/support/page.tsx b/apps/docs/app/showcase/support/page.tsx
new file mode 100644
index 00000000..2a4b4afc
--- /dev/null
+++ b/apps/docs/app/showcase/support/page.tsx
@@ -0,0 +1,44 @@
+export default function Page() {
+ return (
+
+
Support
+
Effective Date: July 26, 2025
+
+ The React Native Reusables App (“the App”) is an interactive developer tool that enables
+ users to explore and implement UI components and blocks provided by the React Native
+ Reusables project.
+
+
1. How to Get Support
+
If you need help with the App or React Native Reusables, you can:
+
+
+ Browse the documentation available on this{' '}
+ website.
+
Reach out directly by email at: mrzachnugent@gmail.com
+
+
2. Response Time
+
+ Support inquiries will be reviewed as time permits. While there is no guaranteed response
+ time, every effort will be made to address questions and issues promptly.
+
+
3. Updates to Support Information
+
+ Support details may be updated in the future. When changes occur, they will be reflected on
+ this page.
+
+
4. Contact
+
+ For any additional assistance, contact:
+ mrzachnugent@gmail.com
+
+
+
+
+
+Optional integration with Clerk.
+
+Select **Clerk** from the integration menu to get blocks built with Clerk authentication logic.
+
+After adding your first Clerk block, follow Clerk's [Expo quick start](https://go.clerk.com/8e6CCee#set-your-clerk-api-keys) to complete the setup.
+
+
+
+
+
+Start a new project with all Clerk authentication blocks pre-configured using the [clerk-auth](https://github.com/founded-labs/react-native-reusables-templates/tree/main/clerk-auth#clerk-auth-template) template.
+
+
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/meta.json b/apps/docs/content/docs/blocks/authentication/meta.json
new file mode 100644
index 00000000..241bfe40
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/meta.json
@@ -0,0 +1,11 @@
+{
+ "pages": [
+ "sign-in",
+ "sign-up",
+ "user-menu",
+ "verify-email",
+ "reset-password",
+ "forgot-password",
+ "social-connections"
+ ]
+}
diff --git a/apps/docs/content/docs/blocks/authentication/reset-password.mdx b/apps/docs/content/docs/blocks/authentication/reset-password.mdx
new file mode 100644
index 00000000..c6bf205d
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/reset-password.mdx
@@ -0,0 +1,9 @@
+---
+title: Reset password
+---
+
+import { Callout } from '@docs/components/callout';
+
+
+ This feature is coming soon.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/sign-in.mdx b/apps/docs/content/docs/blocks/authentication/sign-in.mdx
new file mode 100644
index 00000000..8853f230
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/sign-in.mdx
@@ -0,0 +1,117 @@
+---
+title: Sign in
+description: Sign in with email, password, or social providers
+---
+
+import { BlockPreviewCard } from '@docs/components/preview-card';
+import { AccordionPreview as TODOAccordionPreview } from "@docs/components/default-previews";
+import { AccordionPreview as TODOAccordionNewYorkPreview } from "@docs/components/new-york-previews";
+import { ExternalLinks } from "@docs/components/external-links";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { CommandTabs } from "@docs/components/command-tabs";
+import { AuthBlockTabs, AuthBlockTabsCliContent, AuthBlockTabsManualContent } from '@docs/components/auth-block-tabs';
+
+
+
+
+
+} webNewYorkPreview={} />
+
+
+## Installation
+
+
+
+
+
+
+
+
+ **All set!**
+
+ You can now use the `SignIn` block in your app.
+
+
+
+
+
+
+
+
+
+ **If you haven't already**
+
+ Follow Clerk's [Expo quick start](https://go.clerk.com/8e6CCee#set-your-clerk-api-keys) to , configure your app to use Clerk.
+
+
+
+ **All set!**
+
+ You can use the `ClerkSignIn` block in your app.
+
+
+
+
+
+
+
+
+
+
+ {/* TODO: */}
+ **Add the following components to your project.**
+
+ - [Button](/docs/components/button#installation)
+ - etc.
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/accordion.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/accordion.tsx\""
+ }
+ }
+ ```
+
+
+
+
+ **Update the import paths to match your project setup.**
+
+
+
+
+
+
+ **TODO: Manual**
+
+ Integration: clerk
+
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/sign-up.mdx b/apps/docs/content/docs/blocks/authentication/sign-up.mdx
new file mode 100644
index 00000000..65d83007
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/sign-up.mdx
@@ -0,0 +1,9 @@
+---
+title: Sign up
+---
+
+import { Callout } from '@docs/components/callout';
+
+
+ This feature is coming soon.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/social-connections.mdx b/apps/docs/content/docs/blocks/authentication/social-connections.mdx
new file mode 100644
index 00000000..ffa06bbb
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/social-connections.mdx
@@ -0,0 +1,9 @@
+---
+title: Social connections
+---
+
+import { Callout } from '@docs/components/callout';
+
+
+ This feature is coming soon.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/user-menu.mdx b/apps/docs/content/docs/blocks/authentication/user-menu.mdx
new file mode 100644
index 00000000..b07c8fda
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/user-menu.mdx
@@ -0,0 +1,9 @@
+---
+title: User menu
+---
+
+import { Callout } from '@docs/components/callout';
+
+
+ This feature is coming soon.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/blocks/authentication/verify-email.mdx b/apps/docs/content/docs/blocks/authentication/verify-email.mdx
new file mode 100644
index 00000000..daa2a45d
--- /dev/null
+++ b/apps/docs/content/docs/blocks/authentication/verify-email.mdx
@@ -0,0 +1,9 @@
+---
+title: Verify email
+---
+
+import { Callout } from '@docs/components/callout';
+
+
+ This feature is coming soon.
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/changelog.mdx b/apps/docs/content/docs/changelog.mdx
new file mode 100644
index 00000000..0130732d
--- /dev/null
+++ b/apps/docs/content/docs/changelog.mdx
@@ -0,0 +1,170 @@
+---
+title: Changelog
+description: Latest updates and announcements.
+---
+
+import { Callout } from '@docs/components/callout';
+import { CommandTabs } from '@docs/components/command-tabs';
+import { VercelOssBadge } from '@docs/components/vercel-oss-badge';
+import { ClerkLogo } from '@docs/components/clerk-logo';
+import { DownloadAppBanner } from '@docs/components/download-app-banner';
+
+## August 2025 - Total Rewrite
+
+New CLI. New docs. New registry. New showcase app. New sponsors.
+
+
+### Now part of the Vercel OSS Program [#august-2025-vercel-oss]
+
+
+
+React Native Reusables is now part of the [Vercel OSS Program](https://vercel.com/oss), which supports its continued growth and development.
+
+### Sponsored Blocks by Clerk [#august-2025-clerk]
+
+
+
+
+
+React Native Reusables now features a [template](https://github.com/founded-labs/react-native-reusables-templates/tree/main/clerk-auth) and sponsored [blocks](/docs/blocks/authentication) from [Clerk](https://go.clerk.com/gjgxNgT), helping you quickly integrate authentication into your apps with React Native Reusables.
+
+
+### First React Native shadcn registry _(probably)_ [#august-2025-first-react-native-shadcn-registry]
+
+You can now use `npx shadcn@latest` with our registries.
+
+To make the experience even smoother, we built a thin wrapper around the CLI.
+
+- No need to copy long registry URLs
+
+- You can use `--all` to install everything at once
+
+- If you skip the component name, you'll get a multi-select prompt
+
+
+
+Same power, tailored for React Native Reusables.
+
+### Standardize rem to match web [#august-2025-standardize-rem]
+
+In the `metro.config.js`, `inlineRem` is now set to `16` to match web sizing.
+
+```diff title="metro.config.js"
+const { getDefaultConfig } = require('expo/metro-config');
+const { withNativeWind } = require('nativewind/metro');
+
+const config = getDefaultConfig(__dirname);
+
+- module.exports = withNativeWind(config, { input: './global.css' });
++ module.exports = withNativeWind(config, { input: './global.css', inlineRem: 16 });
+```
+
+### Enhanced iOS portal rendering with FullWindowOverlay [#august-2025-fullwindowoverlay-ios]
+
+All portal content on iOS is now wrapped with `FullWindowOverlay` from `react-native-screens` to improve rendering and ensure seamless integration with native navigation.
+
+### New CLI - rewritten with Effect + shadcn [#august-2025-new-cli-rewritten-with-effect-shadcn]
+
+The CLI has been rebuilt from the ground up with [`effect`](https://effect.website) and the [`shadcn`](https://ui.shadcn.com/docs/cli) engine under the hood for the add command.
+
+Features:
+
+- `doctor` command to diagnose and fix certain config/setup issues
+
+- Registry-aware component scaffolding
+
+- Stronger foundation for future updates
+
+
+
+### Improved component architecture [#august-2025-improved-component-architecture]
+
+Every component has been refined and standardized for both `default` and `new-york` styles.
+
+- Improved platform-specific logic
+
+- Easier to override and customize
+
+
+### Blocks [#august-2025-blocks]
+
+Introduced authentication [blocks](/docs/blocks/authentication) to help you quickly integrate authentication into your apps with React Native Reusables.
+
+### Showcase App [#august-2025-showcase-app]
+
+
+
+### Redesigned Docs [#august-2025-redesigned-docs]
+
+The docs have been redesigned to be more consistent and easier to use.
+
+### New GitHub Home [#august-2025-new-github-home]
+
+We moved the repo from my personal account to a dedicated org [@founded-labs](https://github.com/founded-labs).
+
+This gives the project a long-term home with more room to grow.
+
+### New Icon component [#august-2025-new-icon-component]
+
+A single icon component to replace all icons from the deprecated `/lib/icons` directory.
+
+**Install the new icon component with the CLI**
+
+
+
+
+```tsx
+// Example usage
+import { Icon } from '@/components/ui/icon';
+import { HeartIcon } from 'lucide-react-native';
+
+
+
+```
+
+### Text variants [#august-2025-text-variants]
+
+The `Text` component now includes built-in typography variants, so you no longer need to use the deprecated `Typography` components like ``.
+
+Use the variant prop like this:
+
+```tsx
+Title
+```
+
+Available variants: `default`, `h1` , `h2`, `h3`, `h4`, `p`, `block-quote`, `code`, `lead`, `large`, `small`, and `muted`.
+
+### Deprecated [#august-2025-deprecated]
+
+- `lib/constants.ts`: now using the `theme.ts` file.
+
+- `lib/useColorScheme.ts`: now using the hook directly from `nativewind`
+
+- `lib/icons`: deprecated in favor of the new [`Icon`](#august-2025-new-icon-component) component.
+
+- `components/ui/typography.tsx`: deprecated in favor of the new [`variant`](#august-2025-text-variants) prop on the `Text` component.
+
+### Upgrade Notes [#august-2025-upgrade-notes]
+1. Run the `doctor` command to diagnose. Then, follow the instructions to get your project up to date:
+
+
+
+2. Update your components by running the `add` command with `--override` and list the components from your project:
+
+
+ Make sure you commit your changes before running the add command and use the diff view to see what's changed and to keep
+ your own custom changes.
+
+
+
+
+
+
+#### Thank you [#august-2025-thanks]
+
+
+
+
+
+Thank you to everyone who has been using React Native Reusables, sharing feedback, and contributing.
+Your support means a lot and is truly appreciated.
\ No newline at end of file
diff --git a/apps/docs/content/docs/cli.mdx b/apps/docs/content/docs/cli.mdx
new file mode 100644
index 00000000..787bcd79
--- /dev/null
+++ b/apps/docs/content/docs/cli.mdx
@@ -0,0 +1,95 @@
+---
+title: CLI
+description: Use the CLI to add components and more
+---
+
+import { Callout } from '@docs/components/callout';
+import { CommandTabs } from '@docs/components/command-tabs';
+
+## init
+
+Use `init` to scaffold a new Expo project using a template.
+
+
+
+### Options
+
+```bash
+Usage: react-native-reusables init [options]
+
+Initialize a new Expo project with React Native Reusables
+
+Options:
+ -c, --cwd the working directory. defaults to the current directory.
+ -t, --template the template to use.
+ -h, --help display help for command
+```
+
+
+
+- [minimal](https://github.com/founded-labs/react-native-reusables-templates/tree/main/minimal#minimal-template)
+- [clerk-auth](https://github.com/founded-labs/react-native-reusables-templates/tree/main/clerk-auth#clerk-auth-template)
+
+
+
+## add
+
+
+Use `add` to add React Native Reusables components to your project.
+
+
+
+
+### Options
+
+```bash
+Usage: react-native-reusables add [options] [...components]
+
+Add React Native Reusables components to your project
+
+Arguments:
+ components name of components to add
+
+Options:
+ -c, --cwd the working directory. defaults to the current directory.
+ -y, --yes skip confirmation prompt
+ -o, --overwrite force overwrite of existing files
+ -a, --all add all components
+ -p --path path to the component
+ -h, --help display help for command
+```
+
+
+ Uses the [shadcn](https://ui.shadcn.com/docs/cli#add) CLI under the hood.
+
+
+
+## doctor
+
+Use `doctor` to check if everything is set up correctly.
+
+
+
+### Options
+
+```bash
+Usage: react-native-reusables doctor [options]
+
+Check your project setup and diagnose issues
+
+Options:
+ -c, --cwd the working directory. defaults to the current directory.
+ -s, --summary show summary only
+ -y, --yes skip confirmation prompt
+ -h, --help display help for command
+```
+
+
+
+
+
+ If you're having issues, you can run any command with the initial `--log-level all` flag to get more information and create a [bug report](https://github.com/founded-labs/react-native-reusables/issues).
+
+
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/accordion.mdx b/apps/docs/content/docs/components/accordion.mdx
new file mode 100644
index 00000000..b4fd5ca8
--- /dev/null
+++ b/apps/docs/content/docs/components/accordion.mdx
@@ -0,0 +1,217 @@
+---
+title: Accordion
+description: A vertically stacked set of interactive headings that each reveal a section of content.
+---
+
+import accordionPreview from "!!raw-loader!@/registry/default/examples/accordion";
+import accordionNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/accordion";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { AccordionPreview } from "@docs/components/default-previews";
+import { AccordionPreview as AccordionNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/alert-dialog.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/alert-dialog.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/alert-dialog
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/button.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/button.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/native-only-animated-view.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/native-only-animated-view.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/alert-dialog.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/alert-dialog.tsx\""
+ }
+ }
+ ```
+
+
+
+
+ **Update the import paths to match your project setup.**
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogTitle,
+ AlertDialogTrigger,
+} from '@/components/ui/alert-dialog';
+import { Text } from '@/components/ui/text';
+```
+
+```tsx
+
+
+ Show Alert Dialog
+
+
+
+ Are you absolutely sure?
+
+ This action cannot be undone. This will permanently delete your account and remove
+ your data from our servers.
+
+
+
+
+ Cancel
+
+
+ Continue
+
+
+
+
+```
diff --git a/apps/docs/content/docs/components/alert.mdx b/apps/docs/content/docs/components/alert.mdx
new file mode 100644
index 00000000..688ba930
--- /dev/null
+++ b/apps/docs/content/docs/components/alert.mdx
@@ -0,0 +1,129 @@
+---
+title: Alert
+description: Displays a callout for user attention.
+---
+
+import alertPreview from "!!raw-loader!@/registry/default/examples/alert";
+import alertNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/alert";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { AlertPreview } from "@docs/components/default-previews";
+import { AlertPreview as AlertNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+
+ ## Preview
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/alert.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/alert.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/alert.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/alert.tsx\""
+ }
+ }
+ ```
+
+
+
+
+ **Update the import paths to match your project setup.**
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
+import { Terminal } from '@/lib/icons/Terminal';
+```
+
+```tsx
+
+ Heads up!
+
+ You can use a terminal to run commands on your computer.
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/aspect-ratio.mdx b/apps/docs/content/docs/components/aspect-ratio.mdx
new file mode 100644
index 00000000..6a0c5ded
--- /dev/null
+++ b/apps/docs/content/docs/components/aspect-ratio.mdx
@@ -0,0 +1,119 @@
+---
+title: Aspect Ratio
+description: Displays content within a desired ratio.
+---
+
+import aspectRatioPreview from "!!raw-loader!@/registry/default/examples/aspect-ratio";
+import aspectRatioNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/aspect-ratio";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { AspectRatioPreview } from "@docs/components/default-previews";
+import { AspectRatioPreview as AspectRatioNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+
+ ## Preview
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/aspect-ratio.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/aspect-ratio.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/aspect-ratio
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/aspect-ratio.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/aspect-ratio.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { AspectRatio } from '@/components/ui/aspect-ratio';
+import { Text } from '@/components/ui/text';
+```
+
+```tsx
+
+ 16:9
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/avatar.mdx b/apps/docs/content/docs/components/avatar.mdx
new file mode 100644
index 00000000..e15867d0
--- /dev/null
+++ b/apps/docs/content/docs/components/avatar.mdx
@@ -0,0 +1,123 @@
+---
+title: Avatar
+description: An image element with a fallback for representing the user.
+---
+
+import avatarPreview from "!!raw-loader!@/registry/default/examples/avatar";
+import avatarNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/avatar";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { AvatarPreview } from "@docs/components/default-previews";
+import { AvatarPreview as AvatarNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+
+ ## Preview
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/avatar.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/avatar.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/avatar
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/avatar.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/avatar.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+
+ ZN
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/badge.mdx b/apps/docs/content/docs/components/badge.mdx
new file mode 100644
index 00000000..340c650f
--- /dev/null
+++ b/apps/docs/content/docs/components/badge.mdx
@@ -0,0 +1,137 @@
+---
+title: Badge
+description: Displays a badge or a component that looks like a badge.
+---
+
+import badgePreview from "!!raw-loader!@/registry/default/examples/badge";
+import badgeNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/badge";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { BadgePreview } from "@docs/components/default-previews";
+import { BadgePreview as BadgeNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+
+ ## Preview
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/badge.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/badge.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependencies:**
+
+ ```
+ npx expo install @rn-primitives/badge @rn-primitives/slot
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/badge.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/badge.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Badge } from '@/components/ui/badge';
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+ Badge
+
+```
+
+#### Link
+
+You can use the `badgeVariants` and `badgeTextVariants` helpers to create a link that looks like a badge.
+
+```tsx
+import { badgeVariants, badgeTextVariants } from "@/components/ui/badge"
+```
+
+```tsx
+
+ Badge
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/button.mdx b/apps/docs/content/docs/components/button.mdx
new file mode 100644
index 00000000..8b137090
--- /dev/null
+++ b/apps/docs/content/docs/components/button.mdx
@@ -0,0 +1,516 @@
+---
+title: Button
+description: Displays a button or a component that looks like a button.
+---
+
+import buttonPreview from "!!raw-loader!@/registry/default/examples/button/button-primary";
+import buttonNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-primary";
+import buttonDestructivePreview from "!!raw-loader!@/registry/default/examples/button/button-destructive";
+import buttonDestructiveNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-destructive";
+import buttonOutlinePreview from "!!raw-loader!@/registry/default/examples/button/button-outline";
+import buttonOutlineNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-outline";
+import buttonSecondaryPreview from "!!raw-loader!@/registry/default/examples/button/button-secondary";
+import buttonSecondaryNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-secondary";
+import buttonGhostPreview from "!!raw-loader!@/registry/default/examples/button/button-ghost";
+import buttonGhostNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-ghost";
+import buttonLinkPreview from "!!raw-loader!@/registry/default/examples/button/button-link";
+import buttonLinkNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-link";
+import buttonIconPreview from "!!raw-loader!@/registry/default/examples/button/button-icon";
+import buttonIconNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-icon";
+import buttonWithIconPreview from "!!raw-loader!@/registry/default/examples/button/button-with-icon";
+import buttonWithIconNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-with-icon";
+import buttonLoadingPreview from "!!raw-loader!@/registry/default/examples/button/button-loading";
+import buttonLoadingNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/button/button-loading";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { ButtonPreview, ButtonDestructivePreview, ButtonOutlinePreview, ButtonSecondaryPreview, ButtonGhostPreview, ButtonLinkPreview, ButtonIconPreview, ButtonWithIconPreview, ButtonLoadingPreview } from "@docs/components/default-previews";
+import { ButtonPreview as ButtonNewYorkPreview, ButtonDestructivePreview as ButtonDestructiveNewYorkPreview, ButtonOutlinePreview as ButtonOutlineNewYorkPreview, ButtonSecondaryPreview as ButtonSecondaryNewYorkPreview, ButtonGhostPreview as ButtonGhostNewYorkPreview, ButtonLinkPreview as ButtonLinkNewYorkPreview, ButtonIconPreview as ButtonIconNewYorkPreview, ButtonWithIconPreview as ButtonWithIconNewYorkPreview, ButtonLoadingPreview as ButtonLoadingNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-primary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-primary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependencies:**
+
+ ```
+ npx expo install @rn-primitives/slot
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/button.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/button.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Button } from '@/components/ui/button';
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+```
+
+#### Link
+
+You can use the `buttonVariants` and `buttonTextVariants` helpers to create a link that looks like a button.
+
+```tsx
+import { buttonVariants, buttonTextVariants } from "@/components/ui/button"
+```
+
+```tsx
+
+ Click here
+
+```
+
+Alternatively, you can set the `asChild` parameter and nest the link component.
+
+```tsx
+
+```
+
+### Examples
+
+#### Primary
+
+
+
+ Preview
+ Code
+
+
+ } webNewYorkPreview={} />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-primary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-primary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Secondary
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-secondary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-secondary.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Destructive
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-destructive.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-destructive.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Outline
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-outline.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-outline.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Ghost
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-ghost.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-ghost.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Link
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-link.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-link.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Icon
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-icon.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-icon.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### With Icon
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-with-icon.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-with-icon.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+#### Loading
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/button/button-loading.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/button/button-loading.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/card.mdx b/apps/docs/content/docs/components/card.mdx
new file mode 100644
index 00000000..1b90cda6
--- /dev/null
+++ b/apps/docs/content/docs/components/card.mdx
@@ -0,0 +1,138 @@
+---
+title: Card
+description: Displays a card with header, content, and footer.
+---
+
+import cardPreview from "!!raw-loader!@/registry/default/examples/card";
+import cardNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/card";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { CardPreview, CardExample } from "@docs/components/default-previews";
+import { CardPreview as CardNewYorkPreview, CardExample as CardNewYorkExample } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/card.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/card.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/card.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/card.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from '@/components/ui/card';
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+ Card Title
+ Card Description
+
+
+ Card Content
+
+
+ Card Footer
+
+
+```
+
diff --git a/apps/docs/content/docs/components/checkbox.mdx b/apps/docs/content/docs/components/checkbox.mdx
new file mode 100644
index 00000000..b682581c
--- /dev/null
+++ b/apps/docs/content/docs/components/checkbox.mdx
@@ -0,0 +1,125 @@
+---
+title: Checkbox
+description: A control that allows the user to toggle between checked and not checked.
+---
+
+import checkboxPreview from "!!raw-loader!@/registry/default/examples/checkbox";
+import checkboxNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/checkbox";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { CheckboxPreview } from "@docs/components/default-previews";
+import { CheckboxPreview as CheckboxNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/checkbox.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/checkbox.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/checkbox
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/checkbox.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/checkbox.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Checkbox } from "@/components/ui/checkbox"
+
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/collapsible.mdx b/apps/docs/content/docs/components/collapsible.mdx
new file mode 100644
index 00000000..7f5d39e0
--- /dev/null
+++ b/apps/docs/content/docs/components/collapsible.mdx
@@ -0,0 +1,122 @@
+---
+title: Collapsible
+description: A control that allows the user to toggle between checked and not checked.
+---
+
+import collapsiblePreview from "!!raw-loader!@/registry/default/examples/collapsible";
+import collapsibleNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/collapsible";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { CollapsiblePreview } from "@docs/components/default-previews";
+import { CollapsiblePreview as CollapsibleNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/collapsible.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/collapsible.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/collapsible
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/collapsible.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/collapsible.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Collapsible } from "@/components/ui/collapsible"
+import { Text } from "@/components/ui/text"
+
+```
+
+```tsx
+
+
+ Can I use this in my project?
+
+
+ Yes. Free to use for personal and commercial projects. No attribution required.
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/context-menu.mdx b/apps/docs/content/docs/components/context-menu.mdx
new file mode 100644
index 00000000..7419674b
--- /dev/null
+++ b/apps/docs/content/docs/components/context-menu.mdx
@@ -0,0 +1,162 @@
+---
+title: Context Menu
+description: Displays a menu to the user — such as a set of actions or functions — triggered by a button.
+---
+
+import contextMenuPreview from "!!raw-loader!@/registry/default/examples/context-menu";
+import contextMenuNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/context-menu";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { ContextMenuPreview } from "@docs/components/default-previews";
+import { ContextMenuPreview as ContextMenuNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/context-menu.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/context-menu.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/context-menu
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/context-menu.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/context-menu.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ ContextMenu,
+ ContextMenuContent,
+ ContextMenuItem,
+ ContextMenuTrigger,
+} from '@/components/ui/context-menu';
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+ Right click
+
+
+
+ Profile
+
+
+ Billing
+
+
+ Team
+
+
+ Subscription
+
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/dialog.mdx b/apps/docs/content/docs/components/dialog.mdx
new file mode 100644
index 00000000..3eb5c951
--- /dev/null
+++ b/apps/docs/content/docs/components/dialog.mdx
@@ -0,0 +1,156 @@
+---
+title: Dialog
+description: A window overlaid on either the primary window or another dialog window, rendering the content underneath inert.
+---
+
+import dialogPreview from "!!raw-loader!@/registry/default/examples/dialog";
+import dialogNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/dialog";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { DialogPreview } from "@docs/components/default-previews";
+import { DialogPreview as DialogNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/dialog.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/dialog.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/dialog
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/dialog.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/dialog.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "@/components/ui/dialog"
+```
+
+```tsx
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/dropdown-menu.mdx b/apps/docs/content/docs/components/dropdown-menu.mdx
new file mode 100644
index 00000000..1fd0960b
--- /dev/null
+++ b/apps/docs/content/docs/components/dropdown-menu.mdx
@@ -0,0 +1,162 @@
+---
+title: Dropdown Menu
+description: Displays a menu to the user — such as a set of actions or functions — triggered by a button.
+---
+
+import dropdownMenuPreview from "!!raw-loader!@/registry/default/examples/dropdown-menu";
+import dropdownMenuNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/dropdown-menu";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { DropdownMenuPreview } from "@docs/components/default-previews";
+import { DropdownMenuPreview as DropdownMenuNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/dropdown-menu.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/dropdown-menu.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/dropdown-menu
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/dropdown-menu.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/dropdown-menu.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuTrigger,
+} from "@/components/ui/dropdown-menu"
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+ Open
+
+
+
+ My Account
+
+
+
+ Profile
+
+
+ Team
+
+
+
+```
diff --git a/apps/docs/content/docs/components/hover-card.mdx b/apps/docs/content/docs/components/hover-card.mdx
new file mode 100644
index 00000000..8272f384
--- /dev/null
+++ b/apps/docs/content/docs/components/hover-card.mdx
@@ -0,0 +1,140 @@
+---
+title: Hover Card
+description: For sighted users to preview content available behind a link.
+---
+
+import hoverCardPreview from "!!raw-loader!@/registry/default/examples/hover-card";
+import hoverCardNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/hover-card";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { HoverCardPreview } from "@docs/components/default-previews";
+import { HoverCardPreview as HoverCardNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/hover-card.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/hover-card.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/hover-card
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/hover-card.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/hover-card.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ HoverCard,
+ HoverCardContent,
+ HoverCardTrigger,
+} from "@/components/ui/hover-card"
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+ Hover
+
+
+ The React Framework – created and maintained by @vercel.
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/input.mdx b/apps/docs/content/docs/components/input.mdx
new file mode 100644
index 00000000..1fe7d9fd
--- /dev/null
+++ b/apps/docs/content/docs/components/input.mdx
@@ -0,0 +1,109 @@
+---
+title: Input
+description: Displays a form input field or a component that looks like an input field.
+---
+
+import inputPreview from "!!raw-loader!@/registry/default/examples/input";
+import inputNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/input";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { InputPreview } from "@docs/components/default-previews";
+import { InputPreview as InputNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+
+
+
+ }
+ webNewYorkPreview={
+
+
+
+ }
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/input.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/input.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/input.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/input.tsx\""
+ }
+ }
+ ```
+
+
+
+
+ **Update the import paths to match your project setup.**
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Input } from "@/components/ui/input"
+```
+
+```tsx
+
+```
diff --git a/apps/docs/content/docs/components/label.mdx b/apps/docs/content/docs/components/label.mdx
new file mode 100644
index 00000000..f1e205c1
--- /dev/null
+++ b/apps/docs/content/docs/components/label.mdx
@@ -0,0 +1,110 @@
+---
+title: Label
+description: Renders an accessible label associated with controls.
+---
+
+import labelPreview from "!!raw-loader!@/registry/default/examples/label";
+import labelNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/label";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { LabelPreview } from "@docs/components/default-previews";
+import { LabelPreview as LabelNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/label.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/label.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/label
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/label.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/label.tsx\""
+ }
+ }
+ ```
+
+
+
+
+ **Update the import paths to match your project setup.**
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Label } from "@/components/ui/label"
+```
+
+```tsx
+
+```
diff --git a/apps/docs/content/docs/components/menubar.mdx b/apps/docs/content/docs/components/menubar.mdx
new file mode 100644
index 00000000..5929bf20
--- /dev/null
+++ b/apps/docs/content/docs/components/menubar.mdx
@@ -0,0 +1,169 @@
+---
+title: Menubar
+description: A visually persistent menu common in desktop applications that provides quick access to a consistent set of commands.
+---
+
+import menubarPreview from "!!raw-loader!@/registry/default/examples/menubar";
+import menubarNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/menubar";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { MenubarPreview } from "@docs/components/default-previews";
+import { MenubarPreview as MenubarNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/menubar.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/menubar.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/menubar
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/menubar.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/menubar.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ Menubar,
+ MenubarContent,
+ MenubarItem,
+ MenubarMenu,
+ MenubarSeparator,
+ MenubarShortcut,
+ MenubarTrigger,
+} from "@/components/ui/menubar"
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+
+ File
+
+
+
+ New Tab⌘T
+
+
+ New Window
+
+
+
+ Share
+
+
+
+ Print
+
+
+
+
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/popover.mdx b/apps/docs/content/docs/components/popover.mdx
new file mode 100644
index 00000000..5aae6feb
--- /dev/null
+++ b/apps/docs/content/docs/components/popover.mdx
@@ -0,0 +1,140 @@
+---
+title: Popover
+description: Displays rich content in a portal, triggered by a button.
+---
+
+import popoverPreview from "!!raw-loader!@/registry/default/examples/popover";
+import popoverNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/popover";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { PopoverPreview } from "@docs/components/default-previews";
+import { PopoverPreview as PopoverNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/popover.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/popover.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/popover
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/popover.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/popover.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui/popover"
+import { Text } from '@/components/ui/text';
+
+```
+
+```tsx
+
+
+ Open
+
+
+ Place content for the popover here.
+
+
+```
+
diff --git a/apps/docs/content/docs/components/progress.mdx b/apps/docs/content/docs/components/progress.mdx
new file mode 100644
index 00000000..60449f00
--- /dev/null
+++ b/apps/docs/content/docs/components/progress.mdx
@@ -0,0 +1,117 @@
+---
+title: Progress
+description: Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.
+---
+
+import progressPreview from "!!raw-loader!@/registry/default/examples/progress";
+import progressNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/progress";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { ProgressPreview } from "@docs/components/default-previews";
+import { ProgressPreview as ProgressNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/progress.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/progress.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/progress
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/progress.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/progress.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Progress } from "@/components/ui/progress"
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/radio-group.mdx b/apps/docs/content/docs/components/radio-group.mdx
new file mode 100644
index 00000000..d268df58
--- /dev/null
+++ b/apps/docs/content/docs/components/radio-group.mdx
@@ -0,0 +1,131 @@
+---
+title: Radio Group
+description: A set of checkable buttons—known as radio buttons—where no more than one of the buttons can be checked at a time.
+---
+
+import radioGroupPreview from "!!raw-loader!@/registry/default/examples/radio-group";
+import radioGroupNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/radio-group";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { RadioGroupPreview } from "@docs/components/default-previews";
+import { RadioGroupPreview as RadioGroupNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/radio-group.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/radio-group.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/radio-group
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/radio-group.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/radio-group.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { View } from "react-native"
+import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
+import { Label } from "@/components/ui/label"
+```
+
+```tsx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
diff --git a/apps/docs/content/docs/components/select.mdx b/apps/docs/content/docs/components/select.mdx
new file mode 100644
index 00000000..b8c7b4cd
--- /dev/null
+++ b/apps/docs/content/docs/components/select.mdx
@@ -0,0 +1,203 @@
+---
+title: Select
+description: Displays a list of options for the user to pick from—triggered by a button.
+---
+
+import selectPreview from "!!raw-loader!@/registry/default/examples/select/select";
+import selectNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/select/select";
+import scrollableSelectPreview from "!!raw-loader!@/registry/default/examples/select/scrollable-select";
+import scrollableSelectNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/select/scrollable-select";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { SelectPreview, ScrollableSelectPreview } from "@docs/components/default-previews";
+import { SelectPreview as SelectNewYorkPreview, ScrollableSelectPreview as ScrollableSelectNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/select/select.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/select/select.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/select
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/select.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/select.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/ui/select"
+
+```
+
+```tsx
+
+```
+
+### Example
+
+#### Scrollable
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/select/scrollable-select.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/select/scrollable-select.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
diff --git a/apps/docs/content/docs/components/separator.mdx b/apps/docs/content/docs/components/separator.mdx
new file mode 100644
index 00000000..fc376f78
--- /dev/null
+++ b/apps/docs/content/docs/components/separator.mdx
@@ -0,0 +1,116 @@
+---
+title: Separator
+description: Visually or semantically separates content.
+---
+
+import separatorPreview from "!!raw-loader!@/registry/default/examples/separator";
+import separatorNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/separator";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { SeparatorPreview } from "@docs/components/default-previews";
+import { SeparatorPreview as SeparatorNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/separator.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/separator.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/separator
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/separator.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/separator.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Separator } from "@/components/ui/separator"
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/skeleton.mdx b/apps/docs/content/docs/components/skeleton.mdx
new file mode 100644
index 00000000..c4efef4f
--- /dev/null
+++ b/apps/docs/content/docs/components/skeleton.mdx
@@ -0,0 +1,107 @@
+---
+title: Skeleton
+description: Use to show a placeholder while content is loading.
+---
+
+import skeletonPreview from "!!raw-loader!@/registry/default/examples/skeleton";
+import skeletonNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/skeleton";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { SkeletonPreview } from "@docs/components/default-previews";
+import { SkeletonPreview as SkeletonNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/skeleton.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/skeleton.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/skeleton.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/skeleton.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Skeleton } from "@/components/ui/skeleton"
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/switch.mdx b/apps/docs/content/docs/components/switch.mdx
new file mode 100644
index 00000000..125c851d
--- /dev/null
+++ b/apps/docs/content/docs/components/switch.mdx
@@ -0,0 +1,116 @@
+---
+title: Switch
+description: A control that allows the user to toggle between checked and not checked.
+---
+
+import switchPreview from "!!raw-loader!@/registry/default/examples/switch";
+import switchNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/switch";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { SwitchPreview } from "@docs/components/default-previews";
+import { SwitchPreview as SwitchNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/switch.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/switch.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/switch
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/switch.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/switch.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Switch } from "@/components/ui/switch"
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/tabs.mdx b/apps/docs/content/docs/components/tabs.mdx
new file mode 100644
index 00000000..5d45fc35
--- /dev/null
+++ b/apps/docs/content/docs/components/tabs.mdx
@@ -0,0 +1,136 @@
+---
+title: Tabs
+description: A set of layered sections of content—known as tab panels—that are displayed one at a time.
+---
+
+import tabsPreview from "!!raw-loader!@/registry/default/examples/tabs";
+import tabsNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/tabs";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { TabsPreview } from "@docs/components/default-previews";
+import { TabsPreview as TabsNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/tabs.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/tabs.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/tabs
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/tabs.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/tabs.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
+import * as React from 'react';
+```
+
+```tsx
+const [value, setValue] = React.useState('account');
+
+return (
+
+
+ Account
+ Password
+
+ Make changes to your account here.
+ Change your password here.
+
+)
+```
+
diff --git a/apps/docs/content/docs/components/text.mdx b/apps/docs/content/docs/components/text.mdx
new file mode 100644
index 00000000..6bbade59
--- /dev/null
+++ b/apps/docs/content/docs/components/text.mdx
@@ -0,0 +1,197 @@
+---
+title: Text
+description: A component for displaying text.
+---
+
+import textPreview from "!!raw-loader!@/registry/default/examples/text/text";
+import textNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/text/text";
+import textTypographyPreview from "!!raw-loader!@/registry/default/examples/text/text-typorgaphy";
+import textTypographyNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/text/text-typorgaphy";
+import textCascadePreview from "!!raw-loader!@/registry/default/examples/text/text-cascade";
+import textCascadeNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/text/text-cascade";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { TextPreview, TextTypographyPreview, TextCascadePreview } from "@docs/components/default-previews";
+import { TextPreview as TextNewYorkPreview, TextTypographyPreview as TextTypographyNewYorkPreview, TextCascadePreview as TextCascadeNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/text/text.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/text/text.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/slot
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+
+
+### Inheritance system
+
+In React Native, child components don’t automatically get styles from their parent. This causes issues for things like buttons, where the text inside should change based on the button’s style.
+
+To fix this, we use something called `TextClassContext` to pass styles down. The parent (like a Button) wraps its content with this context, and the `Text` component uses the styles from it.
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/text/text-cascade.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/text/text-cascade.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Text } from "@/components/ui/text"
+```
+
+```tsx
+Hello, world!
+```
+
+
+
+#### Typography
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/text/text-typorgaphy.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/text/text-typorgaphy.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/components/textarea.mdx b/apps/docs/content/docs/components/textarea.mdx
new file mode 100644
index 00000000..15f14c6b
--- /dev/null
+++ b/apps/docs/content/docs/components/textarea.mdx
@@ -0,0 +1,107 @@
+---
+title: Textarea
+description: Displays a form textarea or a component that looks like a textarea.
+---
+
+import textareaPreview from "!!raw-loader!@/registry/default/examples/textarea";
+import textareaNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/textarea";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { TextareaPreview } from "@docs/components/default-previews";
+import { TextareaPreview as TextareaNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/textarea.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/textarea.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/textarea.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/textarea.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Textarea } from "@/components/ui/textarea"
+```
+
+```tsx
+
+```
+
diff --git a/apps/docs/content/docs/components/toggle-group.mdx b/apps/docs/content/docs/components/toggle-group.mdx
new file mode 100644
index 00000000..c645ccee
--- /dev/null
+++ b/apps/docs/content/docs/components/toggle-group.mdx
@@ -0,0 +1,149 @@
+---
+title: Toggle Group
+description: A set of two-state buttons that can be toggled on or off.
+---
+
+import toggleGroupPreview from "!!raw-loader!@/registry/default/examples/toggle-group";
+import toggleGroupNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/toggle-group";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { ToggleGroupPreview } from "@docs/components/default-previews";
+import { ToggleGroupPreview as ToggleGroupNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/toggle-group.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/toggle-group.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/toggle-group
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/toggle-group.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/toggle-group.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Bold, Italic, Underline } from 'lucide-react-native';
+import { ToggleGroup, ToggleGroupIcon, ToggleGroupItem } from '@/components/ui/toggle-group';
+import * as React from 'react';
+```
+
+```tsx
+ const [value, setValue] = React.useState([]);
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+```
+
diff --git a/apps/docs/content/docs/components/toggle.mdx b/apps/docs/content/docs/components/toggle.mdx
new file mode 100644
index 00000000..1861f2b4
--- /dev/null
+++ b/apps/docs/content/docs/components/toggle.mdx
@@ -0,0 +1,138 @@
+---
+title: Toggle
+description: A two-state button that can be either on or off.
+---
+
+import togglePreview from "!!raw-loader!@/registry/default/examples/toggle";
+import toggleNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/toggle";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { TogglePreview } from "@docs/components/default-previews";
+import { TogglePreview as ToggleNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/toggle.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/toggle.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/toggle
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/icon.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/icon.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/toggle.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/toggle.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+```tsx
+import { Toggle } from "@/components/ui/toggle"
+```
+
+```tsx
+const [pressed, setPressed] = React.useState(false);
+
+return (
+
+)
+```
+
diff --git a/apps/docs/content/docs/components/tooltip.mdx b/apps/docs/content/docs/components/tooltip.mdx
new file mode 100644
index 00000000..f6867d1d
--- /dev/null
+++ b/apps/docs/content/docs/components/tooltip.mdx
@@ -0,0 +1,137 @@
+---
+title: Tooltip
+description: A popup that displays information related to an element when the element receives keyboard focus, the mouse hovers over it, or when it is pressed.
+---
+
+import tooltipPreview from "!!raw-loader!@/registry/default/examples/tooltip";
+import tooltipNewYorkPreview from "!!raw-loader!@/registry/new-york/examples/tooltip";
+import { CommandTabs } from "@docs/components/command-tabs";
+import { CopyButton } from "@docs/components/copy-button";
+import { ExternalLinks } from "@docs/components/external-links";
+import { PreviewCard } from "@docs/components/preview-card";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@docs/components/ui/tabs";
+import { TooltipPreview } from "@docs/components/default-previews";
+import { TooltipPreview as TooltipNewYorkPreview } from "@docs/components/new-york-previews";
+import { Step, Steps } from 'fumadocs-ui/components/steps';
+import { PortalInfoAlert } from '@docs/components/portal-info-alert';
+import { ShowIfStyle } from "@docs/components/show-if-style";
+
+
+
+
+
+
+
+ Preview
+ Code
+
+
+ }
+ webNewYorkPreview={}
+ />
+
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/default/examples/tooltip.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/examples/tooltip.tsx",
+ "codeblock": {
+ "lang": "tsx"
+ }
+ }
+ ```
+
+
+
+
+
+## Installation
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+ **Install the following dependency:**
+
+ ```
+ npx expo install @rn-primitives/tooltip
+ ```
+
+
+
+
+ **Copy and paste the following code into your project.**
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/text.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/text.tsx\""
+ }
+ }
+ ```
+
+ ```json doc-gen:file
+ {
+ "file": "./node_modules/@rnr/registry/src/new-york/components/ui/tooltip.tsx",
+ "codeblock": {
+ "lang": "tsx",
+ "meta": "title=\"@/components/ui/tooltip.tsx\""
+ }
+ }
+ ```
+
+
+
+
+
+
+
+### Usage
+
+
+
+```tsx
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "@/components/ui/tooltip"
+import { Text } from "@/components/ui/text"
+```
+
+```tsx
+
+ Hover
+
+ Add to library
+
+
+```
+
diff --git a/apps/docs/content/docs/customization.mdx b/apps/docs/content/docs/customization.mdx
new file mode 100644
index 00000000..95d4d4ff
--- /dev/null
+++ b/apps/docs/content/docs/customization.mdx
@@ -0,0 +1,53 @@
+---
+title: Customization
+description: How to customize your project
+---
+
+React Native Reusables uses a theme system based on Tailwind CSS v3 and shadcn/ui. There are four files involved:
+
+- `components.json` - used by the CLI to scaffold components with the correct paths and style
+- `global.css` - defines your light and dark themes using CSS variables
+- `tailwind.config.ts` - connects Tailwind classes to your CSS variables
+- `theme.ts` - mirrors those variables in TypeScript and includes the navigation theme
+
+
+## `components.json`
+
+This works like [shadcn/ui's components.json](https://ui.shadcn.com/docs/components-json). It tells the CLI where to place files and which style to use (`default` or `new-york`). You can leave it alone unless you're changing paths or switching styles.
+
+## `global.css`
+
+Defines your theme using CSS variables under `:root` and `.dark:root` (for dark mode). Tailwind classes like `bg-background` and `text-foreground` use these variables.
+
+You can choose a custom theme from [shadcn/ui themes](https://ui.shadcn.com/themes), but make sure to:
+
+- Use the Tailwind v3 version (CSS variables)
+- Replace `.dark` with `.dark:root` for compatibility with NativeWind
+
+See the [full list of CSS variables](https://ui.shadcn.com/docs/theming#list-of-variables) in the shadcn/ui documentation.
+
+## `tailwind.config.ts`
+
+Connects Tailwind utility classes (like `bg-card`, `text-muted`) to the CSS variables defined in `global.css`, while also configuring the dark mode selector, plugins, and animations.
+
+## `theme.ts`
+
+Exports the same colors from `global.css` as a TypeScript object, so you can use them in logic, inline styles, or animations. Also includes `NAV_THEME` for the `ThemeProvider` in `_layout.tsx`.
+
+If you update a CSS variable, update `theme.ts` as well.
+
+
+
+
+
+
+ Tip: After updating CSS variables in `global.css`, use this prompt to sync `theme.ts`:
+
+
+> Read CSS variables under `:root` and `.dark:root` in `global.css`.
+> Update the `light` and `dark` entries in the `THEME` object in `theme.ts` to match these values in HSL format.
+> Keep all keys and `NAV_THEME` unchanged.
+> Add new variables if missing; comment stale ones if no matching CSS variable exists.
+> Maintain the original formatting and key order.
+
+
\ No newline at end of file
diff --git a/apps/docs/content/docs/hire-us.mdx b/apps/docs/content/docs/hire-us.mdx
new file mode 100644
index 00000000..dfcdfbd5
--- /dev/null
+++ b/apps/docs/content/docs/hire-us.mdx
@@ -0,0 +1,5 @@
+---
+title: Hire us
+description: TODO
+---
+
diff --git a/apps/docs/content/docs/index.mdx b/apps/docs/content/docs/index.mdx
new file mode 100644
index 00000000..cca9dd38
--- /dev/null
+++ b/apps/docs/content/docs/index.mdx
@@ -0,0 +1,37 @@
+---
+title: Introduction
+---
+
+import { Button } from '@/registry/new-york/components/ui/button';
+import { Text } from '@/registry/new-york/components/ui/text';
+import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/registry/new-york/components/ui/accordion';
+import { DownloadAppBanner } from '@docs/components/download-app-banner';
+
+
+This is not a component library. It is how you build your component library.
+
+
+## Bringing the shadcn/ui experience to React Native
+
+Built with familiar tools and libraries, it follows consistent styling, structure, and naming conventions, letting you use your favorite design system to create beautiful universal apps.
+
+
+
+
+
+
+
+## Key differences from shadcn/ui
+
+- Nativewind: React Native Reusables integrates with NativeWind for utility-first styling on native, providing a Tailwind-like experience adapted for React Native.
+- RN Primitives: A universal port of Radix UI primitives for React Native with an almost identical API, enabling consistent composition on native platforms.
+- Portals: React Native doesn't support DOM portals. Components like modals, dropdowns, and toasts require a `PortalHost`.
+- No cascading styles: Child elements like `Text` can't inherit styles from a parent class. Each element must be styled directly. (We use a small [workaround](/docs/components/text#inheritance-system) for `Text`.)
+- Reanimated: Uses `react-native-reanimated` for smooth, native performance.
+- Icons: Uses a wrapper component in combination with a Lucide icon to avoid wrapping every imported icon individually (e.g. ``).
+- Programmatic control: Some components, such as `DropdownMenu`, can't be controlled with `open` or `onOpenChange` props. Instead, you use a `ref` to manage open and close behavior after layout calculation.
+
+
+
+React Native Reusables aims to stay true to the spirit of shadcn/ui while adapting it to the unique constraints of mobile/universal development.
+
diff --git a/apps/docs/content/docs/installation/index.mdx b/apps/docs/content/docs/installation/index.mdx
new file mode 100644
index 00000000..93e16538
--- /dev/null
+++ b/apps/docs/content/docs/installation/index.mdx
@@ -0,0 +1,54 @@
+---
+title: Installation
+description: Getting Started with React Native Reusables
+---
+
+import { Button } from '@docs/components/ui/button';
+import Link from 'next/link';
+import { SquareTerminalIcon, WrenchIcon } from 'lucide-react';
+import { InstallationTabs } from '@docs/components/installation-tabs';
+import { CommandTabs } from '@docs/components/command-tabs';
+
+
+## Create project
+
+Run `init` to start a new project, or follow the manual steps to set up an existing one.
+
+
+
+
+
+
+
+
+
+
+ This creates a new project in the current directory. For more details, see the [init options](/docs/cli#init).
+
+
+
+## Add components
+
+You can now start adding components to your app.
+
+
+
+
+ The command above will add the `Button` component to your project. You can then import it like this:
+