2 Commits

Author SHA1 Message Date
Nova
e5bb4944f6 fix: everything 2025-08-19 03:47:26 -07:00
Nova King
0a46ac6a90 Replace Docusaurus site with static HTML 2025-08-19 03:05:23 -07:00
51 changed files with 540 additions and 9640 deletions

17
.gitignore vendored
View File

@@ -1,20 +1,3 @@
# Dependencies
/node_modules /node_modules
# Production
/build /build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store .DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

View File

View File

@@ -1,33 +1,21 @@
# Website # Stardust XR Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. This repository contains a minimal static website for the Stardust XR project.
## Installation ## Usage
```console No build tools are required. Open `index.html` in your browser or serve the
yarn install folder with any static web server.
## Documentation
Markdown files live in the `docs/` directory. The docs page loads them on demand
using the [Marked](https://marked.js.org/) library. To link to a document, use a
URL of the form:
```
/docs/#path/to/file
``` ```
## Local Development Adding a new document is as easy as dropping a `.md` file into the `docs`
folder.
```console
yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
## Build
```console
yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
## Deployment
```console
GIT_USER=<Your GitHub username> USE_SSH=true yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

View File

@@ -1,3 +0,0 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@@ -1,61 +0,0 @@
---
title: Stardust XR Philosophy
author: Cyberneticmelon
---
-----
# Complexity ≠ Difficulty
In most modern user interaction there is a massive disconnect between the interface and the underlying system that is running.
Although some user interfaces may look well designed, often times they have papered over how things work instead of unfolding the complexity
in a way that is more understandable.
The average person may not easily understand why their computer is doing what it is doing, and delegate this knowledge to the realm of programmers
or more technically inclined people.
High complexity, however, does not innately indicate that something is highly difficult. Take all the objects lying in front of you when
you're working at a desk. To move all of those items around is a highly complex task that even modern visual tracking algorithms can
sometimes struggle with, let alone the mechatronic limitations when it comes to robotics, outside of tightly controlled environments.
You, however, can easily and intuitively move things around and organize them in a spatial environment without needing to directly
think about it, which provides a unique and newly available avenue of exploration in the XR and VR space, and it is this innate ability
that we aim to harness with Stardust XR's design philosophy, by focusing in on direct interactions that map to underlying functionality.
# Direct Interaction Vs Indirect Action
With something like indirect action such as a touch screen on a phone or tablet, you're limited to essentially a few modes of interaction such as tapping or swiping, whereas direct interaction within XR and VR you're opened up to a wide possibility of methods like cutting something in half with scissor fingers, duplicating by stretching an object, plugging one thing into another, etc. Stardust XR's design philosophy allows for the possibility of taking the underlying mechanics and expressing them as full interfaces. With the correct signifiers and affordances that map directly to the things underneath, people can gain an intuitive understanding of how their computer works. Clients and applications can also be designed in a way that allows for a better understanding of what is going on as there is far less obfuscation as to how underlying structures are handling that data.
![git-bonsai](/img/docs/gitbonsai)
*git-bonsai, a prototype design for an intuitive spatial github client*
A virtual environment provides an infinite space in which unfolding complexity becomes much more viable to do.
Part of the goal of Stardust XR is to allow the average user to become a power-user through intuitive interaction; because of the number of ways a user can engage with a 3D environment, this greatly increases the interactive bandwidth a developer
can utilize.
# Form Flexibility Principle
With a PC, you are essentially limited to a keyboard and mouse; with a touch screen, you're limited to touch and multi-touch; in XR,
you have hands, eyes, and body, which has an exceedingly large amount of available bandwidth for interaction.
The more interaction bandwidth you have to offer, the more customizability is not just something that *can* be done, it's something that
*must* be done to provide an adaptable user experience for real world scenarios. As XR expands into areas beyond just the home and workspace,
this becomes increasingly important as the ways in which you can interact with the world is, by default, extremely variable, and Stardust XR's open platform and client creation philosophy allows developers to freely expand these types of interactions to meet the demands that computation brought into a 3D space will bring. From sitting at a small workbench all the way up to a full warehouse, the application space becomes much larger as you incorporate the ability to move through the world with mixed reality. Existing user interfaces of today typically provide limited and hard-coded exceptions to the rules, and only for specific situations or disabilities. By making user interaction systems more emergent, many forms of accessibility become available third party, with broader compatibility.
When you take advantage of the innate interactions and movements that come naturally to people in a 3D environment, and combine that with a library of base interactions associated with underlying computer structures, a system that is both modular and emergent in its ability to grow as XR expands more and more into the real world becomes essential.
Stardust XR is that system 🍉
<div style={{textAlign: 'center'}}>
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/v2WblwbaLaA"
frameBorder={0}
allow="autoplay; encrypted-media"
allowFullScreen
style={{maxWidth: '100%', aspectRatio: '16/9'}}
></iframe>
</div>
If you'd like to try out Stardust XR, [click here](https://stardustxr.org/docs/get-started/What-is-Stardust)
[Become a sponsor](https://github.com/sponsors/technobaboo) and help Nova expand Stardust XR! Stardust XR is also actively looking for help with development, check out the [github](https://github.com/StardustXR) page for more information.

View File

@@ -1,3 +0,0 @@
#!/bin/sh
GIT_USER=$1 USE_SSH=true yarn deploy

15
docs/docs.js Normal file
View File

@@ -0,0 +1,15 @@
async function loadDoc() {
const hash = decodeURIComponent(location.hash.slice(1)) || '01-get-started/01-What-is-Stardust';
const file = hash + '.md';
const res = await fetch(file);
const container = document.getElementById('content');
if (!res.ok) {
container.textContent = 'Document not found.';
return;
}
let text = await res.text();
text = text.replace(/^---[\s\S]*?---\n/, '');
container.innerHTML = marked.parse(text);
}
window.addEventListener('hashchange', loadDoc);
window.addEventListener('load', loadDoc);

27
docs/index.html Normal file
View File

@@ -0,0 +1,27 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Stardust XR Docs</title>
<link rel="stylesheet" href="../style.css" />
<link rel="icon" type="image/png" href="../img/icon.png" />
<script src="../js/marked.min.js"></script>
<script src="docs.js" defer></script>
</head>
<body>
<header>
<h1>
<a href="../index.html" style="color: inherit; text-decoration: none"
>Stardust XR Docs</a
>
</h1>
<nav>
<a href="../index.html">Home</a>
</nav>
</header>
<main>
<div id="content">Loading...</div>
</main>
</body>
</html>

View File

@@ -1,138 +0,0 @@
const lightCodeTheme = require("prism-react-renderer/themes/vsLight");
const darkCodeTheme = require("prism-react-renderer/themes/vsDark");
/** @type {import('@docusaurus/types').DocusaurusConfig} */
module.exports = {
title: "Stardust XR",
tagline: "Stardust... We Fight For the Users!",
url: "https://stardustxr.org",
baseUrl: "/",
trailingSlash: false,
onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",
favicon: "img/favicon.ico",
organizationName: "StardustXR", // Usually your GitHub org/user name.
projectName: "website", // Usually your repo name.
scripts: [{src: 'https://plausible.fyralabs.com/js/script.hash.outbound-links.js', defer: true, 'data-domain': 'stardustxr.org'}],
markdown: {
mermaid: true,
},
themes: ["@docusaurus/theme-mermaid"],
themeConfig: {
colorMode: {
defaultMode: "dark",
disableSwitch: true,
respectPrefersColorScheme: false,
},
navbar: {
title: "Stardust XR",
logo: {
alt: "Stardust XR logo, a yellow astroid with smaller white astroids around it",
src: "img/icon.webp",
},
items: [
{
href: "https://twitter.com/stardustxr",
label: "Twitter",
position: "right",
},
{
href: "https://discord.gg/A9w7fKE",
label: "Discord",
position: "right",
},
{
href: "https://matrix.to/#/#stardustxr:matrix.org",
label: "Matrix",
position: "right",
},
{
href: "https://github.com/StardustXR",
label: "GitHub",
position: "right",
},
{
href: "https://github.com/sponsors/technobaboo",
label: "Sponsor This",
position: "right",
},
],
},
footer: {
style: "dark",
links: [
{
title: "Docs",
items: [
{
label: "Getting Started",
to: "/docs/get-started/setup-openxr",
},
],
},
{
title: "Community",
items: [
{
label: "Discord",
href: "https://discord.gg/A9w7fKE",
},
{
label: "Matrix",
href: "https://matrix.to/#/#stardustxr:matrix.org",
},
{
label: "Twitter",
href: "https://twitter.com/stardustxr",
},
{
label: "Stardust XR (GitHub)",
href: "https://github.com/StardustXR",
},
{
label: "Sponsor This",
href: "https://github.com/sponsors/technobaboo",
},
],
},
{
title: "Code",
items: [
{
label: "Stardust XR (Server)",
href: "https://github.com/StardustXR/stardust-xr-server",
},
{
label: "stardust-xr (includes Fusion)",
href: "https://github.com/StardustXR/stardust-xr",
},
{
label: "Flatland",
href: "https://github.com/StardustXR/flatland",
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Nova King`,
},
prism: {
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
},
},
presets: [
[
"@docusaurus/preset-classic",
{
docs: {
sidebarPath: require.resolve("./sidebars.js"),
// Please change this to your repo.
editUrl: "https://github.com/StardustXR/website/edit/main/",
},
theme: {
customCss: require.resolve("./src/css/custom.css"),
},
},
],
],
};

