diff --git a/app/_components/meal.tsx b/app/_components/meal.tsx
index 91fb915..7cd5426 100644
--- a/app/_components/meal.tsx
+++ b/app/_components/meal.tsx
@@ -20,13 +20,8 @@ const CATEGORY_ORDER: Array<{ category: MenuCategory; label: string }> = [
{ category: 'DINNER', label: '저녁' },
];
-function Skeleton({ className }: { className: string }) {
- return ;
-}
-
export default function MealSection({ all = false }: MealSectionProps) {
const { isLoading, isFetching, isError, error, keys, todayKey, getByDate } = useMenuData();
-
const [idx, setIdx] = React.useState(null);
React.useEffect(() => {
@@ -51,18 +46,6 @@ export default function MealSection({ all = false }: MealSectionProps) {
React.useEffect(() => {
if (!__DEV__) return;
-
- console.log('[menus/ui] MealSection 렌더 데이터', {
- isLoading,
- isFetching,
- isError,
- error,
- idx,
- keys,
- todayKey,
- dateKey,
- dayItems,
- });
}, [dateKey, dayItems, error, idx, isError, isFetching, isLoading, keys, todayKey]);
const mealsByCategory = React.useMemo(() => {
@@ -75,7 +58,7 @@ export default function MealSection({ all = false }: MealSectionProps) {
dayItems.forEach((item) => {
const sanitizedMeals = (item.meals ?? []).filter(
- (meal) => !normalizedMarkers.includes(normalizeMealText(meal)),
+ (meal) => !normalizedMarkers.includes(normalizeMealText(meal))
);
map.set(item.menuCategory, sanitizedMeals);
@@ -89,123 +72,85 @@ export default function MealSection({ all = false }: MealSectionProps) {
React.useEffect(() => {
if (!__DEV__) return;
-
- console.log('[menus/ui] 카테고리별 식단', {
- breakfast: mealsByCategory.get('BREAKFAST'),
- lunch: mealsByCategory.get('LUNCH'),
- dinner: mealsByCategory.get('DINNER'),
- });
}, [mealsByCategory]);
- const onPrev = () => {
+ const onPrevClick = () => {
if (atStart) return;
setIdx((current) => (current == null ? 0 : Math.max(0, current - 1)));
};
- const onNext = () => {
+ const onNextClick = () => {
if (atEnd) return;
setIdx((current) => (current == null ? 0 : Math.min(keys.length - 1, current + 1)));
};
- const renderMealCards = ({
- textClassName,
- wrapperClassName,
- cardClassName,
- emptyTextClassName,
- listClassName,
- bodyClassName,
- }: {
- textClassName: string;
- wrapperClassName?: string;
- cardClassName?: string;
- emptyTextClassName?: string;
- listClassName?: string;
- bodyClassName?: string;
- }) => (
-
- {CATEGORY_ORDER.map(({ category, label }) => {
- const meals = mealsByCategory.get(category) ?? [];
-
- return (
-
-
- {label}
+ return (
+
+
+ {isError && (
+
+
+ 식단 데이터를 불러오지 못했습니다.
-
-
-
-
- {isLoading ? (
-
-
-
-
-
- ) : meals.length === 0 ? (
-
-
- 등록된 식단 내용이 없습니다.
-
-
- ) : (
-
- {meals.map((meal, index) => (
-
- {meal}
-
- ))}
-
- )}
-
- );
- })}
-
- );
-
- return (
-
- {isError && (
-
-
- 식단 데이터를 불러오지 못했습니다.
-
-
- )}
-
- {!all && (
-
-
-
-
-
- {dateKey || '-'}
-
-
-
-
+ )}
+
+ {!all && (
+
+
+
+
+
+ {dateKey || '-'}
+
+
+
+
+
+ )}
+
+
+ {CATEGORY_ORDER.map(({ category, label }) => {
+ const meals = mealsByCategory.get(category) ?? [];
+
+ return (
+
+ {label}
+
+
+
+
+ {meals.length === 0 ? (
+
+
+ 등록된 식단 내용이 없습니다.
+
+
+ ) : (
+
+ {meals.map((meal, index) => (
+
+ {meal}
+
+ ))}
+
+ )}
+
+
+ );
+ })}
- )}
-
- {renderMealCards({
- textClassName: 'text-body05 text-grey-80',
- wrapperClassName: 'gap-3 mb-5',
- cardClassName: 'flex flex-col',
- emptyTextClassName: 'text-grey-30',
- listClassName: '',
- bodyClassName: 'flex flex-col',
- })}
+
);
}
diff --git a/app/_components/Page5.tsx b/app/_components/notice-page.tsx
similarity index 92%
rename from app/_components/Page5.tsx
rename to app/_components/notice-page.tsx
index 77cec49..527243b 100644
--- a/app/_components/Page5.tsx
+++ b/app/_components/notice-page.tsx
@@ -4,8 +4,9 @@ import clsx from 'clsx';
import * as React from 'react';
import { Linking, Pressable, ScrollView, View } from 'react-native';
import { useSafeAreaInsets } from 'react-native-safe-area-context';
+import { Footer } from '../../components/footer';
-export function Page5() {
+export function NoticePage() {
const categories = ['전체', '일반', '학사', '장학', '진로', '학생활동', '학칙개정'];
const [selectedCategory, setSelectedCategory] = React.useState('전체');
const [currentPage, setCurrentPage] = React.useState(1);
@@ -53,23 +54,19 @@ export function Page5() {
))}
- {/* 페이지네이션 */}
-
-
-
-
- {/* footer 작성 전 */}
-
+
+
);
}
+// dummy
const TOTAL_PAGES = 8;
-
const NOTICES = [
{
id: 1,
diff --git a/app/index.tsx b/app/index.tsx
index 74a64a2..bbb9a0e 100644
--- a/app/index.tsx
+++ b/app/index.tsx
@@ -8,7 +8,7 @@ import { Page2 } from './_components/Page2';
import { Page3 } from './_components/Page3';
import MealSection from './_components/meal';
import { Page4 } from './_components/Page4';
-import { Page5 } from './_components/Page5';
+import { NoticePage } from './_components/notice-page';
import { Page6 } from './_components/Page6';
import { Page7 } from './_components/Page7';
import { Input } from '@/components/ui/input';
@@ -17,7 +17,7 @@ import clsx from 'clsx';
const { width } = Dimensions.get('window');
const TABS = ['ALL', '학식', '게시판', '명지도', '공지사항', '학사일정', '명대신문', '명대뉴스'];
-const INITIAL_PAGE = 1; // 0-indexed, Page2
+const INITIAL_PAGE = 0;
export default function Screen() {
const insets = useSafeAreaInsets();
@@ -96,16 +96,14 @@ export default function Screen() {
onMomentumScrollEnd={handleScroll}
onScrollBeginDrag={Keyboard.dismiss}
style={{ flex: 1 }}>
-
-
+
+
-
+
-
-
-
+
>
);
diff --git a/components/footer.tsx b/components/footer.tsx
new file mode 100644
index 0000000..b19b85a
--- /dev/null
+++ b/components/footer.tsx
@@ -0,0 +1,60 @@
+import { Text } from '@/components/ui/text';
+import clsx from 'clsx';
+import * as React from 'react';
+import { Linking, Pressable, View } from 'react-native';
+import Svg, { Path } from 'react-native-svg';
+
+const GITHUB_URL = 'https://github.com/NOVA-MJU';
+const INSTAGRAM_URL = 'https://www.instagram.com/thing_go_/';
+const TERMS_URL =
+ 'https://verbena-ixia-597.notion.site/Thingo-33e22ef5d21e80b08328edd8519b0b4e?source=copy_link';
+const PRIVACY_URL =
+ 'https://verbena-ixia-597.notion.site/Thingo-33e22ef5d21e807d9738dc14def5de24?source=copy_link';
+const CONTACT_MAIL = `mailto:mjsearch2025@gmail.com?subject=${encodeURIComponent('문의 내용을 작성해주세요')}&body=${encodeURIComponent('안녕하세요,\n\n문의사항을 아래에 작성해주세요.\n\n- 이름:\n- 연락처:\n- 문의 내용:')}`;
+
+async function openContactMail() {
+ const supported = await Linking.canOpenURL(CONTACT_MAIL);
+ if (supported) Linking.openURL(CONTACT_MAIL);
+ else console.log('mail 앱이 설치되어있지 않음');
+}
+
+export function Footer({ className }: { className?: string }) {
+ return (
+
+
+
+ Linking.openURL(GITHUB_URL)}>
+
+
+ Linking.openURL(INSTAGRAM_URL)}>
+
+
+
+
+ Linking.openURL(TERMS_URL)}>
+ 이용약관
+
+ Linking.openURL(PRIVACY_URL)}>
+ 개인정보 처리방침
+
+
+ 문의하기
+
+
+
+ @ 2025 MJS. All rights reserved
+
+
+
+ );
+}
diff --git a/components/ui/aspect-ratio.tsx b/components/ui/aspect-ratio.tsx
deleted file mode 100644
index d5f98c2..0000000
--- a/components/ui/aspect-ratio.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import * as AspectRatioPrimitive from '@rn-primitives/aspect-ratio';
-
-const AspectRatio = AspectRatioPrimitive.Root;
-
-export { AspectRatio };
diff --git a/components/ui/avatar.tsx b/components/ui/avatar.tsx
deleted file mode 100644
index c29180d..0000000
--- a/components/ui/avatar.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-import { cn } from '@/lib/utils';
-import * as AvatarPrimitive from '@rn-primitives/avatar';
-
-function Avatar({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function AvatarImage({
- className,
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-function AvatarFallback({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-export { Avatar, AvatarFallback, AvatarImage };
diff --git a/components/ui/card.tsx b/components/ui/card.tsx
deleted file mode 100644
index f4d0118..0000000
--- a/components/ui/card.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import { Text, TextClassContext } from '@/components/ui/text';
-import { cn } from '@/lib/utils';
-import { View } from 'react-native';
-
-function Card({ className, ...props }: React.ComponentProps) {
- return (
-
-
-
- );
-}
-
-function CardHeader({ className, ...props }: React.ComponentProps) {
- return ;
-}
-
-function CardTitle({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function CardDescription({
- className,
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-function CardContent({ className, ...props }: React.ComponentProps) {
- return ;
-}
-
-function CardFooter({ className, ...props }: React.ComponentProps) {
- return ;
-}
-
-export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
diff --git a/components/ui/pagination.tsx b/components/ui/pagination.tsx
index 5ef5e7f..c79fd6f 100644
--- a/components/ui/pagination.tsx
+++ b/components/ui/pagination.tsx
@@ -16,15 +16,16 @@ interface PaginationProps {
currentPage: number;
totalPages: number;
onPageChange: (page: number) => void;
+ className?: string;
}
-export function Pagination({ currentPage, totalPages, onPageChange }: PaginationProps) {
+export function Pagination({ currentPage, totalPages, onPageChange, className }: PaginationProps) {
const pages = getPageWindow(currentPage, totalPages);
const hasPrev = currentPage > 1;
const hasNext = currentPage < totalPages;
return (
-
+
hasPrev && onPageChange(currentPage - 1)}
diff --git a/components/ui/skeleton.tsx b/components/ui/skeleton.tsx
new file mode 100644
index 0000000..432981b
--- /dev/null
+++ b/components/ui/skeleton.tsx
@@ -0,0 +1,11 @@
+import { cn } from '@/lib/utils';
+import { View } from 'react-native';
+
+function Skeleton({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+export { Skeleton };
diff --git a/components/ui/switch.tsx b/components/ui/switch.tsx
deleted file mode 100644
index c23365f..0000000
--- a/components/ui/switch.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import { cn } from '@/lib/utils';
-import * as SwitchPrimitives from '@rn-primitives/switch';
-import { Platform } from 'react-native';
-
-function Switch({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
-
-
- );
-}
-
-export { Switch };
diff --git a/components/ui/tabs.tsx b/components/ui/tabs.tsx
deleted file mode 100644
index 9fd73a2..0000000
--- a/components/ui/tabs.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import { TextClassContext } from '@/components/ui/text';
-import { cn } from '@/lib/utils';
-import * as TabsPrimitive from '@rn-primitives/tabs';
-import { Platform } from 'react-native';
-
-function Tabs({
- className,
- ...props
-}: React.ComponentProps) {
- return ;
-}
-
-function TabsList({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-function TabsTrigger({
- className,
- ...props
-}: React.ComponentProps) {
- const { value } = TabsPrimitive.useRootContext();
- return (
-
-
-
- );
-}
-
-function TabsContent({
- className,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-export { Tabs, TabsContent, TabsList, TabsTrigger };
diff --git a/components/ui/textarea.tsx b/components/ui/textarea.tsx
deleted file mode 100644
index a4b0349..0000000
--- a/components/ui/textarea.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { cn } from '@/lib/utils';
-import { Platform, TextInput } from 'react-native';
-
-function Textarea({
- className,
- multiline = true,
- numberOfLines = Platform.select({ web: 2, native: 8 }), // On web, numberOfLines also determines initial height. On native, it determines the maximum height.
- placeholderClassName,
- ...props
-}: React.ComponentProps) {
- return (
-
- );
-}
-
-export { Textarea };
diff --git a/components/ui/toggle.tsx b/components/ui/toggle.tsx
deleted file mode 100644
index 129c7c3..0000000
--- a/components/ui/toggle.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { Icon } from '@/components/ui/icon';
-import { TextClassContext } from '@/components/ui/text';
-import { cn } from '@/lib/utils';
-import * as TogglePrimitive from '@rn-primitives/toggle';
-import { cva, type VariantProps } from 'class-variance-authority';
-import * as React from 'react';
-import { Platform } from 'react-native';
-
-const toggleVariants = cva(
- cn(
- 'active:bg-muted group flex flex-row items-center justify-center gap-2 rounded-md',
- Platform.select({
- web: 'hover:bg-muted hover:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex cursor-default whitespace-nowrap outline-none transition-[color,box-shadow] focus-visible:ring-[3px] disabled:pointer-events-none [&_svg]:pointer-events-none',
- })
- ),
- {
- variants: {
- variant: {
- default: 'bg-transparent',
- outline: cn(
- 'border-input active:bg-accent border bg-transparent shadow-sm shadow-black/5',
- Platform.select({
- web: 'hover:bg-accent hover:text-accent-foreground',
- })
- ),
- },
- size: {
- default: 'h-10 min-w-10 px-2.5 sm:h-9 sm:min-w-9 sm:px-2',
- sm: 'h-9 min-w-9 px-2 sm:h-8 sm:min-w-8 sm:px-1.5',
- lg: 'h-11 min-w-11 px-3 sm:h-10 sm:min-w-10 sm:px-2.5',
- },
- },
- defaultVariants: {
- variant: 'default',
- size: 'default',
- },
- }
-);
-
-function Toggle({
- className,
- variant,
- size,
- ...props
-}: React.ComponentProps & VariantProps) {
- return (
-
-
-
- );
-}
-
-function ToggleIcon({ className, ...props }: React.ComponentProps) {
- const textClass = React.useContext(TextClassContext);
- return ;
-}
-
-export { Toggle, ToggleIcon, toggleVariants };
diff --git a/package.json b/package.json
index c9fbb87..a06f6aa 100644
--- a/package.json
+++ b/package.json
@@ -11,17 +11,12 @@
},
"dependencies": {
"@react-navigation/native": "^7.0.0",
- "@rn-primitives/aspect-ratio": "^1.4.0",
- "@rn-primitives/avatar": "^1.4.0",
"@rn-primitives/checkbox": "^1.4.0",
"@rn-primitives/dialog": "^1.4.0",
"@rn-primitives/dropdown-menu": "^1.4.0",
"@rn-primitives/portal": "~1.4.0",
"@rn-primitives/select": "^1.4.0",
"@rn-primitives/slot": "^1.4.0",
- "@rn-primitives/switch": "^1.4.0",
- "@rn-primitives/tabs": "^1.4.0",
- "@rn-primitives/toggle": "^1.4.0",
"@tanstack/react-query": "^5.100.1",
"axios": "^1.15.2",
"class-variance-authority": "^0.7.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f4d1f4e..6062f50 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -11,12 +11,6 @@ importers:
'@react-navigation/native':
specifier: ^7.0.0
version: 7.2.2(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/aspect-ratio':
- specifier: ^1.4.0
- version: 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/avatar':
- specifier: ^1.4.0
- version: 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
'@rn-primitives/checkbox':
specifier: ^1.4.0
version: 1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
@@ -35,15 +29,6 @@ importers:
'@rn-primitives/slot':
specifier: ^1.4.0
version: 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/switch':
- specifier: ^1.4.0
- version: 1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/tabs':
- specifier: ^1.4.0
- version: 1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/toggle':
- specifier: ^1.4.0
- version: 1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
'@tanstack/react-query':
specifier: ^5.100.1
version: 5.100.1(react@19.2.0)
@@ -1179,19 +1164,6 @@ packages:
'@types/react':
optional: true
- '@radix-ui/react-switch@1.2.6':
- resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
'@radix-ui/react-tabs@1.1.13':
resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
peerDependencies:
@@ -1205,19 +1177,6 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-toggle@1.1.10':
- resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
'@radix-ui/react-use-callback-ref@1.1.1':
resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
@@ -1419,30 +1378,6 @@ packages:
'@react-navigation/routers@7.5.3':
resolution: {integrity: sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==}
- '@rn-primitives/aspect-ratio@1.4.0':
- resolution: {integrity: sha512-ToMT0wep6tPSDochm88aDGxv8Rpy3TxogXHxf3fAl4g50Kmy+QIbWECyKmuxc2sK9E6fZeT5bgve7uTzuTovjw==}
- peerDependencies:
- react: '*'
- react-native: '*'
- react-native-web: '*'
- peerDependenciesMeta:
- react-native:
- optional: true
- react-native-web:
- optional: true
-
- '@rn-primitives/avatar@1.4.0':
- resolution: {integrity: sha512-OOS5QSET4XEVcv4q20PAwkzZPC6LlE0mMFAMjbJ4hLA6stzQJxNaK9PaUl1AXt+x4Prh4MPOC7ktuERIKkNeYg==}
- peerDependencies:
- react: '*'
- react-native: '*'
- react-native-web: '*'
- peerDependenciesMeta:
- react-native:
- optional: true
- react-native-web:
- optional: true
-
'@rn-primitives/checkbox@1.4.0':
resolution: {integrity: sha512-iEzNh7mvBSt233agp5Gi4RpcTlAYhj/rRgyw8//TG6Ds/FK1sr7gQpKwDnyTGuXE9avdD7L/xC9SAaVH6Zpqeg==}
peerDependencies:
@@ -1530,42 +1465,6 @@ packages:
react-native-web:
optional: true
- '@rn-primitives/switch@1.4.0':
- resolution: {integrity: sha512-7QvUjMRbFyXlj7FgluZT1JABOxsIHyAyqukaTw5RCINfUcyuJe0TQzKjmdeKw1kVItDn3tG63F6qalN3tOeygw==}
- peerDependencies:
- react: '*'
- react-native: '*'
- react-native-web: '*'
- peerDependenciesMeta:
- react-native:
- optional: true
- react-native-web:
- optional: true
-
- '@rn-primitives/tabs@1.4.0':
- resolution: {integrity: sha512-K7GXSr+hlaCHk3qQ0KFCBV6/PCDu8gz+SqGG78hyI+LOJuB/06lxX6duZrG53Q2A9I9tOu/vk2aCQ9xSbd0SfA==}
- peerDependencies:
- react: '*'
- react-native: '*'
- react-native-web: '*'
- peerDependenciesMeta:
- react-native:
- optional: true
- react-native-web:
- optional: true
-
- '@rn-primitives/toggle@1.4.0':
- resolution: {integrity: sha512-U05DHMyYezm93OMb5gB8xxPYtod/mTT9mUOuFB1/XzjcgX+WB7Z3XxtJsl3UA6gcb6posTzcsHrKDbeBlmWHeQ==}
- peerDependencies:
- react: '*'
- react-native: '*'
- react-native-web: '*'
- peerDependenciesMeta:
- react-native:
- optional: true
- react-native-web:
- optional: true
-
'@rn-primitives/types@1.4.0':
resolution: {integrity: sha512-U7El2BbYXZG8WZrOIV4y1wpxH8aJA/sKH3SL2tZTL153ENj8aOpZ9QwyUoAU2t+sKVPDejrKjo89HeNuIuwPGQ==}
peerDependencies:
@@ -5477,20 +5376,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-switch@1.2.6(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.0)
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-tabs@1.1.13(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -5506,16 +5391,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- '@radix-ui/react-toggle@1.1.10(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.0)
- react: 19.2.0
- react-dom: 19.2.0(react@19.2.0)
- optionalDependencies:
- '@types/react': 19.2.14
-
'@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.0)':
dependencies:
react: 19.2.0
@@ -5770,25 +5645,6 @@ snapshots:
dependencies:
nanoid: 3.3.11
- '@rn-primitives/aspect-ratio@1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@rn-primitives/slot': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/types': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- optionalDependencies:
- react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
- react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
-
- '@rn-primitives/avatar@1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@rn-primitives/hooks': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/slot': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/types': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- optionalDependencies:
- react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
- react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
-
'@rn-primitives/checkbox@1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
dependencies:
'@radix-ui/react-checkbox': 1.3.3(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@@ -5880,48 +5736,6 @@ snapshots:
react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@rn-primitives/switch@1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@radix-ui/react-switch': 1.2.6(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@rn-primitives/slot': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/types': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- optionalDependencies:
- react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
- react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
- - react-dom
-
- '@rn-primitives/tabs@1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@radix-ui/react-tabs': 1.1.13(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@rn-primitives/slot': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/types': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- optionalDependencies:
- react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
- react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
- - react-dom
-
- '@rn-primitives/toggle@1.4.0(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
- dependencies:
- '@radix-ui/react-toggle': 1.1.10(@types/react@19.2.14)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@rn-primitives/slot': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- '@rn-primitives/types': 1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)
- react: 19.2.0
- optionalDependencies:
- react-native: 0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0)
- react-native-web: 0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
- - react-dom
-
'@rn-primitives/types@1.4.0(react-native-web@0.21.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-native@0.83.4(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)':
dependencies:
react: 19.2.0