From ed76452bdc02d9446568fec309a7e9bbbd2c34fb Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Wed, 8 May 2024 08:30:30 -0700 Subject: [PATCH] Nicer error output --- src/controllers/InstallController.php | 11 ++++++++-- src/migrations/Install.php | 5 +++-- src/web/assets/installer/dist/css/install.css | 2 +- .../assets/installer/dist/css/install.css.map | 2 +- src/web/assets/installer/dist/install.js | 2 +- src/web/assets/installer/dist/install.js.map | 2 +- src/web/assets/installer/src/install.js | 22 +++++++++---------- src/web/assets/installer/src/install.scss | 19 ++++++++++------ 8 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/controllers/InstallController.php b/src/controllers/InstallController.php index 755476f2d93..22290bc4dcc 100644 --- a/src/controllers/InstallController.php +++ b/src/controllers/InstallController.php @@ -18,6 +18,7 @@ use craft\helpers\ArrayHelper; use craft\helpers\Install as InstallHelper; use craft\helpers\StringHelper; +use craft\markdown\Markdown; use craft\migrations\Install; use craft\models\Site; use craft\web\assets\installer\InstallerAsset; @@ -299,9 +300,15 @@ public function actionInstall(): Response try { $migrator->migrateUp($migration); } catch (MigrationException $e) { + $data = []; $previous = $e->getPrevious(); - $message = $previous instanceof OperationAbortedException ? $previous->getMessage() : $e->getMessage(); - return $this->asFailure($message); + if ($previous instanceof OperationAbortedException) { + $message = $previous->getMessage(); + $data['messageHtml'] = (new Markdown())->parse($message); + } else { + $message = $e->getMessage(); + } + return $this->asFailure($message, $data); } // Mark all existing migrations as applied diff --git a/src/migrations/Install.php b/src/migrations/Install.php index 90bc5b3ad3d..98368559784 100644 --- a/src/migrations/Install.php +++ b/src/migrations/Install.php @@ -70,8 +70,9 @@ class Install extends Migration public function safeUp(): bool { if (!$this->_validateProjectConfig($error)) { - echo "\nProject config validation failed: $error\n\nAborting install.\n\n"; - throw new OperationAbortedException("Project config validation failed: $error"); + $message = "Project config validation failed: $error\n\nRun `composer install` or remove your `config/project/` folder and try again."; + echo "\n$message\n\nAborting install.\n\n"; + throw new OperationAbortedException($message); } $this->createTables(); diff --git a/src/web/assets/installer/dist/css/install.css b/src/web/assets/installer/dist/css/install.css index d1bf42ac215..da9a6405697 100644 --- a/src/web/assets/installer/dist/css/install.css +++ b/src/web/assets/installer/dist/css/install.css @@ -1,2 +1,2 @@ -body,html{height:100%}body{background:var(--gray-100) url(../images/installer-bg.png) no-repeat 50% 50%;-o-background-size:cover;background-size:cover;overflow:hidden}.beginbtncontainer{margin-top:-25px;position:absolute;text-align:center;top:50%;width:100%}#beginbtn{border-radius:var(--large-border-radius);box-shadow:inset 0 1px hsla(0,0%,100%,.2),inset 0 -1px rgba(0,0,0,.133),0 0 0 1px rgba(33,55,112,.4),0 0 1px 2px rgba(33,55,112,.333),0 10px 10px -10px #213770,0 10px 20px -10px #213770;display:inline-block;font-size:19px;height:50px;padding:0 24px}#beginbtn:after{margin-top:-4px}#install-modal{height:510px;padding:0;width:770px}#install-modal #screens,#install-modal #screens .screen{height:100%;width:100%}#install-modal #screens .screen{background:no-repeat 0 50%;-o-background-size:368px 477px;background-size:368px 477px;box-sizing:border-box;padding:35px}#install-modal #screens .screen#db{background-image:url(../images/db.png)}#install-modal #screens .screen#site{background-image:url(../images/site.png)}#install-modal #screens .screen#account{background-image:url(../images/account.png)}#install-modal #screens .screen h1{margin-bottom:35px;position:relative;text-align:center}#install-modal #screens .screen form{float:right;width:50%}#install-modal #screens .screen form .select,#install-modal #screens .screen form .select select{width:100%}#install-modal #dots{bottom:10px;left:0;position:absolute;text-align:center;width:100%}#install-modal #dots>div{border:1px solid var(--hairline-color);border-radius:4px;display:inline-block;height:6px;width:6px}body.ltr #install-modal #dots>div+div{margin-left:5px}body.rtl #install-modal #dots>div+div{margin-right:5px}#install-modal #dots>div.sel{background:var(--primary-color);border-color:var(--primary-color)}.grid{margin-bottom:35px;margin-top:35px}.buttons{bottom:35px;position:absolute}body.ltr .buttons{right:35px}body.rtl .buttons{left:35px}body.ltr .buttons .btn{padding-right:10px}body.rtl .buttons .btn{padding-left:10px}.buttons .btn:after{speak:none;-webkit-font-feature-settings:"liga","dlig";-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;word-wrap:normal!important;direction:ltr;display:inline-block;font-family:Craft;font-size:20px;font-style:normal;font-variant:normal;font-weight:400;height:20px;line-height:1;line-height:18px;opacity:var(--icon-opacity);text-align:center;text-rendering:optimizeLegibility;text-transform:none;-webkit-user-select:none;user-select:none;vertical-align:middle;width:20px}body.ltr .buttons .btn:after{margin:-2px 0 0 4px}body.rtl .buttons .btn:after{margin:-2px 4px 0 0}body.ltr .buttons .btn:after{content:"rarr"}body.rtl .buttons .btn:after{content:"larr"}input.hidden{position:absolute;top:100px}#license{overflow-y:scroll;padding:0!important}#license #license-content{padding:70px 105px}#license #license-content .license,#license #license-content .license h1{font-family:Menlo,monospace;font-size:13px;line-height:25px}#license #license-content .license h1{font-weight:700}#license #license-content #license-accept{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;margin-top:35px}#installing{text-align:center}#installing h1{margin-top:200px!important}#installing p{margin:0 auto;max-width:40em}#installing #spinner{display:block;margin:0 auto}#installing .buttons .btn{float:none;margin:0} +body,html{height:100%}body{background:var(--gray-100) url(../images/installer-bg.png) no-repeat 50% 50%;-o-background-size:cover;background-size:cover;overflow:hidden}.beginbtncontainer{margin-top:-25px;position:absolute;text-align:center;top:50%;width:100%}#beginbtn{border-radius:var(--large-border-radius);box-shadow:inset 0 1px hsla(0,0%,100%,.2),inset 0 -1px rgba(0,0,0,.133),0 0 0 1px rgba(33,55,112,.4),0 0 1px 2px rgba(33,55,112,.333),0 10px 10px -10px #213770,0 10px 20px -10px #213770;display:inline-block;font-size:19px;height:50px;padding:0 24px}#beginbtn:after{margin-top:-4px}#install-modal{height:510px;padding:0;width:770px}#install-modal #screens,#install-modal #screens .screen{height:100%;width:100%}#install-modal #screens .screen{background:no-repeat 0 50%;-o-background-size:368px 477px;background-size:368px 477px;box-sizing:border-box;padding:35px}#install-modal #screens .screen#db{background-image:url(../images/db.png)}#install-modal #screens .screen#site{background-image:url(../images/site.png)}#install-modal #screens .screen#account{background-image:url(../images/account.png)}#install-modal #screens .screen h1{margin-bottom:35px;position:relative;text-align:center}#install-modal #screens .screen form{float:right;width:50%}#install-modal #screens .screen form .select,#install-modal #screens .screen form .select select{width:100%}#install-modal #dots{bottom:10px;left:0;position:absolute;text-align:center;width:100%}#install-modal #dots>div{border:1px solid var(--hairline-color);border-radius:4px;display:inline-block;height:6px;width:6px}body.ltr #install-modal #dots>div+div{margin-left:5px}body.rtl #install-modal #dots>div+div{margin-right:5px}#install-modal #dots>div.sel{background:var(--primary-color);border-color:var(--primary-color)}.grid{margin-bottom:35px;margin-top:35px}.buttons{bottom:35px;position:absolute}body.ltr .buttons{right:35px}body.rtl .buttons{left:35px}body.ltr .buttons .btn{padding-right:10px}body.rtl .buttons .btn{padding-left:10px}.buttons .btn:after{speak:none;-webkit-font-feature-settings:"liga","dlig";-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;word-wrap:normal!important;direction:ltr;display:inline-block;font-family:Craft;font-size:20px;font-style:normal;font-variant:normal;font-weight:400;height:20px;line-height:1;line-height:18px;opacity:var(--icon-opacity);text-align:center;text-rendering:optimizeLegibility;text-transform:none;-webkit-user-select:none;user-select:none;vertical-align:middle;width:20px}body.ltr .buttons .btn:after{margin:-2px 0 0 4px}body.rtl .buttons .btn:after{margin:-2px 4px 0 0}body.ltr .buttons .btn:after{content:"rarr"}body.rtl .buttons .btn:after{content:"larr"}input.hidden{position:absolute;top:100px}#license{overflow-y:scroll;padding:0!important}#license #license-content{padding:70px 105px}#license #license-content .license,#license #license-content .license h1{font-family:Menlo,monospace;font-size:13px;line-height:25px}#license #license-content .license h1{font-weight:700}#license #license-content #license-accept{margin-top:35px}#installing,#license #license-content #license-accept{display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center}#installing{-webkit-align-items:center;align-items:center;-webkit-flex-direction:column;flex-direction:column}#installing .pane{background-color:var(--gray-800);color:var(--white);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important;max-width:40em}#installing .pane code{color:var(--yellow-300)}#installing #spinner{display:block;margin:0 auto}#installing .buttons .btn{float:none;margin:0} /*# sourceMappingURL=install.css.map*/ \ No newline at end of file diff --git a/src/web/assets/installer/dist/css/install.css.map b/src/web/assets/installer/dist/css/install.css.map index fceacf4fa2e..07616d372f7 100644 --- a/src/web/assets/installer/dist/css/install.css.map +++ b/src/web/assets/installer/dist/css/install.css.map @@ -1 +1 @@ -{"version":3,"file":"css/install.css","mappings":"AAGA,UAEE,YAGF,KAEE,qGACA,uBAFA,eAEA,oBAKA,gBACA,CAHF,iBACE,CAGA,iBACA,CAJA,QAEA,UAEA,WAIA,wCACA,CAGA,yLACA,CANF,oBACE,CACA,cACA,YACA,eAEA,iBAGA,eACE,gBAKF,YACA,UACA,CAHF,WAGE,yDAKI,WACA,CAHF,UAGE,iCAKA,0BACA,+BACA,6BAHA,qBACA,CAFF,YAIE,oCAEA,sCACE,sCAGF,wCACE,oFAIA,uDAGF,kBAHE,iBAGF,CACE,qCAEA,WAGF,CAHE,SAGF,kGAKI,2CAEE,OAOV,CATQ,kBASR,iBACE,CADF,UACE,0BAMA,sCAEE,CAJF,iBAEA,CAJA,oBAEA,CAIE,UACA,CADA,SACA,uCACA,eACA,uCC0WJ,gBDvWM,CC0WN,6BDvWI,+BACE,CCsWN,iCDtWM,yBACA,CADA,eACA,UAON,WACA,CARM,iBAQN,mBAGF,UACE,mBACA,SC8MA,wBACE,kBAEF,wBAwKA,iBACE,qBAGA,sDAnTF,CACA,uCACA,uCAGA,oCACA,CAIA,kCAEA,kCAEA,CAIA,0BACA,CAVA,aACA,CAIA,qBAoSA,iBACE,CA7RF,eAPA,iBAEA,CAVA,mBACA,CADA,gBAeA,WAEA,CAfA,cAeA,iBAHA,2BACA,CAPA,kBATA,iCACA,CACA,mBACA,CAUA,wBACA,iBACA,CAJA,qBACA,CAIA,UAEA,CDzFI,6BAEA,mBACA,8BCgUJ,mBACE,8BAEF,cACE,8BDnUE,cACE,cAEF,2BACE,UAON,iBACA,CARM,mBAQN,2BAIA,kBACA,0EAMI,2DAEE,uCAEA,gBAGF,0CAKF,gEAEE,wBANE,eAMF,aACA,2DAMJ,eAGE,cADF,cACE,sBAGF,aACE,cACA,2BAIA,UACA,CAFF,QAEE","sources":["webpack:///./install.scss","webpack:///../../../../../packages/craftcms-sass/_mixins.scss"],"sourcesContent":["@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n overflow: hidden;\n background: var(--gray-100) url(images/installer-bg.png) no-repeat 50% 50%;\n background-size: cover;\n}\n\n.beginbtncontainer {\n position: absolute;\n top: 50%;\n margin-top: -25px;\n width: 100%;\n text-align: center;\n}\n\n#beginbtn {\n display: inline-block;\n border-radius: var(--large-border-radius);\n font-size: 19px;\n height: 50px;\n padding: 0 24px;\n box-shadow: inset 0 1px #ffffff33, inset 0 -1px #00000022, 0 0 0 1px #21377066,\n 0 0 1px 2px #21377055, 0 10px 10px -10px #213770, 0 10px 20px -10px #213770;\n\n &:after {\n margin-top: -4px;\n }\n}\n\n#install-modal {\n width: 770px;\n height: 510px;\n padding: 0;\n\n #screens {\n &,\n .screen {\n width: 100%;\n height: 100%;\n }\n\n .screen {\n padding: 35px;\n box-sizing: border-box;\n background: no-repeat 0 50%;\n background-size: 368px 477px;\n\n &#db {\n background-image: url(./images/db.png);\n }\n\n &#site {\n background-image: url(./images/site.png);\n }\n\n &#account {\n background-image: url(./images/account.png);\n }\n\n h1 {\n margin-bottom: 35px;\n text-align: center;\n position: relative;\n }\n\n form {\n width: 50%;\n float: right;\n\n .select {\n &,\n select {\n width: 100%;\n }\n }\n }\n }\n }\n\n #dots {\n position: absolute;\n bottom: 10px;\n left: 0;\n width: 100%;\n text-align: center;\n\n & > div {\n display: inline-block;\n border-radius: 4px;\n border: 1px solid var(--hairline-color);\n width: 6px;\n height: 6px;\n\n & + div {\n @include margin-left(5px);\n }\n\n &.sel {\n border-color: var(--primary-color);\n background: var(--primary-color);\n }\n }\n }\n}\n\n.grid {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n\n.buttons {\n position: absolute;\n bottom: 35px;\n @include right(35px);\n\n .btn {\n @include padding-right(10px);\n\n &:after {\n @include icon;\n @include margin(-2px, 0, 0, 4px);\n font-size: 20px;\n width: 20px;\n height: 20px;\n line-height: 18px;\n body.ltr & {\n content: 'rarr';\n }\n body.rtl & {\n content: 'larr';\n }\n }\n }\n}\n\ninput.hidden {\n position: absolute;\n top: 100px;\n}\n\n#license {\n padding: 0 !important;\n overflow-y: scroll;\n\n #license-content {\n padding: 70px 105px;\n\n .license {\n &,\n h1 {\n font-family: Menlo, monospace;\n font-size: 13px;\n line-height: 25px;\n }\n\n h1 {\n font-weight: bold;\n }\n }\n\n #license-accept {\n margin-top: 35px;\n display: flex;\n justify-content: center;\n }\n }\n}\n\n#installing {\n text-align: center;\n\n h1 {\n margin-top: 200px !important;\n }\n\n p {\n max-width: 40em;\n margin: 0 auto;\n }\n\n #spinner {\n display: block;\n margin: 0 auto;\n }\n\n .buttons {\n .btn {\n margin: 0;\n float: none;\n }\n }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$blue050: #e3f8ff;\n$blue100: #b3ecff;\n$blue200: #81defd;\n$blue300: #5ed0fa;\n$blue400: #40c3f7;\n$blue500: #2bb0ed;\n$blue600: #1992d4;\n$blue700: #127fbf;\n$blue800: #0b69a3;\n$blue900: #035388;\n\n$cyan050: #e0fcff;\n$cyan100: #bef8fd;\n$cyan200: #87eaf2;\n$cyan300: #54d1db;\n$cyan400: #38bec9;\n$cyan500: #2cb1bc;\n$cyan600: #14919b;\n$cyan700: #0e7c86;\n$cyan800: #0a6c74;\n$cyan900: #044e54;\n\n$pink050: #ffe3ec;\n$pink100: #ffb8d2;\n$pink200: #ff8cba;\n$pink300: #f364a2;\n$pink400: #e8368f;\n$pink500: #da127d;\n$pink600: #bc0a6f;\n$pink700: #a30664;\n$pink800: #870557;\n$pink900: #620042;\n\n$red050: #ffe3e3;\n$red100: #ffbdbd;\n$red200: #ff9b9b;\n$red300: #f86a6a;\n$red400: #ef4e4e;\n$red500: #e12d39;\n$red600: #cf1124;\n$red700: #ab091e;\n$red800: #8a041a;\n$red900: #610316;\n\n$yellow050: #fffbea;\n$yellow100: #fff3c4;\n$yellow200: #fce588;\n$yellow300: #fadb5f;\n$yellow400: #f7c948;\n$yellow500: #f0b429;\n$yellow600: #de911d;\n$yellow700: #cb6e17;\n$yellow800: #b44d12;\n$yellow900: #8d2b0b;\n\n$teal050: #effcf6;\n$teal100: #c6f7e2;\n$teal200: #8eedc7;\n$teal300: #65d6ad;\n$teal400: #3ebd93;\n$teal500: #27ab83;\n$teal600: #199473;\n$teal700: #147d64;\n$teal800: #0c6b58;\n$teal900: #014d40;\n\n// submit button colors\n$primaryColor: $red500;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $white;\n$menuOptionActiveBackgroundColor: $grey500;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing: 0 0 0 1px $lightFocusColor,\n 0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing: 0 0 0 1px $mediumFocusColor,\n 0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing: 0 0 0 1px $darkFocusColor,\n 0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n$checkboxSize: 16px;\n$radioSize: 16px;\n\n@mixin sans-serif-font {\n font-family: system-ui, BlinkMacSystemFont, -apple-system, 'Segoe UI',\n 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\n 'Helvetica Neue', sans-serif;\n}\n\n@mixin fixed-width-font {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n monospace;\n font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n $max: length($values);\n $remValues: '';\n\n @for $i from 1 through $max {\n $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n @if $i < $max {\n $remValues: #{$remValues + ' '};\n }\n }\n\n @return $remValues;\n}\n\n@mixin fontSize($size) {\n font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n body:not(.reduce-focus-visibility) &:focus,\n body.reduce-focus-visibility &:focus-visible {\n @content;\n }\n}\n\n@mixin svg-mask($color) {\n rect,\n circle,\n ellipse,\n line,\n polyline,\n polygon,\n path,\n text {\n fill: $color;\n stroke-width: 0;\n }\n}\n\n@mixin icon {\n font-family: 'Craft';\n speak: none;\n -webkit-font-feature-settings: 'liga', 'dlig';\n -moz-font-feature-settings: 'liga=1, dlig=1';\n -moz-font-feature-settings: 'liga', 'dlig';\n -ms-font-feature-settings: 'liga', 'dlig';\n -o-font-feature-settings: 'liga', 'dlig';\n font-feature-settings: 'liga', 'dlig';\n text-rendering: optimizeLegibility;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n direction: ltr; // Fixes a rendering issue in Chrome/Win\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n display: inline-block;\n text-align: center;\n font-style: normal;\n vertical-align: middle;\n word-wrap: normal !important;\n user-select: none;\n\n opacity: var(--icon-opacity);\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: 2px) {\n display: block;\n content: '';\n font-size: 0;\n width: 7px;\n height: 7px;\n border: solid $color;\n border-width: 0 $width $width 0;\n opacity: 0.8;\n\n @if $dir == up {\n transform: rotate(225deg);\n } @else if $dir == down {\n transform: rotate(45deg);\n } @else if $dir == left {\n body.ltr & {\n transform: rotate(135deg);\n }\n body.rtl & {\n transform: rotate(-45deg);\n }\n } @else if $dir == right {\n body.ltr & {\n transform: rotate(-45deg);\n }\n body.rtl & {\n transform: rotate(135deg);\n }\n }\n}\n\n@mixin clearafter {\n content: '';\n display: block;\n height: 0;\n clear: both;\n visibility: hidden;\n}\n\n@mixin shadow {\n box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n background: $white;\n box-shadow: 0 0 0 1px $grey200, 0 2px 12px transparentize($grey200, 0.5);\n\n &:focus {\n box-shadow: var(--focus-ring);\n }\n}\n\n@mixin modal {\n border-radius: $largeBorderRadius;\n background-color: $white;\n box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n // Make light on dark text sharp on Macs\n // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 500;\n}\n\n@mixin light-focus-ring() {\n --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n @if $secondary != null {\n --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n } @else {\n --focus-ring: 0 0 0 3px #{$primary};\n }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n // Creates a two-color focus ring, with a white\n // If button is light, the dark box shadow is adjacent to the button\n // Else the light box shadow is adjacent to the button\n --light-color: var(--white);\n --dark-color: var(--gray-800);\n\n @if $light-button {\n --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n } @else {\n --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n body.ltr & {\n left: $left;\n }\n body.rtl & {\n right: $left;\n }\n}\n\n@mixin right($right) {\n body.ltr & {\n right: $right;\n }\n body.rtl & {\n left: $right;\n }\n}\n\n@mixin alignleft {\n body.ltr & {\n text-align: left;\n }\n body.rtl & {\n text-align: right;\n }\n}\n\n@mixin alignright {\n body.ltr & {\n text-align: right;\n }\n body.rtl & {\n text-align: left;\n }\n}\n\n@mixin border-left($params...) {\n body.ltr & {\n border-left: $params;\n }\n body.rtl & {\n border-right: $params;\n }\n}\n\n@mixin border-right($params...) {\n body.ltr & {\n border-right: $params;\n }\n body.rtl & {\n border-left: $params;\n }\n}\n\n@mixin border-left-width($param) {\n body.ltr & {\n border-left-width: $param;\n }\n body.rtl & {\n border-right-width: $param;\n }\n}\n\n@mixin border-right-width($param) {\n body.ltr & {\n border-right-width: $param;\n }\n body.rtl & {\n border-left-width: $param;\n }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n body.ltr & {\n border-radius: $tl $tr $br $bl;\n }\n body.rtl & {\n border-radius: $tr $tl $bl $br;\n }\n}\n\n@mixin border-top-left-radius($params...) {\n body.ltr & {\n border-top-left-radius: $params;\n }\n body.rtl & {\n border-top-right-radius: $params;\n }\n}\n\n@mixin border-top-right-radius($params...) {\n body.ltr & {\n border-top-right-radius: $params;\n }\n body.rtl & {\n border-top-left-radius: $params;\n }\n}\n\n@mixin border-bottom-left-radius($params...) {\n body.ltr & {\n border-bottom-left-radius: $params;\n }\n body.rtl & {\n border-bottom-right-radius: $params;\n }\n}\n\n@mixin border-bottom-right-radius($params...) {\n body.ltr & {\n border-bottom-right-radius: $params;\n }\n body.rtl & {\n border-bottom-left-radius: $params;\n }\n}\n\n@mixin floatleft {\n body.ltr & {\n float: left;\n }\n body.rtl & {\n float: right;\n }\n}\n\n@mixin floatright {\n body.ltr & {\n float: right;\n }\n body.rtl & {\n float: left;\n }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n body.ltr & {\n margin: $t $r $b $l unquote($important);\n }\n body.rtl & {\n margin: $t $l $b $r unquote($important);\n }\n}\n\n@mixin margin-left($margin...) {\n body.ltr & {\n margin-left: $margin;\n }\n body.rtl & {\n margin-right: $margin;\n }\n}\n\n@mixin margin-right($margin...) {\n body.ltr & {\n margin-right: $margin;\n }\n body.rtl & {\n margin-left: $margin;\n }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n body.ltr & {\n padding: $t $r $b $l unquote($important);\n }\n body.rtl & {\n padding: $t $l $b $r unquote($important);\n }\n}\n\n@mixin padding-left($padding...) {\n body.ltr & {\n padding-left: $padding;\n }\n body.rtl & {\n padding-right: $padding;\n }\n}\n\n@mixin padding-right($padding...) {\n body.ltr & {\n padding-right: $padding;\n }\n body.rtl & {\n padding-left: $padding;\n }\n}\n\n// Misc\n\n@mixin dark-inputs {\n @include placeholder-styles($grey400);\n\n .btn,\n .select:not(.selectize) select {\n background-color: $grey200;\n\n &:focus,\n &:hover {\n background-color: darken($grey200, 5%);\n }\n\n &:active,\n &.active {\n background-color: darken($grey200, 10%);\n }\n }\n\n .text {\n background-color: $grey200;\n\n &:focus {\n background-color: darken($grey200, 5%);\n }\n }\n}\n\n@mixin header-btn {\n width: 30px;\n height: 30px;\n padding-left: 0;\n padding-right: 0;\n\n &:not(:hover):not(:active):not(.active) {\n background-color: transparent;\n }\n &:not(:active):not(.active):hover {\n background-color: transparentize($grey300, 0.85);\n }\n}\n\n@mixin h6-styles {\n margin: 14px 0 3px;\n font-size: 11px;\n line-height: 1.2;\n color: $lightTextColor;\n text-transform: uppercase;\n}\n\n@mixin token-styles {\n display: inline-block;\n border-radius: $smallBorderRadius;\n padding: 3px 7px;\n font-size: 12px;\n line-height: 14px;\n color: $textColor;\n background-color: $grey100;\n}\n\n@mixin active-token-styles {\n background-color: $grey200;\n}\n\n@mixin menu-styles {\n z-index: 100;\n border-radius: $menuBorderRadius;\n padding: 0 14px;\n overflow: auto;\n background: $white;\n user-select: none;\n box-shadow: 0 0 0 1px transparentize($grey900, 0.9),\n 0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-option-styles {\n margin: 0 -14px;\n padding: 10px 14px;\n color: $menuOptionColor;\n text-decoration: none;\n white-space: nowrap;\n}\n\n@mixin menu-option-active-styles {\n color: $menuOptionActiveColor;\n background-color: $menuOptionActiveBackgroundColor;\n}\n\n@mixin disclosure-link-hover-styles {\n color: $menuOptionColor;\n background-color: $grey050;\n}\n\n@mixin input-styles {\n border-radius: $smallBorderRadius;\n border: 1px solid transparentize($inputColor, 0.75);\n background-color: hsl(212, 50%, 99%);\n background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n input::-webkit-input-placeholder,\n textarea::-webkit-input-placeholder {\n color: $color;\n }\n\n input:-ms-input-placeholder,\n textarea:-ms-input-placeholder {\n color: $color;\n }\n\n input::-ms-input-placeholder,\n textarea::-ms-input-placeholder {\n color: $color;\n }\n\n input:-moz-placeholder,\n textarea:-moz-placeholder {\n color: $color;\n }\n\n input::-moz-placeholder,\n textarea::-moz-placeholder {\n color: $color;\n }\n\n input::placeholder,\n textarea::placeholder {\n color: $color;\n }\n}\n\n@mixin select-styles {\n position: relative;\n border-radius: $largeBorderRadius;\n white-space: nowrap;\n}\n\n@mixin select-container-styles {\n max-width: 100%;\n position: relative;\n :not(.flex) > & {\n display: inline-block;\n }\n}\n\n@mixin select-arrow-styles {\n @include angle;\n position: absolute;\n z-index: 1;\n top: calc(50% - 5px);\n @include right(9px);\n user-select: none;\n pointer-events: none;\n}\n\n@mixin select-input-styles {\n display: block;\n position: relative;\n max-width: 100%;\n border: none;\n @include padding(7px, 22px, 7px, 10px);\n font-size: 14px;\n line-height: 20px;\n color: $textColor;\n background-color: hsl(212, 25%, 90%);\n appearance: none;\n // from https://stackoverflow.com/a/15933790/1688568\n &::-ms-expand {\n display: none;\n }\n}\n\n@mixin select-input-fullwidth-styles {\n min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n outline-color: transparent;\n background-color: hsl(212, 25%, 85%);\n box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n height: var(--touch-target-size);\n width: var(--touch-target-size);\n}\n\n@mixin visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n@mixin readable {\n font-size: 16px;\n line-height: 22px;\n\n h1,\n .h1,\n h2,\n .h2,\n h3,\n .h3,\n h4,\n .h4,\n h5,\n .h5,\n h6,\n .h6 {\n margin: 24px 0 16px;\n font-weight: 600;\n }\n\n h1,\n .h1 {\n font-size: 32px;\n line-height: 40px;\n color: #000;\n }\n\n h2,\n .h2 {\n font-size: 24px;\n line-height: 30px;\n }\n\n h3,\n .h3 {\n font-size: 20px;\n line-height: 24px;\n }\n\n h4,\n .h4 {\n font-size: 16px;\n line-height: 20px;\n }\n\n h5,\n .h5 {\n font-size: 14px;\n line-height: 18px;\n }\n\n h6,\n .h6 {\n font-size: 13.6px;\n line-height: 17px;\n color: $mediumTextColor;\n }\n\n ul,\n ol {\n margin: 1em 0;\n @include padding-left(2em);\n }\n\n ul li {\n list-style-type: disc;\n }\n\n li + li {\n margin-top: 0.25em;\n }\n\n .tip-dismiss-btn {\n position: absolute;\n top: 12px;\n @include right(12px);\n\n & + p {\n margin-top: 0;\n }\n }\n\n blockquote {\n margin: 16px 0;\n\n &:not(.note) {\n padding: 0 16px;\n color: $mediumTextColor;\n @include border-left(4px solid $hairlineColor);\n }\n\n &.note {\n position: relative;\n border-radius: 4px;\n padding: 1em;\n @include padding-left(50px);\n border: 1px solid;\n\n &.dismissible {\n @include padding-right(36px);\n }\n\n &:not(.tip):not(.warning) {\n border-color: $errorColor;\n color: #bf503f;\n\n &:before {\n content: 'alert';\n color: $errorColor;\n }\n }\n\n &.tip {\n border-color: $linkColor;\n color: $linkColor;\n\n &:before {\n content: 'lightbulb';\n color: $linkColor;\n }\n }\n\n &.warning {\n border-color: $warningColor;\n color: #cf783a;\n\n &:before {\n content: 'alert';\n color: $warningColor;\n }\n }\n\n &:before {\n @include icon;\n opacity: 1;\n position: absolute;\n top: 15px;\n @include left(16px);\n font-size: 24px;\n width: 24px;\n }\n\n a[href] {\n color: currentColor;\n text-decoration: underline;\n }\n }\n }\n\n .go:after {\n font-size: 14px;\n }\n}\n\n@mixin checkered-bg($size) {\n // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n $halfSize: $size * 0.5;\n background-image: linear-gradient(\n 45deg,\n #{transparentize($grey300, 0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 135deg,\n #{transparentize($grey300, 0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 45deg,\n transparent 75%,\n #{transparentize($grey300, 0.75)} 75%\n ),\n linear-gradient(\n 135deg,\n transparent 75%,\n #{transparentize($grey300, 0.75)} 75%\n );\n background-size: $size $size;\n background-position: 0 0, $halfSize 0, $halfSize -#{$halfSize}, 0 $halfSize;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/install.css","mappings":"AAGA,UAEE,YAGF,KAEE,qGACA,uBAFA,eAEA,oBAKA,gBACA,CAHF,iBACE,CAGA,iBACA,CAJA,QAEA,UAEA,WAIA,wCACA,CAGA,yLACA,CANF,oBACE,CACA,cACA,YACA,eAEA,iBAGA,eACE,gBAKF,YACA,UACA,CAHF,WAGE,yDAKI,WACA,CAHF,UAGE,iCAKA,0BACA,+BACA,6BAHA,qBACA,CAFF,YAIE,oCAEA,sCACE,sCAGF,wCACE,oFAIA,uDAGF,kBAHE,iBAGF,CACE,qCAEA,WAGF,CAHE,SAGF,kGAKI,2CAEE,OAOV,CATQ,kBASR,iBACE,CADF,UACE,0BAMA,sCAEE,CAJF,iBAEA,CAJA,oBAEA,CAIE,UACA,CADA,SACA,uCACA,eACA,uCC0WJ,gBDvWM,CC0WN,6BDvWI,+BACE,CCsWN,iCDtWM,yBACA,CADA,eACA,UAON,WACA,CARM,iBAQN,mBAGF,UACE,mBACA,SC8MA,wBACE,kBAEF,wBAwKA,iBACE,qBAGA,sDAnTF,CACA,uCACA,uCAGA,oCACA,CAIA,kCAEA,kCAEA,CAIA,0BACA,CAVA,aACA,CAIA,qBAoSA,iBACE,CA7RF,eAPA,iBAEA,CAVA,mBACA,CADA,gBAeA,WAEA,CAfA,cAeA,iBAHA,2BACA,CAPA,kBATA,iCACA,CACA,mBACA,CAUA,wBACA,iBACA,CAJA,qBACA,CAIA,UAEA,CDzFI,6BAEA,mBACA,8BCgUJ,mBACE,8BAEF,cACE,8BDnUE,cACE,cAEF,2BACE,UAON,iBACA,CARM,mBAQN,2BAIA,kBACA,0EAMI,2DAEE,uCAEA,gBAGF,0CACE,eAMF,uDAFF,gEAEE,uBASJ,CATI,YAOJ,0BACA,oBAPI,6BAMJ,sBAEA,mBCjCA,gCAEA,CAFA,mBDkCA,2EClCA,0BDkCA,cChCA,wBDsCE,6CAEA,aACE,yCAKF,UACA,CAFF,QAEE","sources":["webpack:///./install.scss","webpack:///../../../../../packages/craftcms-sass/_mixins.scss"],"sourcesContent":["@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\nhtml,\nbody {\n height: 100%;\n}\n\nbody {\n overflow: hidden;\n background: var(--gray-100) url(images/installer-bg.png) no-repeat 50% 50%;\n background-size: cover;\n}\n\n.beginbtncontainer {\n position: absolute;\n top: 50%;\n margin-top: -25px;\n width: 100%;\n text-align: center;\n}\n\n#beginbtn {\n display: inline-block;\n border-radius: var(--large-border-radius);\n font-size: 19px;\n height: 50px;\n padding: 0 24px;\n box-shadow: inset 0 1px #ffffff33, inset 0 -1px #00000022, 0 0 0 1px #21377066,\n 0 0 1px 2px #21377055, 0 10px 10px -10px #213770, 0 10px 20px -10px #213770;\n\n &:after {\n margin-top: -4px;\n }\n}\n\n#install-modal {\n width: 770px;\n height: 510px;\n padding: 0;\n\n #screens {\n &,\n .screen {\n width: 100%;\n height: 100%;\n }\n\n .screen {\n padding: 35px;\n box-sizing: border-box;\n background: no-repeat 0 50%;\n background-size: 368px 477px;\n\n &#db {\n background-image: url(./images/db.png);\n }\n\n &#site {\n background-image: url(./images/site.png);\n }\n\n &#account {\n background-image: url(./images/account.png);\n }\n\n h1 {\n margin-bottom: 35px;\n text-align: center;\n position: relative;\n }\n\n form {\n width: 50%;\n float: right;\n\n .select {\n &,\n select {\n width: 100%;\n }\n }\n }\n }\n }\n\n #dots {\n position: absolute;\n bottom: 10px;\n left: 0;\n width: 100%;\n text-align: center;\n\n & > div {\n display: inline-block;\n border-radius: 4px;\n border: 1px solid var(--hairline-color);\n width: 6px;\n height: 6px;\n\n & + div {\n @include margin-left(5px);\n }\n\n &.sel {\n border-color: var(--primary-color);\n background: var(--primary-color);\n }\n }\n }\n}\n\n.grid {\n margin-top: 35px;\n margin-bottom: 35px;\n}\n\n.buttons {\n position: absolute;\n bottom: 35px;\n @include right(35px);\n\n .btn {\n @include padding-right(10px);\n\n &:after {\n @include icon;\n @include margin(-2px, 0, 0, 4px);\n font-size: 20px;\n width: 20px;\n height: 20px;\n line-height: 18px;\n body.ltr & {\n content: 'rarr';\n }\n body.rtl & {\n content: 'larr';\n }\n }\n }\n}\n\ninput.hidden {\n position: absolute;\n top: 100px;\n}\n\n#license {\n padding: 0 !important;\n overflow-y: scroll;\n\n #license-content {\n padding: 70px 105px;\n\n .license {\n &,\n h1 {\n font-family: Menlo, monospace;\n font-size: 13px;\n line-height: 25px;\n }\n\n h1 {\n font-weight: bold;\n }\n }\n\n #license-accept {\n margin-top: 35px;\n display: flex;\n justify-content: center;\n }\n }\n}\n\n#installing {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n .pane {\n max-width: 40em;\n @include fixed-width-font;\n color: var(--white);\n background-color: var(--gray-800);\n\n code {\n color: var(--yellow-300);\n }\n }\n\n #spinner {\n display: block;\n margin: 0 auto;\n }\n\n .buttons {\n .btn {\n margin: 0;\n float: none;\n }\n }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$blue050: #e3f8ff;\n$blue100: #b3ecff;\n$blue200: #81defd;\n$blue300: #5ed0fa;\n$blue400: #40c3f7;\n$blue500: #2bb0ed;\n$blue600: #1992d4;\n$blue700: #127fbf;\n$blue800: #0b69a3;\n$blue900: #035388;\n\n$cyan050: #e0fcff;\n$cyan100: #bef8fd;\n$cyan200: #87eaf2;\n$cyan300: #54d1db;\n$cyan400: #38bec9;\n$cyan500: #2cb1bc;\n$cyan600: #14919b;\n$cyan700: #0e7c86;\n$cyan800: #0a6c74;\n$cyan900: #044e54;\n\n$pink050: #ffe3ec;\n$pink100: #ffb8d2;\n$pink200: #ff8cba;\n$pink300: #f364a2;\n$pink400: #e8368f;\n$pink500: #da127d;\n$pink600: #bc0a6f;\n$pink700: #a30664;\n$pink800: #870557;\n$pink900: #620042;\n\n$red050: #ffe3e3;\n$red100: #ffbdbd;\n$red200: #ff9b9b;\n$red300: #f86a6a;\n$red400: #ef4e4e;\n$red500: #e12d39;\n$red600: #cf1124;\n$red700: #ab091e;\n$red800: #8a041a;\n$red900: #610316;\n\n$yellow050: #fffbea;\n$yellow100: #fff3c4;\n$yellow200: #fce588;\n$yellow300: #fadb5f;\n$yellow400: #f7c948;\n$yellow500: #f0b429;\n$yellow600: #de911d;\n$yellow700: #cb6e17;\n$yellow800: #b44d12;\n$yellow900: #8d2b0b;\n\n$teal050: #effcf6;\n$teal100: #c6f7e2;\n$teal200: #8eedc7;\n$teal300: #65d6ad;\n$teal400: #3ebd93;\n$teal500: #27ab83;\n$teal600: #199473;\n$teal700: #147d64;\n$teal800: #0c6b58;\n$teal900: #014d40;\n\n// submit button colors\n$primaryColor: $red500;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $white;\n$menuOptionActiveBackgroundColor: $grey500;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing: 0 0 0 1px $lightFocusColor,\n 0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing: 0 0 0 1px $mediumFocusColor,\n 0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing: 0 0 0 1px $darkFocusColor,\n 0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n$checkboxSize: 16px;\n$radioSize: 16px;\n\n@mixin sans-serif-font {\n font-family: system-ui, BlinkMacSystemFont, -apple-system, 'Segoe UI',\n 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans',\n 'Helvetica Neue', sans-serif;\n}\n\n@mixin fixed-width-font {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n monospace;\n font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n $max: length($values);\n $remValues: '';\n\n @for $i from 1 through $max {\n $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n @if $i < $max {\n $remValues: #{$remValues + ' '};\n }\n }\n\n @return $remValues;\n}\n\n@mixin fontSize($size) {\n font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n body:not(.reduce-focus-visibility) &:focus,\n body.reduce-focus-visibility &:focus-visible {\n @content;\n }\n}\n\n@mixin svg-mask($color) {\n rect,\n circle,\n ellipse,\n line,\n polyline,\n polygon,\n path,\n text {\n fill: $color;\n stroke-width: 0;\n }\n}\n\n@mixin icon {\n font-family: 'Craft';\n speak: none;\n -webkit-font-feature-settings: 'liga', 'dlig';\n -moz-font-feature-settings: 'liga=1, dlig=1';\n -moz-font-feature-settings: 'liga', 'dlig';\n -ms-font-feature-settings: 'liga', 'dlig';\n -o-font-feature-settings: 'liga', 'dlig';\n font-feature-settings: 'liga', 'dlig';\n text-rendering: optimizeLegibility;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n direction: ltr; // Fixes a rendering issue in Chrome/Win\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n display: inline-block;\n text-align: center;\n font-style: normal;\n vertical-align: middle;\n word-wrap: normal !important;\n user-select: none;\n\n opacity: var(--icon-opacity);\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: 2px) {\n display: block;\n content: '';\n font-size: 0;\n width: 7px;\n height: 7px;\n border: solid $color;\n border-width: 0 $width $width 0;\n opacity: 0.8;\n\n @if $dir == up {\n transform: rotate(225deg);\n } @else if $dir == down {\n transform: rotate(45deg);\n } @else if $dir == left {\n body.ltr & {\n transform: rotate(135deg);\n }\n body.rtl & {\n transform: rotate(-45deg);\n }\n } @else if $dir == right {\n body.ltr & {\n transform: rotate(-45deg);\n }\n body.rtl & {\n transform: rotate(135deg);\n }\n }\n}\n\n@mixin clearafter {\n content: '';\n display: block;\n height: 0;\n clear: both;\n visibility: hidden;\n}\n\n@mixin shadow {\n box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n background: $white;\n box-shadow: 0 0 0 1px $grey200, 0 2px 12px transparentize($grey200, 0.5);\n\n &:focus {\n box-shadow: var(--focus-ring);\n }\n}\n\n@mixin modal {\n border-radius: $largeBorderRadius;\n background-color: $white;\n box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n // Make light on dark text sharp on Macs\n // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n font-weight: 500;\n}\n\n@mixin light-focus-ring() {\n --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n @if $secondary != null {\n --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n } @else {\n --focus-ring: 0 0 0 3px #{$primary};\n }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n // Creates a two-color focus ring, with a white\n // If button is light, the dark box shadow is adjacent to the button\n // Else the light box shadow is adjacent to the button\n --light-color: var(--white);\n --dark-color: var(--gray-800);\n\n @if $light-button {\n --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n } @else {\n --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n body.ltr & {\n left: $left;\n }\n body.rtl & {\n right: $left;\n }\n}\n\n@mixin right($right) {\n body.ltr & {\n right: $right;\n }\n body.rtl & {\n left: $right;\n }\n}\n\n@mixin alignleft {\n body.ltr & {\n text-align: left;\n }\n body.rtl & {\n text-align: right;\n }\n}\n\n@mixin alignright {\n body.ltr & {\n text-align: right;\n }\n body.rtl & {\n text-align: left;\n }\n}\n\n@mixin border-left($params...) {\n body.ltr & {\n border-left: $params;\n }\n body.rtl & {\n border-right: $params;\n }\n}\n\n@mixin border-right($params...) {\n body.ltr & {\n border-right: $params;\n }\n body.rtl & {\n border-left: $params;\n }\n}\n\n@mixin border-left-width($param) {\n body.ltr & {\n border-left-width: $param;\n }\n body.rtl & {\n border-right-width: $param;\n }\n}\n\n@mixin border-right-width($param) {\n body.ltr & {\n border-right-width: $param;\n }\n body.rtl & {\n border-left-width: $param;\n }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n body.ltr & {\n border-radius: $tl $tr $br $bl;\n }\n body.rtl & {\n border-radius: $tr $tl $bl $br;\n }\n}\n\n@mixin border-top-left-radius($params...) {\n body.ltr & {\n border-top-left-radius: $params;\n }\n body.rtl & {\n border-top-right-radius: $params;\n }\n}\n\n@mixin border-top-right-radius($params...) {\n body.ltr & {\n border-top-right-radius: $params;\n }\n body.rtl & {\n border-top-left-radius: $params;\n }\n}\n\n@mixin border-bottom-left-radius($params...) {\n body.ltr & {\n border-bottom-left-radius: $params;\n }\n body.rtl & {\n border-bottom-right-radius: $params;\n }\n}\n\n@mixin border-bottom-right-radius($params...) {\n body.ltr & {\n border-bottom-right-radius: $params;\n }\n body.rtl & {\n border-bottom-left-radius: $params;\n }\n}\n\n@mixin floatleft {\n body.ltr & {\n float: left;\n }\n body.rtl & {\n float: right;\n }\n}\n\n@mixin floatright {\n body.ltr & {\n float: right;\n }\n body.rtl & {\n float: left;\n }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n body.ltr & {\n margin: $t $r $b $l unquote($important);\n }\n body.rtl & {\n margin: $t $l $b $r unquote($important);\n }\n}\n\n@mixin margin-left($margin...) {\n body.ltr & {\n margin-left: $margin;\n }\n body.rtl & {\n margin-right: $margin;\n }\n}\n\n@mixin margin-right($margin...) {\n body.ltr & {\n margin-right: $margin;\n }\n body.rtl & {\n margin-left: $margin;\n }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n body.ltr & {\n padding: $t $r $b $l unquote($important);\n }\n body.rtl & {\n padding: $t $l $b $r unquote($important);\n }\n}\n\n@mixin padding-left($padding...) {\n body.ltr & {\n padding-left: $padding;\n }\n body.rtl & {\n padding-right: $padding;\n }\n}\n\n@mixin padding-right($padding...) {\n body.ltr & {\n padding-right: $padding;\n }\n body.rtl & {\n padding-left: $padding;\n }\n}\n\n// Misc\n\n@mixin dark-inputs {\n @include placeholder-styles($grey400);\n\n .btn,\n .select:not(.selectize) select {\n background-color: $grey200;\n\n &:focus,\n &:hover {\n background-color: darken($grey200, 5%);\n }\n\n &:active,\n &.active {\n background-color: darken($grey200, 10%);\n }\n }\n\n .text {\n background-color: $grey200;\n\n &:focus {\n background-color: darken($grey200, 5%);\n }\n }\n}\n\n@mixin header-btn {\n width: 30px;\n height: 30px;\n padding-left: 0;\n padding-right: 0;\n\n &:not(:hover):not(:active):not(.active) {\n background-color: transparent;\n }\n &:not(:active):not(.active):hover {\n background-color: transparentize($grey300, 0.85);\n }\n}\n\n@mixin h6-styles {\n margin: 14px 0 3px;\n font-size: 11px;\n line-height: 1.2;\n color: $lightTextColor;\n text-transform: uppercase;\n}\n\n@mixin token-styles {\n display: inline-block;\n border-radius: $smallBorderRadius;\n padding: 3px 7px;\n font-size: 12px;\n line-height: 14px;\n color: $textColor;\n background-color: $grey100;\n}\n\n@mixin active-token-styles {\n background-color: $grey200;\n}\n\n@mixin menu-styles {\n z-index: 100;\n border-radius: $menuBorderRadius;\n padding: 0 14px;\n overflow: auto;\n background: $white;\n user-select: none;\n box-shadow: 0 0 0 1px transparentize($grey900, 0.9),\n 0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-option-styles {\n margin: 0 -14px;\n padding: 10px 14px;\n color: $menuOptionColor;\n text-decoration: none;\n white-space: nowrap;\n}\n\n@mixin menu-option-active-styles {\n color: $menuOptionActiveColor;\n background-color: $menuOptionActiveBackgroundColor;\n}\n\n@mixin disclosure-link-hover-styles {\n color: $menuOptionColor;\n background-color: $grey050;\n}\n\n@mixin input-styles {\n border-radius: $smallBorderRadius;\n border: 1px solid transparentize($inputColor, 0.75);\n background-color: hsl(212, 50%, 99%);\n background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n input::-webkit-input-placeholder,\n textarea::-webkit-input-placeholder {\n color: $color;\n }\n\n input:-ms-input-placeholder,\n textarea:-ms-input-placeholder {\n color: $color;\n }\n\n input::-ms-input-placeholder,\n textarea::-ms-input-placeholder {\n color: $color;\n }\n\n input:-moz-placeholder,\n textarea:-moz-placeholder {\n color: $color;\n }\n\n input::-moz-placeholder,\n textarea::-moz-placeholder {\n color: $color;\n }\n\n input::placeholder,\n textarea::placeholder {\n color: $color;\n }\n}\n\n@mixin select-styles {\n position: relative;\n border-radius: $largeBorderRadius;\n white-space: nowrap;\n}\n\n@mixin select-container-styles {\n max-width: 100%;\n position: relative;\n :not(.flex) > & {\n display: inline-block;\n }\n}\n\n@mixin select-arrow-styles {\n @include angle;\n position: absolute;\n z-index: 1;\n top: calc(50% - 5px);\n @include right(9px);\n user-select: none;\n pointer-events: none;\n}\n\n@mixin select-input-styles {\n display: block;\n position: relative;\n max-width: 100%;\n border: none;\n @include padding(7px, 22px, 7px, 10px);\n font-size: 14px;\n line-height: 20px;\n color: $textColor;\n background-color: hsl(212, 25%, 90%);\n appearance: none;\n // from https://stackoverflow.com/a/15933790/1688568\n &::-ms-expand {\n display: none;\n }\n}\n\n@mixin select-input-fullwidth-styles {\n min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n outline-color: transparent;\n background-color: hsl(212, 25%, 85%);\n box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n height: var(--touch-target-size);\n width: var(--touch-target-size);\n}\n\n@mixin visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n@mixin readable {\n font-size: 16px;\n line-height: 22px;\n\n h1,\n .h1,\n h2,\n .h2,\n h3,\n .h3,\n h4,\n .h4,\n h5,\n .h5,\n h6,\n .h6 {\n margin: 24px 0 16px;\n font-weight: 600;\n }\n\n h1,\n .h1 {\n font-size: 32px;\n line-height: 40px;\n color: #000;\n }\n\n h2,\n .h2 {\n font-size: 24px;\n line-height: 30px;\n }\n\n h3,\n .h3 {\n font-size: 20px;\n line-height: 24px;\n }\n\n h4,\n .h4 {\n font-size: 16px;\n line-height: 20px;\n }\n\n h5,\n .h5 {\n font-size: 14px;\n line-height: 18px;\n }\n\n h6,\n .h6 {\n font-size: 13.6px;\n line-height: 17px;\n color: $mediumTextColor;\n }\n\n ul,\n ol {\n margin: 1em 0;\n @include padding-left(2em);\n }\n\n ul li {\n list-style-type: disc;\n }\n\n li + li {\n margin-top: 0.25em;\n }\n\n .tip-dismiss-btn {\n position: absolute;\n top: 12px;\n @include right(12px);\n\n & + p {\n margin-top: 0;\n }\n }\n\n blockquote {\n margin: 16px 0;\n\n &:not(.note) {\n padding: 0 16px;\n color: $mediumTextColor;\n @include border-left(4px solid $hairlineColor);\n }\n\n &.note {\n position: relative;\n border-radius: 4px;\n padding: 1em;\n @include padding-left(50px);\n border: 1px solid;\n\n &.dismissible {\n @include padding-right(36px);\n }\n\n &:not(.tip):not(.warning) {\n border-color: $errorColor;\n color: #bf503f;\n\n &:before {\n content: 'alert';\n color: $errorColor;\n }\n }\n\n &.tip {\n border-color: $linkColor;\n color: $linkColor;\n\n &:before {\n content: 'lightbulb';\n color: $linkColor;\n }\n }\n\n &.warning {\n border-color: $warningColor;\n color: #cf783a;\n\n &:before {\n content: 'alert';\n color: $warningColor;\n }\n }\n\n &:before {\n @include icon;\n opacity: 1;\n position: absolute;\n top: 15px;\n @include left(16px);\n font-size: 24px;\n width: 24px;\n }\n\n a[href] {\n color: currentColor;\n text-decoration: underline;\n }\n }\n }\n\n .go:after {\n font-size: 14px;\n }\n}\n\n@mixin checkered-bg($size) {\n // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n $halfSize: $size * 0.5;\n background-image: linear-gradient(\n 45deg,\n #{transparentize($grey300, 0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 135deg,\n #{transparentize($grey300, 0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 45deg,\n transparent 75%,\n #{transparentize($grey300, 0.75)} 75%\n ),\n linear-gradient(\n 135deg,\n transparent 75%,\n #{transparentize($grey300, 0.75)} 75%\n );\n background-size: $size $size;\n background-position: 0 0, $halfSize 0, $halfSize -#{$halfSize}, 0 $halfSize;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/web/assets/installer/dist/install.js b/src/web/assets/installer/dist/install.js index 80653b966fe..7c9e03d9918 100644 --- a/src/web/assets/installer/dist/install.js +++ b/src/web/assets/installer/dist/install.js @@ -1,2 +1,2 @@ -!function(){var e={796:function(){},745:function(e,t,n){var r=n(796);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(673).Z)("2dc210c6",r,!0,{})},673:function(e,t,n){"use strict";function r(e,t){for(var n=[],r={},s=0;sn.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(s=0;s",i?{text:i,class:"pane code"}:{text:"Please check your logs for more info."}).insertAfter(n)}},gotoNextScreen:function(){this.gotoScreen(this.currentScreen+1)},gotoScreen:function(t){if(1===t)this.$dots&&this.$dots.hide();else if(this.$dots)this.$dots.show();else{this.$dots=e();for(var n=0;n").appendTo(e("#dots")))}this.$currentScreen&&(this.$currentScreen.addClass("hidden"),this.$currentDot&&this.$currentDot.removeClass("sel")),this.currentScreen=t,this.$currentScreen=this.$screens.eq(t-1).removeClass("hidden"),this.$dots&&(this.$currentDot=this.$dots.eq(t-1).addClass("sel")),t===this.$screens.length?this.showInstallScreen():1!==t&&this.$currentScreen.find("input[type=text]:first").trigger("focus")},validate:function(t,n){var r=this;if(!this.loading){this.loading=!0,this.$currentScreen.find(".input").removeClass("errors"),this.$currentScreen.find("ul.errors").remove();var s=this.$currentScreen.find(".btn.submit");s.addClass("loading");var i="install/validate-"+t,a=this.getInputData(t,n,!1);Craft.sendActionRequest("POST",i,{data:a}).then((function(){r.gotoNextScreen()})).catch((function(n){var s=n.response;if(400===s.status){var i=e("
    ",{class:"errors"}).insertBefore(e("#"+t).find(".buttons"));for(var a in s.data.errors)if(s.data.errors.hasOwnProperty(a)){for(var o=0;o"+s.data.errors[a][o]+"").appendTo(i);var l=e("#"+t+"-"+a+"-field").children(".input");l.addClass("errors"),function(e){var t=e.find("select,input");r.addListener(t,"focus,blur,textchange,change",(function(){e.removeClass("errors"),this.removeListener(t,"focus,blur,textchange,change")}))}(l)}Garnish.shake(r.modal.$container)}else console.warn("Unexpected response:",s)})).finally((function(){r.loading=!1,s.removeClass("loading")}))}}},{defaultDbPorts:{mysql:3306,pgsql:5432}}),Garnish.$win.on("load",(function(){Craft.installer=new Craft.Installer}))}()}(); +!function(){var e={796:function(){},745:function(e,t,n){var r=n(796);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(673).Z)("2dc210c6",r,!0,{})},673:function(e,t,n){"use strict";function r(e,t){for(var n=[],r={},s=0;sn.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(s=0;s",{class:"pane",html:l}).insertAfter(n):e("

    ",{text:null!==(i=null==t||null===(a=t.response)||void 0===a||null===(o=a.data)||void 0===o?void 0:o.message)&&void 0!==i?i:"Please check your logs for more info."}).insertAfter(n)}},gotoNextScreen:function(){this.gotoScreen(this.currentScreen+1)},gotoScreen:function(t){if(1===t)this.$dots&&this.$dots.hide();else if(this.$dots)this.$dots.show();else{this.$dots=e();for(var n=0;n").appendTo(e("#dots")))}this.$currentScreen&&(this.$currentScreen.addClass("hidden"),this.$currentDot&&this.$currentDot.removeClass("sel")),this.currentScreen=t,this.$currentScreen=this.$screens.eq(t-1).removeClass("hidden"),this.$dots&&(this.$currentDot=this.$dots.eq(t-1).addClass("sel")),t===this.$screens.length?this.showInstallScreen():1!==t&&this.$currentScreen.find("input[type=text]:first").trigger("focus")},validate:function(t,n){var r=this;if(!this.loading){this.loading=!0,this.$currentScreen.find(".input").removeClass("errors"),this.$currentScreen.find("ul.errors").remove();var s=this.$currentScreen.find(".btn.submit");s.addClass("loading");var i="install/validate-"+t,a=this.getInputData(t,n,!1);Craft.sendActionRequest("POST",i,{data:a}).then((function(){r.gotoNextScreen()})).catch((function(n){var s=n.response;if(400===s.status){var i=e("

      ",{class:"errors"}).insertBefore(e("#"+t).find(".buttons"));for(var a in s.data.errors)if(s.data.errors.hasOwnProperty(a)){for(var o=0;o"+s.data.errors[a][o]+"").appendTo(i);var l=e("#"+t+"-"+a+"-field").children(".input");l.addClass("errors"),function(e){var t=e.find("select,input");r.addListener(t,"focus,blur,textchange,change",(function(){e.removeClass("errors"),this.removeListener(t,"focus,blur,textchange,change")}))}(l)}Garnish.shake(r.modal.$container)}else console.warn("Unexpected response:",s)})).finally((function(){r.loading=!1,s.removeClass("loading")}))}}},{defaultDbPorts:{mysql:3306,pgsql:5432}}),Garnish.$win.on("load",(function(){Craft.installer=new Craft.Installer}))}()}(); //# sourceMappingURL=install.js.map \ No newline at end of file diff --git a/src/web/assets/installer/dist/install.js.map b/src/web/assets/installer/dist/install.js.map index b9b6cb542bc..139e952d542 100644 --- a/src/web/assets/installer/dist/install.js.map +++ b/src/web/assets/installer/dist/install.js.map @@ -1 +1 @@ -{"version":3,"file":"install.js","mappings":"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","sources":["webpack:///./install.scss?d7e0","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./install.js"],"sourcesContent":["// style-loader: Adds some css to the DOM by adding a