diff --git a/README.md b/README.md index a96a6bc..4070d6f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # you-can-quit -[![release](https://img.shields.io/badge/release-v1.1.1-78d19a.svg?style=flat-square)](https://github.com/devmount/you-can-quit/releases) [![downloads](https://img.shields.io/npm/dt/you-can-quit?label=downloads&color=78d19a&style=flat-square)](https://www.npmjs.com/package/you-can-quit) [![last commit](https://img.shields.io/github/last-commit/devmount/you-can-quit?label=updated&color=78d19a&style=flat-square)](https://github.com/devmount/you-can-quit/commits/master) [![license](https://img.shields.io/badge/license-MIT-78d19a.svg?style=flat-square)](./LICENSE.md) [![contributions welcome](https://img.shields.io/badge/contributions-welcome-78d19a.svg?style=flat-square)](./.github/CONTRIBUTING.md) +[![release](https://img.shields.io/badge/release-v1.1.2-78d19a.svg?style=flat-square)](https://github.com/devmount/you-can-quit/releases) [![downloads](https://img.shields.io/npm/dt/you-can-quit?label=downloads&color=78d19a&style=flat-square)](https://www.npmjs.com/package/you-can-quit) [![last commit](https://img.shields.io/github/last-commit/devmount/you-can-quit?label=updated&color=78d19a&style=flat-square)](https://github.com/devmount/you-can-quit/commits/master) [![license](https://img.shields.io/badge/license-MIT-78d19a.svg?style=flat-square)](./LICENSE.md) [![contributions welcome](https://img.shields.io/badge/contributions-welcome-78d19a.svg?style=flat-square)](./.github/CONTRIBUTING.md) This app is a tool to track your progress and encourage you on the way of quitting a bad habit. In a simple calendar view, you can set past days _successful_ or _failed_. Based on this data, you can see encouraging stats about the number of days you succeeded in. Plus you can earn special achievements to reach different goals and keep you motivated on your way. diff --git a/dist/css/app.81f31d5c.css b/dist/css/app.f82f34b7.css similarity index 91% rename from dist/css/app.81f31d5c.css rename to dist/css/app.f82f34b7.css index e371554..87c8335 100644 --- a/dist/css/app.81f31d5c.css +++ b/dist/css/app.f82f34b7.css @@ -1 +1 @@ -.month-day-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-line-pack:center;align-content:center;height:700px}.month-day-grid .day{width:90px;height:80px;line-height:80px;font-size:1.5em;padding:5px;margin:5px;background:var(--c-background-element);position:relative;overflow:hidden;border-radius:3px;-webkit-transition:all .2s;transition:all .2s;cursor:default}.month-day-grid .day.label,.month-day-grid .day.offset{background:none}.month-day-grid .day.today{background:var(--c-text-light)}.month-day-grid .day.success{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.month-day-grid .day.fail{color:var(--c-shadow);background:transparent}.month-day-grid .day .action{display:-webkit-box;display:-ms-flexbox;display:flex;width:101px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;bottom:-30px;left:0;-webkit-transition:all .2s;transition:all .2s}.month-day-grid .day.past:hover{line-height:50px}.month-day-grid .day.past:hover .action{bottom:0}.month-day-grid .day .action button{text-align:center;width:33.3%;height:30px;color:var(--c-text-normal)}.month-day-grid .day .action button.success{color:#fff;background:var(--c-accent-variant)}.month-day-grid .day .action button.fail{color:var(--c-shadow);background:var(--c-background)}.navigation{margin:1em 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navigation>*{-ms-flex-preferred-size:50%;flex-basis:50%}.navigation h2{margin:0;padding:0 1em 0 0;text-align:right}.navigation .button-group{text-align:left}.navigation .button-group button{color:var(--c-text-light);padding:0 .5em;font-size:1.5em}.year-container{overflow-x:auto}.year-day-grid{width:1200px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-line-pack:center;align-content:center;height:168px}.year-day-grid .day{width:18px;height:10px;line-height:10px;font-size:.7em;font-weight:700;padding:5px 0;margin:2px;background:var(--c-background-element);position:relative;border-radius:2px;-webkit-transition:all .2s;transition:all .2s;cursor:default}.year-day-grid .day.label{margin-right:10px;background:none}.year-day-grid .day.offset{background:none}.year-day-grid .day.tomonth{background:var(--c-background-element-variant)}.year-day-grid .day.today{background:var(--c-text-light)}.year-day-grid .day.success{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.year-day-grid .day.fail{color:var(--c-shadow);background:transparent}.legend{text-align:left;padding-top:17px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;cursor:default}.legend>div{position:relative;padding:0 0 10px 35px;width:calc(50% - 35px)}.legend>div:before{content:"";text-align:center;position:absolute;left:0;width:20px;height:20px;border-radius:2px}.legend>div.successful:before{background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.legend>div.undecided:before{background:var(--c-background-element)}.legend>div.failed:before{background:var(--c-background)}.legend>div.today:before{background:var(--c-text-light)}.stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.stats .box{width:31%}.stats .box .data{position:relative;overflow:hidden;margin:10px 0;padding:5px 0;color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);-webkit-transition:all .2s;transition:all .2s}.stats .box .data.zero{color:var(--c-text-normal);background:var(--c-background-element)}.stats .box .data>span{font-size:2.5em;font-weight:700}.stats .box .data>.icon{position:absolute;right:-10px;bottom:-15px;color:hsla(0,0%,100%,.27);font-size:4em}.stats .box .data.zero>.icon{color:hsla(0,0%,100%,.07)}.achievements{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.achievements .item{width:60px;height:60px;line-height:60px;position:relative;overflow:visible;margin:7px 0;padding:5px;font-size:2em;color:var(--c-text-normal);background:var(--c-background-element);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);-webkit-transition:all .2s;transition:all .2s}.achievements .item.offset{background:transparent;-webkit-box-shadow:none;box-shadow:none}.achievements .item.active{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent)}.achievements .item .badge{position:absolute;font-size:.4em;line-height:.4em;font-weight:700;top:-2px;right:-2px;background:#fff;color:var(--c-accent-variant);padding:7px 5px}.achievements .item .progress{position:absolute;width:0;height:3px;bottom:0;left:0;background:#fff;-webkit-transition:width .2s;transition:width .2s}.achievements .item .description{font-size:.5em;line-height:1.2em;visibility:hidden;opacity:0;z-index:2;-webkit-transition:all .2s;transition:all .2s;width:210px;background:var(--c-background-element);padding:13px;top:84px;-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.achievements .item .description,.achievements .item .description:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.achievements .item .description:before{content:"";top:-14px;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:14px solid var(--c-background-element)}.achievements .item:nth-child(5n+1) .description{left:0;-webkit-transform:initial;transform:none}.achievements .item:nth-child(5n+1) .description:before{left:35px}.achievements .item:nth-child(5n) .description{left:auto;right:0;-webkit-transform:initial;transform:none}.achievements .item:nth-child(5n) .description:before{left:auto;right:35px;-webkit-transform:translateX(50%);transform:translateX(50%)}.achievements .item .description .title{position:relative;font-size:1.3em;line-height:1.5em;padding-bottom:1em}.achievements .item .description .title:after{content:"";position:absolute;bottom:.5em;width:20%;max-width:120px;height:2px;background:var(--c-accent);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-shadow:0 1px 10px -1px var(--c-shadow);box-shadow:0 1px 10px -1px var(--c-shadow)}.achievements .item:active .description,.achievements .item:focus .description,.achievements .item:hover .description{visibility:visible;opacity:1}.achievements .item .description:hover{visibility:hidden;opacity:0}.info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap;height:784px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.btn{background:var(--c-background-element-variant);border:2px solid var(--c-background-element-variant);color:var(--c-text-light);font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:2px;cursor:pointer;display:inline-block;outline:none;padding:.6rem 1rem;text-align:center;text-decoration:none;-webkit-transition:background .2s,border .2s,color .2s,-webkit-box-shadow .2s;transition:background .2s,border .2s,color .2s,-webkit-box-shadow .2s;transition:background .2s,border .2s,box-shadow .2s,color .2s;transition:background .2s,border .2s,box-shadow .2s,color .2s,-webkit-box-shadow .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:active,.btn:focus,.btn:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-background-element-variant-transparent);box-shadow:0 0 0 .3rem var(--c-background-element-variant-transparent);text-decoration:none}.btn.btn-primary{background:var(--c-accent-variant);border:2px solid var(--c-accent-variant);color:var(--c-text-light)}.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-accent-variant-transparent);box-shadow:0 0 0 .3rem var(--c-accent-variant-transparent)}.btn.btn-danger{background:var(--c-danger-variant);border:2px solid var(--c-danger-variant);color:var(--c-text-light)}.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-danger-variant-transparent);box-shadow:0 0 0 .3rem var(--c-danger-variant-transparent)}.btn.btn-danger.btn.btn-danger-important{background:var(--c-danger-important);border:2px solid var(--c-danger-important)}.btn-mini{padding:3px 8px;margin-left:10px;background:var(--c-danger-important-variant)}.btn-mini:active,.btn-mini:focus,.btn-mini:hover{background:var(--c-danger-variant)}.btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}body{--c-text-normal:#7e8a9a;--c-text-light:#eee;--c-background:#3d444c;--c-background-element:#4b535d;--c-background-element-variant:#57606b;--c-background-element-variant-transparent:rgba(87,96,107,0.27);--c-accent:#9aeab9;--c-accent-variant:#78d19a;--c-accent-variant-transparent:rgba(120,209,154,0.27);--c-danger:#ea9ab2;--c-danger-variant:#d17887;--c-danger-variant-transparent:rgba(209,120,135,0.27);--c-danger-important:#d8344f;--c-danger-important-variant:#ac2a40;--c-shadow:#24292e;background-color:var(--c-background);color:var(--c-text-normal)}h1,h2,h3{color:var(--c-text-light);font-weight:400;position:relative;cursor:default}h1{font-size:3rem;margin-bottom:.5rem}hr{border:none;width:10%;max-width:120px;height:5px;background:var(--c-accent);-webkit-box-shadow:0 1px 10px -1px var(--c-shadow);box-shadow:0 1px 10px -1px var(--c-shadow);margin:2rem auto 1rem auto}a,hr{outline:0}a{color:var(--c-text-light);text-decoration:none;-webkit-transition:color .3s;transition:color .3s}a:active,a:focus,a:hover{color:var(--c-accent)}button{border:none;border-radius:0;outline:none;background:transparent;cursor:pointer;font-family:inherit}#app{font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;margin:40px 0}#app section{margin:auto;padding:.5em 0 1.5em 0}#app section p{text-align:left}#app footer{margin:8rem 0 10rem 0}#app footer a .icon{color:var(--c-text-normal);font-size:2rem;margin:0 .8rem;-webkit-transition:color .3s;transition:color .3s}#app footer a:active .icon,#app footer a:focus .icon,#app footer a:hover .icon{color:var(--c-accent)}@media (min-width:1200px){#app section{width:1200px}.col-2{display:-webkit-box;display:-ms-flexbox;display:flex}.col-half{width:50%}}.col-2>div{margin:0 auto}.col-2>.month-view{width:800px}.col-2>.info-view{width:400px}.col-half{width:90%}.mt-1{margin-top:1rem}.mt-2{margin-top:2rem}.mt-5{margin-top:5rem}.px-1{padding-left:1rem;padding-right:1rem}.hidden{display:none}#app .vue-notification{cursor:pointer;padding:1em;margin:0 15px 15px 0;font-size:1.2em;color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);border-left:5px solid var(--c-accent-variant)}#app .vue-notification .notification-title{font-size:1.5em} \ No newline at end of file +.month-day-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-line-pack:center;align-content:center;height:700px}.month-day-grid .day{width:90px;height:80px;line-height:80px;font-size:1.5em;padding:5px;margin:5px;background:var(--c-background-element);position:relative;overflow:hidden;border-radius:3px;-webkit-transition:all .2s;transition:all .2s;cursor:default}.month-day-grid .day.label,.month-day-grid .day.offset{background:none}.month-day-grid .day.today{background:var(--c-text-light)}.month-day-grid .day.success{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.month-day-grid .day.fail{color:var(--c-shadow);background:transparent}.month-day-grid .day .action{display:-webkit-box;display:-ms-flexbox;display:flex;width:101px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;bottom:-30px;left:0;-webkit-transition:all .2s;transition:all .2s}.month-day-grid .day.past:hover{line-height:50px}.month-day-grid .day.past:hover .action{bottom:0}.month-day-grid .day .action button{text-align:center;width:33.3%;height:30px;color:var(--c-text-normal)}.month-day-grid .day .action button.success{color:#fff;background:var(--c-accent-variant)}.month-day-grid .day .action button.fail{color:var(--c-shadow);background:var(--c-background)}.navigation{margin:1em 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navigation>*{-ms-flex-preferred-size:50%;flex-basis:50%}.navigation h2{margin:0;padding:0 1em 0 0;text-align:right}.navigation .button-group{text-align:left}.navigation .button-group button{color:var(--c-text-light);padding:0 .5em;font-size:1.5em}.year-container{overflow-x:auto}.year-day-grid{width:1200px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column wrap;flex-flow:column wrap;-ms-flex-line-pack:center;align-content:center;height:168px}.year-day-grid .day{width:18px;height:10px;line-height:10px;font-size:.7em;font-weight:700;padding:5px 0;margin:2px;background:var(--c-background-element);position:relative;border-radius:2px;-webkit-transition:all .2s;transition:all .2s;cursor:default}.year-day-grid .day.label{margin-right:10px;background:none}.year-day-grid .day.offset{background:none}.year-day-grid .day.tomonth{background:var(--c-background-element-variant)}.year-day-grid .day.today{background:var(--c-text-light)}.year-day-grid .day.success{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.year-day-grid .day.fail{color:var(--c-shadow);background:transparent}.legend{text-align:left;padding-top:17px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;cursor:default}.legend>div{position:relative;padding:0 0 10px 35px;width:calc(50% - 35px)}.legend>div:before{content:"";text-align:center;position:absolute;left:0;width:20px;height:20px;border-radius:2px}.legend>div.successful:before{background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.legend>div.undecided:before{background:var(--c-background-element)}.legend>div.failed:before{background:var(--c-background)}.legend>div.today:before{background:var(--c-text-light)}.stats{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.stats .box{width:31%}.stats .box .data{position:relative;overflow:hidden;margin:10px 0;padding:5px 0;color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);-webkit-transition:all .2s;transition:all .2s}.stats .box .data.zero{color:var(--c-text-normal);background:var(--c-background-element)}.stats .box .data>span{font-size:2.5em;font-weight:700}.stats .box .data>.icon{position:absolute;right:-10px;bottom:-15px;color:hsla(0,0%,100%,.27);font-size:4em}.stats .box .data.zero>.icon{color:hsla(0,0%,100%,.07)}.achievements{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.achievements .item{width:60px;height:60px;line-height:60px;position:relative;overflow:visible;margin:7px 0;padding:5px;font-size:2em;color:var(--c-text-normal);background:var(--c-background-element);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);-webkit-transition:all .2s;transition:all .2s}.achievements .item.offset{background:transparent;-webkit-box-shadow:none;box-shadow:none}.achievements .item.active{color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent)}.achievements .item .badge{position:absolute;font-size:.4em;line-height:.4em;font-weight:700;top:-2px;right:-2px;background:#fff;color:var(--c-accent-variant);padding:7px 5px}.achievements .item .progress{position:absolute;width:0;height:3px;bottom:0;left:0;background:#fff;-webkit-transition:width .2s;transition:width .2s}.achievements .item .description{font-size:.5em;line-height:1.2em;visibility:hidden;opacity:0;z-index:2;-webkit-transition:all .2s;transition:all .2s;width:210px;background:var(--c-background-element);padding:13px;top:84px;-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow)}.achievements .item .description,.achievements .item .description:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.achievements .item .description:before{content:"";top:-14px;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:14px solid var(--c-background-element)}.achievements .item:nth-child(5n+1) .description{left:0;-webkit-transform:initial;transform:none}.achievements .item:nth-child(5n+1) .description:before{left:35px}.achievements .item:nth-child(5n) .description{left:auto;right:0;-webkit-transform:initial;transform:none}.achievements .item:nth-child(5n) .description:before{left:auto;right:35px;-webkit-transform:translateX(50%);transform:translateX(50%)}.achievements .item .description .title{position:relative;font-size:1.3em;line-height:1.5em;padding-bottom:1em}.achievements .item .description .title:after{content:"";position:absolute;bottom:.5em;width:20%;max-width:120px;height:2px;background:var(--c-accent);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-shadow:0 1px 10px -1px var(--c-shadow);box-shadow:0 1px 10px -1px var(--c-shadow)}.achievements .item:active .description,.achievements .item:focus .description,.achievements .item:hover .description{visibility:visible;opacity:1}.achievements .item .description:hover{visibility:hidden;opacity:0}.info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap;height:784px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.btn{background:var(--c-background-element-variant);border:2px solid var(--c-background-element-variant);color:var(--c-text-light);font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:2px;cursor:pointer;display:inline-block;outline:none;padding:.6rem 1rem;text-align:center;text-decoration:none;-webkit-transition:background .2s,border .2s,color .2s,-webkit-box-shadow .2s;transition:background .2s,border .2s,color .2s,-webkit-box-shadow .2s;transition:background .2s,border .2s,box-shadow .2s,color .2s;transition:background .2s,border .2s,box-shadow .2s,color .2s,-webkit-box-shadow .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:active,.btn:focus,.btn:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-background-element-variant-transparent);box-shadow:0 0 0 .3rem var(--c-background-element-variant-transparent);text-decoration:none}.btn.btn-primary{background:var(--c-accent-variant);border:2px solid var(--c-accent-variant);color:var(--c-text-light)}.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-accent-variant-transparent);box-shadow:0 0 0 .3rem var(--c-accent-variant-transparent)}.btn.btn-danger{background:var(--c-danger-variant);border:2px solid var(--c-danger-variant);color:var(--c-text-light)}.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{-webkit-box-shadow:0 0 0 .3rem var(--c-danger-variant-transparent);box-shadow:0 0 0 .3rem var(--c-danger-variant-transparent)}.btn.btn-danger.btn.btn-danger-important{background:var(--c-danger-important);border:2px solid var(--c-danger-important)}.btn-mini{padding:3px 8px;margin-left:10px;background:var(--c-danger-important-variant)}.btn-mini:active,.btn-mini:focus,.btn-mini:hover{background:var(--c-danger-variant)}.btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}body{--c-text-normal:#7e8a9a;--c-text-light:#eee;--c-background:#3d444c;--c-background-element:#4b535d;--c-background-element-variant:#57606b;--c-background-element-variant-transparent:rgba(87,96,107,0.27);--c-accent:#9aeab9;--c-accent-variant:#78d19a;--c-accent-variant-transparent:rgba(120,209,154,0.27);--c-danger:#ea9ab2;--c-danger-variant:#d17887;--c-danger-variant-transparent:rgba(209,120,135,0.27);--c-danger-important:#d8344f;--c-danger-important-variant:#ac2a40;--c-shadow:#24292e;background-color:var(--c-background);color:var(--c-text-normal)}h1,h2,h3{color:var(--c-text-light);font-weight:400;position:relative;cursor:default}h1{font-size:3rem;margin-bottom:.5rem}hr{border:none;width:10%;max-width:120px;height:5px;background:var(--c-accent);-webkit-box-shadow:0 1px 10px -1px var(--c-shadow);box-shadow:0 1px 10px -1px var(--c-shadow);margin:2rem auto 1rem auto}a,hr{outline:0}a{color:var(--c-text-light);text-decoration:none;-webkit-transition:color .3s;transition:color .3s}a:active,a:focus,a:hover{color:var(--c-accent)}button{border:none;border-radius:0;outline:none;background:transparent;cursor:pointer;font-family:inherit}#app{font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;margin:40px 0}#app section{margin:auto;padding:.5em 0 1.5em 0}#app section p{text-align:left}#app footer{margin:8rem 0 10rem 0}#app footer a .icon{color:var(--c-text-normal);font-size:2rem;margin:0 .8rem;-webkit-transition:color .3s;transition:color .3s}#app footer .lang-select{background:transparent;color:inherit;border:none;font-family:inherit;font-size:inherit}#app footer a:active .icon,#app footer a:focus .icon,#app footer a:hover .icon{color:var(--c-accent)}@media (min-width:1200px){#app section{width:1200px}.col-2{display:-webkit-box;display:-ms-flexbox;display:flex}.col-half{width:50%}}.col-2>div{margin:0 auto}.col-2>.month-view{width:800px}.col-2>.info-view{width:400px}.col-half{width:90%}.mt-1{margin-top:1rem}.mt-2{margin-top:2rem}.mt-3{margin-top:3rem}.mt-5{margin-top:5rem}.px-1{padding-left:1rem;padding-right:1rem}.hidden{display:none}#app .vue-notification{cursor:pointer;padding:1em;margin:0 15px 15px 0;font-size:1.2em;color:#fff;background-image:-webkit-gradient(linear,left top,right bottom,color-stop(0,var(--c-accent)),to(var(--c-accent-variant)));background-image:linear-gradient(to bottom right,var(--c-accent) 0,var(--c-accent-variant));background-color:var(--c-accent);-webkit-box-shadow:0 8px 20px -8px var(--c-shadow);box-shadow:0 8px 20px -8px var(--c-shadow);border-left:5px solid var(--c-accent-variant)}#app .vue-notification .notification-title{font-size:1.5em} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 6bf8cd0..6f05f9d 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -
{{ $t('admin.backup.text') }}
\r\n \r\n{{ $t('admin.danger.text') }}
\r\n{{ $t('subtitle') }}
\r\n{{ $t('admin.backup.text') }}
\r\n \r\n{{ $t('admin.danger.text') }}
\r\n{{ $t('subtitle') }}
\r\n, or missing
. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. \n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for