61
flake.lock generated
View File

@@ -1,61 +0,0 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1723991338,
"narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8a3354191c0d7144db9756a74755672387b702ba",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View File

@@ -1,23 +0,0 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs =
{ nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
nodejs_22
yarn
];
};
}
);
}

View File

Before

Width:  |  Height:  |  Size: 3.8 MiB

After

Width:  |  Height:  |  Size: 3.8 MiB

View File

Before

Width:  |  Height:  |  Size: 476 KiB

After

Width:  |  Height:  |  Size: 476 KiB

View File

Before

Width:  |  Height:  |  Size: 872 KiB

After

Width:  |  Height:  |  Size: 872 KiB

View File

Before

Width:  |  Height:  |  Size: 39 MiB

After

Width:  |  Height:  |  Size: 39 MiB

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

View File

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 308 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 412 KiB

View File

Before

Width:  |  Height:  |  Size: 616 B

After

Width:  |  Height:  |  Size: 616 B

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 45 MiB

After

Width:  |  Height:  |  Size: 45 MiB

View File

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

Before

Width:  |  Height:  |  Size: 234 KiB

After

Width:  |  Height:  |  Size: 234 KiB

View File

Before

Width:  |  Height:  |  Size: 895 KiB

After

Width:  |  Height:  |  Size: 895 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 38 MiB

