Convert Figma logo to code with AI

react95-io logoReact95

🌈🕹 Windows 95 style UI component library for React

6,603
183
6,603
41

Top Related Projects

6,607

🌈🕹 Windows 95 style UI component library for React

9,000

A design system for building faithful recreations of old UIs

2,205

A CSS framework for building faithful recreations of operating system GUIs.

1,135

💿 Web-based Windows 98 desktop recreation █████▓█▓▓▒▓▒▒░▒░░░🗕︎🗗︎🗙︎

5,489

🏁 Web based Windows XP desktop recreation.

Quick Overview

React95 is a React component library that recreates the classic Windows 95 user interface. It allows developers to build nostalgic, retro-styled web applications with a familiar and iconic look from the mid-1990s.

Pros

  • Unique and nostalgic design that stands out from modern UI libraries
  • Comprehensive set of components that closely mimic Windows 95 elements
  • Easy to use and integrate into existing React projects
  • Customizable themes and styles

Cons

  • Limited appeal for modern, professional applications
  • May not be suitable for accessibility-focused projects
  • Potential performance overhead due to complex styling
  • Lack of responsiveness for mobile devices

Code Examples

  1. Creating a simple window with a button:
import React from 'react';
import { Window, WindowHeader, WindowContent, Button } from '@react95/core';

const MyWindow = () => (
  <Window>
    <WindowHeader>
      <span>My Window</span>
    </WindowHeader>
    <WindowContent>
      <Button>Click me!</Button>
    </WindowContent>
  </Window>
);
  1. Using the TaskBar component:
import React from 'react';
import { TaskBar, List } from '@react95/core';

const MyTaskBar = () => (
  <TaskBar
    list={
      <List>
        <List.Item>Programs</List.Item>
        <List.Item>Documents</List.Item>
        <List.Item>Settings</List.Item>
      </List>
    }
  />
);
  1. Creating a dialog box:
import React, { useState } from 'react';
import { Modal, Button } from '@react95/core';

const MyDialog = () => {
  const [showModal, setShowModal] = useState(false);

  return (
    <>
      <Button onClick={() => setShowModal(true)}>Open Dialog</Button>
      {showModal && (
        <Modal
          width="300"
          height="200"
          onClose={() => setShowModal(false)}
        >
          <Modal.Header>
            <span>Dialog Box</span>
          </Modal.Header>
          <Modal.Content>
            <p>This is a Windows 95 style dialog box!</p>
          </Modal.Content>
        </Modal>
      )}
    </>
  );
};

Getting Started

To start using React95 in your project:

  1. Install the package:
npm install @react95/core
  1. Import and use components in your React application:
import React from 'react';
import { ThemeProvider, GlobalStyle } from '@react95/core';

const App = () => (
  <ThemeProvider>
    <GlobalStyle />
    {/* Your React95 components go here */}
  </ThemeProvider>
);

export default App;

Now you can use any React95 component within your application, wrapped inside the ThemeProvider.

Competitor Comparisons

6,607

🌈🕹 Windows 95 style UI component library for React

Pros of React95

  • More comprehensive component library with a wider range of Windows 95-style UI elements
  • Better documentation and examples for developers to get started quickly
  • Active community support and regular updates

Cons of React95

  • Larger bundle size due to more components and features
  • Steeper learning curve for developers unfamiliar with the Windows 95 UI paradigm
  • May require more customization for modern app designs

Code Comparison

React95:

import { Button, Window, WindowHeader } from '@react95/core';

const App = () => (
  <Window>
    <WindowHeader>My App</WindowHeader>
    <Button>Click me!</Button>
  </Window>
);

React95>:

import { Button, Window } from 'react95>';

const App = () => (
  <Window title="My App">
    <Button>Click me!</Button>
  </Window>
);

The code comparison shows that React95 offers more granular control over components like WindowHeader, while React95> provides a more simplified API with props like title for the Window component.

9,000

A design system for building faithful recreations of old UIs

Pros of 98.css

  • Lightweight and framework-agnostic, can be used with any HTML structure
  • Simpler implementation, requiring only CSS without JavaScript dependencies
  • Offers more granular control over individual UI elements

Cons of 98.css

  • Limited to static styling, lacks interactive components or state management
  • Requires more manual work to create complex UI layouts and functionality
  • May need additional JavaScript for dynamic behavior and form handling

Code Comparison

React95:

import { Button, Window, WindowHeader } from 'react95';

<Window>
  <WindowHeader>My App</WindowHeader>
  <Button>Click me!</Button>
</Window>

98.css:

<link rel="stylesheet" href="98.css">
<div class="window">
  <div class="title-bar">My App</div>
  <button>Click me!</button>
</div>

React95 provides a more React-centric approach with pre-built components, while 98.css offers a pure CSS solution that can be applied to any HTML structure. React95 includes built-in functionality and state management, whereas 98.css focuses solely on visual styling, requiring additional JavaScript for interactive features.

2,205

A CSS framework for building faithful recreations of operating system GUIs.

Pros of XP.css

  • Lightweight and easy to implement with just CSS
  • No JavaScript dependencies, making it more versatile
  • Can be used with any frontend framework or vanilla HTML

Cons of XP.css

  • Limited to static styling, lacks interactive components
  • Requires more custom code for complex UI elements
  • Less comprehensive set of UI components compared to React95

Code Comparison

XP.css (HTML with CSS classes):

