v0.1 – the colorer

frontend: nice, sleek, functional and completely intuitive UI
internal: flat hierarchies; opinoinated reactivity
This commit is contained in:
Rüdiger Diedrich 2021-08-20 09:41:00 +02:00
commit bcd99f0181
14 changed files with 2087 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
node_modules
dist

14
README.md Normal file
View File

@ -0,0 +1,14 @@
# colorer
Play around with hsla color
## Usage
``` bash
git clone
yarn && yarn dev
```
## Tech
Build with [Solid](https://www.solidjs.com), [tailwindcss](https://tailwindcss.com) and lots of 💗

6
declaration.d.ts vendored Normal file
View File

@ -0,0 +1,6 @@
declare module "*.gif";
declare module "*.jpg";
declare module "*.jpeg";
declare module "*.pdf";
declare module "*.png";
declare module "*.svg";

16
index.html Normal file
View File

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<link rel="shortcut icon" type="image/ico" href="/src/assets/favicon.ico" />
<title>colorer</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="app"></div>
<script src="/src/index.tsx" type="module"></script>
</body>
</html>

23
package.json Normal file
View File

@ -0,0 +1,23 @@
{
"name": "vite-template-solid",
"version": "0.0.0",
"description": "",
"scripts": {
"start": "vite",
"dev": "vite",
"build": "vite build",
"serve": "vite preview"
},
"license": "MIT",
"devDependencies": {
"autoprefixer": "^10.3.1",
"postcss": "^8.3.6",
"tailwindcss": "^2.2.7",
"vite": "^2.4.4",
"vite-plugin-solid": "^2.0.1"
},
"dependencies": {
"solid-app-router": "^0.1.4",
"solid-js": "^1.0.7"
}
}

594
pnpm-lock.yaml Normal file
View File

@ -0,0 +1,594 @@
lockfileVersion: 5.3
specifiers:
solid-js: ^1.0.7
vite: ^2.4.4
vite-plugin-solid: ^2.0.1
dependencies:
solid-js: 1.0.7
devDependencies:
vite: 2.4.4
vite-plugin-solid: 2.0.1
packages:
/@babel/code-frame/7.14.5:
resolution: {integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/highlight': 7.14.5
dev: true
/@babel/compat-data/7.14.7:
resolution: {integrity: sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/core/7.14.8:
resolution: {integrity: sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.14.5
'@babel/generator': 7.14.8
'@babel/helper-compilation-targets': 7.14.5_@babel+core@7.14.8
'@babel/helper-module-transforms': 7.14.8
'@babel/helpers': 7.14.8
'@babel/parser': 7.14.8
'@babel/template': 7.14.5
'@babel/traverse': 7.14.8
'@babel/types': 7.14.8
convert-source-map: 1.8.0
debug: 4.3.2
gensync: 1.0.0-beta.2
json5: 2.2.0
semver: 6.3.0
source-map: 0.5.7
transitivePeerDependencies:
- supports-color
dev: true
/@babel/generator/7.14.8:
resolution: {integrity: sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
jsesc: 2.5.2
source-map: 0.5.7
dev: true
/@babel/helper-annotate-as-pure/7.14.5:
resolution: {integrity: sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-compilation-targets/7.14.5_@babel+core@7.14.8:
resolution: {integrity: sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/compat-data': 7.14.7
'@babel/core': 7.14.8
'@babel/helper-validator-option': 7.14.5
browserslist: 4.16.6
semver: 6.3.0
dev: true
/@babel/helper-create-class-features-plugin/7.14.8_@babel+core@7.14.8:
resolution: {integrity: sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.14.8
'@babel/helper-annotate-as-pure': 7.14.5
'@babel/helper-function-name': 7.14.5
'@babel/helper-member-expression-to-functions': 7.14.7
'@babel/helper-optimise-call-expression': 7.14.5
'@babel/helper-replace-supers': 7.14.5
'@babel/helper-split-export-declaration': 7.14.5
transitivePeerDependencies:
- supports-color
dev: true
/@babel/helper-function-name/7.14.5:
resolution: {integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-get-function-arity': 7.14.5
'@babel/template': 7.14.5
'@babel/types': 7.14.8
dev: true
/@babel/helper-get-function-arity/7.14.5:
resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-hoist-variables/7.14.5:
resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-member-expression-to-functions/7.14.7:
resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-module-imports/7.14.5:
resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-module-transforms/7.14.8:
resolution: {integrity: sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-module-imports': 7.14.5
'@babel/helper-replace-supers': 7.14.5
'@babel/helper-simple-access': 7.14.8
'@babel/helper-split-export-declaration': 7.14.5
'@babel/helper-validator-identifier': 7.14.8
'@babel/template': 7.14.5
'@babel/traverse': 7.14.8
'@babel/types': 7.14.8
transitivePeerDependencies:
- supports-color
dev: true
/@babel/helper-optimise-call-expression/7.14.5:
resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-plugin-utils/7.14.5:
resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-replace-supers/7.14.5:
resolution: {integrity: sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-member-expression-to-functions': 7.14.7
'@babel/helper-optimise-call-expression': 7.14.5
'@babel/traverse': 7.14.8
'@babel/types': 7.14.8
transitivePeerDependencies:
- supports-color
dev: true
/@babel/helper-simple-access/7.14.8:
resolution: {integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-split-export-declaration/7.14.5:
resolution: {integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.14.8
dev: true
/@babel/helper-validator-identifier/7.14.8:
resolution: {integrity: sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-option/7.14.5:
resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==}
engines: {node: '>=6.9.0'}
dev: true
/@babel/helpers/7.14.8:
resolution: {integrity: sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.14.5
'@babel/traverse': 7.14.8
'@babel/types': 7.14.8
transitivePeerDependencies:
- supports-color
dev: true
/@babel/highlight/7.14.5:
resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.14.8
chalk: 2.4.2
js-tokens: 4.0.0
dev: true
/@babel/parser/7.14.8:
resolution: {integrity: sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==}
engines: {node: '>=6.0.0'}
hasBin: true
dev: true
/@babel/plugin-syntax-jsx/7.14.5_@babel+core@7.14.8:
resolution: {integrity: sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.14.8
'@babel/helper-plugin-utils': 7.14.5
dev: true
/@babel/plugin-syntax-typescript/7.14.5_@babel+core@7.14.8:
resolution: {integrity: sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.14.8
'@babel/helper-plugin-utils': 7.14.5
dev: true
/@babel/plugin-transform-typescript/7.14.6_@babel+core@7.14.8:
resolution: {integrity: sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.14.8
'@babel/helper-create-class-features-plugin': 7.14.8_@babel+core@7.14.8
'@babel/helper-plugin-utils': 7.14.5
'@babel/plugin-syntax-typescript': 7.14.5_@babel+core@7.14.8
transitivePeerDependencies:
- supports-color
dev: true
/@babel/preset-typescript/7.14.5_@babel+core@7.14.8:
resolution: {integrity: sha512-u4zO6CdbRKbS9TypMqrlGH7sd2TAJppZwn3c/ZRLeO/wGsbddxgbPDUZVNrie3JWYLQ9vpineKlsrWFvO6Pwkw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.14.8
'@babel/helper-plugin-utils': 7.14.5
'@babel/helper-validator-option': 7.14.5
'@babel/plugin-transform-typescript': 7.14.6_@babel+core@7.14.8
transitivePeerDependencies:
- supports-color
dev: true
/@babel/template/7.14.5:
resolution: {integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.14.5
'@babel/parser': 7.14.8
'@babel/types': 7.14.8
dev: true
/@babel/traverse/7.14.8:
resolution: {integrity: sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.14.5
'@babel/generator': 7.14.8
'@babel/helper-function-name': 7.14.5
'@babel/helper-hoist-variables': 7.14.5
'@babel/helper-split-export-declaration': 7.14.5
'@babel/parser': 7.14.8
'@babel/types': 7.14.8
debug: 4.3.2
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: true
/@babel/types/7.14.8:
resolution: {integrity: sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.14.8
to-fast-properties: 2.0.0
dev: true
/ansi-styles/3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
dependencies:
color-convert: 1.9.3
dev: true
/babel-plugin-jsx-dom-expressions/0.29.9_@babel+core@7.14.8:
resolution: {integrity: sha512-NuYjihC9A93gxhx9zefbdjD8doMPPOKuKzj+PSg5QBne25n/ikcRpcQy3bcbDBFw4OgJFtUfQQ1F9KAuy+ezcQ==}
dependencies:
'@babel/helper-module-imports': 7.14.5
'@babel/plugin-syntax-jsx': 7.14.5_@babel+core@7.14.8
'@babel/types': 7.14.8
transitivePeerDependencies:
- '@babel/core'
dev: true
/babel-preset-solid/1.0.6_@babel+core@7.14.8:
resolution: {integrity: sha512-D+VLpF8WCif5IQmojypImyhlarxcjCD/lBOd4DBEDStXGMGNdlFBgsuVkKFiJ1yQA2KsHLljpbqrv9GsZYrZ3w==}
dependencies:
babel-plugin-jsx-dom-expressions: 0.29.9_@babel+core@7.14.8
transitivePeerDependencies:
- '@babel/core'
dev: true
/browserslist/4.16.6:
resolution: {integrity: sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001248
colorette: 1.2.2
electron-to-chromium: 1.3.791
escalade: 3.1.1
node-releases: 1.1.73
dev: true
/caniuse-lite/1.0.30001248:
resolution: {integrity: sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==}
dev: true
/chalk/2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
dependencies:
ansi-styles: 3.2.1
escape-string-regexp: 1.0.5
supports-color: 5.5.0
dev: true
/color-convert/1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
color-name: 1.1.3
dev: true
/color-name/1.1.3:
resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
dev: true
/colorette/1.2.2:
resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==}
dev: true
/convert-source-map/1.8.0:
resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
dependencies:
safe-buffer: 5.1.2
dev: true
/debug/4.3.2:
resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: true
/electron-to-chromium/1.3.791:
resolution: {integrity: sha512-Tdx7w1fZpeWOOBluK+kXTAKCXyc79K65RB6Zp0+sPSZZhDjXlrxfGlXrlMGVVQUrKCyEZFQs1UBBLNz5IdbF0g==}
dev: true
/esbuild/0.12.17:
resolution: {integrity: sha512-GshKJyVYUnlSXIZj/NheC2O0Kblh42CS7P1wJyTbbIHevTG4jYMS9NNw8EOd8dDWD0dzydYHS01MpZoUcQXB4g==}
hasBin: true
requiresBuild: true
dev: true
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
dev: true
/escape-string-regexp/1.0.5:
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
engines: {node: '>=0.8.0'}
dev: true
/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
dev: true
optional: true
/function-bind/1.1.1:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
/gensync/1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
dev: true
/globals/11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
dev: true
/has-flag/3.0.0:
resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
engines: {node: '>=4'}
dev: true
/has/1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.1
dev: true
/is-core-module/2.5.0:
resolution: {integrity: sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==}
dependencies:
has: 1.0.3
dev: true
/is-what/3.14.1:
resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
dev: true
/js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
dev: true
/jsesc/2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
dev: true
/json5/2.2.0:
resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==}
engines: {node: '>=6'}
hasBin: true
dependencies:
minimist: 1.2.5
dev: true
/merge-anything/4.0.1:
resolution: {integrity: sha512-KsFjBYc3juDoHz9Vzd5fte1nqp06H8SQ+yU344Dd0ZunwSgtltnC0kgKds8cbocJGyViLcBQuHkitbDXAqW+LQ==}
dependencies:
is-what: 3.14.1
ts-toolbelt: 9.6.0
dev: true
/minimist/1.2.5:
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
dev: true
/ms/2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
/nanoid/3.1.23:
resolution: {integrity: sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
/node-releases/1.1.73:
resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==}
dev: true
/path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
/postcss/8.3.6:
resolution: {integrity: sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
colorette: 1.2.2
nanoid: 3.1.23
source-map-js: 0.6.2
dev: true
/resolve/1.20.0:
resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==}
dependencies:
is-core-module: 2.5.0
path-parse: 1.0.7
dev: true
/rollup/2.55.1:
resolution: {integrity: sha512-1P9w5fpb6b4qroePh8vHKGIvPNxwoCQhjJpIqfZGHLKpZ0xcU2/XBmFxFbc9697/6bmHpmFTLk5R1dAQhFSo0g==}
engines: {node: '>=10.0.0'}
hasBin: true
optionalDependencies:
fsevents: 2.3.2
dev: true
/safe-buffer/5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: true
/semver/6.3.0:
resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
hasBin: true
dev: true
/solid-js/1.0.7:
resolution: {integrity: sha512-2jHCXLwp/B7P4kh5tl0ospRaC2F++BU0uWwtfgK/8Zc/MROOyCmmkjHpLAQC2u2NWYVGnIclDIJ2FGDXJ0wcYg==}
/solid-refresh/0.2.2_solid-js@1.0.7:
resolution: {integrity: sha512-oQN3pUJ8fBd4ldMxZVqK7S4PGzAn1yx1B5bRRfANoxoqmHyY2QLfzrOzXsYnAkhh272K+W24oKgFWlmdUZ6HtQ==}
peerDependencies:
solid-js: ^1.0.0
dependencies:
solid-js: 1.0.7
dev: true
/source-map-js/0.6.2:
resolution: {integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==}
engines: {node: '>=0.10.0'}
dev: true
/source-map/0.5.7:
resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
engines: {node: '>=0.10.0'}
dev: true
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
dev: true
/to-fast-properties/2.0.0:
resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
engines: {node: '>=4'}
dev: true
/ts-toolbelt/9.6.0:
resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==}
dev: true
/vite-plugin-solid/2.0.1:
resolution: {integrity: sha512-C6ZHRmre4JmjgPMiaGfSiAwpR2dcOYXztPt+jlQisD7iFBe1pB8nURSmWfTF+tpFtPr2Ir7GmLZTYui9p5Wjmg==}
dependencies:
'@babel/core': 7.14.8
'@babel/preset-typescript': 7.14.5_@babel+core@7.14.8
babel-preset-solid: 1.0.6_@babel+core@7.14.8
merge-anything: 4.0.1
solid-js: 1.0.7
solid-refresh: 0.2.2_solid-js@1.0.7
vite: 2.4.4
transitivePeerDependencies:
- supports-color
dev: true
/vite/2.4.4:
resolution: {integrity: sha512-m1wK6pFJKmaYA6AeZIUXyiAgUAAJzVXhIMYCdZUpCaFMGps0v0IlNJtbmPvkUhVEyautalajmnW5X6NboUPsnw==}
engines: {node: '>=12.0.0'}
hasBin: true
dependencies:
esbuild: 0.12.17
postcss: 8.3.6
resolve: 1.20.0
rollup: 2.55.1
optionalDependencies:
fsevents: 2.3.2
dev: true

6
postcss.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

59
src/App.tsx Normal file
View File

@ -0,0 +1,59 @@
import { createSignal } from "solid-js";
function Colorer(props) {
const [h, setH] = createSignal(1);
const [s, setS] = createSignal(50);
const [l, setL] = createSignal(50);
const [a, setA] = createSignal(1);
const hslColor = () => `hsla(${h()}, ${s()}%, ${l()}%, ${a()})`;
const changeH = (e) => setH(e.currentTarget.value);
const changeS = (e) => setS(e.currentTarget.value);
const changeL = (e) => setL(e.currentTarget.value);
const changeA = (e) => setA(e.currentTarget.value);
return (
<div class="main-container">
<div id="colorer">
<label>H <input type="number" min="0" max="359"
value={h()} onInput={changeH} />
<input type="range" min="0" max="359"
value={h()} onInput={changeH} />
</label>
<label>S <input type="number" min="0" max="100"
value={s()} onInput={changeS} />
<input type="range" min="0" max="100"
value={s()} onInput={changeS} />
</label>
<label>L <input type="number" min="0" max="100"
value={l()} onInput={changeL} />
<input type="range" min="0" max="100"
value={l()} onInput={changeL} />
</label>
<label>A <input type="number" min="0" max="1" step="0.01"
value={a()} onInput={changeA} />
<input type="range" min="0" max="1" step="0.01"
value={a()} onInput={changeA} />
</label>
</div>
<div class="color-box" style={{
"background-color": hslColor()
}}></div>
</div>
);
}
function App() {
return (
<>
<header>
<h1>colorer</h1>
</header>
<main>
<Colorer />
</main>
</>
);
};
export default App;

60
src/index.css Normal file
View File

@ -0,0 +1,60 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
body {
padding: env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@apply bg-gray-700;
height: 100vh;
}
code {
font-family: Input, source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
#app {
@apply container mx-auto h-screen;
display: grid;
grid-template-rows: min-content 1fr;
grid-template-columns: 1fr;
gap: 0px 0px;
grid-template-areas:
"header"
"main";
}
#colorer {
@apply flex flex-col;
}
header { grid-area: header; color: white; }
header h1 { @apply font-mono text-4xl text-center mt-2; }
main {
@apply bg-white m-16 mx-auto p-4;
@apply flex justify-center content-center;
grid-area: main;
width: min(50%, 75vw);
height: min(75%, 50vh);
}
.main-container { width: 100%; }
label { @apply bg-white p-1 pl-0; }
label > input { @apply font-mono text-right; }
#colorer { float: left; }
input[type=number] {
width: 6ch;
}
.color-box { width: 100%; height: 100%; }

8
src/index.tsx Normal file
View File

@ -0,0 +1,8 @@
import { render } from "solid-js/web";
import "./index.css";
import App from "./App";
render(() => (
<App />
), document.getElementById("app"));

12
tailwind.config.js Normal file
View File

@ -0,0 +1,12 @@
module.exports = {
mode: 'jit',
purge: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
darkMode: false, // or 'media' or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
}

13
tsconfig.json Normal file
View File

@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"jsx": "preserve",
"jsxImportSource": "solid-js",
"types": ["vite/client"]
}
}

17
vite.config.ts Normal file
View File

@ -0,0 +1,17 @@
import { defineConfig } from "vite";
import * as path from "path";
import solidPlugin from "vite-plugin-solid";
export default defineConfig({
resolve: {
alias: {
'/@lib': path.resolve(__dirname, './src/components'),
'/@': path.resolve(__dirname, './src')
}
},
plugins: [solidPlugin()],
build: {
target: "esnext",
polyfillDynamicImport: false,
}
});

1257
yarn.lock Normal file

File diff suppressed because it is too large Load Diff