After

Width:  |  Height:  |  Size: 38 MiB

View File

Before

Width:  |  Height:  |  Size: 11 MiB

After

Width:  |  Height:  |  Size: 11 MiB

View File

Before

Width:  |  Height:  |  Size: 18 MiB

After

Width:  |  Height:  |  Size: 18 MiB

173
index.html Normal file
View File

@@ -0,0 +1,173 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Stardust XR</title>
<link rel="stylesheet" href="style.css" />
<style>
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
</style>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css"
/>
<link rel="icon" type="image/png" href="img/icon.png" />
</head>
<body>
<header>
<div class="header-content">
<div class="logo-container">
<img
src="img/icon.webp"
alt="Stardust XR logo, a yellow star with smaller white stars around it in a purple cosmic background"
class="logo"
/>
<h1>Stardust XR</h1>
</div>
<p class="tagline">Stardust... We Fight For the Users!</p>
<nav>
<div class="nav-right">
<a
href="https://discord.gg/A9w7fKE"
target="_blank"
rel="noopener"
class="nav-icon"
>
<i class="fab fa-discord" aria-hidden="true"></i>
<span class="sr-only">Join our Discord server</span>
</a>
<a
href="https://matrix.to/#/#stardustxr:matrix.org"
target="_blank"
rel="noopener"
class="nav-text matrix-link"
>
<span aria-label="Join our Matrix space">[matrix]</span>
</a>
<a
href="https://bsky.app/profile/stardustxr.org"
target="_blank"
rel="noopener"
class="nav-icon"
>
<i class="fa-brands fa-bluesky" aria-hidden="true"></i>
<span class="sr-only">Follow us on Bluesky</span>
</a>
<a
href="https://twitter.com/stardustxr"
target="_blank"
rel="noopener"
class="nav-icon"
>
<i class="fab fa-twitter" aria-hidden="true"></i>
<span class="sr-only">Follow us on Twitter</span>
</a>
<a
href="https://github.com/StardustXR"
target="_blank"
rel="noopener"
class="nav-icon"
>
<i class="fab fa-github" aria-hidden="true"></i>
<span class="sr-only">View our GitHub repositories</span>
</a>
<a
href="https://github.com/sponsors/technobaboo"
target="_blank"
rel="noopener"
class="nav-icon sponsor-link"
>
<i class="fas fa-heart" aria-hidden="true"></i>
<span class="sr-only">Sponsor Stardust XR development</span>
</a>
</div>
</nav>
</div>
</header>
<main>
<section class="hero">
<h2>Welcome to Stardust XR</h2>
<p class="lead">
Experience the next generation of XR computing. Build immersive
experiences that transcend reality.
</p>
<div class="cta-buttons">
<a href="docs/index.html" class="cta-primary">Get Started</a>
<a href="https://github.com/StardustXR" class="cta-secondary"
>View on GitHub</a
>
</div>
</section>
</main>
<footer>
<div class="footer-content">
<div class="footer-section">
<h3>Community</h3>
<ul>
<li>
<a
href="https://discord.gg/A9w7fKE"
target="_blank"
rel="noopener"
>Discord</a
>
</li>
<li>
<a
href="https://matrix.to/#/#stardustxr:matrix.org"
target="_blank"
rel="noopener"
>Matrix</a
>
</li>
<li>
<a
href="https://bsky.app/profile/stardustxr.org"
target="_blank"
rel="noopener"
>Bluesky</a
>
</li>
<li>
<a
href="https://twitter.com/stardustxr"
target="_blank"
rel="noopener"
>Twitter</a
>
</li>
<li>
<a
href="https://github.com/StardustXR"
target="_blank"
rel="noopener"
>GitHub</a
>
</li>
<li>
<a
href="https://github.com/sponsors/technobaboo"
target="_blank"
rel="noopener"
>Sponsor This</a
>
</li>
</ul>
</div>
</div>
</footer>
</body>
</html>

