GitPedia

Classicy

A collection of React components that make it easy to add a customizable Webtop to your app with a unique & retro look.

From robbiebyrd·Updated June 18, 2026·View on GitHub·

A UI framework using native CSS/JS replications of the Mac OS 8 interface components. The project is written primarily in SCSS, distributed under the The Unlicense license, first published in 2020. Key topics include: macos-classic, nextjs, platinum, react, typescript.

Latest release: v0.9.9Bride of Buster
June 18, 2026View Changelog →

Classicy

Previously Platinum

A UI framework using native CSS/JS replications of the Mac OS 8 interface components.

Just curious? Visit our website to learn more.

Demo

See a demo here!

Building and running on localhost

This project uses pnpm (enable it with corepack enable). First install dependencies:

sh
pnpm install

To create a production build:

sh
pnpm build

To create a development build:

sh
pnpm dev

Running

To run the example site locally (builds the package and starts the example dev server):

sh
pnpm preview

Then visit the site in your browser at http://localhost:3000.

(For iterative package development you can also use pnpm dev, which builds the source. The example/ app consumes it directly through the pnpm workspace — no linking step required.)

Browser app — TimeMachine Proxy

The Browser app requires the TimeMachine Web Proxy to fetch archived web pages. A Docker Compose setup is included in example/timemachine/:

sh
cd example/timemachine cp .env.example .env # adjust if needed docker compose up -d

The proxy runs on http://localhost:8765 by default. Enable it in the Browser app under File → Settings → Enable TimeMachine Proxy.

Acknowledgements

  • New Dawn by Nathanael Gentry
  • Scrollbars of the Classic Mac OS by Jessica Stokes (@ticky)
  • after-dark-css, for the basic System 7.1.1 interface
  • flyer, for further inspiration
  • Robin Casady, for releasing ChicagoFLF into the public domain
  • Apple, who maintains the copyright on the background patterns, icons and interface components

Features

Legend

ℹ️⚠️
CompletePartially complete.Experimental
Subject to change
  • Desktop
    • ℹ️ The ubiquitous Finder
    • Menubar
      • ✅ System Menu
      • ✅ App Switcher
      • ✅ Widgets
        • ✅ Date/Time
        • ✅ Sound
    • Icons
      • ✅ App Shortcuts
      • ✅ Cleanup
      • Arrange By…
  • Sounds
    • ✅ Sound Provider
    • ✅ Load sound theme from JSON
    • ✅ Audio Sprites support
    • ℹ️ Sound Manager Control Panel
      • ℹ️ Sound Event Handler
        • ✅ Event dispatcher/player
        • ℹ️ Automatic event intercept and play for known events (map audio sprites to events)
  • Appearance Manager Control Panel (Theme Manager)
    • ✅ Appearance Manager Control Panel
    • ✅ System
      • ✅ Load theme from JSON
      • ✅ System events for modifying theme
    • UI
      • ✅ Typography settings
      • ✅ Measurement settings
      • ✅ Desktop settings
      • ✅ System colors
      • ✅ Configurable color variables
    • ✅ Color Theme-able components
  • App Template
    • ⚠️ App Context/Event Handler
    • App Switcher
  • Window
    • Controls
      • ✅ Zoom
      • ✅ Resize
      • ✅ Collapse
      • ✅ Close
      • Placard
      • ✅ Header
    • Dialog
      • Modal
        • Dialog
          • ✅ Movable
          • ✅ Non-movable
        • Alert
          • ✅ Movable
          • Non-movable
      • ✅ Modeless
    • ✅ Standard
  • System
    • ✅ File System
      • ✅ Integrated into Finder.app
  • UI Components
    • ✅ Text Input
    • ✅ Text Area
    • ✅ Button
    • ✅ Tabs
    • ✅ Radio Button
    • ✅ Drop-down menu
    • Multi-select menu
    • ✅ Checkbox
    • ✅ Bevel Button
    • Slider
    • Spinner
    • ✅ Date Picker
    • ✅ Time Picker
    • ✅ Expandable (Disclosure)
    • ✅ Fieldset
    • ✅ Separator
    • ✅ Progress
    • ✅ Balloon Help (tooltip)
    • Menu
      • Contextual Menu
      • Submenu
    • Gallery Picker (Slider)
    • Color Picker

Component Reference

All components are exported from the classicy package. Import them by name:

tsx
import { ClassicyWindow, ClassicyButton, ClassicyBalloonHelp } from 'classicy';

Application Shell

ComponentDescription
ClassicyDesktopRoot desktop surface — icons, menu bar, wallpaper, drag-select
ClassicyDesktopMenuBarTop menu bar with system menu, app menu, and widget tray
ClassicyAppApplication container. Props: id, name, icon, defaultWindow
ClassicyWindowWindow chrome with title bar and controls. Props: id, appId, title, closable, zoomable, collapsable, resizable, modal, initialSize, initialPosition, minimumSize
ClassicyBootBoot screen shown on first load
ClassicyAboutWindowStandard "About This App" dialog. Props: appId, appName, appIcon

