diff --git a/package-lock.json b/package-lock.json index 690a5f7..98d53b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,6 @@ "@types/react-dom": "^19.2.3", "dotenv": "^17.3.1", "electron": "41.2.0", - "less": "^4.6.4", "parcel-bundler": "^1.12.5", "patch-package": "^8.0.1", "prettier": "^3.8.1", @@ -6073,22 +6072,6 @@ "dev": true, "license": "MIT" }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -7966,20 +7949,6 @@ "dev": true, "license": "MIT" }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -9949,20 +9918,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -10707,19 +10662,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -11098,32 +11040,6 @@ "graceful-fs": "^4.1.11" } }, - "node_modules/less": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/less/-/less-4.6.4.tgz", - "integrity": "sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "copy-anything": "^3.0.5", - "parse-node-version": "^1.0.1" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -11329,32 +11245,6 @@ "vlq": "^0.2.2" } }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/make-fetch-happen": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", @@ -11796,24 +11686,6 @@ "node": ">=0.10.0" } }, - "node_modules/needle": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.5.0.tgz", - "integrity": "sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, "node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", @@ -13058,16 +12930,6 @@ "node": ">=4" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -13310,17 +13172,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/plist": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", @@ -14419,14 +14270,6 @@ "node": ">=10" } }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", @@ -15777,17 +15620,6 @@ "dev": true, "license": "MIT" }, - "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", - "dev": true, - "license": "BlueOak-1.0.0", - "optional": true, - "engines": { - "node": ">=11.0.0" - } - }, "node_modules/saxes": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", diff --git a/package.json b/package.json index 8532b7e..d17f595 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ "make": "electron-forge make", "publish": "electron-forge publish", "lint": "prettier --write src/**/*.{ts,tsx} && npm run check-links", - "less": "node ./tools/lessc.js", "tsc": "tsc -p tsconfig.json --noEmit", "check-links": "node tools/check-links.js", "postinstall": "patch-package" @@ -40,7 +39,6 @@ "@types/react-dom": "^19.2.3", "dotenv": "^17.3.1", "electron": "41.2.0", - "less": "^4.6.4", "parcel-bundler": "^1.12.5", "patch-package": "^8.0.1", "prettier": "^3.8.1", diff --git a/src/less/emulator.less b/src/css/emulator.css similarity index 100% rename from src/less/emulator.less rename to src/css/emulator.css diff --git a/src/less/info.less b/src/css/info.css similarity index 100% rename from src/less/info.less rename to src/css/info.css diff --git a/src/less/root.less b/src/css/root.css similarity index 56% rename from src/less/root.less rename to src/css/root.css index 23b4c27..a40f6b6 100644 --- a/src/less/root.less +++ b/src/css/root.css @@ -1,15 +1,16 @@ -@import "./status.less"; -@import "./emulator.less"; -@import "./info.less"; -@import "./start.less"; -@import "./settings.less"; +@import "./status.css"; +@import "./emulator.css"; +@import "./info.css"; +@import "./start.css"; +@import "./settings.css"; -// 98.css uses the actual MS Sans Serif bitmap font and pixel-exact bevels. -// Everything below is layout — the chrome comes from 98.css. +/* 98.css uses the actual MS Sans Serif bitmap font and pixel-exact bevels. + Everything below is layout — the chrome comes from 98.css. */ -@win-teal: #008080; -@win-silver: silver; -@win-font: "Pixelated MS Sans Serif", Arial, sans-serif; +:root { + --win-teal: #008080; + --win-font: "Pixelated MS Sans Serif", Arial, sans-serif; +} * { user-select: none; @@ -25,13 +26,13 @@ body { body { background: #000; - font-family: @win-font; + font-family: var(--win-font); -webkit-font-smoothing: none; image-rendering: pixelated; } body.paused { - background: @win-teal; + background: var(--win-teal); > #emulator { display: none; @@ -48,8 +49,8 @@ button:focus { outline: none; } -// 98.css renders button text via text-shadow (color: transparent) so the -// bitmap font stays crisp; children need their own alignment. +/* 98.css renders button text via text-shadow (color: transparent) so the + bitmap font stays crisp; children need their own alignment. */ button img { height: 16px; width: 16px; @@ -58,7 +59,7 @@ button img { } p { - font-family: @win-font; + font-family: var(--win-font); font-size: 11px; line-height: 1.5; } diff --git a/src/less/settings.less b/src/css/settings.css similarity index 96% rename from src/less/settings.less rename to src/css/settings.css index 8ecfd21..0417421 100644 --- a/src/less/settings.less +++ b/src/css/settings.css @@ -41,7 +41,7 @@ input[type="text"] { width: 100%; - font-family: @win-font; + font-family: var(--win-font); } input[type="text"]:read-only { diff --git a/src/less/start.less b/src/css/start.css similarity index 95% rename from src/less/start.less rename to src/css/start.css index a388bb2..7d799ed 100644 --- a/src/less/start.less +++ b/src/css/start.css @@ -1,4 +1,4 @@ -// "Welcome to Windows" splash — modelled on the real first-boot dialog. +/* "Welcome to Windows" splash — modelled on the real first-boot dialog. */ .welcome { width: 540px; diff --git a/src/less/status.less b/src/css/status.css similarity index 100% rename from src/less/status.less rename to src/css/status.css diff --git a/src/less/vendor/98.css b/src/css/vendor/98.css similarity index 100% rename from src/less/vendor/98.css rename to src/css/vendor/98.css diff --git a/src/less/vendor/LICENSE b/src/css/vendor/LICENSE similarity index 100% rename from src/less/vendor/LICENSE rename to src/css/vendor/LICENSE diff --git a/src/less/vendor/ms_sans_serif.woff b/src/css/vendor/ms_sans_serif.woff similarity index 100% rename from src/less/vendor/ms_sans_serif.woff rename to src/css/vendor/ms_sans_serif.woff diff --git a/src/less/vendor/ms_sans_serif.woff2 b/src/css/vendor/ms_sans_serif.woff2 similarity index 100% rename from src/less/vendor/ms_sans_serif.woff2 rename to src/css/vendor/ms_sans_serif.woff2 diff --git a/src/less/vendor/ms_sans_serif_bold.woff b/src/css/vendor/ms_sans_serif_bold.woff similarity index 100% rename from src/less/vendor/ms_sans_serif_bold.woff rename to src/css/vendor/ms_sans_serif_bold.woff diff --git a/src/less/vendor/ms_sans_serif_bold.woff2 b/src/css/vendor/ms_sans_serif_bold.woff2 similarity index 100% rename from src/less/vendor/ms_sans_serif_bold.woff2 rename to src/css/vendor/ms_sans_serif_bold.woff2 diff --git a/static/index.html b/static/index.html index 79709d8..ee9fd36 100644 --- a/static/index.html +++ b/static/index.html @@ -5,8 +5,8 @@ windows95 - - + +