69
js/marked.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,44 +0,0 @@
{
"name": "stardust-website",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"@docusaurus/core": "2.4.1",
"@docusaurus/preset-classic": "2.4.1",
"@docusaurus/theme-mermaid": "2.4.1",
"@mdx-js/react": "^1.6.21",
"@svgr/webpack": "^5.5.0",
"clsx": "^1.1.1",
"file-loader": "^6.2.0",
"prism-react-renderer": "^1.2.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-responsive-carousel": "^3.2.20",
"url-loader": "^4.1.1",
"utils-merge": "^1.0.1",
"yarn": "^1.22.10"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

View File

@@ -1,27 +0,0 @@
/**
Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
module.exports = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
{
type: 'category',
label: 'Tutorial',
items: ['hello'],
},
],
*/
};

View File

@@ -1,38 +0,0 @@
import React from "react";
import { Carousel } from "react-responsive-carousel";
const ImageList = [
{
image: "img/carousel/workflow.png",
alt: "A scene showing a flat panel with Blender to the left (containing a sketch of a 3D git client that looks like a bonsai tree), a turntable with a 3D model of the stardust logo on it in the center, and a massive grid of hexagons for all the apps on the system to the right.",
caption:
"A workflow containing Blender, a turntable with a 3D model preview, and the hexasgon app launcher.",
},
{
image: "img/carousel/multipleclients.png",
alt: "A scene showing multiple widgets, including CRT TV panel shells and flat touchscreen panels and 2 rings forming a cylinder around the scene.",
caption: "Multiple objects working independently all at once.",
},
{
image: "img/carousel/panels.png",
alt: "A series of application windows as 3D panels similar to small wooden boards in proportions with a Panasonic CRT TV model in the center showing Agregore (the browser).",
caption: "Panels for wayland apps and a CRT panel shell for XR UI.",
},
];
function CarouselImage({ image, alt, caption }) {
return (
<div>
<img alt={alt} src={image} />
<p className="legend">{caption}</p>
</div>
);
}
export default () => (
<Carousel autoPlay infiniteLoop showThumbs={false} className="gallery">
{ImageList.map((props, idx) => (
<CarouselImage key={idx} {...props} />
))}
</Carousel>
);

View File

@@ -1,53 +0,0 @@
import React from 'react';
import clsx from 'clsx';
import styles from './HomepageFeatures.module.css';
const FeatureList = [
{
title: 'Flexible',
image: '/img/icon.gif',
description: (
<>
Stardust allows developers to make XR widgets or interfaces and run them among others.
You don&apos;t have to make a whole system UI, just a few pieces.
</>
),
},
{
title: 'Streamlined',
image: 'https://stereokit.net/img/StereoKitLogoLight.svg',
description: (
<>
Stardust is made using <a href="https://stereokit.net">StereoKit</a>, an XR application/rendering toolkit allowing for a fast and lightweight display server.
</>
),
},
];
function Feature({image, title, description}) {
return (
<div className={clsx('col col--6')}>
<div className="text--center">
<img src={image} className={styles.featureImg} alt={title} />
</div>
<div className="text--center padding-horiz--md">
<h3>{title}</h3>
<p>{description}</p>
</div>
</div>
);
}
export default function HomepageFeatures() {
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}

