Updated skins + configuration
This commit is contained in:
parent
1371ed2065
commit
2472362057
59 changed files with 455 additions and 327 deletions
|
|
@ -25,6 +25,7 @@ These libraries are different modules of ProzillaOS that can be installed separa
|
||||||
|
|
||||||
- [`prozilla-os`][prozilla-os]: A bundle containing the core packages and all standard applications of ProzillaOS
|
- [`prozilla-os`][prozilla-os]: A bundle containing the core packages and all standard applications of ProzillaOS
|
||||||
- [`@prozilla-os/core`][core]: Core functionality, React components and hooks
|
- [`@prozilla-os/core`][core]: Core functionality, React components and hooks
|
||||||
|
- [`@prozilla-os/skins`](./shared/): Customizable skins for ProzillaOS
|
||||||
- [`@prozilla-os/shared`][shared]: Shared functions and utilities
|
- [`@prozilla-os/shared`][shared]: Shared functions and utilities
|
||||||
|
|
||||||
#### Standard applications
|
#### Standard applications
|
||||||
|
|
|
||||||
40
packages/README.md
Normal file
40
packages/README.md
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
<div align="center">
|
||||||
|
<br />
|
||||||
|
<p>
|
||||||
|
<a href="https://os.prozilla.dev/"><img src="https://os.prozilla.dev/assets/banner-logo-title-small.png" width="576" alt="ProzillaOS" /></a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="https://github.com/prozilla-os/ProzillaOS/blob/main/LICENSE.md"><img alt="License" src="https://img.shields.io/github/license/Prozilla/ProzillaOS?style=flat-square&color=FF4D5B&label=License"></a>
|
||||||
|
<a href="https://github.com/prozilla-os/ProzillaOS"><img alt="Stars" src="https://img.shields.io/github/stars/Prozilla/ProzillaOS?style=flat-square&color=FED24C&label=%E2%AD%90"></a>
|
||||||
|
<a href="https://github.com/prozilla-os/ProzillaOS"><img alt="Forks" src="https://img.shields.io/github/forks/Prozilla/ProzillaOS?style=flat-square&color=4D9CFF&label=Forks&logo=github"></a>
|
||||||
|
<a href="https://www.npmjs.com/package/prozilla-os"><img alt="NPM Version" src="https://img.shields.io/npm/v/prozilla-os?logo=npm&style=flat-square&label=prozilla-os&color=FF4D5B"></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Packages
|
||||||
|
|
||||||
|
### Libraries (public)
|
||||||
|
|
||||||
|
- [`prozilla-os`](./prozilla-os/): A bundle containing the core packages and all standard applications of ProzillaOS
|
||||||
|
- [`@prozilla-os/core`](./core/): Core functionality, React components and hooks
|
||||||
|
- [`@prozilla-os/skins`](./shared/): Customizable skins for ProzillaOS
|
||||||
|
- [`@prozilla-os/shared`](./shared/): Shared functions and utilities
|
||||||
|
|
||||||
|
#### Standard applications
|
||||||
|
|
||||||
|
- [`@prozilla-os/file-explorer`](./apps/file-explorer/): File explorer app
|
||||||
|
- [`@prozilla-os/terminal`](./apps/terminal/): Terminal/shell app
|
||||||
|
- [`@prozilla-os/text-editor`](./apps/text-editor/): Text editor app
|
||||||
|
- [`@prozilla-os/settings`](./apps/settings/): Settings app
|
||||||
|
- [`@prozilla-os/media-viewer`](./apps/media-viewer/): Media viewer app
|
||||||
|
- [`@prozilla-os/browser`](./apps/browser/): Browser app
|
||||||
|
- [`@prozilla-os/calculator`](./apps/calculator/): Calculator app
|
||||||
|
|
||||||
|
#### Non-standard applications
|
||||||
|
|
||||||
|
- [`@prozilla-os/logic-sim`](./apps/logic-sim/): Logic simulator app
|
||||||
|
|
||||||
|
### Sites (internal)
|
||||||
|
|
||||||
|
- [`@prozilla-os/demo`](./demo/): Demo site
|
||||||
|
- [`@prozilla-os/docs`](./docs/): Documentation site
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/browser
|
# @prozilla-os/browser
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/browser",
|
"name": "@prozilla-os/browser",
|
||||||
"description": "A ProzillaOS application for browsing the internet.",
|
"description": "A ProzillaOS application for browsing the internet.",
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"homepage": "https://os.prozilla.dev/browser",
|
"homepage": "https://os.prozilla.dev/browser",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/calculator
|
# @prozilla-os/calculator
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/calculator",
|
"name": "@prozilla-os/calculator",
|
||||||
"description": "A ProzillaOS application for making basic calculations.",
|
"description": "A ProzillaOS application for making basic calculations.",
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"homepage": "https://os.prozilla.dev/calculator",
|
"homepage": "https://os.prozilla.dev/calculator",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/file-explorer
|
# @prozilla-os/file-explorer
|
||||||
|
|
||||||
|
## 1.0.15
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.14
|
## 1.0.14
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/file-explorer",
|
"name": "@prozilla-os/file-explorer",
|
||||||
"description": "A standard ProzillaOS application for browsing files.",
|
"description": "A standard ProzillaOS application for browsing files.",
|
||||||
"version": "1.0.14",
|
"version": "1.0.15",
|
||||||
"homepage": "https://os.prozilla.dev/file-explorer",
|
"homepage": "https://os.prozilla.dev/file-explorer",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/logic-sim
|
# @prozilla-os/logic-sim
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/logic-sim",
|
"name": "@prozilla-os/logic-sim",
|
||||||
"description": "A ProzillaOS application for simulating digital logic.",
|
"description": "A ProzillaOS application for simulating digital logic.",
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"homepage": "https://os.prozilla.dev/logic-sim",
|
"homepage": "https://os.prozilla.dev/logic-sim",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/media-viewer
|
# @prozilla-os/media-viewer
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/media-viewer",
|
"name": "@prozilla-os/media-viewer",
|
||||||
"description": "A ProzillaOS application for viewing different kinds of media.",
|
"description": "A ProzillaOS application for viewing different kinds of media.",
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"homepage": "https://os.prozilla.dev/media-viewer",
|
"homepage": "https://os.prozilla.dev/media-viewer",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# @prozilla-os/settings
|
# @prozilla-os/settings
|
||||||
|
|
||||||
|
## 1.0.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
- @prozilla-os/file-explorer@1.0.15
|
||||||
|
|
||||||
## 1.0.3
|
## 1.0.3
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/settings",
|
"name": "@prozilla-os/settings",
|
||||||
"description": "A settings app for ProzillaOS.",
|
"description": "A settings app for ProzillaOS.",
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"homepage": "https://os.prozilla.dev/settings",
|
"homepage": "https://os.prozilla.dev/settings",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/terminal
|
# @prozilla-os/terminal
|
||||||
|
|
||||||
|
## 1.0.8
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.7
|
## 1.0.7
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/terminal",
|
"name": "@prozilla-os/terminal",
|
||||||
"description": "A terminal/shell application for ProzillaOS.",
|
"description": "A terminal/shell application for ProzillaOS.",
|
||||||
"version": "1.0.7",
|
"version": "1.0.8",
|
||||||
"homepage": "https://os.prozilla.dev/terminal",
|
"homepage": "https://os.prozilla.dev/terminal",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
# @prozilla-os/text-editor
|
# @prozilla-os/text-editor
|
||||||
|
|
||||||
|
## 1.0.8
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
|
||||||
## 1.0.7
|
## 1.0.7
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/text-editor",
|
"name": "@prozilla-os/text-editor",
|
||||||
"description": "A text editor application for ProzillaOS.",
|
"description": "A text editor application for ProzillaOS.",
|
||||||
"version": "1.0.7",
|
"version": "1.0.8",
|
||||||
"homepage": "https://os.prozilla.dev/text-editor",
|
"homepage": "https://os.prozilla.dev/text-editor",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
# @prozilla-os/core
|
# @prozilla-os/core
|
||||||
|
|
||||||
|
## 1.1.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated skins and configuration
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/skins@1.0.1
|
||||||
|
|
||||||
## 1.1.0
|
## 1.1.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/core",
|
"name": "@prozilla-os/core",
|
||||||
"description": "A React component library written in TypeScript for building web-based operating systems, made by Prozilla.",
|
"description": "A React component library written in TypeScript for building web-based operating systems, made by Prozilla.",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"homepage": "https://os.prozilla.dev",
|
"homepage": "https://os.prozilla.dev",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"types": "dist/main.d.ts",
|
"types": "dist/main.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc && vite build"
|
"build": "tsc --project tsconfig.build.json && vite build"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ interface ImagePreviewProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ImagePreview({ source, className, onError, ...props }: ImagePreviewProps) {
|
export function ImagePreview({ source, className, onError, ...props }: ImagePreviewProps) {
|
||||||
const { virtualDriveConfig } = useSystemManager();
|
const { skin } = useSystemManager();
|
||||||
const [loadingFailed, setLoadingFailed] = useState(false);
|
const [loadingFailed, setLoadingFailed] = useState(false);
|
||||||
|
|
||||||
const onLoadingError = () => {
|
const onLoadingError = () => {
|
||||||
|
|
@ -24,7 +24,7 @@ export function ImagePreview({ source, className, onError, ...props }: ImagePrev
|
||||||
|
|
||||||
return (<div className={classNames.join(" ")} {...props}>
|
return (<div className={classNames.join(" ")} {...props}>
|
||||||
{loadingFailed
|
{loadingFailed
|
||||||
? <ReactSVG src={virtualDriveConfig.fileIcon}/>
|
? <ReactSVG src={skin.fileIcons.generic}/>
|
||||||
: source.endsWith(".svg")
|
: source.endsWith(".svg")
|
||||||
? <ReactSVG src={source} onError={onLoadingError}/>
|
? <ReactSVG src={source} onError={onLoadingError}/>
|
||||||
: <img src={source} onError={onLoadingError} alt="Preview" draggable="false"/>
|
: <img src={source} onError={onLoadingError} alt="Preview" draggable="false"/>
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ import { FileEventHandler, FolderEventHandler } from "../_utils/directory-list/D
|
||||||
import { useClassNames } from "../../hooks";
|
import { useClassNames } from "../../hooks";
|
||||||
|
|
||||||
export const Desktop = memo(() => {
|
export const Desktop = memo(() => {
|
||||||
const { desktopConfig, appsConfig } = useSystemManager();
|
const { desktopConfig, skin, appsConfig } = useSystemManager();
|
||||||
const settingsManager = useSettingsManager();
|
const settingsManager = useSettingsManager();
|
||||||
const windowsManager = useWindowsManager();
|
const windowsManager = useWindowsManager();
|
||||||
const virtualRoot = useVirtualRoot();
|
const virtualRoot = useVirtualRoot();
|
||||||
|
|
@ -167,7 +167,7 @@ export const Desktop = memo(() => {
|
||||||
|
|
||||||
const onError = () => {
|
const onError = () => {
|
||||||
const settings = settingsManager?.getSettings(SettingsManager.VIRTUAL_PATHS.desktop);
|
const settings = settingsManager?.getSettings(SettingsManager.VIRTUAL_PATHS.desktop);
|
||||||
void settings?.set("wallpaper", desktopConfig.defaultWallpaper);
|
void settings?.set("wallpaper", skin.defaultWallpaper);
|
||||||
};
|
};
|
||||||
|
|
||||||
const iconScale = 1 + ((isValidInteger(iconSize) ? iconSize : desktopConfig.defaultIconSize) - 1) / 5;
|
const iconScale = 1 + ((isValidInteger(iconSize) ? iconSize : desktopConfig.defaultIconSize) - 1) / 5;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,14 @@
|
||||||
.Button {
|
.Button {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.Button > p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.Menu > div {
|
.Menu > div {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
|
|
@ -20,5 +26,5 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.Date {
|
.Date {
|
||||||
color: var(--foreground-color-1);
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
@ -44,7 +44,6 @@ export function Calendar({ hideUtilMenus, showUtilMenu }: CalendarProps) {
|
||||||
hour12: false,
|
hour12: false,
|
||||||
})}
|
})}
|
||||||
</p>
|
</p>
|
||||||
<br/>
|
|
||||||
<p>
|
<p>
|
||||||
{date.toLocaleDateString("en-GB", {
|
{date.toLocaleDateString("en-GB", {
|
||||||
day: "numeric",
|
day: "numeric",
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
import { OptionalInterface } from "../../../types/utils";
|
import { OptionalInterface } from "../../../types/utils";
|
||||||
|
|
||||||
export interface DesktopConfigOptions {
|
export interface DesktopConfigOptions {
|
||||||
/** Array of URLs of wallpaper images */
|
|
||||||
wallpapers: string[];
|
|
||||||
|
|
||||||
/** URL of default wallpaper image */
|
|
||||||
defaultWallpaper: string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @default 1
|
* @default 1
|
||||||
*/
|
*/
|
||||||
|
|
@ -20,26 +14,12 @@ export interface DesktopConfigOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DesktopConfig {
|
export class DesktopConfig {
|
||||||
wallpapers: DesktopConfigOptions["wallpapers"];
|
|
||||||
defaultWallpaper: DesktopConfigOptions["defaultWallpaper"];
|
|
||||||
defaultIconSize: DesktopConfigOptions["defaultIconSize"];
|
defaultIconSize: DesktopConfigOptions["defaultIconSize"];
|
||||||
defaultIconDirection: DesktopConfigOptions["defaultIconDirection"];
|
defaultIconDirection: DesktopConfigOptions["defaultIconDirection"];
|
||||||
|
|
||||||
constructor(options: OptionalInterface<DesktopConfigOptions> = {}) {
|
constructor(options: OptionalInterface<DesktopConfigOptions> = {}) {
|
||||||
const { wallpapers, defaultWallpaper, defaultIconSize, defaultIconDirection } = options as DesktopConfigOptions;
|
const { defaultIconSize, defaultIconDirection } = options as DesktopConfigOptions;
|
||||||
|
|
||||||
this.wallpapers = wallpapers ?? [
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-purple-yellow.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/abstract-wallpaper-mesh-gradient-cyan.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/colorful-abstract-wallpaper-blue-red-green.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/mesh-gradient-wallpaper-red-purple.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/colorful-mesh-gradient-red-green.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/flame-abstract-wallpaper-orange.png",
|
|
||||||
"https://os.prozilla.dev/assets/wallpapers/wave-abstract-wallpaper-teal.png",
|
|
||||||
];
|
|
||||||
this.defaultWallpaper = defaultWallpaper ?? "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png";
|
|
||||||
this.defaultIconSize = defaultIconSize ?? 1;
|
this.defaultIconSize = defaultIconSize ?? 1;
|
||||||
this.defaultIconDirection = defaultIconDirection ?? 0;
|
this.defaultIconDirection = defaultIconDirection ?? 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,11 @@
|
||||||
import { OptionalInterface } from "../../../types/utils";
|
import { OptionalInterface } from "../../../types/utils";
|
||||||
|
|
||||||
export interface VirtualDriveConfigOptions {
|
export interface VirtualDriveConfigOptions {
|
||||||
fileIcon: string;
|
|
||||||
infoFileIcon: string;
|
|
||||||
textFileIcon: string;
|
|
||||||
codeFileIcon: string;
|
|
||||||
|
|
||||||
folderIcon: string;
|
|
||||||
imagesFolderIcon: string;
|
|
||||||
textFolderIcon: string;
|
|
||||||
folderLinkIcon: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class VirtualDriveConfig {
|
export class VirtualDriveConfig {
|
||||||
fileIcon: VirtualDriveConfigOptions["fileIcon"];
|
|
||||||
infoFileIcon: VirtualDriveConfigOptions["infoFileIcon"];
|
|
||||||
textFileIcon: VirtualDriveConfigOptions["textFileIcon"];
|
|
||||||
codeFileIcon: VirtualDriveConfigOptions["codeFileIcon"];
|
|
||||||
|
|
||||||
folderIcon: VirtualDriveConfigOptions["folderIcon"];
|
|
||||||
imagesFolderIcon: VirtualDriveConfigOptions["imagesFolderIcon"];
|
|
||||||
textFolderIcon: VirtualDriveConfigOptions["textFolderIcon"];
|
|
||||||
folderLinkIcon: VirtualDriveConfigOptions["folderLinkIcon"];
|
|
||||||
|
|
||||||
constructor(options: OptionalInterface<VirtualDriveConfigOptions> = {}) {
|
constructor(options: OptionalInterface<VirtualDriveConfigOptions> = {}) {
|
||||||
const { fileIcon, infoFileIcon, textFileIcon, codeFileIcon, folderIcon, imagesFolderIcon, textFolderIcon, folderLinkIcon } = options as VirtualDriveConfigOptions;
|
// const { } = options as VirtualDriveConfigOptions;
|
||||||
|
|
||||||
this.fileIcon = fileIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/file.svg";
|
|
||||||
this.infoFileIcon = infoFileIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-info.svg";
|
|
||||||
this.textFileIcon = textFileIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-text.svg";
|
|
||||||
this.codeFileIcon = codeFileIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-code.svg";
|
|
||||||
|
|
||||||
this.folderIcon = folderIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder.svg";
|
|
||||||
this.imagesFolderIcon = imagesFolderIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-images.svg";
|
|
||||||
this.textFolderIcon = textFolderIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-text.svg";
|
|
||||||
this.folderLinkIcon = folderLinkIcon ?? "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-link.svg";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -26,20 +26,20 @@ export interface SystemManagerParams {
|
||||||
};
|
};
|
||||||
|
|
||||||
export class SystemManager {
|
export class SystemManager {
|
||||||
systemName: string;
|
readonly systemName: string;
|
||||||
tagLine: string;
|
readonly tagLine: string;
|
||||||
#startDate: Date;
|
#startDate: Date;
|
||||||
|
|
||||||
skin?: Skin;
|
readonly skin: Skin;
|
||||||
|
|
||||||
appsConfig: AppsConfig;
|
readonly appsConfig: AppsConfig;
|
||||||
desktopConfig: DesktopConfig;
|
readonly desktopConfig: DesktopConfig;
|
||||||
miscConfig: MiscConfig;
|
readonly miscConfig: MiscConfig;
|
||||||
modalsConfig: ModalsConfig;
|
readonly modalsConfig: ModalsConfig;
|
||||||
taskbarConfig: TaskbarConfig;
|
readonly taskbarConfig: TaskbarConfig;
|
||||||
trackingConfig: TrackingConfig;
|
readonly trackingConfig: TrackingConfig;
|
||||||
windowsConfig: WindowsConfig;
|
readonly windowsConfig: WindowsConfig;
|
||||||
virtualDriveConfig: VirtualDriveConfig;
|
readonly virtualDriveConfig: VirtualDriveConfig;
|
||||||
|
|
||||||
constructor({
|
constructor({
|
||||||
systemName,
|
systemName,
|
||||||
|
|
@ -57,7 +57,7 @@ export class SystemManager {
|
||||||
this.systemName = systemName ?? "ProzillaOS";
|
this.systemName = systemName ?? "ProzillaOS";
|
||||||
this.tagLine = tagLine ?? "Web-based Operating System";
|
this.tagLine = tagLine ?? "Web-based Operating System";
|
||||||
|
|
||||||
this.skin = skin;
|
this.skin = skin ?? new Skin();
|
||||||
|
|
||||||
this.desktopConfig = desktopConfig;
|
this.desktopConfig = desktopConfig;
|
||||||
this.appsConfig = appsConfig;
|
this.appsConfig = appsConfig;
|
||||||
|
|
@ -68,45 +68,30 @@ export class SystemManager {
|
||||||
this.windowsConfig = windowsConfig;
|
this.windowsConfig = windowsConfig;
|
||||||
this.virtualDriveConfig = virtualDriveConfig;
|
this.virtualDriveConfig = virtualDriveConfig;
|
||||||
|
|
||||||
if (this.skin != null) {
|
this.loadSkin();
|
||||||
const skin = this.skin;
|
|
||||||
|
|
||||||
if (skin.appIcons != null) {
|
|
||||||
const appIcons = skin.appIcons as { [key: string]: string };
|
|
||||||
|
|
||||||
this.appsConfig.apps.forEach((app) => {
|
|
||||||
if (Object.keys(appIcons).includes(app.id))
|
|
||||||
app.setIconUrl(appIcons[app.id]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skin.wallpapers != null)
|
|
||||||
this.desktopConfig.wallpapers = this.desktopConfig.wallpapers.concat(skin.wallpapers);
|
|
||||||
|
|
||||||
if (skin.defaultWallpaper != null)
|
|
||||||
this.desktopConfig.defaultWallpaper = skin.defaultWallpaper;
|
|
||||||
|
|
||||||
if (skin.fileIcons != null) {
|
|
||||||
this.virtualDriveConfig.fileIcon = skin.fileIcons.generic;
|
|
||||||
this.virtualDriveConfig.infoFileIcon = skin.fileIcons.info ?? skin.fileIcons.generic;
|
|
||||||
this.virtualDriveConfig.textFileIcon = skin.fileIcons.text ?? skin.fileIcons.generic;
|
|
||||||
this.virtualDriveConfig.codeFileIcon = skin.fileIcons.code ?? skin.fileIcons.generic;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skin.folderIcons != null) {
|
|
||||||
this.virtualDriveConfig.folderIcon = skin.folderIcons.generic;
|
|
||||||
this.virtualDriveConfig.textFolderIcon = skin.folderIcons.text ?? skin.folderIcons.generic;
|
|
||||||
this.virtualDriveConfig.imagesFolderIcon = skin.folderIcons.images ?? skin.folderIcons.generic;
|
|
||||||
this.virtualDriveConfig.folderLinkIcon = skin.folderIcons.link ?? skin.folderIcons.generic;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skin.loadStyleSheet != null)
|
|
||||||
skin.loadStyleSheet();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.#startDate = new Date();
|
this.#startDate = new Date();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private loadSkin() {
|
||||||
|
const skin = this.skin;
|
||||||
|
|
||||||
|
if (skin.appIcons != null) {
|
||||||
|
const appIcons = skin.appIcons as { [key: string]: string };
|
||||||
|
const appNames = skin.appNames as { [key: string]: string };
|
||||||
|
|
||||||
|
this.appsConfig.apps.forEach((app) => {
|
||||||
|
if (Object.keys(appIcons).includes(app.id))
|
||||||
|
app.setIconUrl(appIcons[app.id]);
|
||||||
|
if (Object.keys(appNames).includes(app.id))
|
||||||
|
app.setIconUrl(appNames[app.id]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (skin.loadStyleSheet != null)
|
||||||
|
skin.loadStyleSheet();
|
||||||
|
}
|
||||||
|
|
||||||
getUptime(precision = 2) {
|
getUptime(precision = 2) {
|
||||||
return formatRelativeTime(this.#startDate, precision, false);
|
return formatRelativeTime(this.#startDate, precision, false);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -123,12 +123,12 @@ export class VirtualFile extends VirtualBase {
|
||||||
if (this.source != null && this.extension != null && IMAGE_EXTENSIONS.includes(this.extension))
|
if (this.source != null && this.extension != null && IMAGE_EXTENSIONS.includes(this.extension))
|
||||||
return this.source;
|
return this.source;
|
||||||
|
|
||||||
const { virtualDriveConfig } = this.getRoot().systemManager;
|
const { skin } = this.getRoot().systemManager;
|
||||||
|
|
||||||
switch (this.extension) {
|
switch (this.extension) {
|
||||||
case "txt":
|
case "txt":
|
||||||
case "md":
|
case "md":
|
||||||
iconUrl = virtualDriveConfig.textFileIcon;
|
iconUrl = skin.fileIcons.text ?? skin.fileIcons.generic;
|
||||||
break;
|
break;
|
||||||
case "xml":
|
case "xml":
|
||||||
case "js":
|
case "js":
|
||||||
|
|
@ -139,10 +139,10 @@ export class VirtualFile extends VirtualBase {
|
||||||
case "css":
|
case "css":
|
||||||
case "html":
|
case "html":
|
||||||
case "yml":
|
case "yml":
|
||||||
iconUrl = virtualDriveConfig.codeFileIcon;
|
iconUrl = skin.fileIcons.code ?? skin.fileIcons.generic;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
iconUrl = virtualDriveConfig.fileIcon;
|
iconUrl = skin.fileIcons.generic;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -99,8 +99,8 @@ export class VirtualFileLink extends VirtualFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
getIconUrl(...args: Parameters<VirtualFile["getIconUrl"]>): ReturnType<VirtualFile["getIconUrl"]> {
|
getIconUrl(...args: Parameters<VirtualFile["getIconUrl"]>): ReturnType<VirtualFile["getIconUrl"]> {
|
||||||
const { virtualDriveConfig } = this.getRoot().systemManager;
|
const { skin } = this.getRoot().systemManager;
|
||||||
const defaultIconUrl = virtualDriveConfig.fileIcon;
|
const defaultIconUrl = skin.fileIcons.generic;
|
||||||
|
|
||||||
if (this.isValid()) {
|
if (this.isValid()) {
|
||||||
return this.iconUrl ?? this.linkedFile?.getIconUrl(...args) ?? defaultIconUrl;
|
return this.iconUrl ?? this.linkedFile?.getIconUrl(...args) ?? defaultIconUrl;
|
||||||
|
|
|
||||||
|
|
@ -355,8 +355,8 @@ export class VirtualFolder extends VirtualBase {
|
||||||
if (this.iconUrl != null)
|
if (this.iconUrl != null)
|
||||||
return this.iconUrl;
|
return this.iconUrl;
|
||||||
|
|
||||||
const { virtualDriveConfig } = this.getRoot().systemManager;
|
const { skin } = this.getRoot().systemManager;
|
||||||
return virtualDriveConfig.folderIcon;
|
return skin.folderIcons.generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON(): VirtualFolderJson | null {
|
toJSON(): VirtualFolderJson | null {
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,8 @@ export class VirtualFolderLink extends VirtualFolder {
|
||||||
if (this.isValid() && this.linkedFolder?.iconUrl)
|
if (this.isValid() && this.linkedFolder?.iconUrl)
|
||||||
return this.linkedFolder.iconUrl;
|
return this.linkedFolder.iconUrl;
|
||||||
|
|
||||||
const { virtualDriveConfig } = this.getRoot().systemManager;
|
const { skin } = this.getRoot().systemManager;
|
||||||
return virtualDriveConfig.folderLinkIcon;
|
return skin.folderIcons.link ?? skin.folderIcons.generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
toJSON(): VirtualFolderLinkJson | null {
|
toJSON(): VirtualFolderLinkJson | null {
|
||||||
|
|
@ -137,7 +137,7 @@ export class VirtualFolderLink extends VirtualFolder {
|
||||||
}
|
}
|
||||||
|
|
||||||
open(...args: Parameters<VirtualFolder["open"]>): ReturnType<VirtualFolder["open"]> {
|
open(...args: Parameters<VirtualFolder["open"]>): ReturnType<VirtualFolder["open"]> {
|
||||||
if (this.isValid()) return this.linkedFolder?.open(...args) as ReturnType<VirtualFolder["open"]>;
|
if (this.isValid()) return this.linkedFolder?.open(...args);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { VirtualRoot } from "./virtualRoot";
|
||||||
* Loads default data on the virtual root
|
* Loads default data on the virtual root
|
||||||
*/
|
*/
|
||||||
export function loadDefaultData(systemManager: SystemManager, virtualRoot: VirtualRoot) {
|
export function loadDefaultData(systemManager: SystemManager, virtualRoot: VirtualRoot) {
|
||||||
const { desktopConfig, virtualDriveConfig, appsConfig } = systemManager;
|
const { skin, appsConfig } = systemManager;
|
||||||
const linkedPaths: Record<string, string> = {};
|
const linkedPaths: Record<string, string> = {};
|
||||||
|
|
||||||
virtualRoot.createFolder("home", (folder) => {
|
virtualRoot.createFolder("home", (folder) => {
|
||||||
|
|
@ -17,7 +17,7 @@ export function loadDefaultData(systemManager: SystemManager, virtualRoot: Virtu
|
||||||
folder.createFile("desktop", "xml", (file) => {
|
folder.createFile("desktop", "xml", (file) => {
|
||||||
file.setContent([
|
file.setContent([
|
||||||
"<options>",
|
"<options>",
|
||||||
` <wallpaper>${desktopConfig.defaultWallpaper}</wallpaper>`,
|
` <wallpaper>${skin.defaultWallpaper}</wallpaper>`,
|
||||||
" <show-icons>true</show-icons>",
|
" <show-icons>true</show-icons>",
|
||||||
"</options>",
|
"</options>",
|
||||||
]);
|
]);
|
||||||
|
|
@ -38,11 +38,11 @@ export function loadDefaultData(systemManager: SystemManager, virtualRoot: Virtu
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.createFolder("Pictures", (folder) => {
|
.createFolder("Pictures", (folder) => {
|
||||||
folder.setIconUrl(virtualDriveConfig.imagesFolderIcon);
|
folder.setIconUrl(skin.folderIcons.images ?? skin.folderIcons.generic);
|
||||||
folder.createFolder("Wallpapers", (folder) => {
|
folder.createFolder("Wallpapers", (folder) => {
|
||||||
folder.setProtected(true);
|
folder.setProtected(true);
|
||||||
for (let i = 0; i < desktopConfig.wallpapers.length; i++) {
|
for (let i = 0; i < skin.wallpapers.length; i++) {
|
||||||
const source = desktopConfig.wallpapers[i];
|
const source = skin.wallpapers[i];
|
||||||
folder.createFile(`Wallpaper${i + 1}`, "png", (file) => {
|
folder.createFile(`Wallpaper${i + 1}`, "png", (file) => {
|
||||||
file.setSource(source);
|
file.setSource(source);
|
||||||
});
|
});
|
||||||
|
|
@ -63,13 +63,13 @@ export function loadDefaultData(systemManager: SystemManager, virtualRoot: Virtu
|
||||||
linkedPaths.images = folder.path;
|
linkedPaths.images = folder.path;
|
||||||
})
|
})
|
||||||
.createFolder("Documents", (folder) => {
|
.createFolder("Documents", (folder) => {
|
||||||
folder.setIconUrl(virtualDriveConfig.textFolderIcon);
|
folder.setIconUrl(skin.folderIcons.text ?? skin.folderIcons.generic);
|
||||||
folder.createFile("text", "txt", (file) => {
|
folder.createFile("text", "txt", (file) => {
|
||||||
file.setContent("Hello world!");
|
file.setContent("Hello world!");
|
||||||
}).createFile("Info", "md", (file) => {
|
}).createFile("Info", "md", (file) => {
|
||||||
file.setProtected(true)
|
file.setProtected(true)
|
||||||
.setSource("/documents/info.md")
|
.setSource("/documents/info.md")
|
||||||
.setIconUrl(virtualDriveConfig.infoFileIcon);
|
.setIconUrl(skin.fileIcons.info ?? skin.fileIcons.generic);
|
||||||
linkedPaths.info = file.path;
|
linkedPaths.info = file.path;
|
||||||
}).createFile("Prozilla", "md", (file) => {
|
}).createFile("Prozilla", "md", (file) => {
|
||||||
file.setProtected(true)
|
file.setProtected(true)
|
||||||
|
|
|
||||||
|
|
@ -83,8 +83,8 @@ export class VirtualBase extends EventEmitter<EventNamesMap> {
|
||||||
if (this.linkedFile?.iconUrl != null) return this.linkedFile.iconUrl;
|
if (this.linkedFile?.iconUrl != null) return this.linkedFile.iconUrl;
|
||||||
if (this.linkedFolder?.iconUrl != null) return this.linkedFolder.iconUrl;
|
if (this.linkedFolder?.iconUrl != null) return this.linkedFolder.iconUrl;
|
||||||
|
|
||||||
const { virtualDriveConfig } = this.getRoot().systemManager;
|
const { skin } = this.getRoot().systemManager;
|
||||||
return virtualDriveConfig.fileIcon;
|
return skin.fileIcons.generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
getType(): string {
|
getType(): string {
|
||||||
|
|
|
||||||
8
packages/core/tsconfig.build.json
Normal file
8
packages/core/tsconfig.build.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"paths": {
|
||||||
|
"@prozilla-os/*": ["packages/*/dist/main"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -3,11 +3,15 @@
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"baseUrl": "../..",
|
"baseUrl": "../..",
|
||||||
"composite": true,
|
"composite": true,
|
||||||
"outDir": "dist",
|
"outDir": "./dist",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"emitDeclarationOnly": true,
|
"emitDeclarationOnly": true,
|
||||||
"noEmit": false
|
"noEmit": false,
|
||||||
|
"rootDir": "../",
|
||||||
|
"paths": {
|
||||||
|
"@prozilla-os/*": ["packages/*/src/main"],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
"include": ["src", "vite.config.ts"],
|
"include": ["src", "vite.config.ts", "../skins/src/**/*",],
|
||||||
"exclude": ["node_modules"]
|
"exclude": ["node_modules"]
|
||||||
}
|
}
|
||||||
|
|
@ -15,7 +15,8 @@ export default defineConfig({
|
||||||
rollupTypes: true,
|
rollupTypes: true,
|
||||||
strictOutput: true,
|
strictOutput: true,
|
||||||
pathsToAliases: false,
|
pathsToAliases: false,
|
||||||
bundledPackages: ["@prozilla-os/*"]
|
bundledPackages: ["@prozilla-os/*"],
|
||||||
|
tsconfigPath: "tsconfig.build.json"
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
build: {
|
build: {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "vite",
|
"start": "vite",
|
||||||
"build": "tsc --project tsconfig-build.json && vite build",
|
"build": "tsc --project tsconfig.build.json && vite build",
|
||||||
"preview": "vite preview --port 8080",
|
"preview": "vite preview --port 8080",
|
||||||
"stage": "vite-node scripts/stage",
|
"stage": "vite-node scripts/stage",
|
||||||
"predeploy": "pnpm run build && pnpm run stage",
|
"predeploy": "pnpm run build && pnpm run stage",
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { appsConfig } from "../src/config/apps.config";
|
||||||
import { ANSI } from "../../core/src/constants";
|
import { ANSI } from "../../core/src/constants";
|
||||||
import { NAME, TAG_LINE } from "../src/config/branding.config";
|
import { NAME, TAG_LINE } from "../src/config/branding.config";
|
||||||
import { BASE_URL, BUILD_DIR, DOMAIN } from "../src/config/deploy.config";
|
import { BASE_URL, BUILD_DIR, DOMAIN } from "../src/config/deploy.config";
|
||||||
import { desktopConfig } from "../src/config/desktop.config";
|
import { skin } from "../src/config/skin.config";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { name } from "../package.json";
|
import { name } from "../package.json";
|
||||||
|
|
||||||
|
|
@ -18,7 +18,7 @@ function generateSitemapXml() {
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
const lastModified = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
|
const lastModified = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
|
||||||
|
|
||||||
const images = desktopConfig.wallpapers.map((path) => `
|
const images = skin.wallpapers.map((path) => `
|
||||||
<image:image>
|
<image:image>
|
||||||
<image:loc>${BASE_URL.slice(0, -1) + path}</image:loc>
|
<image:loc>${BASE_URL.slice(0, -1) + path}</image:loc>
|
||||||
</image:image>`
|
</image:image>`
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,17 @@
|
||||||
import { ReactElement } from "react";
|
import { ReactElement } from "react";
|
||||||
import { Router } from "./router/Router";
|
import { Router } from "./router/Router";
|
||||||
import { desktopConfig } from "./config/desktop.config";
|
import { skin } from "./config/skin.config";
|
||||||
import { NAME, TAG_LINE } from "./config/branding.config";
|
import { NAME, TAG_LINE } from "./config/branding.config";
|
||||||
import { appsConfig } from "./config/apps.config";
|
import { appsConfig } from "./config/apps.config";
|
||||||
import { virtualDriveConfig } from "./config/virtualDrive.config";
|
|
||||||
import { ProzillaOS } from "prozilla-os";
|
import { ProzillaOS } from "prozilla-os";
|
||||||
import { macOsSkin } from "@prozilla-os/skins";
|
|
||||||
|
|
||||||
export function Main(): ReactElement {
|
export function Main(): ReactElement {
|
||||||
return <ProzillaOS
|
return <ProzillaOS
|
||||||
systemName={NAME}
|
systemName={NAME}
|
||||||
tagLine={TAG_LINE}
|
tagLine={TAG_LINE}
|
||||||
skin={macOsSkin}
|
skin={skin}
|
||||||
config={{
|
config={{
|
||||||
desktop: desktopConfig,
|
|
||||||
apps: appsConfig,
|
apps: appsConfig,
|
||||||
virtualDrive: virtualDriveConfig,
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Router/>
|
<Router/>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { DesktopConfig } from "prozilla-os";
|
import { Skin } from "@prozilla-os/skins";
|
||||||
|
|
||||||
export const desktopConfig = new DesktopConfig({
|
export const skin = new Skin({
|
||||||
wallpapers: [
|
wallpapers: [
|
||||||
"/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png",
|
"/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png",
|
||||||
"/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
"/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
||||||
|
|
@ -12,5 +12,17 @@ export const desktopConfig = new DesktopConfig({
|
||||||
"/assets/wallpapers/flame-abstract-wallpaper-orange.png",
|
"/assets/wallpapers/flame-abstract-wallpaper-orange.png",
|
||||||
"/assets/wallpapers/wave-abstract-wallpaper-teal.png",
|
"/assets/wallpapers/wave-abstract-wallpaper-teal.png",
|
||||||
],
|
],
|
||||||
defaultWallpaper: "/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png"
|
defaultWallpaper: "/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
||||||
|
fileIcons: {
|
||||||
|
generic: "/assets/apps/file-explorer/icons/file.svg",
|
||||||
|
info: "/assets/apps/file-explorer/icons/file-info.svg",
|
||||||
|
text: "/assets/apps/file-explorer/icons/file-text.svg",
|
||||||
|
code: "/assets/apps/file-explorer/icons/file-code.svg",
|
||||||
|
},
|
||||||
|
folderIcons: {
|
||||||
|
generic: "/assets/apps/file-explorer/icons/folder.svg",
|
||||||
|
images: "/assets/apps/file-explorer/icons/folder-images.svg",
|
||||||
|
text: "/assets/apps/file-explorer/icons/folder-text.svg",
|
||||||
|
link: "/assets/apps/file-explorer/icons/folder-link.svg",
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
import { VirtualDriveConfig } from "prozilla-os";
|
|
||||||
|
|
||||||
export const virtualDriveConfig = new VirtualDriveConfig({
|
|
||||||
fileIcon: "/assets/apps/file-explorer/icons/file.svg",
|
|
||||||
infoFileIcon: "/assets/apps/file-explorer/icons/file-info.svg",
|
|
||||||
textFileIcon: "/assets/apps/file-explorer/icons/file-text.svg",
|
|
||||||
codeFileIcon: "/assets/apps/file-explorer/icons/file-code.svg",
|
|
||||||
folderIcon: "/assets/apps/file-explorer/icons/folder.svg",
|
|
||||||
imagesFolderIcon: "/assets/apps/file-explorer/icons/folder-images.svg",
|
|
||||||
textFolderIcon: "/assets/apps/file-explorer/icons/folder-text.svg",
|
|
||||||
folderLinkIcon: "/assets/apps/file-explorer/icons/folder-link.svg",
|
|
||||||
});
|
|
||||||
|
|
@ -76,19 +76,33 @@ export default defineConfig({
|
||||||
base: "/reference/classes/",
|
base: "/reference/classes/",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [
|
items: [
|
||||||
|
{
|
||||||
|
text: "Apps",
|
||||||
|
base: "/reference/classes/apps/",
|
||||||
|
collapsed: true,
|
||||||
|
items: [
|
||||||
|
{ text: "App", link: "app" },
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: "Skins",
|
||||||
|
base: "/reference/classes/skins/",
|
||||||
|
collapsed: true,
|
||||||
|
items: [
|
||||||
|
{ text: "Skin", link: "skin" },
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: "System",
|
text: "System",
|
||||||
base: "/reference/classes/system/",
|
base: "/reference/classes/system/",
|
||||||
collapsed: true,
|
collapsed: true,
|
||||||
items: [
|
items: [
|
||||||
{ text: "App", link: "app" },
|
|
||||||
{ text: "AppsConfig", link: "apps-config" },
|
{ text: "AppsConfig", link: "apps-config" },
|
||||||
{ text: "DesktopConfig", link: "desktop-config" },
|
{ text: "DesktopConfig", link: "desktop-config" },
|
||||||
{ text: "MiscConfig", link: "misc-config" },
|
{ text: "MiscConfig", link: "misc-config" },
|
||||||
{ text: "ModalsConfig", link: "modals-config" },
|
{ text: "ModalsConfig", link: "modals-config" },
|
||||||
{ text: "TaskbarConfig", link: "taskbar-config" },
|
{ text: "TaskbarConfig", link: "taskbar-config" },
|
||||||
{ text: "TrackingConfig", link: "tracking-config" },
|
{ text: "TrackingConfig", link: "tracking-config" },
|
||||||
{ text: "VirtualDriveConfig", link: "virtual-drive-config" },
|
|
||||||
{ text: "WindowsConfig", link: "windows-config" },
|
{ text: "WindowsConfig", link: "windows-config" },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ description: "An application that can be run by ProzillaOS"
|
||||||
|
|
||||||
An application that can be run by ProzillaOS
|
An application that can be run by ProzillaOS
|
||||||
|
|
||||||
Applications can be installed by adding them to the `apps` array in [`AppsConfig`](apps-config#apps-app)
|
Applications can be installed by adding them to the `apps` array in [`AppsConfig`](../system/apps-config#apps-app)
|
||||||
|
|
||||||
## Type parameters
|
## Type parameters
|
||||||
|
|
||||||
116
packages/docs/src/reference/classes/skins/skin.md
Normal file
116
packages/docs/src/reference/classes/skins/skin.md
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
---
|
||||||
|
outline: deep
|
||||||
|
description: "Change the look and feel of ProzillaOS"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Class [`Skin`](https://github.com/prozilla-os/ProzillaOS/blob/main/packages/skins/src/core/skin.ts)
|
||||||
|
|
||||||
|
Change the look and feel of ProzillaOS
|
||||||
|
|
||||||
|
## Constructor
|
||||||
|
|
||||||
|
> `new Skin(options)`
|
||||||
|
|
||||||
|
### Parameters
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
#### options
|
||||||
|
|
||||||
|
- **Optional**
|
||||||
|
- **Type:** `SkinOptions`
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface SkinOptions {
|
||||||
|
appIcons?: { [key: string]: string };
|
||||||
|
appNames?: { [key: string]: string };
|
||||||
|
wallpapers: string[];
|
||||||
|
defaultWallpaper: string;
|
||||||
|
fileIcons: {
|
||||||
|
generic: string;
|
||||||
|
info?: string;
|
||||||
|
text?: string;
|
||||||
|
code?: string;
|
||||||
|
};
|
||||||
|
folderIcons: {
|
||||||
|
generic: string;
|
||||||
|
images?: string;
|
||||||
|
text?: string;
|
||||||
|
link?: string;
|
||||||
|
};
|
||||||
|
loadStyleSheet?: () => void;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
### appIcons
|
||||||
|
|
||||||
|
- **Type:** `{ [key: string]: string }`
|
||||||
|
|
||||||
|
Replacements for app icons based on app id
|
||||||
|
|
||||||
|
### appNames
|
||||||
|
|
||||||
|
- **Type:** `{ [key: string]: string }`
|
||||||
|
|
||||||
|
Replacements for app names based on app id
|
||||||
|
|
||||||
|
### wallpapers
|
||||||
|
|
||||||
|
- **Type:** `string[]`
|
||||||
|
|
||||||
|
Array of URLs of wallpaper images
|
||||||
|
|
||||||
|
### defaultWallpaper
|
||||||
|
|
||||||
|
- **Type:** `string`
|
||||||
|
- **Default:** `"https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png"`
|
||||||
|
- Preview:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
URL of default wallpaper image
|
||||||
|
|
||||||
|
### fileIcons
|
||||||
|
|
||||||
|
- **Type:** `FileIcons`
|
||||||
|
|
||||||
|
URLs of icons for types of files
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface FileIcons {
|
||||||
|
generic: string;
|
||||||
|
info?: string;
|
||||||
|
text?: string;
|
||||||
|
code?: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### folderIcons
|
||||||
|
|
||||||
|
- **Type:** `FolderIcons`
|
||||||
|
|
||||||
|
URLs of icons for types of folders
|
||||||
|
|
||||||
|
```ts
|
||||||
|
interface FolderIcons {
|
||||||
|
generic: string;
|
||||||
|
images?: string;
|
||||||
|
text?: string;
|
||||||
|
link?: string;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### loadStyleSheet
|
||||||
|
|
||||||
|
- **Type:** `() => void`
|
||||||
|
- **Example:**
|
||||||
|
|
||||||
|
```ts
|
||||||
|
function loadStyleSheet() {
|
||||||
|
import("../styles/skins/macOs.css");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Function that dynamically imports style sheet
|
||||||
|
|
@ -14,10 +14,12 @@ outline: deep
|
||||||
|
|
||||||
#### options
|
#### options
|
||||||
|
|
||||||
- options.apps : [`App[]`](app)
|
- options.apps : [`App[]`](../apps/app)
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
### apps : [`App[]`](app) {#apps}
|
### apps
|
||||||
|
|
||||||
|
- **Type:** [`App[]`](../apps/app)
|
||||||
|
|
||||||
An array of applications
|
An array of applications
|
||||||
|
|
|
||||||
|
|
@ -14,44 +14,11 @@ outline: deep
|
||||||
|
|
||||||
#### options
|
#### options
|
||||||
|
|
||||||
- options.wallpapers : `string[]`
|
|
||||||
- options.defaultWallpaper : `string`
|
|
||||||
- options.defaultIconSize : `0 | 1 | 2`
|
- options.defaultIconSize : `0 | 1 | 2`
|
||||||
- options.defaultIconDirection : `0 | 1`
|
- options.defaultIconDirection : `0 | 1`
|
||||||
|
|
||||||
## Properties
|
## Properties
|
||||||
|
|
||||||
### wallpapers : `string[]` {#wallpapers}
|
|
||||||
|
|
||||||
Array of URLs of wallpaper images
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> [
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-purple-yellow.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/abstract-wallpaper-mesh-gradient-cyan.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/colorful-abstract-wallpaper-blue-red-green.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/mesh-gradient-wallpaper-red-purple.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/colorful-mesh-gradient-red-green.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/flame-abstract-wallpaper-orange.png",
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/wave-abstract-wallpaper-teal.png",
|
|
||||||
> ]
|
|
||||||
> ```
|
|
||||||
|
|
||||||
### defaultWallpaper : `string` {#default-wallpaper}
|
|
||||||
|
|
||||||
URL of default wallpaper image
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### defaultIconSize : `0 | 1 | 2` {#default-icon-size}
|
### defaultIconSize : `0 | 1 | 2` {#default-icon-size}
|
||||||
|
|
||||||
The default size of the desktop icons
|
The default size of the desktop icons
|
||||||
|
|
|
||||||
|
|
@ -1,114 +0,0 @@
|
||||||
---
|
|
||||||
outline: deep
|
|
||||||
---
|
|
||||||
|
|
||||||
# Class [`VirtualDriveConfig`](https://github.com/prozilla-os/ProzillaOS/blob/main/packages/core/src/features/system/configs/virtualDriveConfig.ts)
|
|
||||||
|
|
||||||
## Constructor
|
|
||||||
|
|
||||||
> `new VirtualDriveConfig(options)`
|
|
||||||
|
|
||||||
### Parameters
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
#### options
|
|
||||||
|
|
||||||
- options.fileIcon : `string`
|
|
||||||
- options.infoFileIcon : `string`
|
|
||||||
- options.textFileIcon : `string`
|
|
||||||
- options.codeFileIcon : `string`
|
|
||||||
- options.folderIcon : `string`
|
|
||||||
- options.imagesFolderIcon : `string`
|
|
||||||
- options.textFolderIcon : `string`
|
|
||||||
- options.folderLinkIcon : `string`
|
|
||||||
|
|
||||||
## Properties
|
|
||||||
|
|
||||||
### fileIcon : `string` {#file-icon}
|
|
||||||
|
|
||||||
URL of an icon for regular files
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/file.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### infoFileIcon : `string` {#info-file-icon}
|
|
||||||
|
|
||||||
URL of an icon for information files
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-info.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### textFileIcon : `string` {#text-file-icon}
|
|
||||||
|
|
||||||
URL of an icon for text files
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-text.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### codeFileIcon : `string` {#code-file-icon}
|
|
||||||
|
|
||||||
URL of an icon for code files
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-code.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### folderIcon : `string` {#folder-icon}
|
|
||||||
|
|
||||||
URL of an icon for regular folders
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### imagesFolderIcon : `string` {#images-folder-icon}
|
|
||||||
|
|
||||||
URL of an icon for image folders
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-images.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### textFolderIcon : `string` {#text-folder-icon}
|
|
||||||
|
|
||||||
URL of an icon for text folders
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-text.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
||||||
### folderLinkIcon : `string` {#folder-link-icon}
|
|
||||||
|
|
||||||
URL of an icon for folder links
|
|
||||||
|
|
||||||
> **@default**
|
|
||||||
>
|
|
||||||
> ```ts
|
|
||||||
> "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-link.svg"
|
|
||||||
> ```
|
|
||||||
> 
|
|
||||||
|
|
@ -28,6 +28,10 @@ To configure ProzillaOS, pass the following properties inside to the `config` pr
|
||||||
> "Web-based Operating System"
|
> "Web-based Operating System"
|
||||||
> ```
|
> ```
|
||||||
|
|
||||||
|
### skin : [`Skin`](./classes/skins/skin) {#skin}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
### config
|
### config
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
@ -40,7 +44,6 @@ To configure ProzillaOS, pass the following properties inside to the `config` pr
|
||||||
- config.modals : [`ModalsConfig`](classes/system/modals-config)
|
- config.modals : [`ModalsConfig`](classes/system/modals-config)
|
||||||
- config.taskbar : [`TaskbarConfig`](classes/system/taskbar-config)
|
- config.taskbar : [`TaskbarConfig`](classes/system/taskbar-config)
|
||||||
- config.tracking : [`TrackingConfig`](classes/system/tracking-config)
|
- config.tracking : [`TrackingConfig`](classes/system/tracking-config)
|
||||||
- config.virtualDrive : [`VirtualDriveConfig`](classes/system/virtual-drive-config)
|
|
||||||
- config.windows : [`WindowsConfig`](classes/system/windows-config)
|
- config.windows : [`WindowsConfig`](classes/system/windows-config)
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
@ -49,6 +52,9 @@ To configure ProzillaOS, pass the following properties inside to the `config` pr
|
||||||
<ProzillaOS
|
<ProzillaOS
|
||||||
systemName={"ProzillaOS"}
|
systemName={"ProzillaOS"}
|
||||||
tagLine={"Web-based Operating System"}
|
tagLine={"Web-based Operating System"}
|
||||||
|
skin={new Skin({
|
||||||
|
defaultWallpaper: "/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png"
|
||||||
|
})}
|
||||||
config={{
|
config={{
|
||||||
apps: new AppsConfig({
|
apps: new AppsConfig({
|
||||||
apps: [
|
apps: [
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ These packages are different modules of ProzillaOS that can be installed separat
|
||||||
|
|
||||||
- [`prozilla-os`](https://www.npmjs.com/package/prozilla-os): A bundle containing `@prozilla-os/core` and all standard applications
|
- [`prozilla-os`](https://www.npmjs.com/package/prozilla-os): A bundle containing `@prozilla-os/core` and all standard applications
|
||||||
- [`@prozilla-os/core`](https://www.npmjs.com/package/@prozilla-os/core): Core functionality, React components and hooks
|
- [`@prozilla-os/core`](https://www.npmjs.com/package/@prozilla-os/core): Core functionality, React components and hooks
|
||||||
|
- [`@prozilla-os/skins`](https://www.npmjs.com/package/@prozilla-os/skins): Customizable skins for ProzillaOS
|
||||||
- [`@prozilla-os/shared`](https://www.npmjs.com/package/@prozilla-os/shared): Shared functions and utilities
|
- [`@prozilla-os/shared`](https://www.npmjs.com/package/@prozilla-os/shared): Shared functions and utilities
|
||||||
|
|
||||||
## Standard applications
|
## Standard applications
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,20 @@
|
||||||
# prozilla-os
|
# prozilla-os
|
||||||
|
|
||||||
|
## 1.1.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated skins and configuration
|
||||||
|
- Updated dependencies
|
||||||
|
- @prozilla-os/core@1.1.1
|
||||||
|
- @prozilla-os/browser@1.0.4
|
||||||
|
- @prozilla-os/calculator@1.0.4
|
||||||
|
- @prozilla-os/file-explorer@1.0.15
|
||||||
|
- @prozilla-os/media-viewer@1.0.4
|
||||||
|
- @prozilla-os/settings@1.0.4
|
||||||
|
- @prozilla-os/terminal@1.0.8
|
||||||
|
- @prozilla-os/text-editor@1.0.8
|
||||||
|
|
||||||
## 1.1.0
|
## 1.1.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "prozilla-os",
|
"name": "prozilla-os",
|
||||||
"description": "a React component library written in TypeScript for building web-based operating systems, made by Prozilla.",
|
"description": "a React component library written in TypeScript for building web-based operating systems, made by Prozilla.",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"homepage": "https://os.prozilla.dev",
|
"homepage": "https://os.prozilla.dev",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"types": "dist/main.d.ts",
|
"types": "dist/main.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc --project tsconfig-build.json && vite build"
|
"build": "tsc --project tsconfig.build.json && vite build"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export default defineConfig({
|
||||||
strictOutput: true,
|
strictOutput: true,
|
||||||
pathsToAliases: false,
|
pathsToAliases: false,
|
||||||
bundledPackages: ["@prozilla-os/*"],
|
bundledPackages: ["@prozilla-os/*"],
|
||||||
tsconfigPath: "tsconfig-build.json"
|
tsconfigPath: "tsconfig.build.json"
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
build: {
|
build: {
|
||||||
|
|
|
||||||
7
packages/skins/CHANGELOG.md
Normal file
7
packages/skins/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# @prozilla-os/skins
|
||||||
|
|
||||||
|
## 1.0.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated skins and configuration
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "@prozilla-os/skins",
|
"name": "@prozilla-os/skins",
|
||||||
"description": "A React library that contains skins for ProzillaOS.",
|
"description": "A React library that contains skins for ProzillaOS.",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"homepage": "https://os.prozilla.dev",
|
"homepage": "https://os.prozilla.dev",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Prozilla",
|
"name": "Prozilla",
|
||||||
|
|
|
||||||
|
|
@ -1,40 +1,93 @@
|
||||||
|
import { OptionalInterface } from "../types/utils";
|
||||||
|
|
||||||
interface SkinOptions {
|
interface SkinOptions {
|
||||||
|
/**
|
||||||
|
* Replacements for app icons based on app id
|
||||||
|
*/
|
||||||
appIcons?: { [key: string]: string };
|
appIcons?: { [key: string]: string };
|
||||||
|
|
||||||
wallpapers?: string[];
|
/**
|
||||||
defaultWallpaper?: string;
|
* Replacements for app names based on app id
|
||||||
|
*/
|
||||||
|
appNames?: { [key: string]: string };
|
||||||
|
|
||||||
fileIcons?: {
|
/**
|
||||||
|
* Array of URLs of wallpaper images
|
||||||
|
*/
|
||||||
|
wallpapers: string[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of default wallpaper image
|
||||||
|
* @default
|
||||||
|
* "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png"
|
||||||
|
*/
|
||||||
|
defaultWallpaper: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URLs of icons for types of files
|
||||||
|
*/
|
||||||
|
fileIcons: {
|
||||||
generic: string;
|
generic: string;
|
||||||
info?: string;
|
info?: string;
|
||||||
text?: string;
|
text?: string;
|
||||||
code?: string;
|
code?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
folderIcons?: {
|
/**
|
||||||
|
* URLs of icons for types of folders
|
||||||
|
*/
|
||||||
|
folderIcons: {
|
||||||
generic: string;
|
generic: string;
|
||||||
images?: string;
|
images?: string;
|
||||||
text?: string;
|
text?: string;
|
||||||
link?: string;
|
link?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function that dynamically imports style sheet
|
||||||
|
*/
|
||||||
loadStyleSheet?: () => void;
|
loadStyleSheet?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Skin {
|
export class Skin {
|
||||||
appIcons: SkinOptions["appIcons"];
|
appIcons: SkinOptions["appIcons"];
|
||||||
|
appNames: SkinOptions["appNames"];
|
||||||
wallpapers: SkinOptions["wallpapers"];
|
wallpapers: SkinOptions["wallpapers"];
|
||||||
defaultWallpaper: SkinOptions["defaultWallpaper"];
|
defaultWallpaper: SkinOptions["defaultWallpaper"];
|
||||||
fileIcons: SkinOptions["fileIcons"];
|
fileIcons: SkinOptions["fileIcons"];
|
||||||
folderIcons: SkinOptions["folderIcons"];
|
folderIcons: SkinOptions["folderIcons"];
|
||||||
loadStyleSheet: SkinOptions["loadStyleSheet"];
|
loadStyleSheet: SkinOptions["loadStyleSheet"];
|
||||||
|
|
||||||
constructor(options: SkinOptions) {
|
constructor(options: OptionalInterface<SkinOptions> = {}) {
|
||||||
this.appIcons = options.appIcons;
|
this.appIcons = options.appIcons;
|
||||||
this.wallpapers = options.wallpapers;
|
this.appNames = options.appNames;
|
||||||
this.defaultWallpaper = options.defaultWallpaper;
|
|
||||||
this.fileIcons = options.fileIcons;
|
this.wallpapers = options.wallpapers ?? [
|
||||||
this.folderIcons = options.folderIcons;
|
"https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/abstract-mesh-gradient-orange-red-purple.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-purple-yellow.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/abstract-wallpaper-mesh-gradient-cyan.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/colorful-abstract-wallpaper-blue-red-green.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/mesh-gradient-wallpaper-red-purple.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/colorful-mesh-gradient-red-green.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/flame-abstract-wallpaper-orange.png",
|
||||||
|
"https://os.prozilla.dev/assets/wallpapers/wave-abstract-wallpaper-teal.png",
|
||||||
|
];
|
||||||
|
this.defaultWallpaper = options.defaultWallpaper ?? "https://os.prozilla.dev/assets/wallpapers/vibrant-wallpaper-blue-purple-red.png";
|
||||||
|
|
||||||
|
this.fileIcons = options.fileIcons ?? {
|
||||||
|
generic: "https://os.prozilla.dev/assets/apps/file-explorer/icons/file.svg",
|
||||||
|
text: "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-text.svg",
|
||||||
|
info: "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-info.svg",
|
||||||
|
code: "https://os.prozilla.dev/assets/apps/file-explorer/icons/file-code.svg"
|
||||||
|
};
|
||||||
|
this.folderIcons = options.folderIcons ?? {
|
||||||
|
generic: "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder.svg",
|
||||||
|
images: "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-images.svg",
|
||||||
|
text: "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-text.svg",
|
||||||
|
link: "https://os.prozilla.dev/assets/apps/file-explorer/icons/folder-link.svg"
|
||||||
|
};
|
||||||
|
|
||||||
this.loadStyleSheet = options.loadStyleSheet;
|
this.loadStyleSheet = options.loadStyleSheet;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
/* TO DO */
|
||||||
3
packages/skins/src/types/utils.ts
Normal file
3
packages/skins/src/types/utils.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
export type OptionalInterface<Interface> = {
|
||||||
|
[Property in keyof Interface]?: Interface[Property];
|
||||||
|
};
|
||||||
Loading…
Reference in a new issue