diff --git a/README.md b/README.md index 77027820..223623a2 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,18 @@ Build performant 3D user interfaces for Three.js using @react-three/fiber and yo TODO Release +- fix: responsiveness incorrect - https://pmndrs.github.io/uikit/examples/apfel/?component=button - fix: zoom with ortho camera - fix: scroll jumps after scrolling once - feat: nesting inside non root/container components (e.g. image) - feat: drag/click threshold - feat: input - fix: decrease clipping rect when scrollbar present +- feat: upgrade to yoga2.0 Roadmap - on demand rendering to save battery for UI only apps / rendering to render targets -- upgrade to yoga2.0 - virtual lists (support thousands of elements in a list by using fixed sizes and not using yoga) - option to render to seperate render targets depending on element type (e.g. render text to high quality quad layer for WebXR) - scrollIntoView diff --git a/examples/apfel/package.json b/examples/apfel/package.json index eb612a75..802ef019 100644 --- a/examples/apfel/package.json +++ b/examples/apfel/package.json @@ -10,12 +10,13 @@ "@react-three/uikit": "workspace:^", "@react-three/uikit-lucide": "workspace:^", "@splinetool/r3f-spline": "^1.0.2", - "@types/three": "^0.160.0", + "@types/three": "^0.161.0", + "@vitejs/plugin-basic-ssl": "^1.1.0", "maath": "^0.10.7", "r3f-perf": "^7.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.160.0" + "three": "^0.161.0" }, "scripts": { "dev": "vite --host", diff --git a/examples/apfel/src/App.tsx b/examples/apfel/src/App.tsx index 90b0f223..a08fffae 100644 --- a/examples/apfel/src/App.tsx +++ b/examples/apfel/src/App.tsx @@ -1,29 +1,32 @@ import { Canvas } from '@react-three/fiber' import { Fullscreen, Text, Container } from '@react-three/uikit' -import { BoxSelect, ChevronRight, Copy, Info } from '@react-three/uikit-lucide' +import { Copy } from '@react-three/uikit-lucide' import { XWebPointers, noEvents } from '@coconut-xr/xinteraction/react' import { Card } from '@/card' -import { Checkbox } from '@/checkbox' -import { List, ListItem } from '@/list' import { Button } from '@/button' -import { Progress } from '@/progress' import { Tabs, TabsButton } from '@/tabs' -import { Loading } from '@/loading' -import { Slider } from '@/slider' -import { TabBar, TabBarItem } from '@/tab-bar' import { Defaults } from '@/theme' import { useState } from 'react' +import { TextOnCard } from './components/card' +import { CheckboxOnCard } from './components/checkbox' +import { ButtonsOnCard } from './components/button' +import { ListsOnCard } from './components/list' +import { SlidersOnCard } from './components/slider' +import { TabsOnCard } from './components/tabs' +import { TabBarWithText } from './components/tab-bar' +import { ProgressBarsOnCard } from './components/progress' +import { LoadingSpinnersOnCard } from './components/loading' const componentPages = { - card: CardPage, - checkbox: CheckboxesPage, - button: ButtonsPage, - list: ListsPage, - slider: SlidersPage, - tabs: TabsPage, - 'tab-bar': TabBarsPage, - progress: ProgressPage, - loading: LoadingPage, + card: TextOnCard, + checkbox: CheckboxOnCard, + button: ButtonsOnCard, + list: ListsOnCard, + slider: SlidersOnCard, + tabs: TabsOnCard, + 'tab-bar': TabBarWithText, + progress: ProgressBarsOnCard, + loading: LoadingSpinnersOnCard, } const defaultComponent = 'button' @@ -93,453 +96,3 @@ export default function App() { ) } - -export function CheckboxesPage() { - return ( - - - - - ) -} - -export function CardPage() { - return ( - - Hello World! - - This is the apfel kit. - - - ) -} - -export function ButtonsPage() { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ) -} - -export function ListsPage() { - return ( - - - - - Subtitle} - trailingAccessory={} - > - Title - - }> - Title - - Subtitle} - selected - trailingAccessory={} - > - Title - - - - - - Subtitle} - leadingAccessory={} - trailingAccessory={ - - } - > - Title - - } - trailingAccessory={ - - } - > - Title - - Subtitle} - selected - leadingAccessory={} - trailingAccessory={ - - } - > - Title - - - - - - - - Subtitle} - trailingAccessory={} - > - Title - - }> - Title - - Subtitle} - trailingAccessory={} - > - Title - - - - - - Subtitle} - leadingAccessory={} - trailingAccessory={ - - } - > - Title - - } - trailingAccessory={ - - } - > - Title - - Subtitle} - leadingAccessory={} - trailingAccessory={ - - } - > - Title - - - - - - ) -} - -export function ProgressPage() { - return ( - - - - - - - - ) -} - -export function LoadingPage() { - return ( - - - - - - ) -} - -export function TabsPage() { - return ( - - - - Label - - - Label - - - Label - - - Long Label - - - Disabled - - - - - - Label - - - - Label - - - - Label - - - - Disabled - - - - - Label - - - Label - - - Label - - - Long Label - - - Disabled - - - - ) -} - -export function SlidersPage() { - return ( - - - - - } /> - } /> - - - - - } /> - } /> - - - ) -} - -export function TabBarsPage() { - return ( - - }> - Label - - }> - Label - - }> - Label - - }> - Label - - - ) -} diff --git a/examples/apfel/src/components/button.tsx b/examples/apfel/src/components/button.tsx new file mode 100644 index 00000000..fd5e25d6 --- /dev/null +++ b/examples/apfel/src/components/button.tsx @@ -0,0 +1,181 @@ +import { Container, Text } from '@react-three/uikit' +import { Card } from '@/card' +import { Button } from '@/button' +import { BoxSelect } from '@react-three/uikit-lucide' + +export function ButtonsOnCard() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} diff --git a/examples/apfel/src/components/card.tsx b/examples/apfel/src/components/card.tsx new file mode 100644 index 00000000..1a57168d --- /dev/null +++ b/examples/apfel/src/components/card.tsx @@ -0,0 +1,13 @@ +import { Text } from '@react-three/uikit' +import { Card } from '@/card' + +export function TextOnCard() { + return ( + + Hello World! + + This is the apfel kit. + + + ) +} diff --git a/examples/apfel/src/components/checkbox.tsx b/examples/apfel/src/components/checkbox.tsx new file mode 100644 index 00000000..5df94b90 --- /dev/null +++ b/examples/apfel/src/components/checkbox.tsx @@ -0,0 +1,11 @@ +import { Card } from '@/card' +import { Checkbox } from '@/checkbox' + +export function CheckboxOnCard() { + return ( + + + + + ) +} diff --git a/examples/apfel/src/components/list.tsx b/examples/apfel/src/components/list.tsx new file mode 100644 index 00000000..659ae3b1 --- /dev/null +++ b/examples/apfel/src/components/list.tsx @@ -0,0 +1,132 @@ +import { Text, Container } from '@react-three/uikit' +import { BoxSelect, ChevronRight, Info } from '@react-three/uikit-lucide' +import { Card } from '@/card' +import { List, ListItem } from '@/list' +import { Button } from '@/button' + +export function ListsOnCard() { + return ( + + + + + Subtitle} + trailingAccessory={} + > + Title + + }> + Title + + Subtitle} + selected + trailingAccessory={} + > + Title + + + + + + Subtitle} + leadingAccessory={} + trailingAccessory={ + + } + > + Title + + } + trailingAccessory={ + + } + > + Title + + Subtitle} + selected + leadingAccessory={} + trailingAccessory={ + + } + > + Title + + + + + + + + Subtitle} + trailingAccessory={} + > + Title + + }> + Title + + Subtitle} + trailingAccessory={} + > + Title + + + + + + Subtitle} + leadingAccessory={} + trailingAccessory={ + + } + > + Title + + } + trailingAccessory={ + + } + > + Title + + Subtitle} + leadingAccessory={} + trailingAccessory={ + + } + > + Title + + + + + + ) +} diff --git a/examples/apfel/src/components/loading.tsx b/examples/apfel/src/components/loading.tsx new file mode 100644 index 00000000..bc2fcd46 --- /dev/null +++ b/examples/apfel/src/components/loading.tsx @@ -0,0 +1,12 @@ +import { Card } from '@/card' +import { Loading } from '@/loading' + +export function LoadingSpinnersOnCard() { + return ( + + + + + + ) +} diff --git a/examples/apfel/src/components/progress.tsx b/examples/apfel/src/components/progress.tsx new file mode 100644 index 00000000..6c130e3e --- /dev/null +++ b/examples/apfel/src/components/progress.tsx @@ -0,0 +1,14 @@ +import { Card } from '@/card' +import { Progress } from '@/progress' + +export function ProgressBarsOnCard() { + return ( + + + + + + + + ) +} diff --git a/examples/apfel/src/components/slider.tsx b/examples/apfel/src/components/slider.tsx new file mode 100644 index 00000000..2502dadc --- /dev/null +++ b/examples/apfel/src/components/slider.tsx @@ -0,0 +1,30 @@ +import { Container } from '@react-three/uikit' +import { BoxSelect } from '@react-three/uikit-lucide' +import { Card } from '@/card' +import { Slider } from '@/slider' + +export function SlidersOnCard() { + return ( + + + + + } /> + } /> + + + + + } /> + } /> + + + ) +} diff --git a/examples/apfel/src/components/tab-bar.tsx b/examples/apfel/src/components/tab-bar.tsx new file mode 100644 index 00000000..b9c4c5e4 --- /dev/null +++ b/examples/apfel/src/components/tab-bar.tsx @@ -0,0 +1,22 @@ +import { Text } from '@react-three/uikit' +import { BoxSelect } from '@react-three/uikit-lucide' +import { TabBar, TabBarItem } from '@/tab-bar' + +export function TabBarWithText() { + return ( + + }> + Label + + }> + Label + + }> + Label + + }> + Label + + + ) +} diff --git a/examples/apfel/src/components/tabs.tsx b/examples/apfel/src/components/tabs.tsx new file mode 100644 index 00000000..8e6265dd --- /dev/null +++ b/examples/apfel/src/components/tabs.tsx @@ -0,0 +1,63 @@ +import { Text } from '@react-three/uikit' +import { BoxSelect } from '@react-three/uikit-lucide' +import { Card } from '@/card' +import { Tabs, TabsButton } from '@/tabs' + +export function TabsOnCard() { + return ( + + + + Label + + + Label + + + Label + + + Long Label + + + Disabled + + + + + + Label + + + + Label + + + + Label + + + + Disabled + + + + + Label + + + Label + + + Label + + + Long Label + + + Disabled + + + + ) +} diff --git a/examples/apfel/vite.config.ts b/examples/apfel/vite.config.ts index d205f71d..83d150f5 100644 --- a/examples/apfel/vite.config.ts +++ b/examples/apfel/vite.config.ts @@ -1,10 +1,11 @@ import { defineConfig } from 'vite' import path from 'path' import react from '@vitejs/plugin-react' +import basicSsl from '@vitejs/plugin-basic-ssl' // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], + plugins: [react(), basicSsl()], optimizeDeps: { include: ['@react-three/uikit-lucide', '@react-three/uikit'], }, diff --git a/examples/card/package.json b/examples/card/package.json index 3dcfca48..01c2cd2c 100644 --- a/examples/card/package.json +++ b/examples/card/package.json @@ -9,12 +9,12 @@ "@react-three/uikit": "workspace:^", "@react-three/uikit-lucide": "workspace:^", "@splinetool/r3f-spline": "^1.0.2", - "@types/three": "^0.160.0", + "@types/three": "^0.161.0", "maath": "^0.10.7", "r3f-perf": "^7.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.160.0" + "three": "^0.161.0" }, "scripts": { "dev": "vite --host", diff --git a/examples/card/src/App.jsx b/examples/card/src/App.jsx index 7a18b075..8cde9232 100644 --- a/examples/card/src/App.jsx +++ b/examples/card/src/App.jsx @@ -84,7 +84,7 @@ export function CardPage() { paddingTop={28 + 4} alignItems="center" justifyContent="space-between" - borderRadiusBottom={20} + borderBottomRadius={20} castShadow > diff --git a/examples/dashboard/package.json b/examples/dashboard/package.json index 63a24f6c..651780d6 100644 --- a/examples/dashboard/package.json +++ b/examples/dashboard/package.json @@ -7,11 +7,11 @@ "@react-three/postprocessing": "^2.16.0", "@react-three/uikit": "workspace:^", "@react-three/uikit-lucide": "workspace:^", - "@types/three": "^0.160.0", + "@types/three": "^0.161.0", "r3f-perf": "^7.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.160.0", + "three": "^0.161.0", "vite-plugin-mkcert": "^1.17.4", "zustand": "4" }, diff --git a/examples/dashboard/src/components/Overview.tsx b/examples/dashboard/src/components/Overview.tsx index 72a6252e..8c18c9a3 100644 --- a/examples/dashboard/src/components/Overview.tsx +++ b/examples/dashboard/src/components/Overview.tsx @@ -76,7 +76,7 @@ export function Overview() { ) } - -export function TooltipDemo() { - return ( - - - - - - Add to library - - - ) -} - -export function AlertDialogDemo() { - return ( - - - - - - - - Are you absolutely sure? - - - - This action cannot be undone. This will permanently delete your account and remove your data from our - servers. - - - - - - Cancel - - - Continue - - - - - ) -} - -export function DialogDemo() { - return ( - - - - - - - - Edit profile - - - Make changes to your profile here. Click save when you're done. - - - - - - {/**/} - - - - {/**/} - - - - - - - - ) -} - -function ToggleGroupDemo() { - return ( - - - - - - - - - - - - ) -} - -function ToggleDemo() { - return ( - - - - ) -} - -function TabsDemo() { - return ( - - - - Account - - - Password - - - - - - - Account - - - Make changes to your account here. Click save when you're done. - - - - - - Pedro Duarte - - - - @peduarte - - - - - - - - - - - - Password - - - Change your password here. After saving, you'll be logged out. - - - - - - password - - - - password - - - - - - - - - ) -} - -function SwitchDemo() { - return ( - - - - - ) -} - -function SliderDemo() { - return -} - -function SkeletonDemo() { - return ( - - - - - - - - ) -} - -function SeparatorDemo() { - return ( - - - - Radix Primitives - - - An open-source UI component library. - - - - - - Blog - - Docs - - Source - - - - ) -} - -function RadioGroupDemo() { - return ( - - - - - - - - - - - - ) -} - -function ProgressDemo() { - const [progress, setProgress] = useState(13) - - useEffect(() => { - const timer = setTimeout(() => setProgress(66), 500) - return () => clearTimeout(timer) - }, []) - - return -} - -function PaginationDemo() { - return ( - - - - - - - - 1 - - - - - 2 - - - - - 3 - - - - - - - - - - - ) -} - -function CheckboxDemo() { - return ( - - - - - ) -} - -const notifications = [ - { - title: 'Your call has been confirmed.', - description: '1 hour ago', - }, - { - title: 'You have a new message!', - description: '1 hour ago', - }, - { - title: 'Your subscription is expiring soon!', - description: '2 hours ago', - }, -] - -function CardDemo() { - return ( - - - - Notifications - - - You have 3 unread messages. - - - - - - - - Push Notifications - - - Send notifications to device. - - - - - - {notifications.map((notification, index) => ( - - - - - {notification.title} - - - {notification.description} - - - - ))} - - - - - - - ) -} - -function ButtonDemo() { - return ( - - ) -} - -function BadgeDemo() { - return ( - - Badge - - ) -} - -function AvatarDemo() { - return ( - - - - ) -} - -function AlertDemo() { - return ( - - - - - - Error - - - You can add components to your app using the cli. - - - ) -} - -//TODO: type="single" collapsible -export function AccordionDemo() { - return ( - - - - - Is it accessible? - - - Yes. It adheres to the WAI-ARIA design pattern. - - - - - Is it styled? - - - Yes. It comes with default styles that matches the other components' aesthetic. - - - - - Is it animated? - - - Yes. It's animated by default, but you can disable it if you prefer. - - - - - ) -} diff --git a/examples/default/src/components/accordion.tsx b/examples/default/src/components/accordion.tsx new file mode 100644 index 00000000..ab055aad --- /dev/null +++ b/examples/default/src/components/accordion.tsx @@ -0,0 +1,36 @@ +import { Text, Container } from '@react-three/uikit' +import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/accordion' + +//TODO: type="single" collapsible +export function AccordionDemo() { + return ( + + + + + Is it accessible? + + + Yes. It adheres to the WAI-ARIA design pattern. + + + + + Is it styled? + + + Yes. It comes with default styles that matches the other components' aesthetic. + + + + + Is it animated? + + + Yes. It's animated by default, but you can disable it if you prefer. + + + + + ) +} diff --git a/examples/default/src/components/alert-dialog.tsx b/examples/default/src/components/alert-dialog.tsx new file mode 100644 index 00000000..9fee4431 --- /dev/null +++ b/examples/default/src/components/alert-dialog.tsx @@ -0,0 +1,46 @@ +import { Text } from '@react-three/uikit' +import { Button } from '@/button' +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, + AlertDialogTrigger, +} from '@/alert-dialog.js' + +export function AlertDialogDemo() { + return ( + + + + + + + + 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/examples/default/src/components/alert.tsx b/examples/default/src/components/alert.tsx new file mode 100644 index 00000000..0c8cf1b8 --- /dev/null +++ b/examples/default/src/components/alert.tsx @@ -0,0 +1,19 @@ +import { Text } from '@react-three/uikit' +import { Terminal } from '@react-three/uikit-lucide' +import { Alert, AlertDescription, AlertIcon, AlertTitle } from '@/alert' + +export function AlertDemo() { + return ( + + + + + + Error + + + You can add components to your app using the cli. + + + ) +} diff --git a/examples/default/src/components/avatar.tsx b/examples/default/src/components/avatar.tsx new file mode 100644 index 00000000..cdf5acc5 --- /dev/null +++ b/examples/default/src/components/avatar.tsx @@ -0,0 +1,10 @@ +import { Container } from '@react-three/uikit' +import { Avatar } from '@/avatar' + +export function AvatarDemo() { + return ( + + + + ) +} diff --git a/examples/default/src/components/badge.tsx b/examples/default/src/components/badge.tsx new file mode 100644 index 00000000..aed02b34 --- /dev/null +++ b/examples/default/src/components/badge.tsx @@ -0,0 +1,10 @@ +import { Text } from '@react-three/uikit' +import { Badge } from '@/badge' + +export function BadgeDemo() { + return ( + + Badge + + ) +} diff --git a/examples/default/src/components/button.tsx b/examples/default/src/components/button.tsx new file mode 100644 index 00000000..d965150a --- /dev/null +++ b/examples/default/src/components/button.tsx @@ -0,0 +1,10 @@ +import { ChevronRight } from '@react-three/uikit-lucide' +import { Button } from '@/button' + +export function ButtonDemo() { + return ( + + ) +} diff --git a/examples/default/src/components/card.tsx b/examples/default/src/components/card.tsx new file mode 100644 index 00000000..5c880203 --- /dev/null +++ b/examples/default/src/components/card.tsx @@ -0,0 +1,78 @@ +import { Text, Container } from '@react-three/uikit' +import { BellRing, Check } from '@react-three/uikit-lucide' +import { colors } from '@/theme' +import { Button } from '@/button' +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/card' +import { Switch } from '@/switch' + +const notifications = [ + { + title: 'Your call has been confirmed.', + description: '1 hour ago', + }, + { + title: 'You have a new message!', + description: '1 hour ago', + }, + { + title: 'Your subscription is expiring soon!', + description: '2 hours ago', + }, +] + +export function CardDemo() { + return ( + + + + Notifications + + + You have 3 unread messages. + + + + + + + + Push Notifications + + + Send notifications to device. + + + + + + {notifications.map((notification, index) => ( + + + + + {notification.title} + + + {notification.description} + + + + ))} + + + + + + + ) +} diff --git a/examples/default/src/components/checkbox.tsx b/examples/default/src/components/checkbox.tsx new file mode 100644 index 00000000..c54811a4 --- /dev/null +++ b/examples/default/src/components/checkbox.tsx @@ -0,0 +1,14 @@ +import { Text, Container } from '@react-three/uikit' +import { Checkbox } from '@/checkbox' +import { Label } from '@/label' + +export function CheckboxDemo() { + return ( + + + + + ) +} diff --git a/examples/default/src/components/dialog.tsx b/examples/default/src/components/dialog.tsx new file mode 100644 index 00000000..4b30c7e9 --- /dev/null +++ b/examples/default/src/components/dialog.tsx @@ -0,0 +1,53 @@ +import { Text, Container } from '@react-three/uikit' +import { Button } from '@/button' +import { Label } from '@/label' +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from '@/dialog.js' + +export function DialogDemo() { + return ( + + + + + + + + Edit profile + + + Make changes to your profile here. Click save when you're done. + + + + + + {/**/} + + + + {/**/} + + + + + + + + ) +} diff --git a/examples/default/src/components/label.tsx b/examples/default/src/components/label.tsx new file mode 100644 index 00000000..dff3b820 --- /dev/null +++ b/examples/default/src/components/label.tsx @@ -0,0 +1,14 @@ +import { Text, Container } from '@react-three/uikit' +import { Checkbox } from '@/checkbox' +import { Label } from '@/label' + +export function LabelDemo() { + return ( + + + + + ) +} diff --git a/examples/default/src/components/pagination.tsx b/examples/default/src/components/pagination.tsx new file mode 100644 index 00000000..30a13c15 --- /dev/null +++ b/examples/default/src/components/pagination.tsx @@ -0,0 +1,43 @@ +import { Text } from '@react-three/uikit' +import { + Pagination, + PaginationContent, + PaginationEllipsis, + PaginationItem, + PaginationLink, + PaginationNext, + PaginationPrevious, +} from '@/pagination' + +export function PaginationDemo() { + return ( + + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + + + + + + + ) +} diff --git a/examples/default/src/components/progress.tsx b/examples/default/src/components/progress.tsx new file mode 100644 index 00000000..91b55983 --- /dev/null +++ b/examples/default/src/components/progress.tsx @@ -0,0 +1,13 @@ +import { useEffect, useState } from 'react' +import { Progress } from '@/progress' + +export function ProgressDemo() { + const [progress, setProgress] = useState(13) + + useEffect(() => { + const timer = setTimeout(() => setProgress(66), 500) + return () => clearTimeout(timer) + }, []) + + return +} diff --git a/examples/default/src/components/radio-group.tsx b/examples/default/src/components/radio-group.tsx new file mode 100644 index 00000000..737365fb --- /dev/null +++ b/examples/default/src/components/radio-group.tsx @@ -0,0 +1,25 @@ +import { Text } from '@react-three/uikit' +import { Label } from '@/label' +import { RadioGroup, RadioGroupItem } from '@/radio-group' + +export function RadioGroupDemo() { + return ( + + + + + + + + + + + + ) +} diff --git a/examples/default/src/components/separator.tsx b/examples/default/src/components/separator.tsx new file mode 100644 index 00000000..e9b5d46d --- /dev/null +++ b/examples/default/src/components/separator.tsx @@ -0,0 +1,28 @@ +import { DefaultProperties, Text, Container } from '@react-three/uikit' +import { colors } from '@/theme' +import { Separator } from '@/separator' + +export function SeparatorDemo() { + return ( + + + + Radix Primitives + + + An open-source UI component library. + + + + + + Blog + + Docs + + Source + + + + ) +} diff --git a/examples/default/src/components/skeleton.tsx b/examples/default/src/components/skeleton.tsx new file mode 100644 index 00000000..9280e60b --- /dev/null +++ b/examples/default/src/components/skeleton.tsx @@ -0,0 +1,14 @@ +import { Container } from '@react-three/uikit' +import { Skeleton } from '@/skeleton' + +export function SkeletonDemo() { + return ( + + + + + + + + ) +} diff --git a/examples/default/src/components/slider.tsx b/examples/default/src/components/slider.tsx new file mode 100644 index 00000000..1d53acba --- /dev/null +++ b/examples/default/src/components/slider.tsx @@ -0,0 +1,5 @@ +import { Slider } from '@/slider' + +export function SliderDemo() { + return +} diff --git a/examples/default/src/components/switch.tsx b/examples/default/src/components/switch.tsx new file mode 100644 index 00000000..84b6c9ef --- /dev/null +++ b/examples/default/src/components/switch.tsx @@ -0,0 +1,14 @@ +import { Text, Container } from '@react-three/uikit' +import { Label } from '@/label' +import { Switch } from '@/switch' + +export function SwitchDemo() { + return ( + + + + + ) +} diff --git a/examples/default/src/components/tabs.tsx b/examples/default/src/components/tabs.tsx new file mode 100644 index 00000000..9a60c4c5 --- /dev/null +++ b/examples/default/src/components/tabs.tsx @@ -0,0 +1,82 @@ +import { Text, Container } from '@react-three/uikit' +import { Button } from '@/button' +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/card' +import { Label } from '@/label' +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/tabs' + +export function TabsDemo() { + return ( + + + + Account + + + Password + + + + + + + Account + + + Make changes to your account here. Click save when you're done. + + + + + + Pedro Duarte + + + + @peduarte + + + + + + + + + + + + Password + + + Change your password here. After saving, you'll be logged out. + + + + + + password + + + + password + + + + + + + + + ) +} diff --git a/examples/default/src/components/toggle-group.tsx b/examples/default/src/components/toggle-group.tsx new file mode 100644 index 00000000..316f4862 --- /dev/null +++ b/examples/default/src/components/toggle-group.tsx @@ -0,0 +1,18 @@ +import { Bold, Italic, Underline } from '@react-three/uikit-lucide' +import { ToggleGroup, ToggleGroupItem } from '@/toggle-group' + +export function ToggleGroupDemo() { + return ( + + + + + + + + + + + + ) +} diff --git a/examples/default/src/components/toggle.tsx b/examples/default/src/components/toggle.tsx new file mode 100644 index 00000000..73303a2e --- /dev/null +++ b/examples/default/src/components/toggle.tsx @@ -0,0 +1,10 @@ +import { Bold } from '@react-three/uikit-lucide' +import { Toggle } from '@/toggle' + +export function ToggleDemo() { + return ( + + + + ) +} diff --git a/examples/default/src/components/tooltip.tsx b/examples/default/src/components/tooltip.tsx new file mode 100644 index 00000000..29b40283 --- /dev/null +++ b/examples/default/src/components/tooltip.tsx @@ -0,0 +1,18 @@ +import { Text } from '@react-three/uikit' +import { Button } from '@/button' +import { Tooltip, TooltipContent, TooltipTrigger } from '@/tooltip.js' + +export function TooltipDemo() { + return ( + + + + + + Add to library + + + ) +} diff --git a/examples/market/package.json b/examples/market/package.json index c3deb8d3..edd56ea7 100644 --- a/examples/market/package.json +++ b/examples/market/package.json @@ -6,11 +6,11 @@ "@react-three/postprocessing": "^2.16.0", "@react-three/uikit": "workspace:^", "@react-three/uikit-lucide": "workspace:^", - "@types/three": "^0.160.0", + "@types/three": "^0.161.0", "r3f-perf": "^7.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.160.0" + "three": "^0.161.0" }, "scripts": { "dev": "vite --host", diff --git a/examples/uikit/package.json b/examples/uikit/package.json index 44d5ad81..87d206cb 100644 --- a/examples/uikit/package.json +++ b/examples/uikit/package.json @@ -7,12 +7,12 @@ "@react-three/uikit": "workspace:^", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.160.0" + "three": "^0.161.0" }, "scripts": { "dev": "vite --host" }, "devDependencies": { - "@types/three": "^0.160.0" + "@types/three": "^0.161.0" } } diff --git a/package.json b/package.json index 3439160d..63dfa555 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "type": "module", "devDependencies": { "@react-three/eslint-plugin": "^0.1.1", "@types/chai": "^4.3.10", diff --git a/packages/kits/apfel/card.tsx b/packages/kits/apfel/card.tsx index a906e63c..aacc971f 100644 --- a/packages/kits/apfel/card.tsx +++ b/packages/kits/apfel/card.tsx @@ -11,7 +11,7 @@ export function Card({ children, ...props }: ComponentPropsWithoutRef diff --git a/packages/kits/apfel/list.tsx b/packages/kits/apfel/list.tsx index 48a03fde..eee3a290 100644 --- a/packages/kits/apfel/list.tsx +++ b/packages/kits/apfel/list.tsx @@ -43,8 +43,8 @@ export function ListItem({ diff --git a/packages/kits/apfel/tab-bar.tsx b/packages/kits/apfel/tab-bar.tsx index bf9aadfb..e25068e7 100644 --- a/packages/kits/apfel/tab-bar.tsx +++ b/packages/kits/apfel/tab-bar.tsx @@ -34,14 +34,22 @@ export function TabBar({ }) { const [internalValue, setInternalValue] = useState(defaultValue) const value = valueProp !== undefined ? valueProp : internalValue - - const setValue = useCallback((value: string) => { - setInternalValue(value) - onValueChange?.(value) - }, []) + const onValueChangeRef = useRef(onValueChange) + onValueChangeRef.current = onValueChange const [isExpanded, setIsExpanded] = useState(false) - const context = useMemo(() => ({ isExpanded, setIsExpanded, value, setValue }), [isExpanded, value]) + const context = useMemo( + () => ({ + isExpanded, + setIsExpanded, + value, + setValue: (value: string) => { + setInternalValue(value) + onValueChangeRef.current?.(value) + }, + }), + [isExpanded, value], + ) const timeoutRef = useRef() diff --git a/packages/kits/apfel/tabs.tsx b/packages/kits/apfel/tabs.tsx index a2c79446..e51c26f9 100644 --- a/packages/kits/apfel/tabs.tsx +++ b/packages/kits/apfel/tabs.tsx @@ -53,7 +53,7 @@ export function Tabs({ borderColor={colors.background} borderBend={disabled ? 0 : -0.3} borderRadius={18} - backgroundMaterialClass={GlassMaterial} + panelMaterialClass={GlassMaterial} flexDirection="row" {...props} /> @@ -89,7 +89,7 @@ export function TabsButton({ children, value, disabled, ...props }: SegmentedCon border={2} borderRadius={16} borderBend={0.3} - backgroundMaterialClass={GlassMaterial} + panelMaterialClass={GlassMaterial} flexDirection="row" alignItems="center" gapColumn={10} diff --git a/packages/kits/apfel/text-input.tsx b/packages/kits/apfel/text-input.tsx index 7fc401b7..afb1a1e2 100644 --- a/packages/kits/apfel/text-input.tsx +++ b/packages/kits/apfel/text-input.tsx @@ -48,7 +48,7 @@ export function TextInput({ borderColor="#444" borderOpacity={opacity} borderBend={disabled ? 0 : -0.3} - material={material} + materialClass={material} {...props} onPointerEnter={(e) => { setHoverCount((current) => current + 1); diff --git a/packages/kits/default/package.json b/packages/kits/default/package.json index 208dd0c8..1c440f43 100644 --- a/packages/kits/default/package.json +++ b/packages/kits/default/package.json @@ -11,8 +11,8 @@ "@react-three/uikit": "workspace:^", "@react-three/uikit-lucide": "workspace:^", "@types/react": "^18.2.47", - "@types/three": "^0.160.0", - "three": "^0.160.0" + "@types/three": "^0.161.0", + "three": "^0.161.0" }, "type": "module", "dependencies": { diff --git a/packages/uikit/package.json b/packages/uikit/package.json index 395b0754..26f28618 100644 --- a/packages/uikit/package.json +++ b/packages/uikit/package.json @@ -40,7 +40,7 @@ "peerDependencies": { "@react-three/fiber": ">=8", "react": ">=18", - "three": ">=0.140" + "three": ">=0.160" }, "dependencies": { "@preact/signals-core": "^1.5.1", @@ -59,11 +59,11 @@ "@types/prompts": "^2.4.9", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", - "@types/three": "^0.160.0", + "@types/three": "^0.161.0", "react": "^18.2.0", "react-dom": "^18.2.0", "replace-in-files-cli": "^2.2.0", - "three": "^0.160.0", + "three": "^0.161.0", "wasmwrap": "^1.0.0" } } diff --git a/packages/uikit/src/components/container.tsx b/packages/uikit/src/components/container.tsx index 9c67a113..4ebea473 100644 --- a/packages/uikit/src/components/container.tsx +++ b/packages/uikit/src/components/container.tsx @@ -60,7 +60,7 @@ export const Container = forwardRef< { children?: ReactNode zIndexOffset?: ZIndexOffset - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass } & ContainerProperties & EventHandlers & LayoutListeners & @@ -76,7 +76,7 @@ export const Container = forwardRef< const parentClippingRect = useParentClippingRect() const globalMatrix = useGlobalMatrix(transformMatrix) const isClipped = useIsClipped(parentClippingRect, globalMatrix, node.size, node) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const orderInfo = useOrderInfo(ElementType.Panel, properties.zIndexOffset, groupDeps) useInstancedPanel( collection, @@ -99,7 +99,7 @@ export const Container = forwardRef< node, globalMatrix, isClipped, - properties.scrollbarMaterialClass, + properties.scrollbarPanelMaterialClass, parentClippingRect, orderInfo, ) diff --git a/packages/uikit/src/components/content.tsx b/packages/uikit/src/components/content.tsx index d03c5a8a..c9eb8b7d 100644 --- a/packages/uikit/src/components/content.tsx +++ b/packages/uikit/src/components/content.tsx @@ -63,7 +63,7 @@ export const Content = forwardRef< { children?: ReactNode zIndexOffset?: ZIndexOffset - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass keepAspectRatio?: boolean } & ContentProperties & EventHandlers & @@ -81,7 +81,7 @@ export const Content = forwardRef< const isClipped = useIsClipped(parentClippingRect, globalMatrix, node.size, node) useLayoutListeners(properties, node.size) useViewportListeners(properties, isClipped) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const backgroundOrderInfo = useOrderInfo(ElementType.Panel, properties.zIndexOffset, groupDeps) useInstancedPanel( collection, diff --git a/packages/uikit/src/components/fullscreen.tsx b/packages/uikit/src/components/fullscreen.tsx index a1713a13..50e948b9 100644 --- a/packages/uikit/src/components/fullscreen.tsx +++ b/packages/uikit/src/components/fullscreen.tsx @@ -14,30 +14,28 @@ export const Fullscreen = forwardRef< loadYoga?: () => Promise children?: ReactNode precision?: number - pixelSize?: number attachCamera?: boolean } & EventHandlers & LayoutListeners & ScrollListeners >((properties, ref) => { - const pixelSize = properties.pixelSize ?? DEFAULT_PIXEL_SIZE const store = useStore() const [sizeX, sizeY] = useMemo(() => { const { width, height } = store.getState().size - return [signal(width * pixelSize), signal(height * pixelSize)] as const + return [signal(width * DEFAULT_PIXEL_SIZE), signal(height * DEFAULT_PIXEL_SIZE)] as const // eslint-disable-next-line react-hooks/exhaustive-deps }, []) useEffect(() => { const fn = (state: RootState) => { batch(() => { - sizeX.value = state.size.width * pixelSize - sizeY.value = state.size.height * pixelSize + sizeX.value = state.size.width * DEFAULT_PIXEL_SIZE + sizeY.value = state.size.height * DEFAULT_PIXEL_SIZE }) } fn(store.getState()) return store.subscribe(fn) // eslint-disable-next-line react-hooks/exhaustive-deps - }, [store, pixelSize]) + }, [store]) const camera = useThree((s) => s.camera) const groupRef = useRef(null) useFrame(() => { diff --git a/packages/uikit/src/components/icon.tsx b/packages/uikit/src/components/icon.tsx index e6530282..2eac9287 100644 --- a/packages/uikit/src/components/icon.tsx +++ b/packages/uikit/src/components/icon.tsx @@ -50,7 +50,7 @@ export const SvgIconFromText = forwardRef< svgHeight: number zIndexOffset?: ZIndexOffset materialClass?: MaterialClass - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass } & SvgProperties & EventHandlers & LayoutListeners & @@ -66,7 +66,7 @@ export const SvgIconFromText = forwardRef< const parentClippingRect = useParentClippingRect() const isClipped = useIsClipped(parentClippingRect, globalMatrix, node.size, node) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const backgroundOrderInfo = useOrderInfo(ElementType.Panel, properties.zIndexOffset, groupDeps) useInstancedPanel( collection, diff --git a/packages/uikit/src/components/input.tsx b/packages/uikit/src/components/input.tsx index 5b7f8f40..a9172123 100644 --- a/packages/uikit/src/components/input.tsx +++ b/packages/uikit/src/components/input.tsx @@ -45,7 +45,7 @@ export const Text = forwardRef< value?: string | Signal defaultValue?: string onValueChange?: (value: string) => void - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass zIndexOffset?: ZIndexOffset } & TextProperties & EventHandlers & @@ -74,7 +74,7 @@ export const Text = forwardRef< isClipped, backgroundOrderInfo, parentClippingRect, - properties.backgroundMaterialClass, + properties.panelMaterialClass, panelAliasPropertyTransformation, ) const orderInfo = useOrderInfo(ElementType.Text, undefined, backgroundOrderInfo) diff --git a/packages/uikit/src/components/root.tsx b/packages/uikit/src/components/root.tsx index 30823693..416ceaad 100644 --- a/packages/uikit/src/components/root.tsx +++ b/packages/uikit/src/components/root.tsx @@ -79,7 +79,7 @@ export const Root = forwardRef< anchorX?: keyof typeof alignmentXMap anchorY?: keyof typeof alignmentYMap pixelSize?: number - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass } & WithReactive<{ sizeX?: number sizeY?: number @@ -121,7 +121,7 @@ export const Root = forwardRef< const getPanelGroup = useGetInstancedPanelGroup(pixelSize, node.cameraDistance, groupsContainer) const getGylphGroup = useGetInstancedGlyphGroup(pixelSize, node.cameraDistance, groupsContainer) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const orderInfo = useOrderInfo(ElementType.Panel, undefined, groupDeps) const rootMatrix = useRootMatrix(transformMatrix, node.size, pixelSize, properties) @@ -133,7 +133,7 @@ export const Root = forwardRef< node, rootMatrix, undefined, - properties.scrollbarMaterialClass, + properties.scrollbarPanelMaterialClass, undefined, orderInfo, getPanelGroup, diff --git a/packages/uikit/src/components/svg.tsx b/packages/uikit/src/components/svg.tsx index fc5b00dd..0f9d1bed 100644 --- a/packages/uikit/src/components/svg.tsx +++ b/packages/uikit/src/components/svg.tsx @@ -123,7 +123,7 @@ export const Svg = forwardRef< children?: ReactNode src: string | ReadonlySignal materialClass?: MaterialClass - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass } & SvgProperties & EventHandlers & LayoutListeners & @@ -138,7 +138,7 @@ export const Svg = forwardRef< const globalMatrix = useGlobalMatrix(transformMatrix) const parentClippingRect = useParentClippingRect() const isClipped = useIsClipped(parentClippingRect, globalMatrix, node.size, node) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const backgroundOrderInfo = useOrderInfo(ElementType.Panel, properties.zIndexOffset, groupDeps) useInstancedPanel( collection, diff --git a/packages/uikit/src/components/text.tsx b/packages/uikit/src/components/text.tsx index 9c2b0b8a..8063d8b3 100644 --- a/packages/uikit/src/components/text.tsx +++ b/packages/uikit/src/components/text.tsx @@ -52,7 +52,7 @@ export const Text = forwardRef< ComponentInternals, { children: string | ReadonlySignal | Array> - backgroundMaterialClass?: MaterialClass + panelMaterialClass?: MaterialClass zIndexOffset?: ZIndexOffset } & TextProperties & EventHandlers & @@ -72,7 +72,7 @@ export const Text = forwardRef< const isClipped = useIsClipped(parentClippingRect, globalMatrix, node.size, node) useLayoutListeners(properties, node.size) useViewportListeners(properties, isClipped) - const groupDeps = usePanelGroupDependencies(properties.backgroundMaterialClass, properties) + const groupDeps = usePanelGroupDependencies(properties.panelMaterialClass, properties) const backgroundOrderInfo = useOrderInfo(ElementType.Panel, properties.zIndexOffset, groupDeps) useInstancedPanel( collection, diff --git a/packages/uikit/src/panel/instanced-panel-mesh.ts b/packages/uikit/src/panel/instanced-panel-mesh.ts index 8ae034d2..3e4ecdf3 100644 --- a/packages/uikit/src/panel/instanced-panel-mesh.ts +++ b/packages/uikit/src/panel/instanced-panel-mesh.ts @@ -7,6 +7,7 @@ export class InstancedPanelMesh extends Mesh { protected readonly isInstancedMesh = true public readonly instanceColor = null + public readonly morphTexture = null public readonly boundingBox = new Box3() public readonly boundingSphere = new Sphere() diff --git a/packages/uikit/src/properties/alias.ts b/packages/uikit/src/properties/alias.ts index 1f3e754c..d0759a50 100644 --- a/packages/uikit/src/properties/alias.ts +++ b/packages/uikit/src/properties/alias.ts @@ -57,10 +57,10 @@ export const flexAliasPropertyTransformation = createAliasPropertyTransformation const panelAliases = { borderRadius: ['borderTopLeftRadius', 'borderTopRightRadius', 'borderBottomLeftRadius', 'borderBottomRightRadius'], - borderRadiusTop: ['borderTopLeftRadius', 'borderTopRightRadius'], - borderRadiusLeft: ['borderTopLeftRadius', 'borderBottomLeftRadius'], - borderRadiusRight: ['borderTopRightRadius', 'borderBottomRightRadius'], - borderRadiusBottom: ['borderBottomLeftRadius', 'borderBottomRightRadius'], + borderTopRadius: ['borderTopLeftRadius', 'borderTopRightRadius'], + borderLeftRadius: ['borderTopLeftRadius', 'borderBottomLeftRadius'], + borderRightRadius: ['borderTopRightRadius', 'borderBottomRightRadius'], + borderBottomRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius'], } as const satisfies Aliases export const panelAliasPropertyTransformation = createAliasPropertyTransformation(panelAliases) @@ -72,10 +72,10 @@ const scrollbarAliases = { 'borderBottomLeftRadius', 'borderBottomRightRadius', ], - scrollbarBorderRadiusTop: ['borderTopLeftRadius', 'borderTopRightRadius'], - scrollbarBorderRadiusLeft: ['borderTopLeftRadius', 'borderBottomLeftRadius'], - scrollbarBorderRadiusRight: ['borderTopRightRadius', 'borderBottomRightRadius'], - scrollbarBorderRadiusBottom: ['borderBottomLeftRadius', 'borderBottomRightRadius'], + scrollbarBorderTopRadius: ['borderTopLeftRadius', 'borderTopRightRadius'], + scrollbarBorderLeftRadius: ['borderTopLeftRadius', 'borderBottomLeftRadius'], + scrollbarBorderRightRadius: ['borderTopRightRadius', 'borderBottomRightRadius'], + scrollbarBorderBottomRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius'], } as const satisfies Aliases export const scrollbarAliasPropertyTransformation = createAliasPropertyTransformation(scrollbarAliases) diff --git a/packages/uikit/src/scroll.tsx b/packages/uikit/src/scroll.tsx index a0f3b8ee..7f6846a6 100644 --- a/packages/uikit/src/scroll.tsx +++ b/packages/uikit/src/scroll.tsx @@ -282,7 +282,7 @@ function outsideDistance(value: number, min: number, max: number): number { } export type ScrollbarProperties = { - scrollbarMaterialClass?: MaterialClass + scrollbarPanelMaterialClass?: MaterialClass } & WithReactive< { scrollbarWidth?: number diff --git a/packages/uikit/src/text/render/instanced-glyph-mesh.ts b/packages/uikit/src/text/render/instanced-glyph-mesh.ts index 5c3e061c..61afbfbb 100644 --- a/packages/uikit/src/text/render/instanced-glyph-mesh.ts +++ b/packages/uikit/src/text/render/instanced-glyph-mesh.ts @@ -5,6 +5,7 @@ export class InstancedGlyphMesh extends Mesh { protected readonly isInstancedMesh = true public readonly instanceColor = null + public readonly morphTexture = null public readonly boundingBox = new Box3() public readonly boundingSphere = new Sphere() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 829685fe..0f467b7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,22 +88,22 @@ importers: dependencies: '@coconut-xr/xinteraction': specifier: ^0.1.12 - version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) + version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) '@preact/signals-core': specifier: ^1.5.1 version: 1.5.1 '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/postprocessing': specifier: ^2.16.0 - version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.160.0)(react@18.2.0)(three@0.160.0) + version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.161.2)(react@18.2.0)(three@0.161.0) '@react-three/rapier': specifier: ^1.3.0 - version: 1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) + version: 1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -114,14 +114,17 @@ importers: specifier: ^1.0.2 version: 1.0.2(@react-three/fiber@8.15.13)(@splinetool/loader@1.0.54) '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 + '@vitejs/plugin-basic-ssl': + specifier: ^1.1.0 + version: 1.1.0(vite@5.0.12) maath: specifier: ^0.10.7 - version: 0.10.7(@types/three@0.160.0)(three@0.160.0) + version: 0.10.7(@types/three@0.161.2)(three@0.161.0) r3f-perf: specifier: ^7.1.2 - version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -129,8 +132,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 examples/card: dependencies: @@ -139,16 +142,16 @@ importers: version: 1.5.1 '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/postprocessing': specifier: ^2.16.0 - version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.160.0)(react@18.2.0)(three@0.160.0) + version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.161.2)(react@18.2.0)(three@0.161.0) '@react-three/rapier': specifier: ^1.3.0 - version: 1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) + version: 1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -159,14 +162,14 @@ importers: specifier: ^1.0.2 version: 1.0.2(@react-three/fiber@8.15.13)(@splinetool/loader@1.0.54) '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 maath: specifier: ^0.10.7 - version: 0.10.7(@types/three@0.160.0)(three@0.160.0) + version: 0.10.7(@types/three@0.161.2)(three@0.161.0) r3f-perf: specifier: ^7.1.2 - version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -174,23 +177,23 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 examples/dashboard: dependencies: '@coconut-xr/xinteraction': specifier: ^0.1.12 - version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) + version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/postprocessing': specifier: ^2.16.0 - version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.160.0)(react@18.2.0)(three@0.160.0) + version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.161.2)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -198,11 +201,11 @@ importers: specifier: workspace:^ version: link:../../packages/icons/lucide '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 r3f-perf: specifier: ^7.1.2 - version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -210,8 +213,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 vite-plugin-mkcert: specifier: ^1.17.4 version: 1.17.4(vite@5.0.12) @@ -223,16 +226,16 @@ importers: dependencies: '@coconut-xr/xinteraction': specifier: ^0.1.12 - version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) + version: 0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) '@preact/signals-core': specifier: ^1.5.1 version: 1.5.1 '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -241,22 +244,25 @@ importers: version: link:../../packages/icons/lucide r3f-perf: specifier: ^7.1.2 - version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: specifier: ^18.2.0 version: 18.2.0 react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + three: + specifier: ^0.161.0 + version: 0.161.0 examples/lucide: dependencies: '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -274,13 +280,13 @@ importers: dependencies: '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/postprocessing': specifier: ^2.16.0 - version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.160.0)(react@18.2.0)(three@0.160.0) + version: 2.16.0(@react-three/fiber@8.15.13)(@types/three@0.161.2)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -288,11 +294,11 @@ importers: specifier: workspace:^ version: link:../../packages/icons/lucide '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 r3f-perf: specifier: ^7.1.2 - version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -300,8 +306,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 examples/uikit: dependencies: @@ -310,10 +316,10 @@ importers: version: 1.5.1 '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../packages/uikit @@ -324,12 +330,12 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 devDependencies: '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 packages/fonts: dependencies: @@ -366,7 +372,7 @@ importers: version: 1.5.1 '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../uikit @@ -377,11 +383,11 @@ importers: specifier: ^18.2.47 version: 18.2.47 '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 packages/kits/default: dependencies: @@ -394,7 +400,7 @@ importers: version: 1.5.1 '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/uikit': specifier: workspace:^ version: link:../../uikit @@ -405,11 +411,11 @@ importers: specifier: ^18.2.47 version: 18.2.47 '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 packages/uikit: dependencies: @@ -440,10 +446,10 @@ importers: devDependencies: '@react-three/drei': specifier: ^9.96.1 - version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@react-three/fiber': specifier: ^8.15.13 - version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@types/node': specifier: ^20.11.0 version: 20.11.0 @@ -457,8 +463,8 @@ importers: specifier: ^18.2.18 version: 18.2.18 '@types/three': - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.2 react: specifier: ^18.2.0 version: 18.2.0 @@ -469,8 +475,8 @@ importers: specifier: ^2.2.0 version: 2.2.0 three: - specifier: ^0.160.0 - version: 0.160.0 + specifier: ^0.161.0 + version: 0.161.0 wasmwrap: specifier: ^1.0.0 version: 1.0.0 @@ -743,7 +749,7 @@ packages: resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} dev: false - /@coconut-xr/xinteraction@0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0): + /@coconut-xr/xinteraction@0.1.12(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-nuKWTDz9qx1HRw7MASvqhxO7i676FVWdh+vITFhQYpQem7QLyJqSaU/gw3l7Qh7QYZENmvvte4X83D1oih/htA==} peerDependencies: '@react-three/fiber': '*' @@ -755,9 +761,9 @@ packages: react: optional: true dependencies: - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: 18.2.0 - three: 0.160.0 + three: 0.161.0 dev: false /@cspotcode/source-map-support@0.8.1: @@ -1916,7 +1922,7 @@ packages: '@react-spring/types': 9.6.1 react: 18.2.0 - /@react-spring/three@9.6.1(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0): + /@react-spring/three@9.6.1(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==} peerDependencies: '@react-three/fiber': '>=6.0' @@ -1927,14 +1933,14 @@ packages: '@react-spring/core': 9.6.1(react@18.2.0) '@react-spring/shared': 9.6.1(react@18.2.0) '@react-spring/types': 9.6.1 - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: 18.2.0 - three: 0.160.0 + three: 0.161.0 /@react-spring/types@9.6.1: resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==} - /@react-three/drei@9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0): + /@react-three/drei@9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-aPdDCIZkqorTyGYCQNqYwlPVWAvIHHbYus9HMfR8fHdeGpSlp4sRVtIDWp9g8zKl16LRMGPYXAPC7azAS1Pyqw==} peerDependencies: '@react-three/fiber': '>=8.0' @@ -1947,18 +1953,18 @@ packages: dependencies: '@babel/runtime': 7.23.8 '@mediapipe/tasks-vision': 0.10.8 - '@react-spring/three': 9.6.1(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0) - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-spring/three': 9.6.1(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@use-gesture/react': 10.3.0(react@18.2.0) - camera-controls: 2.7.3(three@0.160.0) + camera-controls: 2.7.3(three@0.161.0) cross-env: 7.0.3 detect-gpu: 5.0.37 glsl-noise: 0.0.0 lodash.clamp: 4.0.3 lodash.omit: 4.5.0 lodash.pick: 4.4.0 - maath: 0.10.7(@types/three@0.160.0)(three@0.160.0) - meshline: 3.1.7(three@0.160.0) + maath: 0.10.7(@types/three@0.161.2)(three@0.161.0) + meshline: 3.1.7(three@0.161.0) react: 18.2.0 react-composer: 5.0.3(react@18.2.0) react-dom: 18.2.0(react@18.2.0) @@ -1966,10 +1972,10 @@ packages: stats-gl: 2.0.1 stats.js: 0.17.0 suspend-react: 0.1.3(react@18.2.0) - three: 0.160.0 - three-mesh-bvh: 0.7.0(three@0.160.0) - three-stdlib: 2.29.4(three@0.160.0) - troika-three-text: 0.47.2(three@0.160.0) + three: 0.161.0 + three-mesh-bvh: 0.7.0(three@0.161.0) + three-stdlib: 2.29.4(three@0.161.0) + troika-three-text: 0.47.2(three@0.161.0) tunnel-rat: 0.1.2(@types/react@18.2.47)(react@18.2.0) utility-types: 3.11.0 uuid: 9.0.1 @@ -1988,7 +1994,7 @@ packages: - supports-color dev: true - /@react-three/fiber@8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0): + /@react-three/fiber@8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-FS6F/k69q2KEf7nxdce1Rzd5qyp6VHtTgjouTMfiotWNiNwlhfQQeAxfcnDg0i2XVaOUGkLaD9BK8LBVnpfzUA==} peerDependencies: expo: '>=43.0' @@ -2025,29 +2031,29 @@ packages: react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) scheduler: 0.21.0 suspend-react: 0.1.3(react@18.2.0) - three: 0.160.0 + three: 0.161.0 zustand: 3.7.2(react@18.2.0) - /@react-three/postprocessing@2.16.0(@react-three/fiber@8.15.13)(@types/three@0.160.0)(react@18.2.0)(three@0.160.0): + /@react-three/postprocessing@2.16.0(@react-three/fiber@8.15.13)(@types/three@0.161.2)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-Cc+VIOxD2jVEgXrc66W6yQaAxTMg02ef2N1B5ldyLtTt22n75JxolYTullQqY4zTsyLEmORvaO85SRlZwg6Avw==} peerDependencies: '@react-three/fiber': '>=8.0' react: '>=18.0' three: '>= 0.138.0' dependencies: - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) buffer: 6.0.3 - maath: 0.6.0(@types/three@0.160.0)(three@0.160.0) - n8ao: 1.8.1(postprocessing@6.34.3)(three@0.160.0) - postprocessing: 6.34.3(three@0.160.0) + maath: 0.6.0(@types/three@0.161.2)(three@0.161.0) + n8ao: 1.8.1(postprocessing@6.34.3)(three@0.161.0) + postprocessing: 6.34.3(three@0.161.0) react: 18.2.0 - three: 0.160.0 - three-stdlib: 2.29.4(three@0.160.0) + three: 0.161.0 + three-stdlib: 2.29.4(three@0.161.0) transitivePeerDependencies: - '@types/three' dev: false - /@react-three/rapier@1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.160.0): + /@react-three/rapier@1.3.0(@react-three/fiber@8.15.13)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-nQor1pbGFu1mp585bGR719yAEnEYeu2LvsxP4RaWXP7XHBqv2p0l9/ttDQBZzivqRT142icut2tdo6vgtW+XyA==} peerDependencies: '@react-three/fiber': '>=8.9.0' @@ -2055,10 +2061,10 @@ packages: three: '>=0.139.0' dependencies: '@dimforge/rapier3d-compat': 0.12.0 - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) react: 18.2.0 - three: 0.160.0 - three-stdlib: 2.23.9(three@0.160.0) + three: 0.161.0 + three-stdlib: 2.23.9(three@0.161.0) use-asset: 1.0.4(react@18.2.0) dev: false @@ -2284,13 +2290,13 @@ packages: engines: {node: '>=6'} dev: false - /@splinetool/loader@1.0.54(three@0.160.0): + /@splinetool/loader@1.0.54(three@0.161.0): resolution: {integrity: sha512-aU/LMmclxUonAbX/V87yuFtoQz3y8Mwqs3C4YABlPZKblg5znuQ+d7Vi4dolw+fKc1ITv/V3fMa+nsN4780f0g==} peerDependencies: three: '>=0.133.0' dependencies: semver-compare: 1.0.0 - three: 0.160.0 + three: 0.161.0 dev: false /@splinetool/r3f-spline@1.0.2(@react-three/fiber@8.15.13)(@splinetool/loader@1.0.54): @@ -2299,8 +2305,8 @@ packages: '@react-three/fiber': '>=7.0.0' '@splinetool/loader': '>=0.9.19' dependencies: - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) - '@splinetool/loader': 1.0.54(three@0.160.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) + '@splinetool/loader': 1.0.54(three@0.161.0) dev: false /@stitches/react@1.2.8(react@18.2.0): @@ -2470,8 +2476,8 @@ packages: /@types/stats.js@0.17.3: resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} - /@types/three@0.160.0: - resolution: {integrity: sha512-jWlbUBovicUKaOYxzgkLlhkiEQJkhCVvg4W2IYD2trqD2om3VK4DGLpHH5zQHNr7RweZK/5re/4IVhbhvxbV9w==} + /@types/three@0.161.2: + resolution: {integrity: sha512-DazpZ+cIfBzbW/p0zm6G8CS03HBMd748A3R1ZOXHpqaXZLv2I5zNgQUrRG//UfJ6zYFp2cUoCQaOLaz8ubH07w==} dependencies: '@types/stats.js': 0.17.3 '@types/webxr': 0.5.10 @@ -2702,6 +2708,15 @@ packages: react: 18.2.0 dev: false + /@vitejs/plugin-basic-ssl@1.1.0(vite@5.0.12): + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 5.0.12(@types/node@20.11.0) + dev: false + /@vitejs/plugin-react@4.2.1(vite@5.0.12): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3124,12 +3139,12 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /camera-controls@2.7.3(three@0.160.0): + /camera-controls@2.7.3(three@0.161.0): resolution: {integrity: sha512-L4mxjBd3u8qiOLozdWrH2P8ZybSsDXBF7iyNyqNEFJhPUkovmuARWR8JTc1B/qlclOIg6FvZZA/0uAZMMim0mw==} peerDependencies: three: '>=0.126.1' dependencies: - three: 0.160.0 + three: 0.161.0 /caniuse-lite@1.0.30001589: resolution: {integrity: sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==} @@ -5026,23 +5041,23 @@ packages: resolution: {integrity: sha512-pZs6H274XGNJpBPEW+BnqPwWFPKd2BhBQevg6r+zreOsnAwuJf2BKYeWPTti4CWZjfOupTrK7PN+fXJs945+3Q==} dev: true - /maath@0.10.7(@types/three@0.160.0)(three@0.160.0): + /maath@0.10.7(@types/three@0.161.2)(three@0.161.0): resolution: {integrity: sha512-zQ2xd7dNOIVTjAS+hj22fyj1EFYmOJX6tzKjZ92r6WDoq8hyFxjuGA2q950tmR4iC/EKXoMQdSipkaJVuUHDTg==} peerDependencies: '@types/three': '>=0.144.0' three: '>=0.144.0' dependencies: - '@types/three': 0.160.0 - three: 0.160.0 + '@types/three': 0.161.2 + three: 0.161.0 - /maath@0.6.0(@types/three@0.160.0)(three@0.160.0): + /maath@0.6.0(@types/three@0.161.2)(three@0.161.0): resolution: {integrity: sha512-dSb2xQuP7vDnaYqfoKzlApeRcR2xtN8/f7WV/TMAkBC8552TwTLtOO0JTcSygkYMjNDPoo6V01jTw/aPi4JrMw==} peerDependencies: '@types/three': '>=0.144.0' three: '>=0.144.0' dependencies: - '@types/three': 0.160.0 - three: 0.160.0 + '@types/three': 0.161.2 + three: 0.161.0 dev: false /make-dir@3.1.0: @@ -5099,12 +5114,12 @@ packages: engines: {node: '>= 8'} dev: true - /meshline@3.1.7(three@0.160.0): + /meshline@3.1.7(three@0.161.0): resolution: {integrity: sha512-uf9fPI9wy0Ie0kZjvKuIkf2n7gi3ih0wdTeb/kmSvmzpPyEL5d9lFohg9+JV9VC4sQUBOZDgxu6fnjn57goSHg==} peerDependencies: three: '>=0.137' dependencies: - three: 0.160.0 + three: 0.161.0 /meshoptimizer@0.18.1: resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} @@ -5269,14 +5284,14 @@ packages: update-notifier: 5.1.0 dev: false - /n8ao@1.8.1(postprocessing@6.34.3)(three@0.160.0): + /n8ao@1.8.1(postprocessing@6.34.3)(three@0.161.0): resolution: {integrity: sha512-biKUW09KnflZpeWmbCy1gjuiyZsbeG6y+EsqV+1IDqQ1KqEydXc6nUUseZp9ZRbjvEOPnsvsjaTce8Pta0803A==} peerDependencies: postprocessing: '>=6.30.0' three: '>=0.137' dependencies: - postprocessing: 6.34.3(three@0.160.0) - three: 0.160.0 + postprocessing: 6.34.3(three@0.161.0) + three: 0.161.0 dev: false /nanoid@3.3.3: @@ -5685,13 +5700,13 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postprocessing@6.34.3(three@0.160.0): + /postprocessing@6.34.3(three@0.161.0): resolution: {integrity: sha512-AjsxAGWeHMKlCTuWLeahNnPyFwR0c/pEmveq5mBz767lFBc1+HHYzk0aRGBCE9PZIjiA27oRL7lATd+fVOscRA==} engines: {node: '>= 0.13.2'} peerDependencies: three: '>= 0.138.0 < 0.162.0' dependencies: - three: 0.160.0 + three: 0.161.0 dev: false /potpack@1.0.2: @@ -5795,7 +5810,7 @@ packages: engines: {node: '>=10'} dev: true - /r3f-perf@7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0): + /r3f-perf@7.1.2(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0): resolution: {integrity: sha512-AQ78ULjufILylHZpbgBdzk7JF3F7bceehlgOL19xtyJIDhvi4J4vwE5wpxNZ5q4PT4Oza1WADZt6KSlrkCqgkA==} peerDependencies: '@react-three/fiber': '>=8.0' @@ -5812,13 +5827,13 @@ packages: optional: true dependencies: '@radix-ui/react-icons': 1.3.0(react@18.2.0) - '@react-three/drei': 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.160.0)(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) - '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.160.0) + '@react-three/drei': 9.96.1(@react-three/fiber@8.15.13)(@types/react@18.2.47)(@types/three@0.161.2)(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) + '@react-three/fiber': 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) '@stitches/react': 1.2.8(react@18.2.0) '@utsubo/events': 0.1.7(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - three: 0.160.0 + three: 0.161.0 zustand: 4.1.5(react@18.2.0) transitivePeerDependencies: - '@types/react' @@ -6509,14 +6524,14 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /three-mesh-bvh@0.7.0(three@0.160.0): + /three-mesh-bvh@0.7.0(three@0.161.0): resolution: {integrity: sha512-Hj0Z1Rp02yy5H+/xtMBu/dYAeRsSONaBaVLZoST9sMpZxycHypRiUeMHucPOLWFHnpc5hwelOnONcLpkfhDg0Q==} peerDependencies: three: '>= 0.151.0' dependencies: - three: 0.160.0 + three: 0.161.0 - /three-stdlib@2.23.9(three@0.160.0): + /three-stdlib@2.23.9(three@0.161.0): resolution: {integrity: sha512-fYBClVGQptD7UZcoRZGNlR3sKcUW37hVPoEW1v68E4XuiwD0Ml/VqDUJ0yEMVE2DlooDvqgqv/rIcHC/B4N5pg==} peerDependencies: three: '>=0.128.0' @@ -6531,11 +6546,11 @@ packages: mmd-parser: 1.0.4 opentype.js: 1.3.4 potpack: 1.0.2 - three: 0.160.0 + three: 0.161.0 zstddec: 0.0.2 dev: false - /three-stdlib@2.29.4(three@0.160.0): + /three-stdlib@2.29.4(three@0.161.0): resolution: {integrity: sha512-XNzGCrz/uAk9XoLwd35eN7dQyI4ggXZTeqjcN034YdYBpBlNO9kmLHehl/0Nw9jCelblB7jla+unHAOIyLyV6Q==} peerDependencies: three: '>=0.128.0' @@ -6546,10 +6561,10 @@ packages: draco3d: 1.5.7 fflate: 0.6.10 potpack: 1.0.2 - three: 0.160.0 + three: 0.161.0 - /three@0.160.0: - resolution: {integrity: sha512-DLU8lc0zNIPkM7rH5/e1Ks1Z8tWCGRq6g8mPowdDJpw1CFBJMU7UoJjC6PefXW7z//SSl0b2+GCw14LB+uDhng==} + /three@0.161.0: + resolution: {integrity: sha512-LC28VFtjbOyEu5b93K0bNRLw1rQlMJ85lilKsYj6dgTu+7i17W+JCCEbvrpmNHF1F3NAUqDSWq50UD7w9H2xQw==} /timm@1.7.1: resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} @@ -6591,23 +6606,23 @@ packages: engines: {node: '>=12'} dev: true - /troika-three-text@0.47.2(three@0.160.0): + /troika-three-text@0.47.2(three@0.161.0): resolution: {integrity: sha512-qylT0F+U7xGs+/PEf3ujBdJMYWbn0Qci0kLqI5BJG2kW1wdg4T1XSxneypnF05DxFqJhEzuaOR9S2SjiyknMng==} peerDependencies: three: '>=0.125.0' dependencies: bidi-js: 1.0.3 - three: 0.160.0 - troika-three-utils: 0.47.2(three@0.160.0) + three: 0.161.0 + troika-three-utils: 0.47.2(three@0.161.0) troika-worker-utils: 0.47.2 webgl-sdf-generator: 1.1.1 - /troika-three-utils@0.47.2(three@0.160.0): + /troika-three-utils@0.47.2(three@0.161.0): resolution: {integrity: sha512-/28plhCxfKtH7MSxEGx8e3b/OXU5A0xlwl+Sbdp0H8FXUHKZDoksduEKmjQayXYtxAyuUiCRunYIv/8Vi7aiyg==} peerDependencies: three: '>=0.125.0' dependencies: - three: 0.160.0 + three: 0.161.0 /troika-worker-utils@0.47.2: resolution: {integrity: sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA==}