From ce1bd50012162ba492bc2269535053a17218d5b5 Mon Sep 17 00:00:00 2001 From: Nitish Khagwal Date: Wed, 11 Jul 2018 11:04:21 +0530 Subject: [PATCH] Version 2.0 --- .gitignore | 1 + README.md | 39 +- bower.json | 10 +- css/style.css | 261 ++-- images/coolhue-favicon.png | Bin 3650 -> 0 bytes images/coolhue-logo.png | Bin 0 -> 5687 bytes images/coolhue-logo.svg | 100 -- images/coolhue-sprite.svg | 92 ++ images/icon-code.svg | 7 - images/icon-customize.svg | 22 - images/icon-distro.svg | 13 - images/icon-grab.svg | 7 - images/icon-photoshop.svg | 64 - images/icon-sketch.svg | 39 - index.html | 122 +- package-lock.json | 2447 ++++++++++++++++++++++++++++++++++++ package.json | 21 + scripts/coolhue.json | 62 + scripts/script.js | 138 +- 19 files changed, 2904 insertions(+), 541 deletions(-) create mode 100644 .gitignore delete mode 100644 images/coolhue-favicon.png create mode 100644 images/coolhue-logo.png delete mode 100644 images/coolhue-logo.svg create mode 100644 images/coolhue-sprite.svg delete mode 100644 images/icon-code.svg delete mode 100644 images/icon-customize.svg delete mode 100644 images/icon-distro.svg delete mode 100644 images/icon-grab.svg delete mode 100644 images/icon-photoshop.svg delete mode 100644 images/icon-sketch.svg create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scripts/coolhue.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dbf0821 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/* \ No newline at end of file diff --git a/README.md b/README.md index 081fbe2..a10cad3 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,22 @@ - -[![coolHue](https://webkul.com/blog/wp-content/uploads/2017/06/coolhue-logo.png)](https://webkul.github.io/coolhue/) +[![coolHue](https://webkul.github.io/coolhue/images/coolhue-cover.png)](https://webkul.github.io/coolhue/) # coolHue -Coolest handpicked Gradient Hues and Swatches for your next super ⚡ amazing stuff. coolHue has 60 coolest Gradients and :seedling: the list is still growing. You can also personalize the coolHue Palette as per as your taste. - -[![coolHue](https://webkul.com/blog/wp-content/uploads/2017/06/coolhue-card.png)](https://webkul.github.io/coolhue/) +Coolest handpicked Gradient Hues and Swatches for your next super ⚡ amazing stuff. coolHue has 60 coolest Gradients. You can also personalize the coolHue Palette as per as your taste. -coolHue gradients palette is **rendered by JavaScript Object** which makes it very easy to make a subtle update anytime. +CoolHue gradients palette is **rendered by JSON** which makes it very easy to make a subtle update anytime. # Installation -You can create your very own personalized collection of Gradient Palette with coolHue - -1. Download the latest [coolHue release archive](http://bit.ly/coolhue-releases) from the repository's release section. -2. Unpack the archive and drag `index.html` in the browser, to check out the default gradient palette. -3. All the gradients which are visible in the browser by default are rendered by `colorData` Javascript Object. -4. You just need to update the `colorData` Object (array) to create your very own gradient palette. So, Open `index.html` in the text editor and update the color codes. - -[![cooHue JS Object](https://webkul.com/blog/wp-content/uploads/2017/06/coolhue-data-object.png)](https://github.com/webkul/coolhue/blob/master/index.html) - -5. Voila! :clap: drag the `index.html` into the browser and you are done! - ----**else**--- - -You can grab the complete dev build using the **`bower`** package manager via following installation command - -`bower install coolhue` +You can create your very own personalized collection of Gradient Palette with CoolHue - +You should have [`bower`](https://bower.io/#install-bower) package manager installed on your machine to proceed further. +1. Open terminal and install CoolHue with `bower install coolhue`. +2. Go to `coolhue` directory with `cd coolhue` command and run `npm install`. +3. Once, all the node modules are installed successfully, run `npm run coolhue`. +4. All the gradients which appears in the browser are rendered from `scripts/coolhue.json` file. +5. You just need to update the `coolhue.json` Object (array) to create your very own gradient palette. Open `scripts/coolhue.json` in the text editor and add or update the hex codes to generate the gradient palettes. -:heavy_exclamation_mark: Installation command mentioned above needs bower to be pre installed on your local machine. +[![cooHue JS Object](https://webkul.github.io/coolhue/images/coolhue-json.png.png)](https://github.com/webkul/coolhue/blob/master/scripts/coolhue.json) -## npm package -coolHue is also available as node module. You can read [How it works](https://www.npmjs.com/package/coolhue) with `npm` to get started. If you are already familiar; Installation command is mentioned just below - +## Including CoolHue in `npm` Workflow +CoolHue is also available as a node module. You can read [How it works](https://www.npmjs.com/package/coolhue) with `npm` to get started. If you are already familiar; Installation command is mentioned just below - `npm install --save-dev coolhue` @@ -39,4 +28,4 @@ You can download the [coolHue Gradient Palette for Photoshop](http://bit.ly/cool You can download the [coolHue Gradient Palette for Sketch App](http://bit.ly/coolhue-sketch). # Credits -Crafted with :heart: by [UVdesk App](https://www.uvdesk.com/) +© Copyright [Webkul Software](https://webkul.com/), All rights reserved. diff --git a/bower.json b/bower.json index 8b5e920..600fb72 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "coolhue", - "version": "1.4.1", + "version": "2.0.0", "homepage": "https://webkul.github.io/coolhue/", "authors": [ "Nitish Kumar " @@ -11,10 +11,10 @@ "coolhue", "swatch", "palette", - "color-swatch", - "color-palette", - "gradient-swatch", - "gradient-palette" + "color swatch", + "color palette", + "gradient swatch", + "gradient palette" ], "license": "MIT", "ignore": [ diff --git a/css/style.css b/css/style.css index 2785bda..87925f8 100644 --- a/css/style.css +++ b/css/style.css @@ -5,117 +5,140 @@ } ::selection { - background: #7C70F4; + background: #6833DF; color: #FFFFFF; } body { - margin: 50px; -webkit-font-smoothing: subpixel-antialiased; -moz-osx-font-smoothing: grayscale; font-family: 'Source Sans Pro', sans-serif; } -h1.ch-logo { - font-size: 0; - width: 139px; - height: 47px; - margin: 0 auto; - background-image: url("../images/coolhue-logo.svg"); +a { + color: #2750C4; + text-decoration: none; } -p { - text-align: center; - font-size: 17px; - color: #929197; - padding: 15px 25px; +a:hover { + text-decoration: underline; } -p.ch-tagline { - width: 400px; - max-width: 100%; - margin: 15px auto 0px auto; +.ch-sidebar { + width: 85px; + padding: 10px; + position: absolute; + left: 0; + top: 0; + bottom: 0; + border-right: solid 1px #E5E5E5; + background: #FFFFFF; + box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.08); + z-index: 300; } -.ch-emoji { - font-size: 24px; - vertical-align: middle; +.ch-sidebar img { + display: block; + margin: 0 auto; } -.ch-bit-social { - width: 100%; - text-align: center; - margin: 5px 0px 20px 0px; +.ch-share { + width: 32px; + height: 32px; + margin-top: 32px; + display: block; + margin: 15px auto; + opacity: .75; + transition: .25s ease-in; + position: relative; } -.ch-social-channel { - margin: 5px; - display: inline-block; +.ch-share:first-of-type { + margin-top: 25px; } -p.ch-credits, -p.ch-copyright { - font-size: 15px; - padding: 0px; - margin: 10px 0px 30px 0px; +.ch-share:hover { + opacity: 1; } -.ch-uvdesk { - color: #7C70F4; - text-decoration: none; +.ch-share:after { + font-size: 14px; + left: 34px; + top: 0px; + position: absolute; + padding: 3px 15px 5px; + border-radius: 15px; + color: #534e5c; + background: #FFFFFF; + box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.1); + opacity: 0; + transition: .25s ease-in; + margin-top: 3px; + transform: translateX(-2px); +} + +.ch-share:hover:after { + opacity: 1; + transform: translateX(2px); } -.ch-uvdesk:hover { - text-decoration: underline; +.ch-share.twitter:after { + content: "Tweet"; } -.ch-separator { - width: 3px; - height: 3px; - border-radius: 50%; - background-color: #9FACBD; - position: relative; +.ch-share.facebook:after { + content: "Share"; +} + +.ch-share.github:after { + content: "Star"; +} + +.ch-starcount{ display: block; - margin: 0px auto 20px auto; + text-align: center; + margin-top: -12px; + color: #534e5c; } -.ch-separator-bottom { - margin: 30px auto; +.twitter { + background-image: url("../images/icon-twitter.svg"); } -.ch-separator:before { - width: 3px; - height: 3px; - border-radius: 50%; - background-color: #9FACBD; - position: absolute; - left: -7px; - content: ""; +.facebook { + background-image: url("../images/icon-facebook.svg"); } -.ch-separator:after { - width: 3px; - height: 3px; - border-radius: 50%; - background-color: #9FACBD; - position: absolute; - right: -7px; - content: ""; +.github { + background-image: url("../images/icon-github.svg"); +} + + +p { + text-align: left; + font-size: 18px; + color: #929197; + padding: 15px 25px; } .ch-paper { - max-width: 1500px; - text-align: center; - margin: 0 auto; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 20px 20px 20px 105px; + text-align: left; + overflow: auto; } .ch-gradient-brick { - width: 170px; + width: 180px; display: inline-block; border-radius: 12px; margin: 25px; box-shadow: 0px 0px 51px 0px rgba(0, 0, 0, 0.08), 0px 6px 18px 0px rgba(0, 0, 0, 0.05); - transition: 0.35s cubic-bezier(0.4, 0, 0.2, 1); + transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1); transform: translateY(0px); } @@ -127,7 +150,7 @@ p.ch-copyright { .ch-gradient { border-radius: 12px 12px 0px 0px; width: 100%; - height: 160px; + height: 180px; position: relative; background-color: #CFD8DC; } @@ -135,8 +158,8 @@ p.ch-copyright { .ch-actions { display: none; position: absolute; - right: 0px; - bottom: 0px; + right: 5px; + bottom: 5px; } .ch-gradient-brick:hover .ch-actions { @@ -149,8 +172,8 @@ p.ch-copyright { width: 26px; height: 26px; display: inline-block; - background-position: center center; - background: no-repeat; + background-image: url("../images/coolhue-sprite.svg"); + background-repeat: no-repeat; cursor: pointer; vertical-align: middle; margin: 3px; @@ -181,11 +204,11 @@ p.ch-copyright { } .ch-code { - background-image: url("../images/icon-code.svg"); + background-position: -26px 0px; } .ch-grab { - background-image: url("../images/icon-grab.svg"); + background-position: 0px 0px; } .ch-colors { @@ -193,6 +216,7 @@ p.ch-copyright { padding: 12px; text-align: left; text-transform: uppercase; + font-size: 18px; } .ch-color-from { @@ -210,7 +234,7 @@ p.ch-copyright { position: fixed; width: 250px; max-width: 80%; - top: 35px; + top: 30px; right: 0px; z-index: 500; text-align: right; @@ -220,23 +244,25 @@ p.ch-copyright { .ch-notify { margin: 0px 35px 10px 0px; - background-color: #333333; + background-color: #FFFFFF; box-shadow: 0px 4px 15.36px 0.64px rgba(0, 0, 0, 0.1), 0px 2px 6px 0px rgba(0, 0, 0, 0.12); - border-radius: 5px; padding: 10px 20px; - color: #FFFFFF; + color: #534E5C; display: inline-block; + border-radius: 500px; + font-size: 18px; + transition: .35s ease-in-out; } .ch-notify-animate { - animation: notify-up .2s cubic-bezier(0.4, 0, 0.2, 1); - ; + animation: notify-up 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; } .ch-distro { - position: fixed; - right: 25px; - bottom: 25px; + position: absolute; + z-index: 50; + left: 15px; + bottom: 15px; min-width: 200px; max-width: 100%; } @@ -246,13 +272,13 @@ p.ch-copyright { height: 50px; border-radius: 50%; position: absolute; - right: 0px; + left: 0px; bottom: 0px; background-color: #FFFFFF; - background-image: url("../images/icon-distro.svg"); + background-image: url("../images/coolhue-sprite.svg"); background-repeat: no-repeat; - background-position: left center; - box-shadow: 0px 10px 27px 3px rgba(0, 0, 0, 0.15), 0px 1px 4px 0px rgba(0, 0, 0, 0.03); + background-position: 0px -25px; + box-shadow: 0px 12px 27px 3px rgba(0, 0, 0, 0.15), 0px 6px 4px 0px rgba(0, 0, 0, 0.05); transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.35s cubic-bezier(0.4, 0, 0.2, 1); transform: translateY(0px); cursor: pointer; @@ -264,8 +290,8 @@ p.ch-copyright { transform: translateY(-6px); } -.ch-distro-icon-active{ - background-position: right center; +.ch-distro-icon-active { + background-position: -50px -25px; } .ch-distro-wrapper { @@ -283,39 +309,52 @@ p.ch-copyright { .ch-distro-type { color: #2750C4; display: block; - padding: 7px 0px; + padding: 7px 0 7px 0; text-decoration: none; font-size: 17px; background-position: left center; background-repeat: no-repeat; - padding-left: 32px; + vertical-align: middle; } .ch-distro-type:hover { text-decoration: underline; } -.ch-distro-type:nth-child(1) { - background-image: url("../images/icon-sketch.svg"); +.ch-distro-type:before { + content: ""; + width: 26px; + height: 26px; + display: inline-block; + vertical-align: middle; + margin-top: -3px; + margin-right: 7px; +} + +.ch-distro-type:nth-child(1):before { + background-image: url("../images/coolhue-sprite.svg"); + background-position: 0px -77px; } -.ch-distro-type:nth-child(2) { - background-image: url("../images/icon-photoshop.svg"); +.ch-distro-type:nth-child(2):before { + background-image: url("../images/coolhue-sprite.svg"); + background-position: -26px -77px; } -.ch-distro-type:nth-child(3) { - background-image: url("../images/icon-customize.svg"); +.ch-distro-type:nth-child(3):before { + background-image: url("../images/coolhue-sprite.svg"); + background-position: -52px -77px; } .ch-distro-wrapper-flap-up { animation: flap-up 0.5s cubic-bezier(0.4, 0, 0.2, 1); } -.ch-distro-wrapper-flap-down{ - animation: flap-down 0.5s cubic-bezier(0.4, 0, 0.2, 1); +.ch-distro-wrapper-flap-down { + animation: flap-down 0.5s cubic-bezier(0.4, 0, 0.2, 1); } -.ch-distro-wrapper-visible{ +.ch-distro-wrapper-visible { display: block; } @@ -346,10 +385,15 @@ p.ch-copyright { opacity: 0; transform: translateY(25px); } - 100% { + 10%, + 90% { opacity: 1; transform: translateY(0px); } + 100% { + opacity: 0; + transform: translateY(-25px); + } } .ch-notify span { @@ -357,9 +401,24 @@ p.ch-copyright { text-align: center; } +noscript { + font-size: 20px; + color: #757575; +} + @media screen and (min-width:320px) and (max-width:1024px) { .ch-gradient-brick .ch-actions { display: block; animation: micro-move .3s cubic-bezier(0.4, 0, 0.2, 1); } +} + +@media screen and (max-width: 600px) { + .ch-paper { + text-align: center; + } + .ch-gradient-brick { + display: block; + margin: 35px auto; + } } \ No newline at end of file diff --git a/images/coolhue-favicon.png b/images/coolhue-favicon.png deleted file mode 100644 index 956ee9456863b12c2c1a17d20afd39a6c6c8104d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3650 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