diff --git a/.changeset/config.json b/.changeset/config.json index 7836d7e3..a00370dd 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -6,6 +6,5 @@ "linked": [], "access": "restricted", "baseBranch": "main", - "updateInternalDependencies": "patch", - "ignore": ["docs"] + "updateInternalDependencies": "patch" } diff --git a/.changeset/late-trains-search.md b/.changeset/late-trains-search.md new file mode 100644 index 00000000..c9e9d42b --- /dev/null +++ b/.changeset/late-trains-search.md @@ -0,0 +1,5 @@ +--- +"@playcanvas/react": patch +--- + +Updated docs links and README refs diff --git a/.gitignore b/.gitignore index a4fb0904..5547bb82 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,3 @@ next-env.d.ts .next/ _pagefind/ -*.ply -packages/docs/public/r/* - diff --git a/README.md b/README.md index 0ba9fbe7..712d53b5 100644 --- a/README.md +++ b/README.md @@ -83,15 +83,15 @@ Et voilà! ✨ ## Ready to build something? -Now you've got the tools you're ready to start building. Start with the [Getting Started](https://playcanvas-react.vercel.app/docs/guide/getting-started) for a step-by-step intro, or jump straight into the [Playground](https://playcanvas-react.vercel.app/examples/) to explore real examples in action. +Now you've got the tools you're ready to start building. Start with the [Getting Started](https://developer.playcanvas.com/user-manual/playcanvas-react/getting-started) for a step-by-step intro, or jump straight into the [Playground](https://playcanvas-react.vercel.app/examples) to explore real examples in action. -- [Hello World](http://playcanvas-react.vercel.app/examples/hello-world) -- [Loading a 3d model](http://playcanvas-react.vercel.app/examples/load-a-3D-model) -- [Interaction](http://playcanvas-react.vercel.app/examples/pointer-events) -- [Physics](http://playcanvas-react.vercel.app/examples/physics) -- [Splats](http://playcanvas-react.vercel.app/examples/splats) +- [Hello World](https://playcanvas-react.vercel.app/examples/hello-world) +- [Loading a 3D model](https://playcanvas-react.vercel.app/examples/load-a-3D-model) +- [Interaction](https://playcanvas-react.vercel.app/examples/pointer-events) +- [Physics](https://playcanvas-react.vercel.app/examples/physics) +- [Splats](https://playcanvas-react.vercel.app/examples/splats) -You can also jump straight into the [docs](https://playcanvas-react.vercel.app) or [api](https://playcanvas-react.vercel.app/docs/api). +You can also jump straight into the [docs](https://developer.playcanvas.com/user-manual/playcanvas-react) or [api](https://developer.playcanvas.com/user-manual/playcanvas-react/api). ## Who’s building with @playcanvas/react? @@ -103,10 +103,10 @@ Developers and studios are already using @playcanvas/react in production ## AI assisted editors -To get your IDE up to speed, you can install the latest MDC rules for cursor. Or [grab them here](https://playcanvas-react.vercel.app/rules) to add them manually. +To get your IDE up to speed, you can install the latest MDC rules for cursor. Or [grab them here](https://developer.playcanvas.com/user-manual/playcanvas-react/rules) to add them manually. ```bash -mkdir -p .cursor/rules && curl -s https://playcanvas-react.vercel.app/rules -o .cursor/rules/playcanvas-react.mdc +mkdir -p .cursor/rules && curl -s https://developer.playcanvas.com/user-manual/playcanvas-react/rules -o .cursor/rules/playcanvas-react.mdc ``` ## Contributing diff --git a/packages/docs/.gitignore b/packages/docs/.gitignore deleted file mode 100644 index ed6798e7..00000000 --- a/packages/docs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -./public/r \ No newline at end of file diff --git a/packages/docs/CHANGELOG.md b/packages/docs/CHANGELOG.md deleted file mode 100644 index 8fe399bc..00000000 --- a/packages/docs/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -# docs - -## 1.0.1 - -### Patch Changes - -- 67a045e: We now expose the `useAssetViewer` hook which provides API and context to the Splat Viewer -- Updated dependencies [4917998] -- Updated dependencies [8348361] -- Updated dependencies [67a045e] -- Updated dependencies [894ca08] - - @playcanvas/blocks@0.1.0 - - @playcanvas/react@0.5.0 diff --git a/packages/docs/app/[[...mdxPath]]/page.tsx b/packages/docs/app/[[...mdxPath]]/page.tsx deleted file mode 100644 index 1732c2c6..00000000 --- a/packages/docs/app/[[...mdxPath]]/page.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { generateStaticParamsFor, importPage } from 'nextra/pages' -import { useMDXComponents as getMDXComponents } from '../../mdx-components' -import { readFile } from 'node:fs/promises' -import path from 'node:path' -import Playground from '@docs-components/Playground' - -export const generateStaticParams = generateStaticParamsFor('mdxPath') -const EXAMPLES_PATH = 'examples' -// Limit this catch-all route to only the statically generated params so it -// doesn't intercept unrelated requests (e.g. /.well-known, static assets). -export const dynamicParams = false - -export async function generateMetadata(props) { - const params = await props.params - - const isExamples = params.mdxPath[0] === EXAMPLES_PATH; - - if (isExamples) { - const fileName = params.mdxPath.slice(-1)[0]; - const contentPath = params.mdxPath.slice(0, 1); - - const source = await readFile( - path.join(process.cwd(), 'content', ...contentPath, `${fileName}.meta.json`), - 'utf-8' - ) - - // We can't dynamically import with the full path. An error is thrown because the import is too dynamic. - // const metaPath = path.join('@content', 'examples', `${fileName}.meta.tsx`) - // const { default: metadata } = await import(metaPath); - return JSON.parse(source); - } - - try { - const { metadata } = await importPage(params.mdxPath) - return metadata - } catch (error) { - console.error(error) - return null - } -} - -const Wrapper = getMDXComponents().wrapper - -export default async function Page(props) { - const params = await props.params - - try { - const { default: MDXContent, toc, metadata } = await importPage(params.mdxPath) - const isExamples = params.mdxPath[0] === EXAMPLES_PATH; - - if (isExamples) { - const contentPath = params.mdxPath.slice(0, 1); - const fileName = params.mdxPath.slice(-1)[0]; - - const source = await readFile( - path.join(process.cwd(), 'content', ...contentPath, `${fileName}.mdx`), - 'utf-8' - ) - - return ( -
- -
- ) - } - - return ( - - - - ) - } catch (error) { - console.error(error) - return
Error
- } -} \ No newline at end of file diff --git a/packages/docs/app/globals.css b/packages/docs/app/globals.css deleted file mode 100644 index 527a4462..00000000 --- a/packages/docs/app/globals.css +++ /dev/null @@ -1,205 +0,0 @@ -@import "tailwindcss"; -@import "nextra-theme-docs/style.css"; -@import "tw-animate-css"; - -@source "../../blocks"; - -@custom-variant dark (&:is(.dark *)); - -.demo pre { - border-style: none; - box-shadow: none !important; - margin-top: 0rem !important; -} - -.playground-overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - pointer-events: none; - color: white; -} - -.example-button { - background-color: #f0f2e5; - padding-left: .3rem; - padding-right: .3rem; - border-radius: 4px; - margin: 0; - font-size: .8rem; - font-weight: 500; - display: flex; - flex-direction: row; - align-items: center; - flex-wrap: nowrap; - color: black; -} - -.example-button > svg { - padding: .3rem; - margin-right: .3rem; -} - -.example-button > * { - padding-right: .3rem; - padding-left: .6rem; - align-items: center; - height: 100%; -} -.example-button > span { - border-left: 1px rgba(38, 38, 38, 0.183) solid; - display: grid; - place-items: center; -} - -.inline-buttons { - padding-top: 1rem; - display: flex; -} - -.inline-buttons > *:first-child { - margin-left: 0; -} - -.inline-buttons a { - margin-right: .5rem; - margin-left: .5rem; -} - -.grayscale { - filter: grayscale(90%); -} - -.grayscale:hover { - filter: none; -} - -.inline-buttons a:hover{ - filter: none; - background: var(--x-color-primary-600); - color: white; -} - -a[href=""] { - pointer-events: none; - font-weight: bold; - text-decoration: underline; - opacity: .5; - font-size: .8rem; -} - -@theme inline { - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} - -:root { - --radius: 0.625rem; - --background: oklch(1 0 0); - --foreground: oklch(0.141 0.005 285.823); - --card: oklch(1 0 0); - --card-foreground: oklch(0.141 0.005 285.823); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.141 0.005 285.823); - --primary: oklch(0.21 0.006 285.885); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.967 0.001 286.375); - --secondary-foreground: oklch(0.21 0.006 285.885); - --muted: oklch(0.967 0.001 286.375); - --muted-foreground: oklch(0.552 0.016 285.938); - --accent: oklch(0.967 0.001 286.375); - --accent-foreground: oklch(0.21 0.006 285.885); - --destructive: oklch(0.577 0.245 27.325); - --border: oklch(0.92 0.004 286.32); - --input: oklch(0.92 0.004 286.32); - --ring: oklch(0.705 0.015 286.067); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.141 0.005 285.823); - --sidebar-primary: oklch(0.21 0.006 285.885); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.967 0.001 286.375); - --sidebar-accent-foreground: oklch(0.21 0.006 285.885); - --sidebar-border: oklch(0.92 0.004 286.32); - --sidebar-ring: oklch(0.705 0.015 286.067); - } - - .dark { - --background: oklch(0.141 0.005 285.823); - --foreground: oklch(0.985 0 0); - --card: oklch(0.21 0.006 285.885); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.21 0.006 285.885); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.92 0.004 286.32); - --primary-foreground: oklch(0.21 0.006 285.885); - --secondary: oklch(0.274 0.006 286.033); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.274 0.006 286.033); - --muted-foreground: oklch(0.705 0.015 286.067); - --accent: oklch(0.274 0.006 286.033); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.704 0.191 22.216); - --border: oklch(1 0 0 / 10%); - --input: oklch(1 0 0 / 15%); - --ring: oklch(0.552 0.016 285.938); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.21 0.006 285.885); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.274 0.006 286.033); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(1 0 0 / 10%); - --sidebar-ring: oklch(0.552 0.016 285.938); - } - - -@layer base { - * { - @apply border-border outline-ring/50; - } -} diff --git a/packages/docs/app/layout.tsx b/packages/docs/app/layout.tsx deleted file mode 100644 index eb2a4d2a..00000000 --- a/packages/docs/app/layout.tsx +++ /dev/null @@ -1,84 +0,0 @@ - -/* eslint-env node */ -import './globals.css' - -import { Footer, Layout, Navbar } from 'nextra-theme-docs' -import { Banner, Head } from 'nextra/components' -import { getPageMap } from 'nextra/page-map' -import { Circle } from 'lucide-react' -import ReactQueryProvider from '@docs-components/ReactQueryProvider' - -export const metadata = { - metadataBase: new URL('https://playcanvas-react.vercel.app'), - title: { - template: '%s - PlayCanvas React' - }, - description: 'PlayCanvas React: Full featured 3D for React', - applicationName: 'PlayCanvas React', - generator: 'Next.js', - appleWebApp: { - title: 'PlayCanvas React' - }, - other: { - 'msapplication-TileImage': '/ms-icon-144x144.png', - 'msapplication-TileColor': '#fff' - }, - twitter: { - site: 'https://twitter.com/playcanvas' - } -} - -export default async function RootLayout({ children }: { children: React.ReactNode }) { - const navbar = ( - -
- -
- @playcanvas/react - - Build 3D apps with React - - } - // PlayCanvas discord server - chatLink="https://discord.gg/EJuENf4hFj" - - // PlayCanvas GitHub - projectLink="https://github.com/playcanvas/react" - /> - ) - return ( - - - - - - - 📚 @playcanvas/react Docs has a new home! - } - navbar={navbar} - footer={
- MIT {new Date().getFullYear()} ©{' '} PlayCanvas. -
} - editLink="Edit this page on GitHub" - docsRepositoryBase="https://github.com/playcanvas/react/tree/main/packages/docs" - sidebar={{ - defaultMenuCollapseLevel: 1, - toggleButton: true - }} - pageMap={await getPageMap()} - > - -
-
- {children} -
-
-
-
- - - ) -} \ No newline at end of file diff --git a/packages/docs/app/new/page.tsx b/packages/docs/app/new/page.tsx deleted file mode 100644 index 73f6d1d8..00000000 --- a/packages/docs/app/new/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from 'next/navigation' - -export default function Page() { - redirect('https://stackblitz.com/edit/playcanvas-react-template?file=src%2FScene.tsx') -} \ No newline at end of file diff --git a/packages/docs/app/rules/route.tsx b/packages/docs/app/rules/route.tsx deleted file mode 100644 index 989ae16f..00000000 --- a/packages/docs/app/rules/route.tsx +++ /dev/null @@ -1,15 +0,0 @@ - -import { NextResponse } from 'next/server' -import { readFile } from 'fs/promises' -import path from 'path' - -export async function GET() { - const filePath = path.join(process.cwd(), '../lib/.playcanvas-react.mdc') - const content = await readFile(filePath, 'utf8') - - return new NextResponse(content, { - headers: { - 'Content-Type': 'text/plain', - }, - }) -} \ No newline at end of file diff --git a/packages/docs/client-mdx-components.js b/packages/docs/client-mdx-components.js deleted file mode 100644 index b1cb9628..00000000 --- a/packages/docs/client-mdx-components.js +++ /dev/null @@ -1,38 +0,0 @@ -import { Application, Entity } from '@playcanvas/react' -// import { OrbitControls } from '@playcanvas/react/scripts' - -import { Align, Light, Anim, Camera, Collision, GSplat, Script, Render, RigidBody, Environment } from '@playcanvas/react/components' - -import ReactQueryProvider from '@docs-components/ReactQueryProvider' - -import EnvironmentLighting from '@/components/EnvironmentLighting' -import Grid from '@components/Grid' -import PostEffects, { StaticPostEffects} from '@components/PostEffects' -import ShadowCatcher from '@components/ShadowCatcher' -import AutoRotate from '@components/AutoRotate' -import { MotionEntity, MotionLight } from '@components/MotionEntity' -import { Glb } from '@components/Glb' -import { useEnvAtlas } from '@playcanvas/react/hooks' - -import { version } from 'playcanvas'; -import { OrbitControls } from './docs-components/OrbitControls' -const PcVersion = () => {version}; - -export const defaultComponents = { - PcVersion, - ReactQueryProvider, - Application, - Entity, - Align, Anim, Camera, Collision, GSplat, Script, Render, RigidBody, Light, Environment, - OrbitControls, - EnvironmentLighting, - Grid, - ShadowCatcher, - PostEffects, - StaticPostEffects, - AutoRotate, - MotionEntity, - MotionLight, - useEnvAtlas, - Glb -} \ No newline at end of file diff --git a/packages/docs/components.json b/packages/docs/components.json deleted file mode 100644 index 2883c943..00000000 --- a/packages/docs/components.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": true, - "tsx": true, - "tailwind": { - "config": "", - "css": "app/globals.css", - "baseColor": "stone", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "iconLibrary": "lucide" -} \ No newline at end of file diff --git a/packages/docs/components/AutoRotate.tsx b/packages/docs/components/AutoRotate.tsx deleted file mode 100644 index 846ebd55..00000000 --- a/packages/docs/components/AutoRotate.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Script } from "@playcanvas/react/components"; -import { AutoRotator } from "@playcanvas/react/scripts"; -import { FC } from "react"; - -const AutoRotate: FC> = (props) => { - return