Inputs

ComponentDescription
ClassicyButtonPush button. Accepts children as label
ClassicyCheckboxCheckbox with optional label. Props: checked, label, onChangeFunc
ClassicyRadioInputRadio button group. Props: label, options (array of { label, value })
ClassicyInputSingle-line text field. Props: placeholder, value, onChangeFunc
ClassicySpinnerNumeric stepper (up/down arrows). Props: value, min, max, step
ClassicyPopUpMenuDrop-down selector. Props: label, options (array of { label, value }), value
ClassicyDatePickerDate input with calendar picker. Props: value, placeholder, onChangeFunc
ClassicyTimePickerTime input with clock picker. Props: value, placeholder, onChangeFunc

Text Editing

ComponentDescription
ClassicyTextEditorPlain-text editor area. Props: content, onChangeFunc
ClassicyRichTextEditorRich-text editor (bold, italic, lists). Props: content, onChangeFunc

Layout & Structure

ComponentDescription
ClassicyTabsTabbed container. Children must be ClassicyTab items with a title prop
ClassicyDisclosureCollapsible section (expand/collapse). Props: label, open
ClassicyControlGroupLabeled fieldset grouping form controls. Props: label
ClassicyControlLabelInline label for a control. Props: label
ComponentDescription
ClassicyMenuDrop-down menu used in the menu bar. Props: id, title, menuChildren
ClassicyContextualMenuRight-click context menu. Renders at pointer position

Feedback & Display

ComponentDescription
ClassicyProgressBarDeterminate progress bar. Props: value, max, label
ClassicyBalloonHelpMac OS 8-style speech-bubble tooltip. Wraps any element. Props: content, title, position, delay
ClassicyIconSystem icon image with optional label. Props: src, label

File System

ComponentDescription
ClassicyFileBrowserFile browser with icon and list views. Props: path, onSelect

Media

ComponentDescription
QuickTimeMovieEmbedEmbedded QuickTime-style video player. Props: url
ComponentDescription
ClassicyDesktopMenuWidgetTimeClock widget for the menu bar
ClassicyDesktopMenuWidgetSoundVolume widget for the menu bar

Architecture

Component Organization

  • <ClassicyDesktopProvider>
    • <ClassicyDesktop>
      • <ClassicyDesktopMenuBar>
      • <ClassicyDesktopIcon?>
      • <YourClassicyApp>
        • <ClassicyAppContext>
          • <ClassicyApp>
            • <ClassicyWindow?>
              • <ClassicyUIControls?>
              • <OtherReactNodes?>

Events

  • ClassicyDesktop

    • ClassicyDesktopClick
    • ClassicyDesktopDrag
    • ClassicyDesktopSetBalloonHelp
  • ClassicySoundPlay

    • ClassicyAlertSosumi
    • ClassicyAlertWildEep
    • ClassicyAlertIndigo
    • ClassicyBeep
    • ClassicyBoot
    • ClassicyButtonClickDown
    • ClassicyButtonClickUp
    • ClassicyInputRadioClickDown
    • ClassicyInputRadioClickUp
    • ClassicyMenuClose
    • ClassicyMenuItemClick
    • ClassicyMenuItemHover
    • ClassicyMenuOpen
    • ClassicyWindowClose
    • ClassicyWindowCollapse
    • ClassicyWindowControlClickDown
    • ClassicyWindowControlClickUp
    • ClassicyWindowExpand
    • ClassicyWindowFocus
    • ClassicyWindowMoveIdle
    • ClassicyWindowMoveMoving
    • ClassicyWindowMoveStop
    • ClassicyWindowOpen
    • ClassicyWindowResizeIdle
    • ClassicyWindowResizeResizing
    • ClassicyWindowResizeStop
    • ClassicyWindowZoomMaximize
    • ClassicyWindowZoomMinimize
  • ClassicyDesktopIcon

    • ClassicyDesktopClick
    • ClassicyDesktopAltClick
    • ClassicyDesktopDoubleClick
    • ClassicyDesktopDrag
  • ClassicyApp

    • ClassicyAppOpen
    • ClassicyAppClose
    • ClassicyAppHide
    • ClassicyAppFocus
  • ClassicyWindow

    • ClassicyWindowOpen
    • ClassicyWindowClose
    • ClassicyWindowZoom
    • ClassicyWindowCollapse
    • ClassicyWindowResize
    • ClassicyWindowDrag
    • ClassicyWindowFocus
    • ClassicyWindowContentScroll
    • ClassicyWindowContentClick
  • ClassicyMenu

    • ClassicyMenuHover
    • ClassicyMenuClick
    • ClassicyMenuChange

License

This software is provided free and in the public domain under The Unlicense.

Contributors

Showing top 7 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from robbiebyrd/classicy via the GitHub API.Last fetched: 6/19/2026