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={}
- editLink="Edit this page on GitHub"
- docsRepositoryBase="https://github.com/playcanvas/react/tree/main/packages/docs"
- sidebar={{
- defaultMenuCollapseLevel: 1,
- toggleButton: true
- }}
- pageMap={await getPageMap()}
- >
-
-
-
-
-
-
- )
-}
\ 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
-}
-
-export default AutoRotate;
\ No newline at end of file
diff --git a/packages/docs/components/Check.tsx b/packages/docs/components/Check.tsx
deleted file mode 100644
index e8997d12..00000000
--- a/packages/docs/components/Check.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import { Check as CheckIcon, Minus as MinusIcon, Box as BoxIcon } from 'lucide-react'
-
-export function Check({ children }: { children: React.ReactNode }) {
- return (
-
- )
-}
-
-export function Block({ children }: { children: React.ReactNode }) {
- return (
-
- )
-}
-
-export function Dash({ children }: { children: React.ReactNode }) {
- return (
-
- )
-}
\ No newline at end of file
diff --git a/packages/docs/components/EnvironmentLighting.tsx b/packages/docs/components/EnvironmentLighting.tsx
deleted file mode 100644
index 84a9caa0..00000000
--- a/packages/docs/components/EnvironmentLighting.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-"use client";
-
-import React, { FC, ComponentProps } from "react";
-import { useEnvAtlas } from "./hooks/use-asset";
-import { Environment } from "@playcanvas/react/components";
-
-type EnvironmentLightingProps = ComponentProps & {
- src?: string;
- intensity?: number;
-}
-
- const EnvironmentLighting: FC = ({
- src = '/environment-map.png',
- intensity = 1,
- ...props
-}) => {
-
- const { data } = useEnvAtlas(src);
-
- return
-
-}
-
-export default EnvironmentLighting;
\ No newline at end of file
diff --git a/packages/docs/components/Glb.tsx b/packages/docs/components/Glb.tsx
deleted file mode 100644
index fbd07cda..00000000
--- a/packages/docs/components/Glb.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-'use client'
-
-import { Container } from "@playcanvas/react";
-import { useModel } from "./hooks/use-asset";
-import { Asset } from "playcanvas";
-
-export const Glb = ({ src, children }: { src: string, children?: React.ReactNode }) => {
-
- const { data: model, isLoading, error } = useModel(src);
-
- if (isLoading) return null;
- if (error) return null;
-
- return
- {children}
-
-}
\ No newline at end of file
diff --git a/packages/docs/components/Grid.tsx b/packages/docs/components/Grid.tsx
deleted file mode 100644
index ac953c64..00000000
--- a/packages/docs/components/Grid.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-"use client";
-
-import { Entity } from "@playcanvas/react";
-import { Script } from "@playcanvas/react/components";
-import { Grid as GridScript } from "playcanvas/scripts/esm/grid.mjs";
-import { FC } from "react";
-
-const Grid: FC = ({ ...props }) => {
- return
-
-
-}
-
-export default Grid;
\ No newline at end of file
diff --git a/packages/docs/components/LoadingSpinner.jsx b/packages/docs/components/LoadingSpinner.jsx
deleted file mode 100644
index da82dba3..00000000
--- a/packages/docs/components/LoadingSpinner.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Entity } from '@playcanvas/react'
-import { Script, Render, Camera, Light } from '@playcanvas/react/components'
-import { Script as PcScript } from 'playcanvas'
-
-class Spin extends PcScript {
- update(dt) {
- this.entity.rotate(0, this.speed * dt, 0)
- }
-}
-
-/**
- * A simple spinning cube used as a loading indicator.
- */
-export const LoadingSpinner = () => (<>
-
-
-
-
-
-
-
-
-