npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

phantom_components

v0.1.7

Published

custom components for vr pages

Downloads

5

Readme

Phantom Components

Phantom Components came about from the recent release of the exciting new technology, React VR, which grants software developers a much more streamlined way into the world of programming in virtual reality.

Currently, there is a gap in the VR world between VR content and already existing web applications. The potential that VR gives us is endless, with people already taking advantage to create incredibly immersive experiences in the form of games, spatial visualizations, and artistic projects. However, websites remain static, clunky, and uninteractive. Our goal is to bridge this gap and bring the modern web application into this new platform.

This module will hopefully give developers a few extra tools they need to get started with React VR without worrying about the formatting.

Note about ReactVR

Because of the way that sizing works in ReactVR, everything inside the ContentPlane is measured in pixels, while everything else (Title, Navbar, and NavbarItem components) are measured in meters. Keep this in mind when setting font sizes, widths, translations, etc.

Current list of components (still in development):

Title

Renders a fading in title for your site, along with a start button to enter your site. Refer to our demo site in order to use this properly. This component takes the following props:

  • title: Changes title of site.
  • startText: Changes start button text.
  • titleStyling: Merges with default styling of title.
  • startTextStyling: Merges with default styling of start button.
  • progressWidth: This sets the width that the progress bar on the start button will extend up to before activating.
  • progressColor: The color of the progress bar on the start button on hover.

Navbar

Provides a bottom-positioned navigation bar that is visible throughout the entire exploration of the site. Refer to our demo site in order to use this properly. The Navbar component takes the following props:

  • content: Currently, the only way to put links into the navbar is by creating a content object as follows:
const content = [
        [{label: 'Home', link: '/home'}],
        [{label: 'About', link: '/about'}],
        [{label: 'Gallery', link: '/gallery'}]
    ]

...

<Navbar content={content} />

We will be making this easier in later versions.

  • navbarStyle: Merges with default styling of the Navbar component.
  • linkStyle: Merges with the default styling of the NavbarItem component.
  • linkBgColor: The background color of an unselected link.
  • linkSelectedColor: The background color of a selected link.
  • progressDisabled: Whether you want the progress bar to be disabled. By default disabling is determined based on whether the link corresponds to the page you are currently on (similar to the NavLink component in the react-router-dom).
  • progressColor: The color of the progress bar on hover.

ContentPlane

Wraps and centers the page (excluding the Title and NavBar components) in a spherical plane for better presentation. Looks best with a maximum of 5-6 component units.

Cards

TextCard, ImageCard, VideoCard

Three components for individual cards on the ContentPlane. They all take the following props:

  • flex: How many units you want the card to take up on the ContentPlane. The default is set to 1.
  • cardStyling: Merges with the default styling of the card.

The TextCard component takes the following additional prop:

  • text: The text you want to display. You can also just add text in between TextCard tags.
  • textStyling: Merges with the default styling for text.

The ImageCard and VideoCard components take the following additional prop:

  • src: A link to the image/video.

ImageCaption

The same as ImageCard, but takes in the extra following prop:

  • caption: The caption you want to display. You can also just add the caption in between ImageCaption tags.
  • alwaysShow: A boolean value of whether you want the caption to always be visible (true) or only when you hover over the photo (false). The default is set to false.
  • captionStyling: Merges with the default styling for the caption.

Gallery

Similar to the various cards, except that multiple GalleryItems can be taken in and are dynamically arranged in rows and columns. The Gallery component takes in the following props:

  • rows: The number of rows in the gallery. The default is set to 2.
  • cols: The number of columns in the gallery. The default is set to 3.
  • flex: How many units you want the gallery to take up on the ContentPlane. The default is calculated dynamically based on its content.
  • galleryStyling: Merges with the default styling for the gallery.
  • galleryItemStyling: Merges with the default styling for each GalleryItem component.
GalleryItem

A subcomponent of the Gallery. This component takes the following props:

  • type: Specifies type of item ("image", "text", or "video")
  • text: Used for the text type.
  • src: Used for the image and video types.
  • itemStyling: Overrides default styling for GalleryItem component. (Still not 100% working)

CardContainer

Wraps each card (ImageCaption, ImageCard, TextCard, VideoCard, Gallery) to provide appropriate spacing on the ContentPlane. This functionality is already included by default, but for custom components it may be useful. It takes the following props:

  • flex: How many units you want the card to take up on the ContentPlane. The default is set to 1.
  • cardStyling: Merges with the default styling for the card.

Carousel

This is a holder for multiple images or textblocks in the form of dynamically-created CarouselItems, with buttons used to scroll through the collection. The Carousel component takes the following props:

  • flex: How many units you want the card to take up on the ContentPlane. The default is set to 1.
  • type: A string indicating the type of collection you want ('image' or 'text').
  • imageCollection: If of type 'image', the imageCollection prop will take an array of URLs associated with the images you want to display.
  • maxTextLength: The number of characters you want before the text wraps onto a new card.
  • cardStyling: This merges with the default styling for all cards in the carousel.
  • buttonStyling: This merges with the default styling for the buttons.
  • arrowStyling: This merges with the default styling for the arrows.

CarouselPage

This is an entire page holder for a scrolling image gallery, composed of CarouselPageItems. The CarouselPage component takes the following props:

  • width: The width you want every image to be. The default value is 600.
  • height: The height you want every image to be. The default value is 600.
  • images: An array of strings corresponding to the URLs of the images you want to display.
  • initialImage: The number in the sequence of images you want to designate as the first image.
  • buttonStyling: This merges with the default styling for the buttons.
  • arrowStyling: This merges with the default styling for the arrows.

GazeButton

This button is particular to VR, wherein the user simply gazes at the button for a given period of time until it activates or 'clicks'. It takes the following props:

  • timeout: This corresponds to the amount of time (in milliseconds) that the user must gaze at the button before it activates. The default is set to 1000.
  • buttonStyle: Merges with the default styling for the button.
  • progressDisabled: Whether you want the progress bar to be disabled. By default disabling is determined based on whether the link corresponds to the page you are currently on (similar to the NavLink component in the react-router-dom).
  • progressColor: The color of the progress bar on hover.
  • progressWidth: This sets the width that the progress bar will extend up to before activating.
  • onHover: Callback that will be invoked when the user hovers over the button.
  • onTrigger: Callback that will be invoked when the user gazes at the button until the timeout finishes.
  • onLeave: Callback that will be invoked when the user stops hovering over the button.