<div class="window">
  <div class="title-bar">
    <div class="title-bar-text">My Window</div>
    <div class="title-bar-controls">
      <button aria-label="Close"></button>
    </div>
  </div>
  <div class="window-body">
    <p>Hello, world!</p>
  </div>
</div>

React95 (React component):

import { Window, WindowHeader, WindowContent, Button } from 'react95';

<Window>
  <WindowHeader>
    <span>My Window</span>
    <Button>X</Button>
  </WindowHeader>
  <WindowContent>
    <p>Hello, world!</p>
  </WindowContent>
</Window>

Both XP.css and React95 aim to recreate classic Windows interfaces, but they take different approaches. XP.css focuses on pure CSS styling, making it more flexible but requiring more manual work for complex interfaces. React95 provides a more comprehensive set of React components, offering greater functionality out of the box but with a steeper learning curve and React dependency.

1,135

💿 Web-based Windows 98 desktop recreation █████▓█▓▓▒▓▒▒░▒░░░🗕︎🗗︎🗙︎

Pros of 98

  • More comprehensive recreation of Windows 98, including desktop, start menu, and multiple applications
  • Offers a fully interactive environment with functional windows and system tray
  • Includes nostalgic elements like Minesweeper and Paint

Cons of 98

  • Less suitable for integration into modern web applications
  • May have higher performance overhead due to its full OS simulation
  • Limited customization options for developers

Code Comparison

React95:

import { Button, Window, WindowHeader } from '@react95/core';

const App = () => (
  <Window>
    <WindowHeader>My App</WindowHeader>
    <Button>Click me</Button>
  </Window>
);

98:

<div class="desktop">
  <div class="start-menu">
    <!-- Start menu content -->
  </div>
  <div class="window">
    <!-- Window content -->
  </div>
</div>

React95 provides React components for building Windows 95-style UIs, making it easier to integrate into modern React applications. 98, on the other hand, offers a more complete Windows 98 experience but with less flexibility for integration into other projects.

React95 is better suited for developers looking to add retro UI elements to their applications, while 98 is ideal for those wanting to recreate the full Windows 98 experience as a standalone project or for nostalgic purposes.

5,489

🏁 Web based Windows XP desktop recreation.

Pros of winXP

  • More comprehensive Windows XP experience, including desktop, start menu, and taskbar
  • Includes interactive elements like draggable windows and functional start menu
  • Offers a wider range of nostalgic Windows XP features and applications

Cons of winXP

  • Less focused on providing reusable components for developers
  • May be more complex to integrate into existing React projects
  • Potentially heavier in terms of performance due to more features

Code Comparison

React95:

import { Button, Window, WindowHeader } from 'react95';

<Window>
  <WindowHeader>React95</WindowHeader>
  <Button>Click me!</Button>
</Window>

winXP:

import { Desktop, TaskBar, StartMenu } from 'winxp';

<Desktop>
  <TaskBar />
  <StartMenu />
</Desktop>

While React95 focuses on providing individual UI components, winXP offers a more complete Windows XP environment simulation. React95 is better suited for developers looking to add retro UI elements to their projects, while winXP is ideal for creating a full Windows XP-like experience. The code comparison shows that React95 provides more granular control over individual components, whereas winXP emphasizes the overall desktop environment.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

React95

NPM release status React95 version React95 license React95 license

Components - Demo app - React Native - Slack - PayPal donation 💰

Refreshed Windows95 UI components for your modern React apps.
Built with styled-components 💅

hero

Support

Getting Started

First, install component library and styled-components in your project directory:

# yarn
$ yarn add react95 styled-components

# npm
$ npm install react95 styled-components

Apply style reset, wrap your app with ThemeProvider with theme of your choice... and you are ready to go! 🚀

import React from 'react';
import { createGlobalStyle, ThemeProvider } from 'styled-components';

import { MenuList, MenuListItem, Separator, styleReset } from 'react95';
// pick a theme of your choice
import original from 'react95/dist/themes/original';
// original Windows95 font (optionally)
import ms_sans_serif from 'react95/dist/fonts/ms_sans_serif.woff2';
import ms_sans_serif_bold from 'react95/dist/fonts/ms_sans_serif_bold.woff2';

const GlobalStyles = createGlobalStyle`
  ${styleReset}
  @font-face {
    font-family: 'ms_sans_serif';
    src: url('${ms_sans_serif}') format('woff2');
    font-weight: 400;
    font-style: normal
  }
  @font-face {
    font-family: 'ms_sans_serif';
    src: url('${ms_sans_serif_bold}') format('woff2');
    font-weight: bold;
    font-style: normal
  }
  body {
    font-family: 'ms_sans_serif';
  }
`;

const App = () => (
  <div>
    <GlobalStyles />
    <ThemeProvider theme={original}>
      <MenuList>
        <MenuListItem>🎤 Sing</MenuListItem>
        <MenuListItem>💃🏻 Dance</MenuListItem>
        <Separator />
        <MenuListItem disabled>😴 Sleep</MenuListItem>
      </MenuList>
    </ThemeProvider>
  </div>
);

export default App;

Submit your project

Apps built with React95 will be featured on the official React95 website 🤟🏻

Contributing

Any help from UI / UX designers would be EXTREMELY appreciated. The challenge is to come up with new component designs / layouts that are broadly used in modern UIs, that weren't present back in 95.

If you want to help with the project, feel free to open pull requests and submit issues or component proposals. Let's bring this UI back to life ♥️

NPM DownloadsLast 30 Days