diff --git a/composer.json b/composer.json index 553eca3c57c..7644c1ed60d 100644 --- a/composer.json +++ b/composer.json @@ -45,6 +45,7 @@ "elvanto/litemoji": "~4.3.0", "enshrined/svg-sanitize": "~0.22.0", "guzzlehttp/guzzle": "^7.2.0", + "inertiajs/inertia-laravel": "^2.0", "laravel/framework": "^12.21.0", "league/uri": "^7.0", "moneyphp/money": "^4.0", diff --git a/composer.lock b/composer.lock index 9d706d20718..db27466e776 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9a0f2788594896a1647327e18c04ef9a", + "content-hash": "5d948ae3fec1082c4d78c6e607feb328", "packages": [ { "name": "bacon/bacon-qr-code", @@ -2124,6 +2124,76 @@ ], "time": "2025-08-22T14:27:06+00:00" }, + { + "name": "inertiajs/inertia-laravel", + "version": "v2.0.10", + "source": { + "type": "git", + "url": "https://github.com/inertiajs/inertia-laravel.git", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/07da425d58a3a0e3ace9c296e67bd897a6e47009", + "reference": "07da425d58a3a0e3ace9c296e67bd897a6e47009", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": "^10.0|^11.0|^12.0", + "php": "^8.1.0", + "symfony/console": "^6.2|^7.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.2", + "larastan/larastan": "^3.0", + "laravel/pint": "^1.16", + "mockery/mockery": "^1.3.3", + "orchestra/testbench": "^8.0|^9.2|^10.0", + "phpunit/phpunit": "^10.4|^11.5", + "roave/security-advisories": "dev-master" + }, + "suggest": { + "ext-pcntl": "Recommended when running the Inertia SSR server via the `inertia:start-ssr` artisan command." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Inertia\\ServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./helpers.php" + ], + "psr-4": { + "Inertia\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "https://reinink.ca" + } + ], + "description": "The Laravel adapter for Inertia.js.", + "keywords": [ + "inertia", + "laravel" + ], + "support": { + "issues": "https://github.com/inertiajs/inertia-laravel/issues", + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.10" + }, + "time": "2025-09-28T21:21:36+00:00" + }, { "name": "laravel/framework", "version": "v12.37.0", diff --git a/package-lock.json b/package-lock.json index ef3ecd63d05..7f4154c4acd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,16 +11,18 @@ "dependencies": { "@craftcms/cp": "file:packages/craftcms-cp", "@inertiajs/vue3": "^2.2.7", + "@vueuse/core": "^14.0.0", + "axios": "^1.13.2", "laravel-vite-plugin": "^2.0.1", "lit": "^3.3.1", - "tailwindcss": "^4.1.14", + "tailwindcss": "^4.1.16", "vue": "^3.5.22" }, "devDependencies": { "@craftcms/playwright": "file:packages/craftcms-playwright", "@craftcms/webpack": "file:packages/craftcms-webpack", "@playwright/test": "^1.52.0", - "@tailwindcss/vite": "^4.1.14", + "@tailwindcss/vite": "^4.1.16", "@total-typescript/tsconfig": "^1.0.4", "@vitejs/plugin-vue": "^6.0.1", "husky": "^9.1.7", @@ -44,6 +46,36 @@ "@awesome.me/kit-ddaed3f5c5": "^1.0.41" } }, + "@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "extraneous": true + }, + "@vueuse/core": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.0.0.tgz", + "integrity": "sha512-d6tKRWkZE8IQElX2aHBxXOMD478fHIYV+Dzm2y9Ag122ICBpNKtGICiXKOhWU3L1kKdttDD9dCMS4bGP3jhCTQ==", + "extraneous": true + }, + "@vueuse/metadata": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.0.0.tgz", + "integrity": "sha512-6yoGqbJcMldVCevkFiHDBTB1V5Hq+G/haPlGIuaFZHpXC0HADB0EN1ryQAAceiW+ryS3niUwvdFbGiqHqBrfVA==", + "extraneous": true + }, + "@vueuse/shared": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.0.0.tgz", + "integrity": "sha512-mTCA0uczBgurRlwVaQHfG0Ja7UdGe4g9mwffiJmvLiTtp1G4AQyIjej6si/k8c8pUwTfVpNufck+23gXptPAkw==", + "extraneous": true + }, + "axios": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "extraneous": true + }, "node_modules/@adobe/css-tools": { "version": "4.4.4", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", @@ -6628,6 +6660,12 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT" }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", + "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==", + "license": "MIT" + }, "node_modules/@types/whatwg-mimetype": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", @@ -7401,6 +7439,44 @@ "integrity": "sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==", "license": "MIT" }, + "node_modules/@vueuse/core": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-14.0.0.tgz", + "integrity": "sha512-d6tKRWkZE8IQElX2aHBxXOMD478fHIYV+Dzm2y9Ag122ICBpNKtGICiXKOhWU3L1kKdttDD9dCMS4bGP3jhCTQ==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.21", + "@vueuse/metadata": "14.0.0", + "@vueuse/shared": "14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, + "node_modules/@vueuse/metadata": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-14.0.0.tgz", + "integrity": "sha512-6yoGqbJcMldVCevkFiHDBTB1V5Hq+G/haPlGIuaFZHpXC0HADB0EN1ryQAAceiW+ryS3niUwvdFbGiqHqBrfVA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-14.0.0.tgz", + "integrity": "sha512-mTCA0uczBgurRlwVaQHfG0Ja7UdGe4g9mwffiJmvLiTtp1G4AQyIjej6si/k8c8pUwTfVpNufck+23gXptPAkw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vue": "^3.5.0" + } + }, "node_modules/@wc-toolkit/storybook-helpers": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/@wc-toolkit/storybook-helpers/-/storybook-helpers-9.0.1.tgz", diff --git a/package.json b/package.json index 3dc60adbb39..d5092e27ea2 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@craftcms/playwright": "file:packages/craftcms-playwright", "@craftcms/webpack": "file:packages/craftcms-webpack", "@playwright/test": "^1.52.0", - "@tailwindcss/vite": "^4.1.14", + "@tailwindcss/vite": "^4.1.16", "@total-typescript/tsconfig": "^1.0.4", "@vitejs/plugin-vue": "^6.0.1", "husky": "^9.1.7", @@ -50,9 +50,11 @@ "dependencies": { "@craftcms/cp": "file:packages/craftcms-cp", "@inertiajs/vue3": "^2.2.7", + "@vueuse/core": "^14.0.0", + "axios": "^1.13.2", "laravel-vite-plugin": "^2.0.1", "lit": "^3.3.1", - "tailwindcss": "^4.1.14", + "tailwindcss": "^4.1.16", "vue": "^3.5.22" } } diff --git a/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css b/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css deleted file mode 100644 index bb6ef13f30d..00000000000 --- a/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css +++ /dev/null @@ -1,2 +0,0 @@ -body,html{height:100%}body{background:var(--gray-100) url(../images/installer-bg.png) no-repeat 50% 50%;background-size:cover;overflow:hidden}.beginbtncontainer{inset-block-start:50%;margin-block-start:-25px;position:absolute;text-align:center;width:100%}#beginbtn{border-radius:var(--radius-lg);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-block:0;padding-inline:24px}#beginbtn:after{margin-block-start:-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%;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-block-end:35px;position:relative;text-align:center}#install-modal #screens .screen form{float:inline-end;width:50%}#install-modal #screens .screen form .select,#install-modal #screens .screen form .select select{width:100%}#install-modal #dots{inset-block-end:10px;inset-inline-start:0;position:absolute;text-align:center;width:100%}#install-modal #dots>div{border:1px solid var(--border-hairline);border-radius:4px;display:inline-block;height:6px;width:6px}#install-modal #dots>div+div{margin-inline-start:5px}#install-modal #dots>div.sel{background:var(--bg-primary);border-color:var(--border-primary)}.grid{margin-block:35px}.buttons{inset-block-end:35px;inset-inline-end:35px;position:absolute}.buttons .btn{padding-inline-end:10px}.buttons .btn:after{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;font-size:20px;height:20px;line-height:18px;margin-block:-2px 0;margin-inline:4px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:20px}body.ltr .buttons .btn:after{content:"rarr"}body.rtl .buttons .btn:after{content:"larr"}input.hidden{inset-block-start:100px;position:absolute}#license{overflow-y:scroll;padding:0!important}#license #license-content{padding-block:70px;padding-inline: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:flex;justify-content:center;margin-block-start:35px}#installing{align-items:center;display:flex;flex-direction:column;justify-content:center}#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{background-color:transparent;border:0;color:var(--yellow-300);padding:0}#installing #spinner{display:block;margin-block:0;margin-inline:auto}#installing .buttons .btn{float:none;margin:0} -/*# sourceMappingURL=install.css.map*/ \ No newline at end of file diff --git a/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css.map b/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css.map deleted file mode 100644 index c6f40a8678e..00000000000 --- a/packages/craftcms-asset-bundles/bundles/installer/dist/css/install.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"css/install.css","mappings":"AAGA,UAEE,YAGF,KAEE,kGACA,CAFA,eAEA,oBAIA,qBACA,yBACA,CAHF,iBACE,CAGA,iBACA,CAFA,UAEA,WAIA,8BACA,CAIA,yLACA,CAPF,oBACE,CACA,cACA,YACA,gBACA,oBAEA,iBAQA,uBACE,gBAKF,YACA,UACA,CAHF,WAGE,yDAKI,WACA,CAHF,UAGE,iCAKA,0BACA,4BACA,CAHA,qBACA,CAFF,YAIE,oCAEA,sCACE,sCAGF,wCACE,oFAIA,yDAGF,kBACE,CADF,iBACE,sCAEA,gBAGF,CAHE,SAGF,kGAKI,oDASR,qBACE,CAVM,kBAUN,iBACA,CADA,UACA,0BAKA,uCAEE,CAJF,iBAEA,CAJA,oBAEA,CAIE,UACA,CADA,SACA,qDAEA,8BAMA,4BACE,CALF,kCAKE,kCACA,oBAON,sBAIA,CAXM,iBAWN,eACA,uBCwPA,qBDrPA,iBACE,aCqHF,aACA,CDtHE,uCC4GF,uCAKA,oCACA,CACA,mBACA,CADA,gBAEA,cAHA,iCACA,CACA,mBACA,CACA,kCAEA,kCAEA,sBACA,iBAEA,CAFA,kBAEA,qBACA,2BACA,CAGA,eD9HI,WACA,kBC6HJ,wCAHA,wBACA,sBACA,qBACA,kBD9HI,UACA,CACA,6BAEA,cACA,8BAEA,cACE,cAGF,uBACE,CADF,iBACE,CAMR,SACE,iBACA,CAFF,mBAEE,2BAIA,kBACA,qBAEA,0EAKI,2DAEE,uCAEA,gBAGF,0CAKF,mCACE,CALE,uBAKF,aAEA,kBAKN,CAPM,YACA,sBACA,CAKN,sBAEE,mBCOA,gCAEA,CAFA,mBDLA,2ECKA,0BDNA,cCQA,wBDCE,4BACE,CAHF,QAEA,CAFA,wBAEA,SACE,sBAEA,aACA,kCAIJ,2BAEE,UACA,CADA,QACA","sources":["webpack:///./install.scss","webpack:///../../../../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 inset-block-start: 50%;\n margin-block-start: -25px;\n width: 100%;\n text-align: center;\n}\n\n#beginbtn {\n display: inline-block;\n border-radius: var(--radius-lg);\n font-size: 19px;\n height: 50px;\n padding-block: 0;\n padding-inline: 24px;\n box-shadow:\n inset 0 1px #fff3,\n inset 0 -1px #0002,\n 0 0 0 1px #21377066,\n 0 0 1px 2px #21377055,\n 0 10px 10px -10px #213770,\n 0 10px 20px -10px #213770;\n\n &::after {\n margin-block-start: -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-block-end: 35px;\n text-align: center;\n position: relative;\n }\n\n form {\n width: 50%;\n float: inline-end;\n\n .select {\n &,\n select {\n width: 100%;\n }\n }\n }\n }\n }\n\n #dots {\n position: absolute;\n inset-block-end: 10px;\n inset-inline-start: 0;\n width: 100%;\n text-align: center;\n\n & > div {\n display: inline-block;\n border-radius: 4px;\n border: 1px solid var(--border-hairline);\n width: 6px;\n height: 6px;\n\n & + div {\n margin-inline-start: 5px;\n }\n\n &.sel {\n border-color: var(--border-primary);\n background: var(--bg-primary);\n }\n }\n }\n}\n\n.grid {\n margin-block: 35px;\n}\n\n.buttons {\n position: absolute;\n inset-block-end: 35px;\n @include right(35px);\n\n .btn {\n padding-inline-end: 10px;\n\n &::after {\n @include icon;\n margin-inline: 4px 0;\n margin-block: -2px 0;\n font-size: 20px;\n width: 20px;\n height: 20px;\n line-height: 18px;\n\n body.ltr & {\n content: 'rarr';\n }\n\n body.rtl & {\n content: 'larr';\n }\n }\n }\n}\n\ninput.hidden {\n position: absolute;\n inset-block-start: 100px;\n}\n\n#license {\n padding: 0 !important;\n overflow-y: scroll;\n\n #license-content {\n padding-block: 70px;\n padding-inline: 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-block-start: 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 border: 0;\n padding: 0;\n background-color: transparent;\n }\n }\n\n #spinner {\n display: block;\n margin-block: 0;\n margin-inline: auto;\n }\n\n .buttons {\n .btn {\n margin: 0;\n float: none;\n }\n }\n}\n","@use 'sass:color';\n@use 'sass:list';\n@use 'sass:string';\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$red050: #fef2f2;\n$red100: #fee2e2;\n$red200: #fecaca;\n$red300: #fca5a5;\n$red400: #f87171;\n$red500: #ef4444;\n$red600: #dc2626;\n$red700: #b91c1c;\n$red800: #991b1b;\n$red900: #7f1d1d;\n\n$orange050: #fff7ed;\n$orange100: #ffedd5;\n$orange200: #fed7aa;\n$orange300: #fdba74;\n$orange400: #fb923c;\n$orange500: #f97316;\n$orange600: #ea580c;\n$orange700: #c2410c;\n$orange800: #9a3412;\n$orange900: #7c2d12;\n\n$yellow050: #fefce8;\n$yellow100: #fef9c3;\n$yellow200: #fef08a;\n$yellow300: #fde047;\n$yellow400: #facc15;\n$yellow500: #eab308;\n$yellow600: #ca8a04;\n$yellow700: #a16207;\n$yellow800: #854d0e;\n$yellow900: #713f12;\n\n$green050: #f0fdf4;\n$green100: #dcfce7;\n$green200: #bbf7d0;\n$green300: #86efac;\n$green400: #4ade80;\n$green500: #22c55e;\n$green600: #16a34a;\n$green700: #15803d;\n$green800: #166534;\n$green900: #14532d;\n\n$teal050: #f0fdfa;\n$teal100: #ccfbf1;\n$teal200: #99f6e4;\n$teal300: #5eead4;\n$teal400: #2dd4bf;\n$teal500: #14b8a6;\n$teal550: #11a697;\n$teal600: #0d9488;\n$teal700: #0f766e;\n$teal800: #115e59;\n$teal900: #134e4a;\n\n$cyan050: #ecfeff;\n$cyan100: #cffafe;\n$cyan200: #a5f3fc;\n$cyan300: #67e8f9;\n$cyan400: #22d3ee;\n$cyan500: #06b6d4;\n$cyan600: #0891b2;\n$cyan700: #0e7490;\n$cyan800: #155e75;\n$cyan900: #164e63;\n\n$blue050: #eff6ff;\n$blue100: #dbeafe;\n$blue200: #bfdbfe;\n$blue300: #93c5fd;\n$blue400: #60a5fa;\n$blue500: #3b82f6;\n$blue600: #2563eb;\n$blue700: #1d4ed8;\n$blue800: #1e40af;\n$blue900: #1e3a8a;\n\n$violet050: #f5f3ff;\n$violet100: #ede9fe;\n$violet200: #ddd6fe;\n$violet300: #c4b5fd;\n$violet400: #a78bfa;\n$violet500: #8b5cf6;\n$violet600: #7c3aed;\n$violet700: #6d28d9;\n$violet800: #5b21b6;\n$violet900: #4c1d95;\n\n$pink050: #fdf2f8;\n$pink100: #fce7f3;\n$pink200: #fbcfe8;\n$pink300: #f9a8d4;\n$pink400: #f472b6;\n$pink500: #ec4899;\n$pink600: #db2777;\n$pink700: #be185d;\n$pink800: #9d174d;\n$pink900: #831843;\n\n// submit button colors\n$primaryColor: $red600;\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: $textColor;\n$menuOptionActiveBackgroundColor: $grey050;\n\n// hairline colors\n$hairlineColor: color.adjust($grey800, $alpha: -0.9);\n$mediumHairlineColor: color.adjust($grey600, $alpha: -0.75);\n$darkHairlineColor: color.adjust($grey400, $alpha: -0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing:\n 0 0 0 1px $lightFocusColor,\n 0 0 0 3px color.adjust($lightFocusColor, $alpha: -0.3);\n$mediumFocusRing:\n 0 0 0 1px $mediumFocusColor,\n 0 0 0 3px color.adjust($mediumFocusColor, $alpha: -0.3);\n$darkFocusRing:\n 0 0 0 1px $darkFocusColor,\n 0 0 0 3px color.adjust($darkFocusColor, $alpha: -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\n@mixin sans-serif-font {\n font-family:\n system-ui,\n BlinkMacSystemFont,\n -apple-system,\n 'Segoe UI',\n 'Roboto',\n 'Oxygen',\n 'Ubuntu',\n 'Cantarell',\n 'Fira Sans',\n 'Droid Sans',\n 'Helvetica Neue',\n sans-serif;\n}\n\n@mixin fixed-width-font($size: 0.9em) {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n monospace;\n font-size: $size !important;\n}\n\n@function toRem($values...) {\n @warn \"torem mixin is deprecated. Use calc($value / 16 * 1rem) instead.\";\n $max: list.length($values);\n $remValues: '';\n\n @for $i from 1 through $max {\n $remValues: #{$remValues + calc(list.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 @warn \"fontsize mixin is deprecated. Use CSS values instead.\";\n font-size: toRem($size);\n}\n\n// Other\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: never;\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\n@mixin angle($dir: down, $color: currentColor, $width: calc(2rem / 16)) {\n display: block;\n content: '';\n font-size: 0;\n width: calc(7rem / 16);\n height: calc(7rem / 16);\n border: solid $color;\n border-width: 0 $width $width 0;\n opacity: 0.8;\n position: relative;\n\n @if $dir == up {\n transform: rotate(225deg);\n inset-block-start: 2px;\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 color.adjust($grey900, $alpha: -0.8);\n}\n\n@mixin pane {\n background: var(--pane-bg);\n box-shadow: var(--pane-shadow);\n\n &:focus {\n box-shadow: var(--focus-ring);\n }\n}\n\n@mixin modal {\n border: var(--modal-border);\n border-radius: var(--modal-border-radius);\n background-color: var(--modal-bg);\n box-shadow: var(--modal-shadow) !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}\n\n@mixin light-focus-ring() {\n @warn \"light-focus-ring mixin is deprecated. Use CSS variables instead.\";\n --focus-ring: var(--focus-ring-light);\n}\n\n@mixin dark-btn-light-bg-focus-ring() {\n @warn \"dark-btn-light-bg-focus-ring is deprecated. Use CSS variables instead.\";\n --focus-ring: var(--focus-ring-outset);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n @warn \"custom-color-focus-ring mixin is deprecated. Use CSS variables instead.\";\n\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 @warn \"left mixin is deprecated. Use inset-inline-start instead.\";\n inset-inline-start: $left;\n}\n\n@mixin right($right) {\n @warn \"right mixin is deprecated. Use inset-inline-end instead.\";\n inset-inline-end: $right;\n}\n\n@mixin alignleft {\n @warn \"alignleft mixin is deprecated. Use text-align: start instead.\";\n text-align: start;\n}\n\n@mixin alignright {\n @warn \"alignright mixin is deprecated. Use text-align: end instead.\";\n text-align: end;\n}\n\n@mixin border-left($params...) {\n @warn \"border-left mixin is deprecated. Use border-inline-start instead.\";\n border-inline-start: $params;\n}\n\n@mixin border-right($params...) {\n @warn \"border-right mixin is deprecated. Use border-inline-end instead.\";\n border-inline-end: $params;\n}\n\n@mixin border-left-width($param) {\n @warn \"border-left-width mixin is deprecated. Use border-inline-start-width instead.\";\n border-inline-start-width: $param;\n}\n\n@mixin border-right-width($param) {\n @warn \"border-right-width mixin is deprecated. Use border-inline-end-width instead.\";\n border-inline-end-width: $param;\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n @warn \"border-radius mixin is deprecated. Use logical border properties instead.\";\n border-start-start-radius: $tl;\n border-start-end-radius: $tr;\n border-end-end-radius: $br;\n border-end-start-radius: $bl;\n}\n\n@mixin border-top-left-radius($params...) {\n @warn \"border-top-left-radius mixin is deprecated. Use border-start-start-radius instead.\";\n border-start-start-radius: $params;\n}\n\n@mixin border-top-right-radius($params...) {\n @warn \"border-top-right-radius mixin is deprecated. Use border-end-start-radius instead.\";\n border-start-end-radius: $params;\n}\n\n@mixin border-bottom-left-radius($params...) {\n @warn \"border-bottom-left-radius mixin is deprecated. Use border-start-end-radius instead.\";\n border-start-end-radius: $params;\n}\n\n@mixin border-bottom-right-radius($params...) {\n @warn \"border-bottom-right-radius mixin is deprecated. Use border-end-end-radius instead.\";\n border-end-end-radius: $params;\n}\n\n@mixin floatleft {\n @warn \"floatleft mixin is deprecated. Use float: inline-start instead.\";\n float: inline-start;\n}\n\n@mixin floatright {\n @warn \"floatright mixin is deprecated. Use float: inline-end instead.\";\n float: inline-end;\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n @warn \"margin mixin is deprecated. Use logical margin properties instead.\";\n margin-block: $t $b string.unquote($important);\n margin-inline: $l $r string.unquote($important);\n}\n\n@mixin margin-left($margin...) {\n @warn \"margin-left mixin is deprecated. Use margin-inline-start instead.\";\n margin-inline-start: $margin;\n}\n\n@mixin margin-right($margin...) {\n @warn \"margin-left mixin is deprecated. Use margin-inline-end instead.\";\n margin-inline-end: $margin;\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n @warn \"padding mixin is deprecated. Use padding logical properties instead.\";\n padding-block: $t $b string.unquote($important);\n padding-inline: $l $r string.unquote($important);\n}\n\n@mixin padding-left($padding...) {\n @warn \"padding-left mixin is deprecated. Use padding-inline-start properties instead.\";\n padding-inline-start: $padding;\n}\n\n@mixin padding-right($padding...) {\n @warn \"padding-right mixin is deprecated. Use padding-inline-end properties instead.\";\n padding-inline-end: $padding;\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: color.adjust($grey200, $lightness: -5%);\n }\n\n &:active,\n &.active,\n &[aria-expanded='true'] {\n background-color: color.adjust($grey200, $lightness: -10%);\n }\n }\n\n .text {\n background-color: $grey200;\n\n &:focus {\n background-color: color.adjust($grey200, $lightness: -5%);\n }\n }\n}\n\n@mixin header-btn {\n width: calc(30rem / 16);\n height: calc(30rem / 16);\n min-height: auto;\n padding-left: 0;\n padding-right: 0;\n\n &:not(:hover):not(:active):not(.active):not([aria-expanded='true']) {\n background-color: transparent;\n }\n &:not(:active):not(.active):not([aria-expanded='true']):hover {\n background-color: color.adjust($grey300, $alpha: -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:\n 0 0 0 1px color.adjust($grey900, $alpha: -0.9),\n 0 5px 20px color.adjust($grey900, $alpha: -0.75);\n}\n\n@mixin menu-item-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-item-active-styles {\n color: var(--white) !important;\n --fg-subtle: rgba(255, 255, 255, 0.8);\n --light-text-color: rgba(255, 255, 255, 0.8);\n background-color: var(--bg-selection-dark);\n\n svg {\n @include svg-mask(var(--white));\n }\n}\n\n@mixin disclosure-link-hover-styles {\n color: $menuOptionColor;\n background-color: $grey050;\n}\n\n@mixin input-styles {\n border-radius: var(--input-border-radius);\n border: var(--input-border);\n background: var(--input-bg);\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 inset-block-start: calc(50% - 5px);\n inset-inline-end: 9px;\n user-select: none;\n pointer-events: none;\n color: var(--ui-control-color);\n}\n\n@mixin select-input-styles {\n display: block;\n position: relative;\n max-width: 100%;\n border: none;\n padding-block: 7px;\n padding-inline: 10px 22px;\n font-size: 14px;\n line-height: 20px;\n color: $textColor;\n background-color: var(--button-bg);\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-hovered-styles {\n outline-color: transparent;\n background-color: var(--button-bg--hover);\n}\n\n@mixin select-input-focused-styles {\n outline-color: transparent;\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// https://tailwindcss.com/docs/screen-readers#undoing-screen-reader-only-elements\n@mixin visually-hidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n@mixin not-visually-hidden {\n position: static;\n width: auto;\n height: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n clip: auto;\n white-space: normal;\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 padding-inline-start: 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 inset-inline-end: 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 border-inline-start: 4px solid $hairlineColor;\n }\n\n &.note {\n position: relative;\n border-radius: 4px;\n padding: 1em;\n padding-inline-start: 50px;\n border: 1px solid;\n\n &.dismissible {\n padding-inline-end: 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 inset-inline-start: 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 #{color.adjust($grey300, $alpha: -0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 135deg,\n #{color.adjust($grey300, $alpha: -0.75)} 25%,\n transparent 25%\n ),\n linear-gradient(\n 45deg,\n transparent 75%,\n #{color.adjust($grey300, $alpha: -0.75)} 75%\n ),\n linear-gradient(\n 135deg,\n transparent 75%,\n #{color.adjust($grey300, $alpha: -0.75)} 75%\n );\n background-size: $size $size;\n background-position:\n 0 0,\n $halfSize 0,\n $halfSize -#{$halfSize},\n 0 $halfSize;\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/packages/craftcms-asset-bundles/bundles/installer/dist/install.js b/packages/craftcms-asset-bundles/bundles/installer/dist/install.js deleted file mode 100644 index 8e5636856cb..00000000000 --- a/packages/craftcms-asset-bundles/bundles/installer/dist/install.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){var e={54: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:a}).insertAfter(n):e("

",{text:null!==(s=null==t||null===(i=t.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.message)&&void 0!==s?s:"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").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("