View File

@@ -1,13 +0,0 @@
/* stylelint-disable docusaurus/copyright-header */
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureImg {
height: 200px;
width: 200px;
}

View File

@@ -1,46 +0,0 @@
/* stylelint-disable docusaurus/copyright-header */
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #e1e456;
--ifm-color-primary-dark: rgb(175, 173, 33);
--ifm-color-primary-darker: rgb(165, 163, 31);
--ifm-color-primary-darkest: rgb(134, 136, 26);
--ifm-color-primary-light: rgb(201, 203, 70);
--ifm-color-primary-lighter: rgb(212, 210, 102);
--ifm-color-primary-lightest: rgb(223, 224, 146);
--ifm-color-secondary: #a14ed8;
--ifm-color-secondary-dark: #7c3ca7;
--ifm-color-secondary-darker: #612f83;
--ifm-code-font-size: 95%;
}
.docusaurus-highlight-code-line {
background-color: rgba(0, 0, 0, 0.1);
display: block;
margin: 0 calc(-1 * var(--ifm-pre-padding));
padding: 0 var(--ifm-pre-padding);
}
html[data-theme='dark'] .docusaurus-highlight-code-line {
background-color: rgba(0, 0, 0, 0.3);
}
ul.contains-task-list {
list-style-type: none;
}
li.task-list-item > input[type="checkbox"] {
pointer-events: none;
}
.gallery {
margin: 0 auto;
max-width: 1250px;
}

View File

@@ -1,43 +0,0 @@
import React from "react";
import clsx from "clsx";
import Layout from "@theme/Layout";
import Link from "@docusaurus/Link";
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
import styles from "./index.module.css";
import HomepageFeatures from "../components/HomepageFeatures";
import Carousel from "../components/Carousel";
import "react-responsive-carousel/lib/styles/carousel.min.css";
function HomepageHeader() {
const { siteConfig } = useDocusaurusContext();
return (
<header className={clsx("hero hero--primary", styles.heroBanner)}>
<div className="container">
<link rel="me" href="https://fosstodon.org/@stardustxr"></link>
<h1 className="hero__title">{siteConfig.title}</h1>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="/docs/get-started/What-is-Stardust"
>
Get Started
</Link>
</div>
</div>
</header>
);
}
export default function Home() {
const { siteConfig } = useDocusaurusContext();
return (
<Layout image="img/icon.gif" description="XR Display Server">
<HomepageHeader />
<main>
<HomepageFeatures />
<Carousel />
</main>
</Layout>
);
}

View File

@@ -1,25 +0,0 @@
/* stylelint-disable docusaurus/copyright-header */
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 966px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -1,75 +0,0 @@
---
title: Roadmap
---
# Roadmap
**Warning. This roadmap is now outdated.**
## 1.0 (Minimum Viable Product)
- [x] Core functionality
- [x] IPC+RPC
- [x] Client
- [x] Fusion
- [x] Initial connection
- [x] Node type creation/destruction
- [x] Interface interaction
- [x] Callbacks
- [x] Documentation
- [x] Server
- [x] Per-client scenegraph
- [x] Statically link StereoKit
- [x] Basic features
- [x] Logic step
- [x] Spatial transforms
- [x] Absolute movement
- [x] Relative movement
- [x] Spatial parenting
- [x] Models
- [x] Loading
- [x] Setting material parameters
- [x] Fields (SDFs for interaction)
- [x] Box field
- [x] Rounded box field
- [x] Sphere field
- [x] Input
- [x] Input methods
- [x] Hand input
- [x] Creation from OpenXR
- [x] Creation from StereoKit (flatscreen)
- [x] Interaction with clients
- [x] Pointer input
- [x] Creation from StereoKit (flatscreen, mouse cursor ray)
- [x] Interaction with clients
- [x] Input handler
- [x] Async input propagation through distance
- [x] Environment
- [x] Set skytex
- [x] Set skylight
- [x] Items
- [x] Base item class
- [x] Base item accepter class
- [x] Environment equirectangular item
- [x] Environment equirectangular accepter
- [x] 2D integration
- [x] Panels
- [x] Panel item
- [x] smithay (for Wayland)
- [x] Rendering
- [x] Input seats
- [x] Panel shells
- [x] Accept panel items
- [x] Put surface on model material's texture
- [x] Feed input through to panel
- [x] Release panel items
- [ ] Daily Drivable System
- [ ] GUI App Launcher (Protostar)
- [x] Get desktop files
- [x] Find and parse icons
- [ ] Display icons and desktop files in grid
- [x] Launch executables spatially
- [ ] Panel Item UI
- [ ] Flatland
More to come!

240
style.css Normal file
View File

@@ -0,0 +1,240 @@
:root {
--primary: #ffe44d;
--background: #13111a;
--background-light: #1a1725;
--text: #ffffff;
--text-muted: #a094c7;
--accent: #6b4595;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
margin: 0;
font-family: Arial, Helvetica, sans-serif;
background: var(--background);
color: var(--text);
line-height: 1.6;
}
/* Header */
header {
background: var(--background-light);
padding: 1rem 2rem;
}
.header-content {
max-width: 1200px;
margin: 0 auto;
display: flex;
align-items: center;
gap: 2rem;
}
.logo-container {
display: flex;
align-items: center;
gap: 1rem;
}
.logo {
width: 40px;
height: 40px;
}
.logo-container h1 {
margin: 0;
font-size: 1.5rem;
}
.tagline {
color: var(--primary);
font-style: italic;
font-size: 1rem;
}
/* Navigation */
nav {
margin-left: auto;
}
.nav-right {
display: flex;
align-items: center;
gap: 1.5rem;
}
.nav-icon {
color: var(--text);
text-decoration: none;
font-size: 1.5rem;
transition: color 0.2s ease;
}
.nav-icon:hover {
color: var(--primary);
}
.nav-text {
color: var(--text);
text-decoration: none;
font-size: 1.1rem;
}
.matrix-link {
font-weight: bold;
}
.sponsor-link {
color: var(--primary) !important;
}
.sponsor-link:hover {
color: #ff6b6b !important;
}
/* Main content */
main {
max-width: 1200px;
margin: 0 auto;
padding: 4rem 2rem;
}
.hero {
max-width: 800px;
margin: 0 auto;
text-align: center;
}
.hero h2 {
font-size: 2.5rem;
margin-bottom: 1.5rem;
color: var(--primary);
}
.lead {
font-size: 1.2rem;
margin-bottom: 2rem;
color: var(--text-muted);
}
.cta-buttons {
display: flex;
justify-content: center;
gap: 1rem;
}
.cta-primary,
.cta-secondary {
padding: 0.8rem 1.5rem;
text-decoration: none;
font-weight: bold;
border-radius: 4px;
transition: all 0.2s ease;
}
.cta-primary {
background: var(--primary);
color: var(--background);
}
.cta-primary:hover {
background: #ffe44d;
}
.cta-secondary {
background: transparent;
color: var(--primary);
border: 2px solid var(--primary);
}
.cta-secondary:hover {
background: rgba(255, 215, 0, 0.1);
}
/* Footer */
footer {
background: var(--background-light);
padding: 3rem 2rem 1rem;
margin-top: 4rem;
}
.footer-content {
max-width: 1200px;
margin: 0 auto;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 2rem;
}
.footer-section h3 {
color: var(--primary);
margin-bottom: 1rem;
}
.footer-section ul {
list-style: none;
}
.footer-section li {
margin-bottom: 0.5rem;
}
.footer-section a {
color: var(--text-muted);
text-decoration: none;
transition: color 0.2s ease;
}
.footer-section a:hover {
color: var(--text);
}
.footer-bottom {
text-align: center;
padding-top: 2rem;
margin-top: 2rem;
border-top: 1px solid var(--accent);
color: var(--text-muted);
}
/* Responsive */
@media (max-width: 768px) {
.header-content {
flex-direction: column;
gap: 1rem;
text-align: center;
}
nav {
margin: 0;
}
.nav-right {
flex-wrap: wrap;
justify-content: center;
gap: 1rem;
}
main {
padding: 2rem 1rem;
}
.hero h2 {
font-size: 2rem;
}
.cta-buttons {
flex-direction: column;
align-items: stretch;
}
.cta-primary,
.cta-secondary {
text-align: center;
}
}

8942
yarn.lock

File diff suppressed because it is too large Load Diff