diff --git a/.storybook/main.ts b/.storybook/main.ts index e7fc48c2c03..3dcaaae08ba 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -32,7 +32,7 @@ const config: StorybookConfig = { viteFinal(config) { // Storybook's vue3-vite framework adds its own Vue plugin with default options. // We need to configure `isCustomElement` so Vue treats `craft-*` tags as web - // components (from @craftcms/cp) rather than trying to resolve them as Vue + // components (from @craftcms/ui) rather than trying to resolve them as Vue // components. Since Vite's mergeConfig doesn't deep-merge plugin options, // we remove Storybook's Vue plugin and add our own with the correct config. const filteredPlugins = (config.plugins || []).flat().filter((plugin) => { diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 8194479ba14..a2ed9d3e6ed 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,7 +1,7 @@ import type {Preview} from '@storybook/vue3'; import {setup} from '@storybook/vue3'; import {withThemeByDataAttribute} from '@storybook/addon-themes'; -import '@craftcms/cp'; +import '@craftcms/ui'; import '../resources/css/cp.css'; import './preview.css'; import {installInertiaMock, setPageProps} from './inertia-mock'; diff --git a/package-lock.json b/package-lock.json index ec6d11263d8..10964edb273 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,8 @@ "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.8.1", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0", - "@craftcms/cp": "file:packages/craftcms-cp", "@craftcms/graphiql": "file:packages/craftcms-graphiql", + "@craftcms/ui": "file:packages/craftcms-ui", "@headlessui/vue": "^1.7.23", "@inertiajs/vite": "^3.0.3", "@inertiajs/vue3": "^3.0.3", @@ -54,6 +54,7 @@ "typescript": "^6.0.3", "typescript-eslint": "^8.60.0", "vite": "^8.0.10", + "vitest": "^4.1.8", "vue-tsc": "^3.2.7" }, "engines": { @@ -255,19 +256,6 @@ "@babel/runtime": "^7.0.0" } }, - "node_modules/@awesome.me/kit-ddaed3f5c5": { - "version": "1.0.74", - "resolved": "https://npm.fontawesome.com/@awesome.me/kit-ddaed3f5c5/-/kit-ddaed3f5c5-1.0.74.tgz", - "integrity": "sha512-/9WEaBdZWJhQPuSW9Kw2XBgit5DI5QxO4tJpxbNz7uUE09kN2+NySWx2NGc5riu36YZVPtAlYiRnWW4A1SSQkQ==", - "license": "UNLICENSED", - "optional": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "^6.7.2" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@awesome.me/webawesome": { "version": "3.6.0", "dev": true, @@ -594,8 +582,6 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -603,8 +589,6 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -642,8 +626,6 @@ }, "node_modules/@babel/parser": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.7" @@ -1837,8 +1819,6 @@ }, "node_modules/@babel/types": { "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.29.7", @@ -1924,10 +1904,6 @@ "resolved": "packages/craftcms-browserslist-config", "link": true }, - "node_modules/@craftcms/cp": { - "resolved": "packages/craftcms-cp", - "link": true - }, "node_modules/@craftcms/garnish": { "resolved": "packages/craftcms-garnish", "link": true @@ -1948,6 +1924,10 @@ "resolved": "packages/craftcms-sass", "link": true }, + "node_modules/@craftcms/ui": { + "resolved": "packages/craftcms-ui", + "link": true + }, "node_modules/@craftcms/vue": { "resolved": "packages/craftcms-vue", "link": true @@ -2843,16 +2823,6 @@ "@formatjs/fast-memoize": "3.1.4" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.7.2", - "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", - "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, "node_modules/@gar/promisify": { "version": "1.1.3", "license": "MIT" @@ -3408,13 +3378,13 @@ } }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", "license": "MIT", "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.1" + "@tybys/wasm-util": "^0.10.3" }, "funding": { "type": "github", @@ -3586,8 +3556,6 @@ }, "node_modules/@oxc-parser/binding-darwin-arm64": { "version": "0.127.0", - "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.127.0.tgz", - "integrity": "sha512-obCE8B7ISKkJidjlhv9xRGJPOSDG2Yu6PRga9Ruaz35uintHxbp1Ki/Yc71wx4rj3Edrm0a1kzG1TAwit0wFpg==", "cpu": [ "arm64" ], @@ -3671,6 +3639,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3687,6 +3658,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3703,6 +3677,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3719,6 +3696,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3735,6 +3715,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3751,6 +3734,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3767,6 +3753,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3783,6 +3772,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3876,8 +3868,6 @@ }, "node_modules/@oxc-project/types": { "version": "0.127.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz", - "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/Boshen" @@ -3979,6 +3969,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3992,6 +3985,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4005,6 +4001,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4018,6 +4017,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4031,6 +4033,9 @@ "cpu": [ "riscv64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4044,6 +4049,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4057,6 +4065,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4070,6 +4081,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4263,6 +4277,9 @@ "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4283,6 +4300,9 @@ "cpu": [ "arm" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4303,6 +4323,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4323,6 +4346,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -4343,6 +4369,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -4363,6 +4392,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5183,8 +5215,6 @@ }, "node_modules/@rolldown/binding-darwin-arm64": { "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz", - "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==", "cpu": [ "arm64" ], @@ -5252,6 +5282,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5268,6 +5301,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5284,6 +5320,9 @@ "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5300,6 +5339,9 @@ "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5316,6 +5358,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -5332,6 +5377,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -5460,9 +5508,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.0.tgz", - "integrity": "sha512-IPIQ55ythEHkfEd9jMEi32OQ7SxURsGA43JI22lj01OLZNt2NUbJX8YUHxkVWyQ6daHPNn0truF5nSj3DQp6YQ==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz", + "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==", "cpu": [ "arm" ], @@ -5474,9 +5522,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.0.tgz", - "integrity": "sha512-M6s9cr10MibETyo8JsOkq+Lo1+lU6hcvb1MApnUql5qte/5hMEgzlN8/ReIKNfRV8rrqX50W1BX9zoUhC192RA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz", + "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==", "cpu": [ "arm64" ], @@ -5488,9 +5536,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.0.tgz", - "integrity": "sha512-BqCoMoIbn0keKys+dEAdBa70EtOwV1bEsQCUgU9FdiZmmMge/Zk7LlkYGqbrdHR+Frnt0E1FOanly+rlwvvQzw==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz", + "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==", "cpu": [ "arm64" ], @@ -5502,9 +5550,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.0.tgz", - "integrity": "sha512-SIMzST3VFNXDAbeIWDWiFCNM5qncUBDWaEV7NfE7oZbDt2mgfW4MvbKdbYiGOLoM32gbTv608UMd0XktEYSD7w==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz", + "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==", "cpu": [ "x64" ], @@ -5516,9 +5564,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.0.tgz", - "integrity": "sha512-ezjfSQMP7ArdUsbBwbQIfwAlhE84I2iVnzQNCFSveqV42q+BmKlzVpf7mxv5EchLcoWU4y6/heFzVg1F+hodUQ==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz", + "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==", "cpu": [ "arm64" ], @@ -5530,9 +5578,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.0.tgz", - "integrity": "sha512-9+qTWGW9AZRhnUgwtTwzNwcPlL87ngkeN0LA+q1bADvmY9aNvWaF2TFW8BZgnQPYxpDI7+rMVLivcd4V737TAQ==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz", + "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==", "cpu": [ "x64" ], @@ -5544,9 +5592,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.0.tgz", - "integrity": "sha512-T1dMEQhXA/jkJ/jyMIw9IovK8bSUq7A8kLIlvZTb/6YIVsp2zLavr4F3oyllHWo7eIVJRyE5n3tUjQJEbE1IuQ==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz", + "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==", "cpu": [ "arm" ], @@ -5561,9 +5609,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.0.tgz", - "integrity": "sha512-2as0LgT7qQpyceQq6VUJYnumUMUrgGQCWIiDIN9DE0/tglsk6o66uCB4f3djRawAltvfCNLyZZrsqbPA6inCsA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz", + "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==", "cpu": [ "arm" ], @@ -5578,9 +5626,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.0.tgz", - "integrity": "sha512-bVURMg+6eNN9C/yc0aVjooZcwTTtYF4YW3xta5pP0//r3o1V8gXEHXWCndj47w/HhwsFroZrFhR+6uQP5T0n0g==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz", + "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==", "cpu": [ "arm64" ], @@ -5595,9 +5643,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.0.tgz", - "integrity": "sha512-Ful8pM/2yYI83PViWdFdpZhdI8HJ5qsXANe5atypbHDf+KIBBDsZsbyy8hbXnULVvW9NsTh5DHwbcBftyLTfiw==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz", + "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==", "cpu": [ "arm64" ], @@ -5612,9 +5660,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.0.tgz", - "integrity": "sha512-9Gp/DgrkzfUBmNPVTyPTvay+4xEP7M/clXpj3efXBcm6uTIVIgDg4rqUpqKXvLEuFRVuEpSAOkhgNeecvaZ4Cg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz", + "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==", "cpu": [ "loong64" ], @@ -5629,9 +5677,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.0.tgz", - "integrity": "sha512-m9tsJz54LUXkSYM8+8PG81B9IKK5r+2T0clMq4QrS16xFosufU7firBDAZEsDheDs7wTlP7h3++S7lMsU955HA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz", + "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==", "cpu": [ "loong64" ], @@ -5646,9 +5694,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.0.tgz", - "integrity": "sha512-3UvJ5PNVU16aJf6M3tFI24pWzAl2/ynfbyRN3ICyQajK1lSkrnVYNnLz3v04J32qKa0FczJc22zeToc0lr2A3w==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz", + "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==", "cpu": [ "ppc64" ], @@ -5663,9 +5711,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.0.tgz", - "integrity": "sha512-vRWUAbYLGHBZS6Q8Msb2sfnf1fvJf+47t8l/TwOerM2qArzy+IeNMTHrYLHXh95h8MoatPHI5hhSZNs+mGXKPg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz", + "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==", "cpu": [ "ppc64" ], @@ -5680,9 +5728,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.0.tgz", - "integrity": "sha512-c00T5SYENHAt86cfW47URaP3Us5vLC/4QO7GYud1G5VNRffCwwCuBspwqYrriuJB+5m0WFzClCn9wed0FBjKvg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz", + "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==", "cpu": [ "riscv64" ], @@ -5697,9 +5745,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.0.tgz", - "integrity": "sha512-krrCDilhXOwFkSkO3Wm9I/f9H0L92XHHwy2fwxjukxIbh0dem8gZqOW5Y8BsHrpJv5qwlRBV+Wl4ZFyRWhUpwg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz", + "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==", "cpu": [ "riscv64" ], @@ -5714,9 +5762,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.0.tgz", - "integrity": "sha512-7pfYFSTc4/rUC/FtAI0Qp6QthDBCIi6/AuP1xYqFk5vanI6KnL5dWKP60OM/05LOsbwTmIcvr6eXC4CJuJ75IA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz", + "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==", "cpu": [ "s390x" ], @@ -5731,9 +5779,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.0.tgz", - "integrity": "sha512-7SDIalKeIpG0Ifogbbdn58HmSotYMlf23K3dCJEmiVd9Fg36Vmni82iPQec27N3wY4Bvbxftkxz6vSx9OcouTg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz", + "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==", "cpu": [ "x64" ], @@ -5748,9 +5796,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.0.tgz", - "integrity": "sha512-eRZevouTH2i1HeAVLqJuLnt256krQkGY0TN6WsTmsIhuzbh457HuWDMakKwmi0Cjadux983CoSr8Lim2QhUIFw==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz", + "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==", "cpu": [ "x64" ], @@ -5765,9 +5813,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.0.tgz", - "integrity": "sha512-3oVS7FLGa4U1qcvao9ylGxrjXZyUQqR8UwxEcnUEyPX53O/C/mKDZegNXTdHCP+h3e6ta/f1EN38Yif1mmZHYg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz", + "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==", "cpu": [ "x64" ], @@ -5779,9 +5827,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.0.tgz", - "integrity": "sha512-yTB9TgfWj5wHe5QgktAgXTLLot1gvEjl1NiPPAUiCs4oPrIWFl5V4nC3GrkNdj9LaAU4s94nVrGbGOCqUpyWsg==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz", + "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==", "cpu": [ "arm64" ], @@ -5793,9 +5841,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.0.tgz", - "integrity": "sha512-5LOhoaesY3doG1c+ac/2JtgREpKoJr5bUHH8tKY0V8di7+uSV6BwLs2PlR0/yzefGOkR+wE7ZolZphHCsyG5Rw==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz", + "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==", "cpu": [ "arm64" ], @@ -5807,9 +5855,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.0.tgz", - "integrity": "sha512-yYkWHhmbhRTWTnWos5HC4GcPQfjlzzCNbM9e/+GXrLuaBXYA3qSDR9f0Vgufd5S8yX81U8jPKp7ZnAjZFMtRnw==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz", + "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==", "cpu": [ "ia32" ], @@ -5821,9 +5869,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.0.tgz", - "integrity": "sha512-SoTb6lPg25xZlA2ibwQ++ahCCnH+FP0qmEuafMJ4gznZKOlXioKEAeJLgCrqjM98ACziXM9V1amFjICVL4IFoA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz", + "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==", "cpu": [ "x64" ], @@ -5835,9 +5883,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.0.tgz", - "integrity": "sha512-5L+T1fMX4RIEBoZzT0+sQ0PhTS36NULFmMXtl1TZo44TMAROIMHbZufSOjVWt/Y622BtxgxtaNOokbTDvfsrZA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz", + "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==", "cpu": [ "x64" ], @@ -5936,8 +5984,6 @@ }, "node_modules/@storybook/addon-a11y": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.4.1.tgz", - "integrity": "sha512-MGft/IXjJ20a9KbaSVG9bHTAAoanbucKrgEiJJRNqpim8DsXA01+XTdSk17LmiOCB203Rrq9mWgdQ6+79cc8iA==", "dev": true, "license": "MIT", "dependencies": { @@ -5954,8 +6000,6 @@ }, "node_modules/@storybook/addon-docs": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.4.1.tgz", - "integrity": "sha512-IYqUdjoZe4VO2LFZlKL/gwy7DsQSWCq6hX+zc1MBmZo04yycDASk1tte57n9pdlW3ajw9yYMF/+lVBi+xQjyvw==", "dev": true, "license": "MIT", "dependencies": { @@ -5983,8 +6027,6 @@ }, "node_modules/@storybook/addon-themes": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-10.4.1.tgz", - "integrity": "sha512-nxNskZwpgptCUWyci+jiM5IrKY6xSaTpv3xzgkL6NCU+5PyCxyp0Z6jE8NDvew9jolzOC9pBhGJAW26A/jbFqg==", "dev": true, "license": "MIT", "dependencies": { @@ -6000,8 +6042,6 @@ }, "node_modules/@storybook/addon-vitest": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-vitest/-/addon-vitest-10.4.1.tgz", - "integrity": "sha512-ymrX9EOou1x3d21iDhjP3j3XfhOAiflhlPZWKcipULBoJCq/aZPbV68EghzovkJNuGRl9ezMYxbbKxwrMmCmGg==", "dev": true, "license": "MIT", "dependencies": { @@ -6036,8 +6076,6 @@ }, "node_modules/@storybook/builder-vite": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.4.1.tgz", - "integrity": "sha512-/oyQrXoNOqN8SW5hNnYP+I1uvgFxKxWXj/EP6NXYzc5SQwImofgru+D2+6gDhL0+Q//+Hx05DJoQO2omvUJ8bQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6055,8 +6093,6 @@ }, "node_modules/@storybook/csf-plugin": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.4.1.tgz", - "integrity": "sha512-WdPepGBxDGOUDjYd8KxMtcf+us/2PAcnBczl77XtrnxxHNs0jWesxKkiJ9yiuGrge4BPhDeAj6rxjbBoaHxLBA==", "dev": true, "license": "MIT", "dependencies": { @@ -6185,8 +6221,6 @@ }, "node_modules/@storybook/icons": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.2.tgz", - "integrity": "sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", @@ -6195,8 +6229,6 @@ }, "node_modules/@storybook/react-dom-shim": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.4.1.tgz", - "integrity": "sha512-6QFqfDNH4DMrt7yHKRfpqRopsVUc/Az+sXIdJ39IetYnHUxL3nW4NVaPc6uy/8Qi8urzUyEXL/nn7cpSIP2aPQ==", "dev": true, "license": "MIT", "funding": { @@ -6221,8 +6253,6 @@ }, "node_modules/@storybook/vue3": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/vue3/-/vue3-10.4.1.tgz", - "integrity": "sha512-NytbVIfU6x9LO69WrWoxIIFXSmKG5UH4QTBw1heMozZxCLoFVx99HXiq+CQANP0w2Ly8XBALXO6yOf2g+hRMaw==", "dev": true, "license": "MIT", "dependencies": { @@ -6241,8 +6271,6 @@ }, "node_modules/@storybook/vue3-vite": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/vue3-vite/-/vue3-vite-10.4.1.tgz", - "integrity": "sha512-ni4vKb5K7BLBvdbSRo4nVHXxbuPOgVqVH1ODKDy4hvdXDAi/VUvw2L2lsGM5Xo82VR/x72GZEfgJGZpuP9MWxg==", "dev": true, "license": "MIT", "dependencies": { @@ -6276,8 +6304,6 @@ }, "node_modules/@storybook/vue3/node_modules/type-fest": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -6289,8 +6315,6 @@ }, "node_modules/@storybook/web-components": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-10.4.1.tgz", - "integrity": "sha512-bvvIQZK7vdxoVrBmQtbvtNU5ugFF8dETc0l2j58nPUerDHUook8dFNXUiKfK1KmnLsBZ/7KEjPPmk7sEHygvlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6309,8 +6333,6 @@ }, "node_modules/@storybook/web-components-vite": { "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-10.4.1.tgz", - "integrity": "sha512-i66ublYmQNK9zvSgiT7w9zSHCcXh+g7lHWFoxO+QX7riRLMmtk5uOlWna9P7Ny41fkoQ7POKWJAuZ9PLBPl/Ug==", "dev": true, "license": "MIT", "dependencies": { @@ -6460,6 +6482,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6477,6 +6502,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6494,6 +6522,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -6511,6 +6542,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -6740,9 +6774,9 @@ } }, "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", "license": "MIT", "optional": true, "dependencies": { @@ -6920,8 +6954,6 @@ }, "node_modules/@types/jsesc": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==", "dev": true, "license": "MIT" }, @@ -7353,83 +7385,6 @@ "vue": "^3.2.25" } }, - "node_modules/@vitest/browser": { - "version": "4.1.5", - "license": "MIT", - "dependencies": { - "@blazediff/core": "1.9.1", - "@vitest/mocker": "4.1.5", - "@vitest/utils": "4.1.5", - "magic-string": "^0.30.21", - "pngjs": "^7.0.0", - "sirv": "^3.0.2", - "tinyrainbow": "^3.1.0", - "ws": "^8.19.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "4.1.5" - } - }, - "node_modules/@vitest/browser-playwright": { - "version": "4.1.5", - "license": "MIT", - "dependencies": { - "@vitest/browser": "4.1.5", - "@vitest/mocker": "4.1.5", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "playwright": "*", - "vitest": "4.1.5" - }, - "peerDependenciesMeta": { - "playwright": { - "optional": false - } - } - }, - "node_modules/@vitest/browser-playwright/node_modules/tinyrainbow": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@vitest/browser/node_modules/@vitest/pretty-format": { - "version": "4.1.5", - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/browser/node_modules/@vitest/utils": { - "version": "4.1.5", - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.5", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/browser/node_modules/tinyrainbow": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@vitest/expect": { "version": "3.2.4", "license": "MIT", @@ -7445,10 +7400,10 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.5", + "@vitest/spy": "4.1.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -7469,7 +7424,7 @@ } }, "node_modules/@vitest/mocker/node_modules/@vitest/spy": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "funding": { "url": "https://opencollective.com/vitest" @@ -7486,10 +7441,10 @@ } }, "node_modules/@vitest/runner": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/utils": "4.1.5", + "@vitest/utils": "4.1.8", "pathe": "^2.0.3" }, "funding": { @@ -7497,7 +7452,7 @@ } }, "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { "tinyrainbow": "^3.1.0" @@ -7507,10 +7462,10 @@ } }, "node_modules/@vitest/runner/node_modules/@vitest/utils": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", + "@vitest/pretty-format": "4.1.8", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -7526,11 +7481,11 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/pretty-format": "4.1.8", + "@vitest/utils": "4.1.8", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -7539,7 +7494,7 @@ } }, "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { "tinyrainbow": "^3.1.0" @@ -7549,10 +7504,10 @@ } }, "node_modules/@vitest/snapshot/node_modules/@vitest/utils": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", + "@vitest/pretty-format": "4.1.8", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -8143,6 +8098,15 @@ "vue": "^3.5.0" } }, + "node_modules/@wc-toolkit/storybook-helpers": { + "version": "10.3.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "lit": "^2.0.0 || ^3.0.0", + "storybook": ">=10.1.11-0 <11.0.0-0" + } + }, "node_modules/@web/config-loader": { "version": "0.1.3", "dev": true, @@ -8724,27 +8688,23 @@ } }, "node_modules/ast-kit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-3.0.0.tgz", - "integrity": "sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==", + "version": "3.0.0-beta.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^8.0.0", + "@babel/parser": "^8.0.0-beta.4", "estree-walker": "^3.0.3", "pathe": "^2.0.3" }, "engines": { - "node": "^22.18.0 || >=24.11.0" + "node": ">=20.19.0" }, "funding": { "url": "https://github.com/sponsors/sxzz" } }, "node_modules/ast-kit/node_modules/@babel/helper-string-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", - "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "version": "8.0.0-rc.6", "dev": true, "license": "MIT", "engines": { @@ -8752,9 +8712,7 @@ } }, "node_modules/ast-kit/node_modules/@babel/helper-validator-identifier": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0.tgz", - "integrity": "sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==", + "version": "8.0.0-rc.6", "dev": true, "license": "MIT", "engines": { @@ -8762,13 +8720,11 @@ } }, "node_modules/ast-kit/node_modules/@babel/parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz", - "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==", + "version": "8.0.0-rc.6", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^8.0.0" + "@babel/types": "^8.0.0-rc.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -8778,14 +8734,12 @@ } }, "node_modules/ast-kit/node_modules/@babel/types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz", - "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==", + "version": "8.0.0-rc.6", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^8.0.0", - "@babel/helper-validator-identifier": "^8.0.0" + "@babel/helper-string-parser": "^8.0.0-rc.6", + "@babel/helper-validator-identifier": "^8.0.0-rc.6" }, "engines": { "node": "^22.18.0 || >=24.11.0" @@ -8802,9 +8756,7 @@ } }, "node_modules/ast-v8-to-istanbul": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz", - "integrity": "sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==", + "version": "1.0.3", "dev": true, "license": "MIT", "dependencies": { @@ -8815,8 +8767,6 @@ }, "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", "dev": true, "license": "MIT" }, @@ -8916,9 +8866,9 @@ } }, "node_modules/axios": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", - "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", @@ -9273,8 +9223,6 @@ }, "node_modules/bundle-name": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" @@ -9295,8 +9243,6 @@ }, "node_modules/cac": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cac/-/cac-7.0.0.tgz", - "integrity": "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==", "dev": true, "license": "MIT", "engines": { @@ -11141,8 +11087,6 @@ }, "node_modules/default-browser": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", @@ -11157,8 +11101,6 @@ }, "node_modules/default-browser-id": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", "engines": { "node": ">=18" @@ -13323,9 +13265,7 @@ } }, "node_modules/globby": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.1.tgz", - "integrity": "sha512-JmsqJalahxxgW8V2ecSQ2G7UjPlI9cpKdrkG9KoNiXhd/YslXOTEB0cViENWUznuovIuNT+FkMbraDGjr4FCUg==", + "version": "16.2.0", "dev": true, "license": "MIT", "dependencies": { @@ -13654,8 +13594,6 @@ }, "node_modules/hookable": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.1.tgz", - "integrity": "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==", "dev": true, "license": "MIT" }, @@ -14505,8 +14443,6 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "license": "MIT", "dependencies": { "is-docker": "^3.0.0" @@ -14523,8 +14459,6 @@ }, "node_modules/is-inside-container/node_modules/is-docker": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", "bin": { "is-docker": "cli.js" @@ -15413,6 +15347,9 @@ "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -15433,6 +15370,9 @@ "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -15453,6 +15393,9 @@ "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -15473,6 +15416,9 @@ "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "MPL-2.0", "optional": true, "os": [ @@ -15853,8 +15799,6 @@ }, "node_modules/magicast": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz", - "integrity": "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==", "dev": true, "license": "MIT", "dependencies": { @@ -15944,6 +15888,8 @@ }, "node_modules/markdown-actions": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/markdown-actions/-/markdown-actions-1.1.2.tgz", + "integrity": "sha512-U7rmgTvUP3neh3XaVblikslRWWhfpzF2SiI1A6z3az7IpYuAiVvdqtZrFCArV22TSj2Ht+r0ResohlsJ8/ntbw==", "license": "MIT" }, "node_modules/markdown-it": { @@ -17125,8 +17071,6 @@ }, "node_modules/oxc-parser": { "version": "0.127.0", - "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.127.0.tgz", - "integrity": "sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==", "license": "MIT", "dependencies": { "@oxc-project/types": "^0.127.0" @@ -19336,8 +19280,6 @@ }, "node_modules/rolldown": { "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz", - "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==", "license": "MIT", "dependencies": { "@oxc-project/types": "=0.127.0", @@ -19369,8 +19311,6 @@ }, "node_modules/rolldown-plugin-dts": { "version": "0.23.2", - "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.23.2.tgz", - "integrity": "sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -19415,8 +19355,6 @@ }, "node_modules/rolldown-plugin-dts/node_modules/@babel/generator": { "version": "8.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0-rc.3.tgz", - "integrity": "sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==", "dev": true, "license": "MIT", "dependencies": { @@ -19432,9 +19370,7 @@ } }, "node_modules/rolldown-plugin-dts/node_modules/@babel/helper-string-parser": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz", - "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==", + "version": "8.0.0-rc.6", "dev": true, "license": "MIT", "engines": { @@ -19443,8 +19379,6 @@ }, "node_modules/rolldown-plugin-dts/node_modules/@babel/helper-validator-identifier": { "version": "8.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.0-rc.3.tgz", - "integrity": "sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==", "dev": true, "license": "MIT", "engines": { @@ -19453,8 +19387,6 @@ }, "node_modules/rolldown-plugin-dts/node_modules/@babel/parser": { "version": "8.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0-rc.3.tgz", - "integrity": "sha512-B20dvP3MfNc/XS5KKCHy/oyWl5IA6Cn9YjXRdDlCjNmUFrjvLXMNUfQq/QUy9fnG2gYkKKcrto2YaF9B32ToOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -19469,8 +19401,6 @@ }, "node_modules/rolldown-plugin-dts/node_modules/@babel/types": { "version": "8.0.0-rc.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0-rc.3.tgz", - "integrity": "sha512-mOm5ZrYmphGfqVWoH5YYMTITb3cDXsFgmvFlvkvWDMsR9X8RFnt7a0Wb6yNIdoFsiMO9WjYLq+U/FMtqIYAF8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -19483,14 +19413,12 @@ }, "node_modules/rolldown/node_modules/@rolldown/pluginutils": { "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz", - "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==", "license": "MIT" }, "node_modules/rollup": { - "version": "4.62.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.0.tgz", - "integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==", + "version": "4.62.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz", + "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==", "dev": true, "license": "MIT", "dependencies": { @@ -19504,31 +19432,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.62.0", - "@rollup/rollup-android-arm64": "4.62.0", - "@rollup/rollup-darwin-arm64": "4.62.0", - "@rollup/rollup-darwin-x64": "4.62.0", - "@rollup/rollup-freebsd-arm64": "4.62.0", - "@rollup/rollup-freebsd-x64": "4.62.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.62.0", - "@rollup/rollup-linux-arm-musleabihf": "4.62.0", - "@rollup/rollup-linux-arm64-gnu": "4.62.0", - "@rollup/rollup-linux-arm64-musl": "4.62.0", - "@rollup/rollup-linux-loong64-gnu": "4.62.0", - "@rollup/rollup-linux-loong64-musl": "4.62.0", - "@rollup/rollup-linux-ppc64-gnu": "4.62.0", - "@rollup/rollup-linux-ppc64-musl": "4.62.0", - "@rollup/rollup-linux-riscv64-gnu": "4.62.0", - "@rollup/rollup-linux-riscv64-musl": "4.62.0", - "@rollup/rollup-linux-s390x-gnu": "4.62.0", - "@rollup/rollup-linux-x64-gnu": "4.62.0", - "@rollup/rollup-linux-x64-musl": "4.62.0", - "@rollup/rollup-openbsd-x64": "4.62.0", - "@rollup/rollup-openharmony-arm64": "4.62.0", - "@rollup/rollup-win32-arm64-msvc": "4.62.0", - "@rollup/rollup-win32-ia32-msvc": "4.62.0", - "@rollup/rollup-win32-x64-gnu": "4.62.0", - "@rollup/rollup-win32-x64-msvc": "4.62.0", + "@rollup/rollup-android-arm-eabi": "4.62.2", + "@rollup/rollup-android-arm64": "4.62.2", + "@rollup/rollup-darwin-arm64": "4.62.2", + "@rollup/rollup-darwin-x64": "4.62.2", + "@rollup/rollup-freebsd-arm64": "4.62.2", + "@rollup/rollup-freebsd-x64": "4.62.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", + "@rollup/rollup-linux-arm-musleabihf": "4.62.2", + "@rollup/rollup-linux-arm64-gnu": "4.62.2", + "@rollup/rollup-linux-arm64-musl": "4.62.2", + "@rollup/rollup-linux-loong64-gnu": "4.62.2", + "@rollup/rollup-linux-loong64-musl": "4.62.2", + "@rollup/rollup-linux-ppc64-gnu": "4.62.2", + "@rollup/rollup-linux-ppc64-musl": "4.62.2", + "@rollup/rollup-linux-riscv64-gnu": "4.62.2", + "@rollup/rollup-linux-riscv64-musl": "4.62.2", + "@rollup/rollup-linux-s390x-gnu": "4.62.2", + "@rollup/rollup-linux-x64-gnu": "4.62.2", + "@rollup/rollup-linux-x64-musl": "4.62.2", + "@rollup/rollup-openbsd-x64": "4.62.2", + "@rollup/rollup-openharmony-arm64": "4.62.2", + "@rollup/rollup-win32-arm64-msvc": "4.62.2", + "@rollup/rollup-win32-ia32-msvc": "4.62.2", + "@rollup/rollup-win32-x64-gnu": "4.62.2", + "@rollup/rollup-win32-x64-msvc": "4.62.2", "fsevents": "~2.3.2" } }, @@ -19554,8 +19482,6 @@ }, "node_modules/run-applescript": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "license": "MIT", "engines": { "node": ">=18" @@ -20453,8 +20379,6 @@ }, "node_modules/storybook/node_modules/define-lazy-prop": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "license": "MIT", "engines": { "node": ">=12" @@ -20465,8 +20389,6 @@ }, "node_modules/storybook/node_modules/open": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "license": "MIT", "dependencies": { "default-browser": "^5.2.1", @@ -20483,8 +20405,6 @@ }, "node_modules/storybook/node_modules/semver": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -22019,8 +21939,6 @@ }, "node_modules/unplugin": { "version": "2.3.11", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", - "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", "dev": true, "license": "MIT", "dependencies": { @@ -22426,16 +22344,16 @@ } }, "node_modules/vitest": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.5", - "@vitest/mocker": "4.1.5", - "@vitest/pretty-format": "4.1.5", - "@vitest/runner": "4.1.5", - "@vitest/snapshot": "4.1.5", - "@vitest/spy": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/expect": "4.1.8", + "@vitest/mocker": "4.1.8", + "@vitest/pretty-format": "4.1.8", + "@vitest/runner": "4.1.8", + "@vitest/snapshot": "4.1.8", + "@vitest/spy": "4.1.8", + "@vitest/utils": "4.1.8", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", @@ -22463,12 +22381,12 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.5", - "@vitest/browser-preview": "4.1.5", - "@vitest/browser-webdriverio": "4.1.5", - "@vitest/coverage-istanbul": "4.1.5", - "@vitest/coverage-v8": "4.1.5", - "@vitest/ui": "4.1.5", + "@vitest/browser-playwright": "4.1.8", + "@vitest/browser-preview": "4.1.8", + "@vitest/browser-webdriverio": "4.1.8", + "@vitest/coverage-istanbul": "4.1.8", + "@vitest/coverage-v8": "4.1.8", + "@vitest/ui": "4.1.8", "happy-dom": "*", "jsdom": "*", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -22513,13 +22431,13 @@ } }, "node_modules/vitest/node_modules/@vitest/expect": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.5", - "@vitest/utils": "4.1.5", + "@vitest/spy": "4.1.8", + "@vitest/utils": "4.1.8", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, @@ -22528,7 +22446,7 @@ } }, "node_modules/vitest/node_modules/@vitest/pretty-format": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { "tinyrainbow": "^3.1.0" @@ -22538,17 +22456,17 @@ } }, "node_modules/vitest/node_modules/@vitest/spy": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/vitest/node_modules/@vitest/utils": { - "version": "4.1.5", + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", + "@vitest/pretty-format": "4.1.8", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, @@ -22700,8 +22618,6 @@ }, "node_modules/vue-component-type-helpers": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.3.2.tgz", - "integrity": "sha512-l4Z2Y34m7nFMlx8vrslJaVtXxUpzgDMSESC7TakG/c5kwjYT/do+E0NcT2/vWDzaoIhsShg/2OKwX7Q4nbzC0g==", "dev": true, "license": "MIT" }, @@ -23751,8 +23667,6 @@ }, "node_modules/wsl-utils": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "license": "MIT", "dependencies": { "is-wsl": "^3.1.0" @@ -23766,8 +23680,6 @@ }, "node_modules/wsl-utils/node_modules/is-wsl": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" @@ -23958,75 +23870,43 @@ "version": "2.0.0", "license": "MIT" }, - "packages/craftcms-cp": { - "name": "@craftcms/cp", + "packages/craftcms-garnish": { + "name": "@craftcms/garnish", "version": "0.0.0", "license": "MIT", - "dependencies": { - "@chromatic-com/storybook": "^5.1.2", - "@formatjs/intl-durationformat": "^0.10.8", - "@github/relative-time-element": "^5.0.0", - "@simplewebauthn/browser": "^13.3.0", - "@vitest/browser-playwright": "^4.1.5", - "axios": "^1.17.0" - }, "devDependencies": { - "@adobe/leonardo-contrast-colors": "^1.1.0", - "@arethetypeswrong/cli": "^0.18.2", - "@awesome.me/webawesome": "^3.6.0", - "@custom-elements-manifest/analyzer": "^0.11.0", - "@lion/ui": "^0.16.1", - "@shoelace-style/shoelace": "^2.20.1", "@storybook/addon-a11y": "^10.4.1", "@storybook/addon-docs": "^10.4.1", "@storybook/addon-themes": "^10.4.1", - "@storybook/addon-vitest": "^10.4.1", - "@storybook/web-components-vite": "^10.4.1", + "@storybook/html-vite": "^10.4.1", "@total-typescript/tsconfig": "^1.0.4", - "@types/humanize-duration": "^3.27.4", - "@types/jquery": "^4.0.0", "@types/node": "^25.6.0", - "@vitest/browser": "^4.1.5", "@vitest/coverage-v8": "^4.1.5", - "@wc-toolkit/storybook-helpers": "^10.3.0", - "del": "^8.0.1", - "dom-accessibility-api": "^0.7.1", - "esbuild": "^0.28.0", - "globby": "^16.2.0", "happy-dom": "^20.9.0", - "humanize-duration": "^3.33.2", - "lit": "^3.3.2", - "ora": "^9.4.0", - "playwright": "^1.59.1", - "plop": "^4.0.5", - "recursive-copy": "^2.0.14", - "rimraf": "^6.1.3", "storybook": "^10.4.1", "tsdown": "^0.21.10", "typescript": "^6.0.3", - "unplugin-dts": "^1.0.0", - "vite-plugin-dts": "^5.0.0", - "vite-tsconfig-paths": "^6.1.1", + "vite": "^7.1.5", "vitest": "^4.1.5" }, "peerDependencies": { - "@awesome.me/webawesome": "^3.0.0", - "@lion/ui": "0.x", - "lit": "3.x" + "jquery": "^3.5.0" + }, + "peerDependenciesMeta": { + "jquery": { + "optional": true + } } }, - "packages/craftcms-cp/node_modules/@types/jquery": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "packages/craftcms-cp/node_modules/@vitest/coverage-v8": { - "version": "4.1.5", + "packages/craftcms-garnish/node_modules/@vitest/coverage-v8": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.10.tgz", + "integrity": "sha512-IM49HmthevbgAO4anp1hwtoT9wYe59w0LR00gr+eagHE+ZJ5lK4sLPeO0ubgoJcwLk6dehU3R24N+FbEEKDc8g==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.1.5", + "@vitest/utils": "4.1.10", "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", @@ -24040,8 +23920,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "4.1.5", - "vitest": "4.1.5" + "@vitest/browser": "4.1.10", + "vitest": "4.1.10" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -24049,1931 +23929,1507 @@ } } }, - "packages/craftcms-cp/node_modules/@vitest/pretty-format": { - "version": "4.1.5", + "packages/craftcms-garnish/node_modules/@vitest/expect": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.10.tgz", + "integrity": "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==", "dev": true, "license": "MIT", "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "chai": "^6.2.2", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/@vitest/utils": { - "version": "4.1.5", + "packages/craftcms-garnish/node_modules/@vitest/pretty-format": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.10.tgz", + "integrity": "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.5", - "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/@wc-toolkit/storybook-helpers": { - "version": "10.3.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "lit": "^2.0.0 || ^3.0.0", - "storybook": ">=10.1.11-0 <11.0.0-0" - } - }, - "packages/craftcms-cp/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "packages/craftcms-cp/node_modules/brace-expansion": { - "version": "5.0.5", + "packages/craftcms-garnish/node_modules/@vitest/runner": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.10.tgz", + "integrity": "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "packages/craftcms-cp/node_modules/chalk": { - "version": "5.6.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "@vitest/utils": "4.1.10", + "pathe": "^2.0.3" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/cli-spinners": { - "version": "3.3.0", + "packages/craftcms-garnish/node_modules/@vitest/snapshot": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.10.tgz", + "integrity": "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18.20" + "dependencies": { + "@vitest/pretty-format": "4.1.10", + "@vitest/utils": "4.1.10", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/del": { - "version": "8.0.1", + "packages/craftcms-garnish/node_modules/@vitest/spy": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.10.tgz", + "integrity": "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==", "dev": true, "license": "MIT", - "dependencies": { - "globby": "^14.0.2", - "is-glob": "^4.0.3", - "is-path-cwd": "^3.0.0", - "is-path-inside": "^4.0.0", - "p-map": "^7.0.2", - "presentable-error": "^0.0.1", - "slash": "^5.1.0" - }, - "engines": { - "node": ">=18" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/dom-accessibility-api": { - "version": "0.7.1", - "dev": true, - "license": "MIT" - }, - "packages/craftcms-cp/node_modules/glob": { - "version": "13.0.6", + "packages/craftcms-garnish/node_modules/@vitest/utils": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.10.tgz", + "integrity": "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "@vitest/pretty-format": "4.1.10", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-cp/node_modules/globby": { - "version": "14.1.0", + "packages/craftcms-garnish/node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, "engines": { "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-cp/node_modules/is-interactive": { - "version": "2.0.0", + "packages/craftcms-garnish/node_modules/es-module-lexer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.0.tgz", + "integrity": "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "packages/craftcms-cp/node_modules/is-path-cwd": { - "version": "3.0.0", + "packages/craftcms-garnish/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "packages/craftcms-cp/node_modules/is-path-inside": { - "version": "4.0.0", + "packages/craftcms-garnish/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "packages/craftcms-cp/node_modules/is-unicode-supported": { - "version": "2.1.0", + "packages/craftcms-garnish/node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "packages/craftcms-cp/node_modules/log-symbols": { - "version": "7.0.1", + "packages/craftcms-garnish/node_modules/tsdown": { + "version": "0.21.10", + "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.21.10.tgz", + "integrity": "sha512-3wk73yBhZe/wX7REqSdivNQ84TDs1mJ+IlnzrrEREP70xlJ/AEIzqaI04l/TzMKVIdkTdC3CPaADn2Lk/0SkdA==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" + "ansis": "^4.2.0", + "cac": "^7.0.0", + "defu": "^6.1.7", + "empathic": "^2.0.0", + "hookable": "^6.1.1", + "import-without-cache": "^0.3.3", + "obug": "^2.1.1", + "picomatch": "^4.0.4", + "rolldown": "1.0.0-rc.17", + "rolldown-plugin-dts": "^0.23.2", + "semver": "^7.7.4", + "tinyexec": "^1.1.1", + "tinyglobby": "^0.2.16", + "tree-kill": "^1.2.2", + "unconfig-core": "^7.5.0", + "unrun": "^0.2.37" + }, + "bin": { + "tsdown": "dist/run.mjs" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/craftcms-cp/node_modules/minimatch": { - "version": "10.2.5", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" + "url": "https://github.com/sponsors/sxzz" }, - "engines": { - "node": "18 || 20 || >=22" + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "@tsdown/css": "0.21.10", + "@tsdown/exe": "0.21.10", + "@vitejs/devtools": "*", + "publint": "^0.3.0", + "typescript": "^5.0.0 || ^6.0.0", + "unplugin-unused": "^0.5.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, + "@tsdown/css": { + "optional": true + }, + "@tsdown/exe": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "publint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-unused": { + "optional": true + } } }, - "packages/craftcms-cp/node_modules/ora": { - "version": "9.4.0", + "packages/craftcms-garnish/node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.3.2", - "string-width": "^8.1.0" + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || >=22.12.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/craftcms-cp/node_modules/p-map": { - "version": "7.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/craftcms-cp/node_modules/path-scurry": { - "version": "2.0.2", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/craftcms-cp/node_modules/path-type": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/craftcms-cp/node_modules/rimraf": { - "version": "6.1.3", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.3", - "package-json-from-dist": "^1.0.1" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/craftcms-cp/node_modules/semver": { - "version": "7.7.4", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "optionalDependencies": { + "fsevents": "~2.3.3" }, - "engines": { - "node": ">=10" - } - }, - "packages/craftcms-cp/node_modules/slash": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/craftcms-cp/node_modules/tinyrainbow": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } } }, - "packages/craftcms-cp/node_modules/tsdown": { - "version": "0.21.10", + "packages/craftcms-garnish/node_modules/vitest": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.10.tgz", + "integrity": "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==", "dev": true, "license": "MIT", "dependencies": { - "ansis": "^4.2.0", - "cac": "^7.0.0", - "defu": "^6.1.7", - "empathic": "^2.0.0", - "hookable": "^6.1.1", - "import-without-cache": "^0.3.3", + "@vitest/expect": "4.1.10", + "@vitest/mocker": "4.1.10", + "@vitest/pretty-format": "4.1.10", + "@vitest/runner": "4.1.10", + "@vitest/snapshot": "4.1.10", + "@vitest/spy": "4.1.10", + "@vitest/utils": "4.1.10", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", "obug": "^2.1.1", - "picomatch": "^4.0.4", - "rolldown": "1.0.0-rc.17", - "rolldown-plugin-dts": "^0.23.2", - "semver": "^7.7.4", - "tinyexec": "^1.1.1", - "tinyglobby": "^0.2.16", - "tree-kill": "^1.2.2", - "unconfig-core": "^7.5.0", - "unrun": "^0.2.37" + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" }, "bin": { - "tsdown": "dist/run.mjs" + "vitest": "vitest.mjs" }, "engines": { - "node": ">=20.19.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { - "url": "https://github.com/sponsors/sxzz" + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@arethetypeswrong/core": "^0.18.1", - "@tsdown/css": "0.21.10", - "@tsdown/exe": "0.21.10", - "@vitejs/devtools": "*", - "publint": "^0.3.0", - "typescript": "^5.0.0 || ^6.0.0", - "unplugin-unused": "^0.5.0" + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.10", + "@vitest/browser-preview": "4.1.10", + "@vitest/browser-webdriverio": "4.1.10", + "@vitest/coverage-istanbul": "4.1.10", + "@vitest/coverage-v8": "4.1.10", + "@vitest/ui": "4.1.10", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "@arethetypeswrong/core": { + "@edge-runtime/vm": { "optional": true }, - "@tsdown/css": { + "@opentelemetry/api": { "optional": true }, - "@tsdown/exe": { + "@types/node": { "optional": true }, - "@vitejs/devtools": { + "@vitest/browser-playwright": { "optional": true }, - "publint": { + "@vitest/browser-preview": { "optional": true }, - "typescript": { + "@vitest/browser-webdriverio": { "optional": true }, - "unplugin-unused": { + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false } } }, - "packages/craftcms-garnish": { - "name": "@craftcms/garnish", - "version": "0.0.0", + "packages/craftcms-garnish/node_modules/vitest/node_modules/@vitest/mocker": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.10.tgz", + "integrity": "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==", + "dev": true, "license": "MIT", - "devDependencies": { - "@storybook/addon-a11y": "^10.4.1", - "@storybook/addon-docs": "^10.4.1", - "@storybook/addon-themes": "^10.4.1", - "@storybook/html-vite": "^10.4.1", - "@total-typescript/tsconfig": "^1.0.4", - "@types/node": "^25.6.0", - "@vitest/coverage-v8": "^4.1.5", - "happy-dom": "^20.9.0", - "storybook": "^10.4.1", - "tsdown": "^0.21.10", - "typescript": "^6.0.3", - "vite": "^7.1.5", - "vitest": "^4.1.5" + "dependencies": { + "@vitest/spy": "4.1.10", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "jquery": "^3.5.0" + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "jquery": { + "msw": { + "optional": true + }, + "vite": { "optional": true } } }, - "packages/craftcms-garnish/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", - "cpu": [ - "ppc64" - ], - "dev": true, + "packages/craftcms-graphiql": { + "name": "@craftcms/graphiql", + "version": "1.0.0", "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "graphiql": "^4.1.0", + "graphql": "^16.10.0", + "graphql-ws": "^6.0.4", + "react": "^19.2.0", + "react-dom": "^19.2.0" + }, + "devDependencies": { + "@craftcms/sass": "file:../craftcms-sass", + "@craftcms/webpack": "file:../craftcms-webpack" + }, "engines": { - "node": ">=18" + "node": ">=20" } }, - "packages/craftcms-garnish/node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "packages/craftcms-legacy": { + "name": "@craftcms/legacy", + "dependencies": { + "@benmajor/jquery-touch-events": "^2.0.3", + "@craftcms/sass": "file:../craftcms-sass", + "@craftcms/ui": "file:../craftcms-ui", + "@craftcms/vue": "file:../craftcms-vue", + "@floating-ui/dom": "^1.7.6", + "@selectize/selectize": "selectize/selectize.js#master", + "@simplewebauthn/browser": "^13.3.0", + "@types/jquery": "^3.5.34", + "accounting": "^0.4.1", + "apexcharts": "^5.10.6", + "axios": "^1.17.0", + "blueimp-file-upload": "^10.32.0", + "codemirror": "^5.65.21", + "d3": "^7.9.0", + "fabric": "^1.7.22", + "htmx.org": "^1.9.12", + "iframe-resizer": "^4.4.5", + "inputmask": "^5.0.9", + "jquery": "^3.7.1", + "jquery-ui": "^1.14.2", + "jquery.payment": "^3.0.0", + "picturefill": "^3.0.3", + "punycode": "^2.3.1", + "swiper": "^8.4.7", + "timepicker": "^1.14.1", + "ttf2woff2": "^5.0.0", + "typescript": "^5.9.3", + "v-tooltip": "^2.1.3", + "velocity-animate": "^1.5.2", + "vue": "^2.7.16", + "vue-autosuggest": "^2.2.0", + "vue-awesome-swiper": "^4.1.1", + "vue-cleave": "^1.2.2", + "vue-lodash": "^1.0.4", + "vue-router": "^3.6.5", + "vuex": "^3.6.2", + "xregexp": "^5.1.2", + "yii2-pjax": "~2.0.8" + }, + "devDependencies": { + "@craftcms/playwright": "file:../craftcms-playwright", + "@craftcms/webpack": "file:../craftcms-webpack", + "@playwright/test": "^1.59.1", + "husky": "^9.1.7", + "lint-staged": "^16.4.0", + "pkg-dir": "^5.0.0", + "prettier": "3.8.3", + "stylelint": "^16.26.1", + "stylelint-config-standard": "^36.0.1", + "stylelint-config-standard-scss": "^13.1.0", + "stylelint-prettier": "^5.0.3", + "stylelint-use-logical-spec": "^5.0.1", + "tailwindcss": "^3.4.19", + "vue-apexcharts": "^1.7.0" + }, "engines": { - "node": ">=18" + "node": ">=20" + }, + "optionalDependencies": { + "@awesome.me/kit-ddaed3f5c5": "^1.0.74" } }, - "packages/craftcms-garnish/node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" } }, - "packages/craftcms-garnish/node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" } }, - "packages/craftcms-garnish/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/@csstools/media-query-list-parser": { + "version": "4.0.3", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "packages/craftcms-garnish/node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", - "cpu": [ - "x64" - ], - "dev": true, + "packages/craftcms-legacy/node_modules/@vue/compiler-sfc": { + "version": "2.7.16", + "dependencies": { + "@babel/parser": "^7.23.5", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "packages/craftcms-legacy/node_modules/@vue/compiler-sfc/node_modules/prettier": { + "version": "2.8.8", "license": "MIT", "optional": true, - "os": [ - "darwin" - ], + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=18" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "packages/craftcms-garnish/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=18" + "node": ">=8" } }, - "packages/craftcms-garnish/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/balanced-match": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "packages/craftcms-legacy/node_modules/chokidar": { + "version": "3.6.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": ">=18" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", - "cpu": [ - "arm" - ], + "packages/craftcms-legacy/node_modules/globby": { + "version": "11.1.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/globby/node_modules/ignore": { + "version": "5.3.2", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">= 4" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", - "cpu": [ - "ia32" - ], + "packages/craftcms-legacy/node_modules/html-tags": { + "version": "3.3.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", - "cpu": [ - "loong64" - ], + "packages/craftcms-legacy/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=8" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", - "cpu": [ - "mips64el" - ], + "packages/craftcms-legacy/node_modules/jiti": { + "version": "1.21.7", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "bin": { + "jiti": "bin/jiti.js" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", - "cpu": [ - "ppc64" - ], + "packages/craftcms-legacy/node_modules/mathml-tag-names": { + "version": "2.1.3", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", - "cpu": [ - "riscv64" - ], + "packages/craftcms-legacy/node_modules/meow": { + "version": "13.2.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", - "cpu": [ - "s390x" - ], + "packages/craftcms-legacy/node_modules/pkg-dir": { + "version": "5.0.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "find-up": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" } }, - "packages/craftcms-garnish/node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/postcss-selector-parser": { + "version": "7.1.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=18" + "node": ">=4" } }, - "packages/craftcms-garnish/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/string-width": { + "version": "4.2.3", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "packages/craftcms-garnish/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "packages/craftcms-garnish/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/stylelint": { + "version": "16.26.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", + "@csstools/selector-specificity": "^5.0.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^11.1.1", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^7.0.5", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.5.6", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^7.1.0", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.2.0", + "svg-tags": "^1.0.0", + "table": "^6.9.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, "engines": { - "node": ">=18" + "node": ">=18.12.0" } }, - "packages/craftcms-garnish/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/stylelint-config-recommended": { + "version": "14.0.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" } }, - "packages/craftcms-garnish/node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "cpu": [ - "arm64" - ], + "packages/craftcms-legacy/node_modules/stylelint-config-recommended-scss": { + "version": "14.1.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], + "dependencies": { + "postcss-scss": "^4.0.9", + "stylelint-config-recommended": "^14.0.1", + "stylelint-scss": "^6.4.0" + }, "engines": { - "node": ">=18" + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^16.6.1" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } } }, - "packages/craftcms-garnish/node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", - "cpu": [ - "x64" - ], + "packages/craftcms-legacy/node_modules/stylelint-config-standard": { + "version": "36.0.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } ], + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^14.0.1" + }, "engines": { - "node": ">=18" + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.1.0" } }, - "packages/craftcms-garnish/node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "packages/craftcms-garnish/node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "packages/craftcms-garnish/node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "packages/craftcms-garnish/node_modules/@vitest/coverage-v8": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.9.tgz", - "integrity": "sha512-G9/lgqibheLVBDRuya45EbsEXTYcWoSG+TLg7i2axuzx0Eq62eXn+aWXyaVdV5vKvFSWd6ywcX8hA7la9Pvu8g==", + "packages/craftcms-legacy/node_modules/stylelint-config-standard-scss": { + "version": "13.1.0", "dev": true, "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.1.9", - "ast-v8-to-istanbul": "^1.0.0", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.2.0", - "magicast": "^0.5.2", - "obug": "^2.1.1", - "std-env": "^4.0.0-rc.1", - "tinyrainbow": "^3.1.0" + "stylelint-config-recommended-scss": "^14.0.0", + "stylelint-config-standard": "^36.0.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "@vitest/browser": "4.1.9", - "vitest": "4.1.9" + "postcss": "^8.3.3", + "stylelint": "^16.3.1" }, "peerDependenciesMeta": { - "@vitest/browser": { + "postcss": { "optional": true } } }, - "packages/craftcms-garnish/node_modules/@vitest/expect": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz", - "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.9", - "@vitest/utils": "4.1.9", - "chai": "^6.2.2", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/craftcms-garnish/node_modules/@vitest/mocker": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz", - "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==", + "packages/craftcms-legacy/node_modules/stylelint-scss": { + "version": "6.14.0", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.1.9", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" + "css-tree": "^3.0.1", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.37.0", + "mdn-data": "^2.25.0", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^7.1.1", + "postcss-value-parser": "^4.2.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=18.12.0" }, "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } + "stylelint": "^16.8.2" } }, - "packages/craftcms-garnish/node_modules/@vitest/pretty-format": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz", - "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==", + "packages/craftcms-legacy/node_modules/tailwindcss": { + "version": "3.4.19", "dev": true, "license": "MIT", "dependencies": { - "tinyrainbow": "^3.1.0" + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/craftcms-garnish/node_modules/@vitest/runner": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz", - "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.9", - "pathe": "^2.0.3" + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=14.0.0" } }, - "packages/craftcms-garnish/node_modules/@vitest/snapshot": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz", - "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==", + "packages/craftcms-legacy/node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@vitest/pretty-format": "4.1.9", - "@vitest/utils": "4.1.9", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" + "is-glob": "^4.0.3" }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/craftcms-garnish/node_modules/@vitest/spy": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz", - "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=10.13.0" } }, - "packages/craftcms-garnish/node_modules/@vitest/utils": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz", - "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==", + "packages/craftcms-legacy/node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.9", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/craftcms-garnish/node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=18" + "node": ">=4" } }, - "packages/craftcms-garnish/node_modules/es-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", - "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", - "dev": true, - "license": "MIT" - }, - "packages/craftcms-garnish/node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", + "packages/craftcms-legacy/node_modules/typescript": { + "version": "5.9.3", + "license": "Apache-2.0", "bin": { - "esbuild": "bin/esbuild" + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" + "node": ">=14.17" } }, - "packages/craftcms-garnish/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, + "packages/craftcms-legacy/node_modules/vue": { + "version": "2.7.16", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "dependencies": { + "@vue/compiler-sfc": "2.7.16", + "csstype": "^3.1.0" } }, - "packages/craftcms-garnish/node_modules/semver": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", - "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", + "packages/craftcms-legacy/node_modules/write-file-atomic": { + "version": "5.0.1", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "packages/craftcms-garnish/node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", - "dev": true, + "packages/craftcms-playwright": { + "name": "@craftcms/playwright", + "version": "1.0.0", "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "@playwright/test": "^1.47.0", + "events": "^3.3.0", + "signale": "^1.4.0" + }, + "bin": { + "craft-playwright": "src/cli.js" } }, - "packages/craftcms-garnish/node_modules/tsdown": { - "version": "0.21.10", - "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.21.10.tgz", - "integrity": "sha512-3wk73yBhZe/wX7REqSdivNQ84TDs1mJ+IlnzrrEREP70xlJ/AEIzqaI04l/TzMKVIdkTdC3CPaADn2Lk/0SkdA==", - "dev": true, + "packages/craftcms-sass": { + "name": "@craftcms/sass", + "version": "1.1.0", + "license": "MIT" + }, + "packages/craftcms-ui": { + "name": "@craftcms/ui", + "version": "0.0.0", "license": "MIT", "dependencies": { - "ansis": "^4.2.0", - "cac": "^7.0.0", - "defu": "^6.1.7", - "empathic": "^2.0.0", - "hookable": "^6.1.1", - "import-without-cache": "^0.3.3", - "obug": "^2.1.1", - "picomatch": "^4.0.4", - "rolldown": "1.0.0-rc.17", - "rolldown-plugin-dts": "^0.23.2", - "semver": "^7.7.4", - "tinyexec": "^1.1.1", - "tinyglobby": "^0.2.16", - "tree-kill": "^1.2.2", - "unconfig-core": "^7.5.0", - "unrun": "^0.2.37" - }, - "bin": { - "tsdown": "dist/run.mjs" - }, - "engines": { - "node": ">=20.19.0" + "@chromatic-com/storybook": "^5.1.2", + "@formatjs/intl-durationformat": "^0.10.8", + "@github/relative-time-element": "^5.0.0", + "@simplewebauthn/browser": "^13.3.0", + "@vitest/browser-playwright": "^4.1.5" }, - "funding": { - "url": "https://github.com/sponsors/sxzz" + "devDependencies": { + "@adobe/leonardo-contrast-colors": "^1.1.0", + "@arethetypeswrong/cli": "^0.18.2", + "@awesome.me/webawesome": "^3.6.0", + "@custom-elements-manifest/analyzer": "^0.11.0", + "@lion/ui": "^0.16.1", + "@shoelace-style/shoelace": "^2.20.1", + "@storybook/addon-a11y": "^10.4.1", + "@storybook/addon-docs": "^10.4.1", + "@storybook/addon-themes": "^10.4.1", + "@storybook/addon-vitest": "^10.4.1", + "@storybook/web-components-vite": "^10.4.1", + "@total-typescript/tsconfig": "^1.0.4", + "@types/humanize-duration": "^3.27.4", + "@types/jquery": "^4.0.0", + "@types/node": "^25.6.0", + "@vitest/browser": "^4.1.5", + "@vitest/coverage-v8": "^4.1.5", + "@wc-toolkit/storybook-helpers": "^10.3.0", + "del": "^8.0.1", + "dom-accessibility-api": "^0.7.1", + "esbuild": "^0.28.0", + "globby": "^16.2.0", + "happy-dom": "^20.9.0", + "humanize-duration": "^3.33.2", + "lit": "^3.3.2", + "ora": "^9.4.0", + "playwright": "^1.59.1", + "plop": "^4.0.5", + "recursive-copy": "^2.0.14", + "rimraf": "^6.1.3", + "storybook": "^10.4.1", + "tsdown": "^0.21.10", + "typescript": "^6.0.3", + "unplugin-dts": "^1.0.0", + "vite-plugin-dts": "^5.0.0", + "vite-tsconfig-paths": "^6.1.1", + "vitest": "^4.1.5" }, "peerDependencies": { - "@arethetypeswrong/core": "^0.18.1", - "@tsdown/css": "0.21.10", - "@tsdown/exe": "0.21.10", - "@vitejs/devtools": "*", - "publint": "^0.3.0", - "typescript": "^5.0.0 || ^6.0.0", - "unplugin-unused": "^0.5.0" - }, - "peerDependenciesMeta": { - "@arethetypeswrong/core": { - "optional": true - }, - "@tsdown/css": { - "optional": true - }, - "@tsdown/exe": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "publint": { - "optional": true - }, - "typescript": { - "optional": true - }, - "unplugin-unused": { - "optional": true - } + "@awesome.me/webawesome": "^3.0.0", + "@lion/ui": "0.x", + "lit": "3.x" } }, - "packages/craftcms-garnish/node_modules/vite": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.5.tgz", - "integrity": "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==", + "packages/craftcms-ui/node_modules/@types/jquery": { + "version": "4.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } + "license": "MIT" }, - "packages/craftcms-garnish/node_modules/vitest": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz", - "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==", - "dev": true, + "packages/craftcms-ui/node_modules/@vitest/browser": { + "version": "4.1.8", "license": "MIT", "dependencies": { - "@vitest/expect": "4.1.9", - "@vitest/mocker": "4.1.9", - "@vitest/pretty-format": "4.1.9", - "@vitest/runner": "4.1.9", - "@vitest/snapshot": "4.1.9", - "@vitest/spy": "4.1.9", - "@vitest/utils": "4.1.9", - "es-module-lexer": "^2.0.0", - "expect-type": "^1.3.0", + "@blazediff/core": "1.9.1", + "@vitest/mocker": "4.1.8", + "@vitest/utils": "4.1.8", "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^4.0.0-rc.1", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", + "pngjs": "^7.0.0", + "sirv": "^3.0.2", "tinyrainbow": "^3.1.0", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + "ws": "^8.19.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@edge-runtime/vm": "*", - "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.9", - "@vitest/browser-preview": "4.1.9", - "@vitest/browser-webdriverio": "4.1.9", - "@vitest/coverage-istanbul": "4.1.9", - "@vitest/coverage-v8": "4.1.9", - "@vitest/ui": "4.1.9", - "happy-dom": "*", - "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/coverage-istanbul": { - "optional": true - }, - "@vitest/coverage-v8": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "vite": { - "optional": false - } - } - }, - "packages/craftcms-graphiql": { - "name": "@craftcms/graphiql", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "graphiql": "^4.1.0", - "graphql": "^16.10.0", - "graphql-ws": "^6.0.4", - "react": "^19.2.0", - "react-dom": "^19.2.0" - }, - "devDependencies": { - "@craftcms/sass": "file:../craftcms-sass", - "@craftcms/webpack": "file:../craftcms-webpack" - }, - "engines": { - "node": ">=20" - } - }, - "packages/craftcms-legacy": { - "name": "@craftcms/legacy", - "dependencies": { - "@benmajor/jquery-touch-events": "^2.0.3", - "@craftcms/cp": "file:../craftcms-cp", - "@craftcms/sass": "file:../craftcms-sass", - "@craftcms/vue": "file:../craftcms-vue", - "@floating-ui/dom": "^1.7.6", - "@selectize/selectize": "selectize/selectize.js#master", - "@simplewebauthn/browser": "^13.3.0", - "@types/jquery": "^3.5.34", - "accounting": "^0.4.1", - "apexcharts": "^5.10.6", - "axios": "^1.17.0", - "blueimp-file-upload": "^10.32.0", - "codemirror": "^5.65.21", - "d3": "^7.9.0", - "fabric": "^1.7.22", - "htmx.org": "^1.9.12", - "iframe-resizer": "^4.4.5", - "inputmask": "^5.0.9", - "jquery": "^3.7.1", - "jquery-ui": "^1.14.2", - "jquery.payment": "^3.0.0", - "picturefill": "^3.0.3", - "punycode": "^2.3.1", - "swiper": "^8.4.7", - "timepicker": "^1.14.1", - "ttf2woff2": "^5.0.0", - "typescript": "^5.9.3", - "v-tooltip": "^2.1.3", - "velocity-animate": "^1.5.2", - "vue": "^2.7.16", - "vue-autosuggest": "^2.2.0", - "vue-awesome-swiper": "^4.1.1", - "vue-cleave": "^1.2.2", - "vue-lodash": "^1.0.4", - "vue-router": "^3.6.5", - "vuex": "^3.6.2", - "xregexp": "^5.1.2", - "yii2-pjax": "~2.0.8" - }, - "devDependencies": { - "@craftcms/playwright": "file:../craftcms-playwright", - "@craftcms/webpack": "file:../craftcms-webpack", - "@playwright/test": "^1.59.1", - "husky": "^9.1.7", - "lint-staged": "^16.4.0", - "pkg-dir": "^5.0.0", - "prettier": "3.8.3", - "stylelint": "^16.26.1", - "stylelint-config-standard": "^36.0.1", - "stylelint-config-standard-scss": "^13.1.0", - "stylelint-prettier": "^5.0.3", - "stylelint-use-logical-spec": "^5.0.1", - "tailwindcss": "^3.4.19", - "vue-apexcharts": "^1.7.0" - }, - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "@awesome.me/kit-ddaed3f5c5": "^1.0.74" - } - }, - "packages/craftcms-legacy/node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "packages/craftcms-legacy/node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "packages/craftcms-legacy/node_modules/@csstools/media-query-list-parser": { - "version": "4.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "packages/craftcms-legacy/node_modules/@vue/compiler-sfc": { - "version": "2.7.16", - "dependencies": { - "@babel/parser": "^7.23.5", - "postcss": "^8.4.14", - "source-map": "^0.6.1" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "packages/craftcms-legacy/node_modules/@vue/compiler-sfc/node_modules/prettier": { - "version": "2.8.8", - "license": "MIT", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "packages/craftcms-legacy/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "packages/craftcms-legacy/node_modules/balanced-match": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "packages/craftcms-legacy/node_modules/chokidar": { - "version": "3.6.0", - "dev": true, + "vitest": "4.1.8" + } + }, + "packages/craftcms-ui/node_modules/@vitest/browser-playwright": { + "version": "4.1.8", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" + "@vitest/browser": "4.1.8", + "@vitest/mocker": "4.1.8", + "tinyrainbow": "^3.1.0" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://opencollective.com/vitest" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "peerDependencies": { + "playwright": "*", + "vitest": "4.1.8" + }, + "peerDependenciesMeta": { + "playwright": { + "optional": false + } } }, - "packages/craftcms-legacy/node_modules/globby": { - "version": "11.1.0", + "packages/craftcms-ui/node_modules/@vitest/coverage-v8": { + "version": "4.1.8", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.8", + "ast-v8-to-istanbul": "^1.0.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.2", + "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "4.1.8", + "vitest": "4.1.8" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "packages/craftcms-legacy/node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "dev": true, + "packages/craftcms-ui/node_modules/@vitest/pretty-format": { + "version": "4.1.8", "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-legacy/node_modules/html-tags": { - "version": "3.3.1", - "dev": true, + "packages/craftcms-ui/node_modules/@vitest/utils": { + "version": "4.1.8", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@vitest/pretty-format": "4.1.8", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "packages/craftcms-legacy/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "packages/craftcms-ui/node_modules/balanced-match": { + "version": "4.0.4", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "packages/craftcms-legacy/node_modules/jiti": { - "version": "1.21.7", + "packages/craftcms-ui/node_modules/brace-expansion": { + "version": "5.0.6", "dev": true, "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, - "packages/craftcms-legacy/node_modules/mathml-tag-names": { - "version": "2.1.3", + "packages/craftcms-ui/node_modules/chalk": { + "version": "5.6.2", "dev": true, "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "packages/craftcms-legacy/node_modules/meow": { - "version": "13.2.0", + "packages/craftcms-ui/node_modules/cli-spinners": { + "version": "3.4.0", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/pkg-dir": { - "version": "5.0.0", + "packages/craftcms-ui/node_modules/del": { + "version": "8.0.1", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^5.0.0" + "globby": "^14.0.2", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^7.0.2", + "presentable-error": "^0.0.1", + "slash": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/postcss-selector-parser": { - "version": "7.1.1", + "packages/craftcms-ui/node_modules/del/node_modules/globby": { + "version": "14.1.0", "dev": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/string-width": { - "version": "4.2.3", + "packages/craftcms-ui/node_modules/dom-accessibility-api": { + "version": "0.7.1", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "packages/craftcms-ui/node_modules/glob": { + "version": "13.0.6", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/craftcms-legacy/node_modules/strip-ansi": { - "version": "6.0.1", + "packages/craftcms-ui/node_modules/is-interactive": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/stylelint": { - "version": "16.26.1", + "packages/craftcms-ui/node_modules/is-path-cwd": { + "version": "3.0.0", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], "license": "MIT", - "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-syntax-patches-for-csstree": "^1.0.19", - "@csstools/css-tokenizer": "^3.0.4", - "@csstools/media-query-list-parser": "^4.0.3", - "@csstools/selector-specificity": "^5.0.0", - "@dual-bundle/import-meta-resolve": "^4.2.1", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^9.0.0", - "css-functions-list": "^3.2.3", - "css-tree": "^3.1.0", - "debug": "^4.4.3", - "fast-glob": "^3.3.3", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^11.1.1", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^7.0.5", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.37.0", - "mathml-tag-names": "^2.1.3", - "meow": "^13.2.0", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.5.6", - "postcss-resolve-nested-selector": "^0.1.6", - "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.1.0", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "supports-hyperlinks": "^3.2.0", - "svg-tags": "^1.0.0", - "table": "^6.9.0", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/craftcms-ui/node_modules/is-path-inside": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.12.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/stylelint-config-recommended": { - "version": "14.0.1", + "packages/craftcms-ui/node_modules/is-unicode-supported": { + "version": "2.1.0", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], "license": "MIT", "engines": { - "node": ">=18.12.0" + "node": ">=18" }, - "peerDependencies": { - "stylelint": "^16.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/stylelint-config-recommended-scss": { - "version": "14.1.0", + "packages/craftcms-ui/node_modules/log-symbols": { + "version": "7.0.1", "dev": true, "license": "MIT", "dependencies": { - "postcss-scss": "^4.0.9", - "stylelint-config-recommended": "^14.0.1", - "stylelint-scss": "^6.4.0" + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^16.6.1" + "node": ">=18" }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/stylelint-config-standard": { - "version": "36.0.1", + "packages/craftcms-ui/node_modules/minimatch": { + "version": "10.2.5", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - }, - { - "type": "github", - "url": "https://github.com/sponsors/stylelint" - } - ], - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "stylelint-config-recommended": "^14.0.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=18.12.0" + "node": "18 || 20 || >=22" }, - "peerDependencies": { - "stylelint": "^16.1.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/craftcms-legacy/node_modules/stylelint-config-standard-scss": { - "version": "13.1.0", + "packages/craftcms-ui/node_modules/ora": { + "version": "9.4.0", "dev": true, "license": "MIT", "dependencies": { - "stylelint-config-recommended-scss": "^14.0.0", - "stylelint-config-standard": "^36.0.0" + "chalk": "^5.6.2", + "cli-cursor": "^5.0.0", + "cli-spinners": "^3.2.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.1.0", + "log-symbols": "^7.0.1", + "stdin-discarder": "^0.3.2", + "string-width": "^8.1.0" }, "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "postcss": "^8.3.3", - "stylelint": "^16.3.1" + "node": ">=20" }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/stylelint-scss": { - "version": "6.14.0", + "packages/craftcms-ui/node_modules/p-map": { + "version": "7.0.4", "dev": true, "license": "MIT", - "dependencies": { - "css-tree": "^3.0.1", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.37.0", - "mdn-data": "^2.25.0", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.1.1", - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": ">=18.12.0" + "node": ">=18" }, - "peerDependencies": { - "stylelint": "^16.8.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/tailwindcss": { - "version": "3.4.19", + "packages/craftcms-ui/node_modules/path-scurry": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.7", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=14.0.0" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/craftcms-legacy/node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", + "packages/craftcms-ui/node_modules/path-type": { + "version": "6.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.2", + "packages/craftcms-ui/node_modules/rimraf": { + "version": "6.1.3", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" }, "engines": { - "node": ">=4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/craftcms-legacy/node_modules/typescript": { - "version": "5.9.3", - "license": "Apache-2.0", + "packages/craftcms-ui/node_modules/semver": { + "version": "7.8.2", + "dev": true, + "license": "ISC", "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "semver": "bin/semver.js" }, "engines": { - "node": ">=14.17" + "node": ">=10" } }, - "packages/craftcms-legacy/node_modules/vue": { - "version": "2.7.16", + "packages/craftcms-ui/node_modules/slash": { + "version": "5.1.0", + "dev": true, "license": "MIT", - "dependencies": { - "@vue/compiler-sfc": "2.7.16", - "csstype": "^3.1.0" + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "packages/craftcms-legacy/node_modules/write-file-atomic": { - "version": "5.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, + "packages/craftcms-ui/node_modules/tinyrainbow": { + "version": "3.1.0", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "packages/craftcms-playwright": { - "name": "@craftcms/playwright", - "version": "1.0.0", + "packages/craftcms-ui/node_modules/tsdown": { + "version": "0.21.10", + "dev": true, "license": "MIT", "dependencies": { - "@playwright/test": "^1.47.0", - "events": "^3.3.0", - "signale": "^1.4.0" + "ansis": "^4.2.0", + "cac": "^7.0.0", + "defu": "^6.1.7", + "empathic": "^2.0.0", + "hookable": "^6.1.1", + "import-without-cache": "^0.3.3", + "obug": "^2.1.1", + "picomatch": "^4.0.4", + "rolldown": "1.0.0-rc.17", + "rolldown-plugin-dts": "^0.23.2", + "semver": "^7.7.4", + "tinyexec": "^1.1.1", + "tinyglobby": "^0.2.16", + "tree-kill": "^1.2.2", + "unconfig-core": "^7.5.0", + "unrun": "^0.2.37" }, "bin": { - "craft-playwright": "src/cli.js" + "tsdown": "dist/run.mjs" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@arethetypeswrong/core": "^0.18.1", + "@tsdown/css": "0.21.10", + "@tsdown/exe": "0.21.10", + "@vitejs/devtools": "*", + "publint": "^0.3.0", + "typescript": "^5.0.0 || ^6.0.0", + "unplugin-unused": "^0.5.0" + }, + "peerDependenciesMeta": { + "@arethetypeswrong/core": { + "optional": true + }, + "@tsdown/css": { + "optional": true + }, + "@tsdown/exe": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "publint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "unplugin-unused": { + "optional": true + } } }, - "packages/craftcms-sass": { - "name": "@craftcms/sass", - "version": "1.1.0", - "license": "MIT" - }, "packages/craftcms-vue": { "name": "@craftcms/vue", "version": "1.0.1", diff --git a/package.json b/package.json index 69f3d493dff..95d03599757 100644 --- a/package.json +++ b/package.json @@ -20,13 +20,13 @@ "build:bundles": "cd ./packages/craftcms-legacy && npm run build", "dev:bundles": "cd ./packages/craftcms-legacy && npm run dev", "serve:bundles": "cd ./packages/craftcms-legacy && npm run serve", - "dev:cp": "cd ./packages/craftcms-cp && npm run dev", - "build:cp": "cd ./packages/craftcms-cp && npm run build", + "dev:cp": "cd ./packages/craftcms-ui && npm run dev", + "build:cp": "cd ./packages/craftcms-ui && npm run build", "build:garnish": "cd ./packages/craftcms-garnish && npm run build", - "test:cp": "cd ./packages/craftcms-cp && npm run test", + "test:cp": "cd ./packages/craftcms-ui && npm run test", "storybook": "storybook dev -p 6007", "build:storybook": "storybook build", - "storybook:cp": "cd ./packages/craftcms-cp && npm run storybook", + "storybook:cp": "cd ./packages/craftcms-ui && npm run storybook", "build:all": "npm run build:garnish && npm run build:cp && npm run build:bundles && npm run build" }, "workspaces": [ @@ -64,6 +64,7 @@ "typescript": "^6.0.3", "typescript-eslint": "^8.60.0", "vite": "^8.0.10", + "vitest": "^4.1.8", "vue-tsc": "^3.2.7" }, "optionalDependencies": { @@ -72,8 +73,8 @@ "dependencies": { "@atlaskit/pragmatic-drag-and-drop": "^1.8.1", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0", - "@craftcms/cp": "file:packages/craftcms-cp", "@craftcms/graphiql": "file:packages/craftcms-graphiql", + "@craftcms/ui": "file:packages/craftcms-ui", "@headlessui/vue": "^1.7.23", "@inertiajs/vite": "^3.0.3", "@inertiajs/vue3": "^3.0.3", diff --git a/packages/craftcms-cp/src/services/Config.ts b/packages/craftcms-cp/src/services/Config.ts deleted file mode 100644 index 3f1f69b9f1f..00000000000 --- a/packages/craftcms-cp/src/services/Config.ts +++ /dev/null @@ -1,55 +0,0 @@ -export class ConfigService { - static #instance: ConfigService | null = null; - - #config: Map = new Map(); - - /** Get the singleton instance */ - static getInstance(initialConfig = {}): ConfigService { - if (!ConfigService.#instance) { - ConfigService.#instance = new ConfigService(); - } - return ConfigService.#instance; - } - - /** Reset the singleton (mainly for testing) */ - static resetInstance(): void { - if (ConfigService.#instance) { - ConfigService.#instance = null; - } - } - - initialize(initialConfig = {}) { - this.#config = new Map(Object.entries(initialConfig)); - } - - #buildUrl(baseUrl: string, path: string): string { - const url = new URL(baseUrl); - const cleanPath = path.startsWith('/') ? path.slice(1) : path; - url.pathname = `${url.pathname}/${cleanPath}`; - return url.toString(); - } - - getCpUrl(path: string) { - return this.#buildUrl(this.#config.get('baseCpUrl'), path); - } - - getActionUrl(path: string) { - return this.#buildUrl(this.#config.get('actionUrl'), path); - } - - all() { - return this.#config; - } - - set(key: string, value: any): void { - this.#config.set(key, value); - } - - get(key: string, fallback: any = null): any { - if (this.#config.has(key)) { - return this.#config.get(key); - } - - return fallback; - } -} diff --git a/packages/craftcms-cp/src/types/globals.ts b/packages/craftcms-cp/src/types/globals.ts deleted file mode 100644 index 8732f156085..00000000000 --- a/packages/craftcms-cp/src/types/globals.ts +++ /dev/null @@ -1,79 +0,0 @@ -import {QueueService} from '@src/services/Queue'; -import {ConfigService} from '@src/services/Config'; - -/** - * Runtime globals bootstrapped by the Control Panel that aren't ES module - * imports. Declared here so they're available across the package. - */ -declare global { - // Optional d3 globals used by `formatNumber()` when the legacy charting - // bundle is present on the page. - const d3: any | undefined; - const d3FormatLocaleDefinition: any | undefined; - - /** Control Panel runtime config exposed as a global `Cp` object. */ - interface CpGlobal { - registeredAssetBundles: string[]; - registeredJsFiles: string[]; - apiParams?: Record; - httpProxy?: unknown; - defaultCookieOptions?: Record; - csrfTokenValue?: string; - } - - const Cp: CpGlobal; -} - -interface ProgressBarInterface { - $progressBar: JQuery; - - new ( - $element: JQuery, - displaySteps?: boolean, - settings?: Object - ): ProgressBarInterface; - - setItemCount(count: number): void; - - setProcessedItemCount(count: number): void; - - updateProgressBar(): void; - - showProgressBar(): void; -} - -interface IntervalManagerInterface { - new (settings?: Object): IntervalManagerInterface; - - stop(): void; - - start(): void; -} - -type Site = { - handle: string; - id: number; - name: string; - uid: string; -}; - -export interface CpServices { - $queue: QueueService; - $config: ConfigService; -} - -/** Shape of the legacy global `Craft` object that this package relies on. */ -export interface CraftGlobal { - setCookie(name: string, value: string): void; -} - -/** - * `window` narrowed to include the optional legacy `Craft` global. - * - * Use this instead of augmenting the global `Window` interface — a global - * augmentation would be bundled into the package's published types and leak a - * conflicting `window.Craft` declaration into consuming apps. - */ -export type WindowWithCraft = Window & {Craft?: CraftGlobal}; - -export {}; diff --git a/packages/craftcms-garnish/docs/contributing.md b/packages/craftcms-garnish/docs/contributing.md index b8b1fd3d319..53d365423f3 100644 --- a/packages/craftcms-garnish/docs/contributing.md +++ b/packages/craftcms-garnish/docs/contributing.md @@ -57,7 +57,7 @@ Garnish widgets are **imperative** — `new Modal(container)`, `new DisclosureMenu(trigger)`, `new HUD(trigger, body)` — operating on plain DOM, **not** web components. So we use the **`@storybook/html-vite`** renderer: each story's `render()` returns an `HTMLElement` and instantiates the Garnish class -inside it. (By contrast, `@craftcms/cp` uses `@storybook/web-components-vite` +inside it. (By contrast, `@craftcms/ui` uses `@storybook/web-components-vite` because its components are custom elements.) We otherwise match cp's Storybook: version **10.4.1** and the **docs / a11y / themes** addons. diff --git a/packages/craftcms-legacy/cp/src/css/_compat.scss b/packages/craftcms-legacy/cp/src/css/_compat.scss index 1c6e49acb8a..0947c76657b 100644 --- a/packages/craftcms-legacy/cp/src/css/_compat.scss +++ b/packages/craftcms-legacy/cp/src/css/_compat.scss @@ -2,7 +2,7 @@ * Legacy Token Mapping * * This file maps legacy CSS variables to the new token system defined in - * @craftcms/cp tokens.css. Import this file to provide backwards compatibility + * @craftcms/ui tokens.css. Import this file to provide backwards compatibility * for legacy styles. * * Variables mapped to --CHANGE require manual review and update. diff --git a/packages/craftcms-legacy/cp/src/js/CP.js b/packages/craftcms-legacy/cp/src/js/CP.js index 7387335a166..c34744fa54f 100644 --- a/packages/craftcms-legacy/cp/src/js/CP.js +++ b/packages/craftcms-legacy/cp/src/js/CP.js @@ -1,8 +1,8 @@ -// Import from the deep service module rather than the package root. The root -// entry (`@craftcms/cp`) side-effect-registers WebAwesome components (e.g. -// `wa-icon`); pulling that into this separately-webpacked legacy bundle causes -// a duplicate custom-element registration when it loads alongside the Vite app. -import {QueueService} from '@craftcms/cp/services/Queue.ts.mjs'; +// The root entry (`@craftcms/ui`) side-effect-registers WebAwesome components +// (e.g. `wa-icon`); pulling that into this separately-webpacked legacy bundle +// causes a duplicate custom-element registration when it loads alongside the +// Vite app. QueueService is available at runtime as Craft.$queue (set by +// bootstrap/cp.ts). /** global: Craft */ /** global: Garnish */ /** global: $ */ @@ -81,8 +81,10 @@ Craft.CP = Garnish.Base.extend( resizeTimeout: null, - /** @type QueueService */ - QueueService: QueueService.getInstance(), + /** @deprecated since 6.0. Access via Craft.$queue */ + get QueueService() { + return Craft.$queue; + }, init: function () { this.elementThumbLoader = new Craft.ElementThumbLoader(); @@ -1679,29 +1681,29 @@ Craft.CP = Garnish.Base.extend( /** @deprecated since 6.0. */ runQueue: function () { if (Craft.runQueueAutomatically) { - Craft.queue.push(() => this.QueueService.runQueue()); + Craft.queue.push(() => Craft.$queue.runQueue()); } else { - this.QueueService.startTracking(false, true); + Craft.$queue.startTracking(false, true); } }, - /** @deprecated since 6.0. Use QueueService.startTracking() instead */ + /** @deprecated since 6.0. Use Craft.$queue.startTracking() instead */ trackJobProgress: function (delay, force) { - this.QueueService.startTracking(delay, force); + Craft.$queue.startTracking(delay, force); }, - /** @deprecated since 6.0. Use QueueService.setJobData() instead */ + /** @deprecated since 6.0. Use Craft.$queue.setJobData() instead */ setJobData: function (data) { - this.QueueService.setJobData(data); + Craft.$queue.setJobData(data); }, get jobInfo() { - return this.QueueService.jobInfo; + return Craft.$queue.jobInfo; }, - /** @deprecated since 6.0. Use QueueService.setJobData() instead */ + /** @deprecated since 6.0. Use Craft.$queue.setJobData() instead */ setJobInfo: function (jobInfo) { - this.QueueService.setJobData({ + Craft.$queue.setJobData({ jobs: jobInfo, total: jobInfo.length, }); @@ -1710,9 +1712,9 @@ Craft.CP = Garnish.Base.extend( this.trigger('setJobInfo'); }, - /** @deprecated since 6.0. Use QueueService.stopTracking() instead */ + /** @deprecated since 6.0. Use Craft.$queue.stopTracking() instead */ cancelJobTracking: function () { - this.QueueService.stopTracking(); + Craft.$queue.stopTracking(); }, /** diff --git a/packages/craftcms-legacy/cp/src/js/Craft.js b/packages/craftcms-legacy/cp/src/js/Craft.js index f95488450c7..3e7f19f8345 100644 --- a/packages/craftcms-legacy/cp/src/js/Craft.js +++ b/packages/craftcms-legacy/cp/src/js/Craft.js @@ -1,4 +1,4 @@ -import {formatMessage, t} from '@craftcms/cp/utilities/translate.ts.mjs'; +import {formatMessage, t} from '@craftcms/ui/utilities/translate.ts.mjs'; import * as d3 from 'd3'; /** global: Craft */ diff --git a/packages/craftcms-legacy/package.json b/packages/craftcms-legacy/package.json index 48cff937e2e..600bb22470c 100644 --- a/packages/craftcms-legacy/package.json +++ b/packages/craftcms-legacy/package.json @@ -35,7 +35,7 @@ }, "dependencies": { "@benmajor/jquery-touch-events": "^2.0.3", - "@craftcms/cp": "file:../craftcms-cp", + "@craftcms/ui": "file:../craftcms-ui", "@craftcms/sass": "file:../craftcms-sass", "@craftcms/vue": "file:../craftcms-vue", "@floating-ui/dom": "^1.7.6", diff --git a/packages/craftcms-cp/.gitignore b/packages/craftcms-ui/.gitignore similarity index 100% rename from packages/craftcms-cp/.gitignore rename to packages/craftcms-ui/.gitignore diff --git a/packages/craftcms-cp/.nvmrc b/packages/craftcms-ui/.nvmrc similarity index 100% rename from packages/craftcms-cp/.nvmrc rename to packages/craftcms-ui/.nvmrc diff --git a/packages/craftcms-cp/.prettierignore b/packages/craftcms-ui/.prettierignore similarity index 100% rename from packages/craftcms-cp/.prettierignore rename to packages/craftcms-ui/.prettierignore diff --git a/packages/craftcms-cp/.storybook/main.ts b/packages/craftcms-ui/.storybook/main.ts similarity index 100% rename from packages/craftcms-cp/.storybook/main.ts rename to packages/craftcms-ui/.storybook/main.ts diff --git a/packages/craftcms-cp/.storybook/preview.css b/packages/craftcms-ui/.storybook/preview.css similarity index 100% rename from packages/craftcms-cp/.storybook/preview.css rename to packages/craftcms-ui/.storybook/preview.css diff --git a/packages/craftcms-cp/.storybook/preview.ts b/packages/craftcms-ui/.storybook/preview.ts similarity index 98% rename from packages/craftcms-cp/.storybook/preview.ts rename to packages/craftcms-ui/.storybook/preview.ts index 82cdb1d6cf0..81dbdd19872 100644 --- a/packages/craftcms-cp/.storybook/preview.ts +++ b/packages/craftcms-ui/.storybook/preview.ts @@ -2,7 +2,7 @@ import type { Preview, WebComponentsRenderer, } from '@storybook/web-components-vite'; -import '../src/styles/cp.css'; +import '../src/styles/base.css'; import './preview.css'; import {icons} from '@lion/ui/icon.js'; import {html} from 'lit'; diff --git a/packages/craftcms-cp/.storybook/vitest.setup.ts b/packages/craftcms-ui/.storybook/vitest.setup.ts similarity index 100% rename from packages/craftcms-cp/.storybook/vitest.setup.ts rename to packages/craftcms-ui/.storybook/vitest.setup.ts diff --git a/packages/craftcms-cp/README.md b/packages/craftcms-ui/README.md similarity index 85% rename from packages/craftcms-cp/README.md rename to packages/craftcms-ui/README.md index 49c0a0d24a2..c36d2775907 100644 --- a/packages/craftcms-cp/README.md +++ b/packages/craftcms-ui/README.md @@ -1,4 +1,4 @@ -# @craftcms/cp +# @craftcms/ui Web Components library for Craft CMS Control Panel UI. @@ -13,7 +13,7 @@ Web Components library for Craft CMS Control Panel UI. ## Installation ```bash -npm install @craftcms/cp +npm install @craftcms/ui ``` ## Usage @@ -21,7 +21,7 @@ npm install @craftcms/cp ### Importing Components ```js -import '@craftcms/cp'; +import '@craftcms/ui'; ``` This imports all components and makes them available as custom elements with the `craft-` prefix. @@ -29,7 +29,7 @@ This imports all components and makes them available as custom elements with the ### Importing Styles ```css -@import '@craftcms/cp'; +@import '@craftcms/ui'; ``` This will import all the styles for all components. You'll have to be using some kind of bundler for this to work. @@ -53,7 +53,7 @@ This will import all the styles for all components. You'll have to be using some You can import utility functions directly: ```js -import {t, formatNumber, actionClient, apiClient} from '@craftcms/cp'; +import {t, formatNumber, actionClient, apiClient} from '@craftcms/ui'; // Translation const message = t('app', 'Welcome'); @@ -68,8 +68,8 @@ const response = await apiClient.get('/api/entries'); Individual utilities can also be imported: ```js -import {t} from '@craftcms/cp/utilities/translate'; -import {formatNumber} from '@craftcms/cp/utilities/format'; +import {t} from '@craftcms/ui/utilities/translate'; +import {formatNumber} from '@craftcms/ui/utilities/format'; ``` ## Utilities @@ -77,7 +77,7 @@ import {formatNumber} from '@craftcms/cp/utilities/format'; ### API Clients ```js -import {actionClient, apiClient} from '@craftcms/cp'; +import {actionClient, apiClient} from '@craftcms/ui'; // Controller actions await actionClient.post('users/save-user', data); @@ -89,7 +89,7 @@ await apiClient.get('/api/entries'); ### Translation ```js -import {t, formatMessage} from '@craftcms/cp'; +import {t, formatMessage} from '@craftcms/ui'; t('category', 'message'); formatMessage('Hello {name}', {name: 'World'}); @@ -98,7 +98,7 @@ formatMessage('Hello {name}', {name: 'World'}); ### Formatting ```js -import {formatNumber} from '@craftcms/cp'; +import {formatNumber} from '@craftcms/ui'; formatNumber(1234.56); // Locale-aware number formatting ``` @@ -106,7 +106,7 @@ formatNumber(1234.56); // Locale-aware number formatting ### Cookie Utilities ```js -import {getCookie, setCookie, deleteCookie} from '@craftcms/cp'; +import {getCookie, setCookie, deleteCookie} from '@craftcms/ui'; setCookie('name', 'value', 7); // expires in 7 days const value = getCookie('name'); diff --git a/packages/craftcms-cp/custom-elements-manifest.config.mjs b/packages/craftcms-ui/custom-elements-manifest.config.mjs similarity index 100% rename from packages/craftcms-cp/custom-elements-manifest.config.mjs rename to packages/craftcms-ui/custom-elements-manifest.config.mjs diff --git a/packages/craftcms-cp/custom-elements.json b/packages/craftcms-ui/custom-elements.json similarity index 100% rename from packages/craftcms-cp/custom-elements.json rename to packages/craftcms-ui/custom-elements.json diff --git a/packages/craftcms-cp/package.json b/packages/craftcms-ui/package.json similarity index 90% rename from packages/craftcms-cp/package.json rename to packages/craftcms-ui/package.json index f6527e8e47a..1688aad8d57 100644 --- a/packages/craftcms-cp/package.json +++ b/packages/craftcms-ui/package.json @@ -1,9 +1,9 @@ { - "name": "@craftcms/cp", + "name": "@craftcms/ui", "version": "0.0.0", - "description": "CP Components for Craft CMS", + "description": "UI Components for Craft CMS", "type": "module", - "main": "dist/cp.js", + "main": "dist/ui.js", "types": "dist/index.d.ts", "repository": { "type": "git", @@ -34,16 +34,15 @@ "exports": { "./package.json": "./package.json", ".": { - "types": "./dist/cp.d.mts", - "import": "./dist/cp.mjs", - "require": "./dist/cp.cjs" + "types": "./dist/ui.d.mts", + "import": "./dist/ui.mjs", + "require": "./dist/ui.cjs" }, "./*": "./dist/*", "./dist/*": "./dist/*", "./vue/*": "./dist/vue/*", "./types/*": "./src/types/*", - "./services/*": "./dist/services/*", - "./styles/*": "./dist/styles/*", + "./styles/*": "./src/styles/*", "./utilities/*": "./dist/utilities/*", "./components/*": "./dist/components/*", "./custom-elements.json": "./dist/custom-elements.json", @@ -104,8 +103,7 @@ "@formatjs/intl-durationformat": "^0.10.8", "@github/relative-time-element": "^5.0.0", "@simplewebauthn/browser": "^13.3.0", - "@vitest/browser-playwright": "^4.1.5", - "axios": "^1.17.0" + "@vitest/browser-playwright": "^4.1.5" }, "customElements": "dist/custom-elements.json" } diff --git a/packages/craftcms-cp/scripts/build.js b/packages/craftcms-ui/scripts/build.js similarity index 97% rename from packages/craftcms-cp/scripts/build.js rename to packages/craftcms-ui/scripts/build.js index 44096aecfd0..c7f0e0e1951 100755 --- a/packages/craftcms-cp/scripts/build.js +++ b/packages/craftcms-ui/scripts/build.js @@ -10,7 +10,7 @@ import {deleteAsync} from 'del'; import createVueWrappers from './generate-vue-wrappers.js'; import createColors from './generate-colors.js'; -const spinner = ora({text: '@craftcms/cp', color: 'red'}).start(); +const spinner = ora({text: '@craftcms/ui', color: 'red'}).start(); const isDeveloping = process.argv.includes('--develop'); async function cleanup() { @@ -29,7 +29,7 @@ async function generateBundle(config = {}) { clean: false, target: 'es2020', entry: { - cp: './src/index.ts', + ui: './src/index.ts', actions: './src/actions/index.ts', ...(await resolveFrom( './src/components/**/!(*.(stories|styles|test)).ts' diff --git a/packages/craftcms-cp/scripts/generate-color-palette.js b/packages/craftcms-ui/scripts/generate-color-palette.js similarity index 100% rename from packages/craftcms-cp/scripts/generate-color-palette.js rename to packages/craftcms-ui/scripts/generate-color-palette.js diff --git a/packages/craftcms-cp/scripts/generate-colors.js b/packages/craftcms-ui/scripts/generate-colors.js similarity index 100% rename from packages/craftcms-cp/scripts/generate-colors.js rename to packages/craftcms-ui/scripts/generate-colors.js diff --git a/packages/craftcms-cp/scripts/generate-vue-wrappers.js b/packages/craftcms-ui/scripts/generate-vue-wrappers.js similarity index 99% rename from packages/craftcms-cp/scripts/generate-vue-wrappers.js rename to packages/craftcms-ui/scripts/generate-vue-wrappers.js index 7dfe170ef6d..d6133fbcf9c 100644 --- a/packages/craftcms-cp/scripts/generate-vue-wrappers.js +++ b/packages/craftcms-ui/scripts/generate-vue-wrappers.js @@ -5,7 +5,7 @@ * 1. Vue SFC wrappers for Lion-based form components (src/vue/) * 2. Vue type augmentations for ALL craft-* web components (src/vue/craft-elements.d.ts) * - * Usage (from packages/craftcms-cp/): + * Usage (from packages/craftcms-ui/): * node scripts/generate-vue-wrappers.js * * The generated wrappers handle v-model bridging between Vue's reactivity system and diff --git a/packages/craftcms-cp/scripts/utils.js b/packages/craftcms-ui/scripts/utils.js similarity index 100% rename from packages/craftcms-cp/scripts/utils.js rename to packages/craftcms-ui/scripts/utils.js diff --git a/packages/craftcms-cp/src/actions/index.ts b/packages/craftcms-ui/src/actions/index.ts similarity index 100% rename from packages/craftcms-cp/src/actions/index.ts rename to packages/craftcms-ui/src/actions/index.ts diff --git a/packages/craftcms-cp/src/components/action-item/action-item.stories.ts b/packages/craftcms-ui/src/components/action-item/action-item.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-item/action-item.stories.ts rename to packages/craftcms-ui/src/components/action-item/action-item.stories.ts diff --git a/packages/craftcms-cp/src/components/action-item/action-item.styles.ts b/packages/craftcms-ui/src/components/action-item/action-item.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-item/action-item.styles.ts rename to packages/craftcms-ui/src/components/action-item/action-item.styles.ts diff --git a/packages/craftcms-cp/src/components/action-item/action-item.ts b/packages/craftcms-ui/src/components/action-item/action-item.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-item/action-item.ts rename to packages/craftcms-ui/src/components/action-item/action-item.ts diff --git a/packages/craftcms-cp/src/components/action-menu/action-menu.stories.ts b/packages/craftcms-ui/src/components/action-menu/action-menu.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-menu/action-menu.stories.ts rename to packages/craftcms-ui/src/components/action-menu/action-menu.stories.ts diff --git a/packages/craftcms-cp/src/components/action-menu/action-menu.ts b/packages/craftcms-ui/src/components/action-menu/action-menu.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-menu/action-menu.ts rename to packages/craftcms-ui/src/components/action-menu/action-menu.ts diff --git a/packages/craftcms-cp/src/components/action-menu/action-menu.types.ts b/packages/craftcms-ui/src/components/action-menu/action-menu.types.ts similarity index 100% rename from packages/craftcms-cp/src/components/action-menu/action-menu.types.ts rename to packages/craftcms-ui/src/components/action-menu/action-menu.types.ts diff --git a/packages/craftcms-cp/src/components/auth-challenge-form/auth-challenge-form.ts b/packages/craftcms-ui/src/components/auth-challenge-form/auth-challenge-form.ts similarity index 95% rename from packages/craftcms-cp/src/components/auth-challenge-form/auth-challenge-form.ts rename to packages/craftcms-ui/src/components/auth-challenge-form/auth-challenge-form.ts index f947670f502..87c99616ddd 100644 --- a/packages/craftcms-cp/src/components/auth-challenge-form/auth-challenge-form.ts +++ b/packages/craftcms-ui/src/components/auth-challenge-form/auth-challenge-form.ts @@ -1,6 +1,6 @@ import {css, html, LitElement} from 'lit'; import {property, query, state} from 'lit/decorators.js'; -import {actionClient, t} from '@src/index'; +import {t} from '@src/utilities/translate'; /** @internal Module-private registry of PHP METHOD handle → element class. */ const _registry = new Map(); @@ -20,7 +20,7 @@ const _registry = new Map(); * @example * ```typescript * import {html} from 'lit'; - * import {CraftAuthChallengeForm} from '@craftcms/cp'; + * import {CraftAuthChallengeForm} from '@craftcms/ui'; * * class MyPluginForm extends CraftAuthChallengeForm { * static METHOD = 'my-method'; @@ -139,7 +139,18 @@ export abstract class CraftAuthChallengeForm extends LitElement { this._state = 'loading'; try { - await actionClient.post(this.endpoint, {code}); + const response = await fetch(this.endpoint, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Requested-With': 'XMLHttpRequest', + }, + body: JSON.stringify({code}), + }); + + if (!response.ok) { + throw new Error(`HTTP ${response.status}`); + } this.dispatchEvent( new CustomEvent('login-verified', { diff --git a/packages/craftcms-cp/src/components/avatar/avatar.stories.ts b/packages/craftcms-ui/src/components/avatar/avatar.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/avatar/avatar.stories.ts rename to packages/craftcms-ui/src/components/avatar/avatar.stories.ts diff --git a/packages/craftcms-cp/src/components/avatar/avatar.styles.ts b/packages/craftcms-ui/src/components/avatar/avatar.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/avatar/avatar.styles.ts rename to packages/craftcms-ui/src/components/avatar/avatar.styles.ts diff --git a/packages/craftcms-cp/src/components/avatar/avatar.ts b/packages/craftcms-ui/src/components/avatar/avatar.ts similarity index 100% rename from packages/craftcms-cp/src/components/avatar/avatar.ts rename to packages/craftcms-ui/src/components/avatar/avatar.ts diff --git a/packages/craftcms-cp/src/components/badge-indicator/badge-indicator.stories.ts b/packages/craftcms-ui/src/components/badge-indicator/badge-indicator.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/badge-indicator/badge-indicator.stories.ts rename to packages/craftcms-ui/src/components/badge-indicator/badge-indicator.stories.ts diff --git a/packages/craftcms-cp/src/components/badge-indicator/badge-indicator.styles.ts b/packages/craftcms-ui/src/components/badge-indicator/badge-indicator.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/badge-indicator/badge-indicator.styles.ts rename to packages/craftcms-ui/src/components/badge-indicator/badge-indicator.styles.ts diff --git a/packages/craftcms-cp/src/components/badge-indicator/badge-indicator.ts b/packages/craftcms-ui/src/components/badge-indicator/badge-indicator.ts similarity index 100% rename from packages/craftcms-cp/src/components/badge-indicator/badge-indicator.ts rename to packages/craftcms-ui/src/components/badge-indicator/badge-indicator.ts diff --git a/packages/craftcms-cp/src/components/breadcrumb-item/breadcrumb-item.ts b/packages/craftcms-ui/src/components/breadcrumb-item/breadcrumb-item.ts similarity index 100% rename from packages/craftcms-cp/src/components/breadcrumb-item/breadcrumb-item.ts rename to packages/craftcms-ui/src/components/breadcrumb-item/breadcrumb-item.ts diff --git a/packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.stories.ts b/packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.stories.ts rename to packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.stories.ts diff --git a/packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.styles.ts b/packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.styles.ts rename to packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.styles.ts diff --git a/packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.ts b/packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.ts similarity index 100% rename from packages/craftcms-cp/src/components/breadcrumbs/breadcrumbs.ts rename to packages/craftcms-ui/src/components/breadcrumbs/breadcrumbs.ts diff --git a/packages/craftcms-cp/src/components/button-group/button-group.stories.ts b/packages/craftcms-ui/src/components/button-group/button-group.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/button-group/button-group.stories.ts rename to packages/craftcms-ui/src/components/button-group/button-group.stories.ts diff --git a/packages/craftcms-cp/src/components/button-group/button-group.styles.ts b/packages/craftcms-ui/src/components/button-group/button-group.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/button-group/button-group.styles.ts rename to packages/craftcms-ui/src/components/button-group/button-group.styles.ts diff --git a/packages/craftcms-cp/src/components/button-group/button-group.ts b/packages/craftcms-ui/src/components/button-group/button-group.ts similarity index 100% rename from packages/craftcms-cp/src/components/button-group/button-group.ts rename to packages/craftcms-ui/src/components/button-group/button-group.ts diff --git a/packages/craftcms-cp/src/components/button/Docs.mdx b/packages/craftcms-ui/src/components/button/Docs.mdx similarity index 100% rename from packages/craftcms-cp/src/components/button/Docs.mdx rename to packages/craftcms-ui/src/components/button/Docs.mdx diff --git a/packages/craftcms-cp/src/components/button/button.stories.ts b/packages/craftcms-ui/src/components/button/button.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/button/button.stories.ts rename to packages/craftcms-ui/src/components/button/button.stories.ts diff --git a/packages/craftcms-cp/src/components/button/button.styles.ts b/packages/craftcms-ui/src/components/button/button.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/button/button.styles.ts rename to packages/craftcms-ui/src/components/button/button.styles.ts diff --git a/packages/craftcms-cp/src/components/button/button.test.ts b/packages/craftcms-ui/src/components/button/button.test.ts similarity index 100% rename from packages/craftcms-cp/src/components/button/button.test.ts rename to packages/craftcms-ui/src/components/button/button.test.ts diff --git a/packages/craftcms-cp/src/components/button/button.ts b/packages/craftcms-ui/src/components/button/button.ts similarity index 100% rename from packages/craftcms-cp/src/components/button/button.ts rename to packages/craftcms-ui/src/components/button/button.ts diff --git a/packages/craftcms-cp/src/components/callout/callout.stories.ts b/packages/craftcms-ui/src/components/callout/callout.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/callout/callout.stories.ts rename to packages/craftcms-ui/src/components/callout/callout.stories.ts diff --git a/packages/craftcms-cp/src/components/callout/callout.styles.ts b/packages/craftcms-ui/src/components/callout/callout.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/callout/callout.styles.ts rename to packages/craftcms-ui/src/components/callout/callout.styles.ts diff --git a/packages/craftcms-cp/src/components/callout/callout.ts b/packages/craftcms-ui/src/components/callout/callout.ts similarity index 100% rename from packages/craftcms-cp/src/components/callout/callout.ts rename to packages/craftcms-ui/src/components/callout/callout.ts diff --git a/packages/craftcms-cp/src/components/card/card.stories.ts b/packages/craftcms-ui/src/components/card/card.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/card/card.stories.ts rename to packages/craftcms-ui/src/components/card/card.stories.ts diff --git a/packages/craftcms-cp/src/components/card/card.styles.ts b/packages/craftcms-ui/src/components/card/card.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/card/card.styles.ts rename to packages/craftcms-ui/src/components/card/card.styles.ts diff --git a/packages/craftcms-cp/src/components/card/card.ts b/packages/craftcms-ui/src/components/card/card.ts similarity index 100% rename from packages/craftcms-cp/src/components/card/card.ts rename to packages/craftcms-ui/src/components/card/card.ts diff --git a/packages/craftcms-cp/src/components/checkbox-group/checkbox-group.ts b/packages/craftcms-ui/src/components/checkbox-group/checkbox-group.ts similarity index 100% rename from packages/craftcms-cp/src/components/checkbox-group/checkbox-group.ts rename to packages/craftcms-ui/src/components/checkbox-group/checkbox-group.ts diff --git a/packages/craftcms-cp/src/components/checkbox-indeterminate/checkbox-indeterminate.stories.ts b/packages/craftcms-ui/src/components/checkbox-indeterminate/checkbox-indeterminate.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/checkbox-indeterminate/checkbox-indeterminate.stories.ts rename to packages/craftcms-ui/src/components/checkbox-indeterminate/checkbox-indeterminate.stories.ts diff --git a/packages/craftcms-cp/src/components/checkbox-indeterminate/checkbox-indeterminate.ts b/packages/craftcms-ui/src/components/checkbox-indeterminate/checkbox-indeterminate.ts similarity index 100% rename from packages/craftcms-cp/src/components/checkbox-indeterminate/checkbox-indeterminate.ts rename to packages/craftcms-ui/src/components/checkbox-indeterminate/checkbox-indeterminate.ts diff --git a/packages/craftcms-cp/src/components/checkbox/checkbox.stories.ts b/packages/craftcms-ui/src/components/checkbox/checkbox.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/checkbox/checkbox.stories.ts rename to packages/craftcms-ui/src/components/checkbox/checkbox.stories.ts diff --git a/packages/craftcms-cp/src/components/checkbox/checkbox.ts b/packages/craftcms-ui/src/components/checkbox/checkbox.ts similarity index 100% rename from packages/craftcms-cp/src/components/checkbox/checkbox.ts rename to packages/craftcms-ui/src/components/checkbox/checkbox.ts diff --git a/packages/craftcms-cp/src/components/chip/chip.stories.ts b/packages/craftcms-ui/src/components/chip/chip.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/chip/chip.stories.ts rename to packages/craftcms-ui/src/components/chip/chip.stories.ts diff --git a/packages/craftcms-cp/src/components/chip/chip.styles.ts b/packages/craftcms-ui/src/components/chip/chip.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/chip/chip.styles.ts rename to packages/craftcms-ui/src/components/chip/chip.styles.ts diff --git a/packages/craftcms-cp/src/components/chip/chip.ts b/packages/craftcms-ui/src/components/chip/chip.ts similarity index 100% rename from packages/craftcms-cp/src/components/chip/chip.ts rename to packages/craftcms-ui/src/components/chip/chip.ts diff --git a/packages/craftcms-cp/src/components/combobox/combobox.stories.ts b/packages/craftcms-ui/src/components/combobox/combobox.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/combobox/combobox.stories.ts rename to packages/craftcms-ui/src/components/combobox/combobox.stories.ts diff --git a/packages/craftcms-cp/src/components/combobox/combobox.styles.ts b/packages/craftcms-ui/src/components/combobox/combobox.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/combobox/combobox.styles.ts rename to packages/craftcms-ui/src/components/combobox/combobox.styles.ts diff --git a/packages/craftcms-cp/src/components/combobox/combobox.ts b/packages/craftcms-ui/src/components/combobox/combobox.ts similarity index 100% rename from packages/craftcms-cp/src/components/combobox/combobox.ts rename to packages/craftcms-ui/src/components/combobox/combobox.ts diff --git a/packages/craftcms-cp/src/components/copy-attribute/copy-attribute.stories.ts b/packages/craftcms-ui/src/components/copy-attribute/copy-attribute.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-attribute/copy-attribute.stories.ts rename to packages/craftcms-ui/src/components/copy-attribute/copy-attribute.stories.ts diff --git a/packages/craftcms-cp/src/components/copy-attribute/copy-attribute.styles.ts b/packages/craftcms-ui/src/components/copy-attribute/copy-attribute.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-attribute/copy-attribute.styles.ts rename to packages/craftcms-ui/src/components/copy-attribute/copy-attribute.styles.ts diff --git a/packages/craftcms-cp/src/components/copy-attribute/copy-attribute.ts b/packages/craftcms-ui/src/components/copy-attribute/copy-attribute.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-attribute/copy-attribute.ts rename to packages/craftcms-ui/src/components/copy-attribute/copy-attribute.ts diff --git a/packages/craftcms-cp/src/components/copy-button/copy-button.stories.ts b/packages/craftcms-ui/src/components/copy-button/copy-button.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-button/copy-button.stories.ts rename to packages/craftcms-ui/src/components/copy-button/copy-button.stories.ts diff --git a/packages/craftcms-cp/src/components/copy-button/copy-button.styles.ts b/packages/craftcms-ui/src/components/copy-button/copy-button.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-button/copy-button.styles.ts rename to packages/craftcms-ui/src/components/copy-button/copy-button.styles.ts diff --git a/packages/craftcms-cp/src/components/copy-button/copy-button.ts b/packages/craftcms-ui/src/components/copy-button/copy-button.ts similarity index 100% rename from packages/craftcms-cp/src/components/copy-button/copy-button.ts rename to packages/craftcms-ui/src/components/copy-button/copy-button.ts diff --git a/packages/craftcms-cp/src/components/dialog/dialog.stories.ts b/packages/craftcms-ui/src/components/dialog/dialog.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/dialog/dialog.stories.ts rename to packages/craftcms-ui/src/components/dialog/dialog.stories.ts diff --git a/packages/craftcms-cp/src/components/dialog/dialog.ts b/packages/craftcms-ui/src/components/dialog/dialog.ts similarity index 100% rename from packages/craftcms-cp/src/components/dialog/dialog.ts rename to packages/craftcms-ui/src/components/dialog/dialog.ts diff --git a/packages/craftcms-cp/src/components/disclosure/disclosure.stories.ts b/packages/craftcms-ui/src/components/disclosure/disclosure.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/disclosure/disclosure.stories.ts rename to packages/craftcms-ui/src/components/disclosure/disclosure.stories.ts diff --git a/packages/craftcms-cp/src/components/disclosure/disclosure.ts b/packages/craftcms-ui/src/components/disclosure/disclosure.ts similarity index 92% rename from packages/craftcms-cp/src/components/disclosure/disclosure.ts rename to packages/craftcms-ui/src/components/disclosure/disclosure.ts index 16c313c34aa..c9be0d481bf 100644 --- a/packages/craftcms-cp/src/components/disclosure/disclosure.ts +++ b/packages/craftcms-ui/src/components/disclosure/disclosure.ts @@ -1,11 +1,13 @@ -import type {WindowWithCraft} from '@src/types/globals'; - /** * Very simple disclosure trigger. * * Allows you to wrap a button[type="button"] and target an element to toggle the `data-state` attribute on. * Set `aria-expanded` on the button */ +import {Cookies} from '@src/utilities/cookies'; + +const cookies = new Cookies(); + export default class CraftDisclosure extends HTMLElement { static observedAttributes = ['state']; private cookieName: string | null = null; @@ -97,7 +99,7 @@ export default class CraftDisclosure extends HTMLElement { } if (this.cookieName) { - (window as WindowWithCraft).Craft?.setCookie(this.cookieName, 'expanded'); + cookies.set(this.cookieName, 'expanded'); } }; @@ -115,10 +117,7 @@ export default class CraftDisclosure extends HTMLElement { } if (this.cookieName) { - (window as WindowWithCraft).Craft?.setCookie( - this.cookieName, - 'collapsed' - ); + cookies.set(this.cookieName, 'collapsed'); } }; diff --git a/packages/craftcms-cp/src/components/drawer/drawer.stories.ts b/packages/craftcms-ui/src/components/drawer/drawer.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/drawer/drawer.stories.ts rename to packages/craftcms-ui/src/components/drawer/drawer.stories.ts diff --git a/packages/craftcms-cp/src/components/drawer/drawer.ts b/packages/craftcms-ui/src/components/drawer/drawer.ts similarity index 100% rename from packages/craftcms-cp/src/components/drawer/drawer.ts rename to packages/craftcms-ui/src/components/drawer/drawer.ts diff --git a/packages/craftcms-cp/src/components/dropdown/dropdown.stories.ts b/packages/craftcms-ui/src/components/dropdown/dropdown.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/dropdown/dropdown.stories.ts rename to packages/craftcms-ui/src/components/dropdown/dropdown.stories.ts diff --git a/packages/craftcms-cp/src/components/dropdown/dropdown.styles.ts b/packages/craftcms-ui/src/components/dropdown/dropdown.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/dropdown/dropdown.styles.ts rename to packages/craftcms-ui/src/components/dropdown/dropdown.styles.ts diff --git a/packages/craftcms-cp/src/components/dropdown/dropdown.ts b/packages/craftcms-ui/src/components/dropdown/dropdown.ts similarity index 100% rename from packages/craftcms-cp/src/components/dropdown/dropdown.ts rename to packages/craftcms-ui/src/components/dropdown/dropdown.ts diff --git a/packages/craftcms-cp/src/components/field-group/field-group.ts b/packages/craftcms-ui/src/components/field-group/field-group.ts similarity index 100% rename from packages/craftcms-cp/src/components/field-group/field-group.ts rename to packages/craftcms-ui/src/components/field-group/field-group.ts diff --git a/packages/craftcms-cp/src/components/icon/icon.stories.ts b/packages/craftcms-ui/src/components/icon/icon.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/icon/icon.stories.ts rename to packages/craftcms-ui/src/components/icon/icon.stories.ts diff --git a/packages/craftcms-cp/src/components/icon/icon.ts b/packages/craftcms-ui/src/components/icon/icon.ts similarity index 100% rename from packages/craftcms-cp/src/components/icon/icon.ts rename to packages/craftcms-ui/src/components/icon/icon.ts diff --git a/packages/craftcms-cp/src/components/indicator/Indicator.mdx b/packages/craftcms-ui/src/components/indicator/Indicator.mdx similarity index 100% rename from packages/craftcms-cp/src/components/indicator/Indicator.mdx rename to packages/craftcms-ui/src/components/indicator/Indicator.mdx diff --git a/packages/craftcms-cp/src/components/indicator/indicator.stories.ts b/packages/craftcms-ui/src/components/indicator/indicator.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/indicator/indicator.stories.ts rename to packages/craftcms-ui/src/components/indicator/indicator.stories.ts diff --git a/packages/craftcms-cp/src/components/indicator/indicator.ts b/packages/craftcms-ui/src/components/indicator/indicator.ts similarity index 100% rename from packages/craftcms-cp/src/components/indicator/indicator.ts rename to packages/craftcms-ui/src/components/indicator/indicator.ts diff --git a/packages/craftcms-cp/src/components/info-icon/info-icon.stories.ts b/packages/craftcms-ui/src/components/info-icon/info-icon.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/info-icon/info-icon.stories.ts rename to packages/craftcms-ui/src/components/info-icon/info-icon.stories.ts diff --git a/packages/craftcms-cp/src/components/info-icon/info-icon.ts b/packages/craftcms-ui/src/components/info-icon/info-icon.ts similarity index 100% rename from packages/craftcms-cp/src/components/info-icon/info-icon.ts rename to packages/craftcms-ui/src/components/info-icon/info-icon.ts diff --git a/packages/craftcms-cp/src/components/input-color/input-color.stories.ts b/packages/craftcms-ui/src/components/input-color/input-color.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-color/input-color.stories.ts rename to packages/craftcms-ui/src/components/input-color/input-color.stories.ts diff --git a/packages/craftcms-cp/src/components/input-color/input-color.styles.ts b/packages/craftcms-ui/src/components/input-color/input-color.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-color/input-color.styles.ts rename to packages/craftcms-ui/src/components/input-color/input-color.styles.ts diff --git a/packages/craftcms-cp/src/components/input-color/input-color.test.ts b/packages/craftcms-ui/src/components/input-color/input-color.test.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-color/input-color.test.ts rename to packages/craftcms-ui/src/components/input-color/input-color.test.ts diff --git a/packages/craftcms-cp/src/components/input-color/input-color.ts b/packages/craftcms-ui/src/components/input-color/input-color.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-color/input-color.ts rename to packages/craftcms-ui/src/components/input-color/input-color.ts diff --git a/packages/craftcms-cp/src/components/input-file/input-file.stories.ts b/packages/craftcms-ui/src/components/input-file/input-file.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-file/input-file.stories.ts rename to packages/craftcms-ui/src/components/input-file/input-file.stories.ts diff --git a/packages/craftcms-cp/src/components/input-file/input-file.styles.ts b/packages/craftcms-ui/src/components/input-file/input-file.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-file/input-file.styles.ts rename to packages/craftcms-ui/src/components/input-file/input-file.styles.ts diff --git a/packages/craftcms-cp/src/components/input-file/input-file.ts b/packages/craftcms-ui/src/components/input-file/input-file.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-file/input-file.ts rename to packages/craftcms-ui/src/components/input-file/input-file.ts diff --git a/packages/craftcms-cp/src/components/input-file/selected-file-list.ts b/packages/craftcms-ui/src/components/input-file/selected-file-list.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-file/selected-file-list.ts rename to packages/craftcms-ui/src/components/input-file/selected-file-list.ts diff --git a/packages/craftcms-cp/src/components/input-handle/input-handle.ts b/packages/craftcms-ui/src/components/input-handle/input-handle.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-handle/input-handle.ts rename to packages/craftcms-ui/src/components/input-handle/input-handle.ts diff --git a/packages/craftcms-cp/src/components/input-password/input-password.stories.ts b/packages/craftcms-ui/src/components/input-password/input-password.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-password/input-password.stories.ts rename to packages/craftcms-ui/src/components/input-password/input-password.stories.ts diff --git a/packages/craftcms-cp/src/components/input-password/input-password.ts b/packages/craftcms-ui/src/components/input-password/input-password.ts similarity index 100% rename from packages/craftcms-cp/src/components/input-password/input-password.ts rename to packages/craftcms-ui/src/components/input-password/input-password.ts diff --git a/packages/craftcms-cp/src/components/input/input.stories.ts b/packages/craftcms-ui/src/components/input/input.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/input/input.stories.ts rename to packages/craftcms-ui/src/components/input/input.stories.ts diff --git a/packages/craftcms-cp/src/components/input/input.styles.ts b/packages/craftcms-ui/src/components/input/input.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/input/input.styles.ts rename to packages/craftcms-ui/src/components/input/input.styles.ts diff --git a/packages/craftcms-cp/src/components/input/input.ts b/packages/craftcms-ui/src/components/input/input.ts similarity index 100% rename from packages/craftcms-cp/src/components/input/input.ts rename to packages/craftcms-ui/src/components/input/input.ts diff --git a/packages/craftcms-cp/src/components/nav-item/nav-item.stories.ts b/packages/craftcms-ui/src/components/nav-item/nav-item.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/nav-item/nav-item.stories.ts rename to packages/craftcms-ui/src/components/nav-item/nav-item.stories.ts diff --git a/packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts b/packages/craftcms-ui/src/components/nav-item/nav-item.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/nav-item/nav-item.styles.ts rename to packages/craftcms-ui/src/components/nav-item/nav-item.styles.ts diff --git a/packages/craftcms-cp/src/components/nav-item/nav-item.ts b/packages/craftcms-ui/src/components/nav-item/nav-item.ts similarity index 100% rename from packages/craftcms-cp/src/components/nav-item/nav-item.ts rename to packages/craftcms-ui/src/components/nav-item/nav-item.ts diff --git a/packages/craftcms-cp/src/components/nav-list/nav-list.ts b/packages/craftcms-ui/src/components/nav-list/nav-list.ts similarity index 100% rename from packages/craftcms-cp/src/components/nav-list/nav-list.ts rename to packages/craftcms-ui/src/components/nav-list/nav-list.ts diff --git a/packages/craftcms-cp/src/components/option/option.styles.ts b/packages/craftcms-ui/src/components/option/option.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/option/option.styles.ts rename to packages/craftcms-ui/src/components/option/option.styles.ts diff --git a/packages/craftcms-cp/src/components/option/option.ts b/packages/craftcms-ui/src/components/option/option.ts similarity index 100% rename from packages/craftcms-cp/src/components/option/option.ts rename to packages/craftcms-ui/src/components/option/option.ts diff --git a/packages/craftcms-cp/src/components/pane/pane.ts b/packages/craftcms-ui/src/components/pane/pane.ts similarity index 100% rename from packages/craftcms-cp/src/components/pane/pane.ts rename to packages/craftcms-ui/src/components/pane/pane.ts diff --git a/packages/craftcms-cp/src/components/popover/popover.ts b/packages/craftcms-ui/src/components/popover/popover.ts similarity index 100% rename from packages/craftcms-cp/src/components/popover/popover.ts rename to packages/craftcms-ui/src/components/popover/popover.ts diff --git a/packages/craftcms-cp/src/components/progress-bar/progress-bar.stories.ts b/packages/craftcms-ui/src/components/progress-bar/progress-bar.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/progress-bar/progress-bar.stories.ts rename to packages/craftcms-ui/src/components/progress-bar/progress-bar.stories.ts diff --git a/packages/craftcms-cp/src/components/progress-bar/progress-bar.styles.ts b/packages/craftcms-ui/src/components/progress-bar/progress-bar.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/progress-bar/progress-bar.styles.ts rename to packages/craftcms-ui/src/components/progress-bar/progress-bar.styles.ts diff --git a/packages/craftcms-cp/src/components/progress-bar/progress-bar.ts b/packages/craftcms-ui/src/components/progress-bar/progress-bar.ts similarity index 100% rename from packages/craftcms-cp/src/components/progress-bar/progress-bar.ts rename to packages/craftcms-ui/src/components/progress-bar/progress-bar.ts diff --git a/packages/craftcms-cp/src/components/progress/progress.stories.ts b/packages/craftcms-ui/src/components/progress/progress.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/progress/progress.stories.ts rename to packages/craftcms-ui/src/components/progress/progress.stories.ts diff --git a/packages/craftcms-cp/src/components/progress/progress.ts b/packages/craftcms-ui/src/components/progress/progress.ts similarity index 100% rename from packages/craftcms-cp/src/components/progress/progress.ts rename to packages/craftcms-ui/src/components/progress/progress.ts diff --git a/packages/craftcms-cp/src/components/radio-group/radio-group.ts b/packages/craftcms-ui/src/components/radio-group/radio-group.ts similarity index 100% rename from packages/craftcms-cp/src/components/radio-group/radio-group.ts rename to packages/craftcms-ui/src/components/radio-group/radio-group.ts diff --git a/packages/craftcms-cp/src/components/radio/radio.ts b/packages/craftcms-ui/src/components/radio/radio.ts similarity index 100% rename from packages/craftcms-cp/src/components/radio/radio.ts rename to packages/craftcms-ui/src/components/radio/radio.ts diff --git a/packages/craftcms-cp/src/components/reorder-button/reorder-button.stories.ts b/packages/craftcms-ui/src/components/reorder-button/reorder-button.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/reorder-button/reorder-button.stories.ts rename to packages/craftcms-ui/src/components/reorder-button/reorder-button.stories.ts diff --git a/packages/craftcms-cp/src/components/reorder-button/reorder-button.styles.ts b/packages/craftcms-ui/src/components/reorder-button/reorder-button.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/reorder-button/reorder-button.styles.ts rename to packages/craftcms-ui/src/components/reorder-button/reorder-button.styles.ts diff --git a/packages/craftcms-cp/src/components/reorder-button/reorder-button.ts b/packages/craftcms-ui/src/components/reorder-button/reorder-button.ts similarity index 100% rename from packages/craftcms-cp/src/components/reorder-button/reorder-button.ts rename to packages/craftcms-ui/src/components/reorder-button/reorder-button.ts diff --git a/packages/craftcms-cp/src/components/select-color/select-color.stories.ts b/packages/craftcms-ui/src/components/select-color/select-color.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-color/select-color.stories.ts rename to packages/craftcms-ui/src/components/select-color/select-color.stories.ts diff --git a/packages/craftcms-cp/src/components/select-color/select-color.styles.ts b/packages/craftcms-ui/src/components/select-color/select-color.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-color/select-color.styles.ts rename to packages/craftcms-ui/src/components/select-color/select-color.styles.ts diff --git a/packages/craftcms-cp/src/components/select-color/select-color.ts b/packages/craftcms-ui/src/components/select-color/select-color.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-color/select-color.ts rename to packages/craftcms-ui/src/components/select-color/select-color.ts diff --git a/packages/craftcms-cp/src/components/select-rich/select-invoker.styles.ts b/packages/craftcms-ui/src/components/select-rich/select-invoker.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-rich/select-invoker.styles.ts rename to packages/craftcms-ui/src/components/select-rich/select-invoker.styles.ts diff --git a/packages/craftcms-cp/src/components/select-rich/select-invoker.ts b/packages/craftcms-ui/src/components/select-rich/select-invoker.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-rich/select-invoker.ts rename to packages/craftcms-ui/src/components/select-rich/select-invoker.ts diff --git a/packages/craftcms-cp/src/components/select-rich/select-rich.stories.ts b/packages/craftcms-ui/src/components/select-rich/select-rich.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-rich/select-rich.stories.ts rename to packages/craftcms-ui/src/components/select-rich/select-rich.stories.ts diff --git a/packages/craftcms-cp/src/components/select-rich/select-rich.styles.ts b/packages/craftcms-ui/src/components/select-rich/select-rich.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-rich/select-rich.styles.ts rename to packages/craftcms-ui/src/components/select-rich/select-rich.styles.ts diff --git a/packages/craftcms-cp/src/components/select-rich/select-rich.ts b/packages/craftcms-ui/src/components/select-rich/select-rich.ts similarity index 100% rename from packages/craftcms-cp/src/components/select-rich/select-rich.ts rename to packages/craftcms-ui/src/components/select-rich/select-rich.ts diff --git a/packages/craftcms-cp/src/components/select/select.stories.ts b/packages/craftcms-ui/src/components/select/select.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/select/select.stories.ts rename to packages/craftcms-ui/src/components/select/select.stories.ts diff --git a/packages/craftcms-cp/src/components/select/select.styles.ts b/packages/craftcms-ui/src/components/select/select.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/select/select.styles.ts rename to packages/craftcms-ui/src/components/select/select.styles.ts diff --git a/packages/craftcms-cp/src/components/select/select.ts b/packages/craftcms-ui/src/components/select/select.ts similarity index 100% rename from packages/craftcms-cp/src/components/select/select.ts rename to packages/craftcms-ui/src/components/select/select.ts diff --git a/packages/craftcms-cp/src/components/shortcut/shortcut.stories.ts b/packages/craftcms-ui/src/components/shortcut/shortcut.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/shortcut/shortcut.stories.ts rename to packages/craftcms-ui/src/components/shortcut/shortcut.stories.ts diff --git a/packages/craftcms-cp/src/components/shortcut/shortcut.ts b/packages/craftcms-ui/src/components/shortcut/shortcut.ts similarity index 100% rename from packages/craftcms-cp/src/components/shortcut/shortcut.ts rename to packages/craftcms-ui/src/components/shortcut/shortcut.ts diff --git a/packages/craftcms-cp/src/components/spinner/spinner.stories.ts b/packages/craftcms-ui/src/components/spinner/spinner.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/spinner/spinner.stories.ts rename to packages/craftcms-ui/src/components/spinner/spinner.stories.ts diff --git a/packages/craftcms-cp/src/components/spinner/spinner.styles.ts b/packages/craftcms-ui/src/components/spinner/spinner.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/spinner/spinner.styles.ts rename to packages/craftcms-ui/src/components/spinner/spinner.styles.ts diff --git a/packages/craftcms-cp/src/components/spinner/spinner.ts b/packages/craftcms-ui/src/components/spinner/spinner.ts similarity index 100% rename from packages/craftcms-cp/src/components/spinner/spinner.ts rename to packages/craftcms-ui/src/components/spinner/spinner.ts diff --git a/packages/craftcms-cp/src/components/status/status.stories.ts b/packages/craftcms-ui/src/components/status/status.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/status/status.stories.ts rename to packages/craftcms-ui/src/components/status/status.stories.ts diff --git a/packages/craftcms-cp/src/components/status/status.styles.ts b/packages/craftcms-ui/src/components/status/status.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/status/status.styles.ts rename to packages/craftcms-ui/src/components/status/status.styles.ts diff --git a/packages/craftcms-cp/src/components/status/status.ts b/packages/craftcms-ui/src/components/status/status.ts similarity index 100% rename from packages/craftcms-cp/src/components/status/status.ts rename to packages/craftcms-ui/src/components/status/status.ts diff --git a/packages/craftcms-cp/src/components/switch-button/switch-button.ts b/packages/craftcms-ui/src/components/switch-button/switch-button.ts similarity index 100% rename from packages/craftcms-cp/src/components/switch-button/switch-button.ts rename to packages/craftcms-ui/src/components/switch-button/switch-button.ts diff --git a/packages/craftcms-cp/src/components/switch/switch.stories.ts b/packages/craftcms-ui/src/components/switch/switch.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/switch/switch.stories.ts rename to packages/craftcms-ui/src/components/switch/switch.stories.ts diff --git a/packages/craftcms-cp/src/components/switch/switch.styles.ts b/packages/craftcms-ui/src/components/switch/switch.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/switch/switch.styles.ts rename to packages/craftcms-ui/src/components/switch/switch.styles.ts diff --git a/packages/craftcms-cp/src/components/switch/switch.ts b/packages/craftcms-ui/src/components/switch/switch.ts similarity index 100% rename from packages/craftcms-cp/src/components/switch/switch.ts rename to packages/craftcms-ui/src/components/switch/switch.ts diff --git a/packages/craftcms-cp/src/components/tab/tab.styles.ts b/packages/craftcms-ui/src/components/tab/tab.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/tab/tab.styles.ts rename to packages/craftcms-ui/src/components/tab/tab.styles.ts diff --git a/packages/craftcms-cp/src/components/tab/tab.ts b/packages/craftcms-ui/src/components/tab/tab.ts similarity index 100% rename from packages/craftcms-cp/src/components/tab/tab.ts rename to packages/craftcms-ui/src/components/tab/tab.ts diff --git a/packages/craftcms-cp/src/components/tabs/tabs.stories.ts b/packages/craftcms-ui/src/components/tabs/tabs.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/tabs/tabs.stories.ts rename to packages/craftcms-ui/src/components/tabs/tabs.stories.ts diff --git a/packages/craftcms-cp/src/components/tabs/tabs.styles.ts b/packages/craftcms-ui/src/components/tabs/tabs.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/tabs/tabs.styles.ts rename to packages/craftcms-ui/src/components/tabs/tabs.styles.ts diff --git a/packages/craftcms-cp/src/components/tabs/tabs.ts b/packages/craftcms-ui/src/components/tabs/tabs.ts similarity index 100% rename from packages/craftcms-cp/src/components/tabs/tabs.ts rename to packages/craftcms-ui/src/components/tabs/tabs.ts diff --git a/packages/craftcms-cp/src/components/textarea/textarea.stories.ts b/packages/craftcms-ui/src/components/textarea/textarea.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/textarea/textarea.stories.ts rename to packages/craftcms-ui/src/components/textarea/textarea.stories.ts diff --git a/packages/craftcms-cp/src/components/textarea/textarea.styles.ts b/packages/craftcms-ui/src/components/textarea/textarea.styles.ts similarity index 100% rename from packages/craftcms-cp/src/components/textarea/textarea.styles.ts rename to packages/craftcms-ui/src/components/textarea/textarea.styles.ts diff --git a/packages/craftcms-cp/src/components/textarea/textarea.ts b/packages/craftcms-ui/src/components/textarea/textarea.ts similarity index 100% rename from packages/craftcms-cp/src/components/textarea/textarea.ts rename to packages/craftcms-ui/src/components/textarea/textarea.ts diff --git a/packages/craftcms-cp/src/components/tooltip/Tooltip.mdx b/packages/craftcms-ui/src/components/tooltip/Tooltip.mdx similarity index 100% rename from packages/craftcms-cp/src/components/tooltip/Tooltip.mdx rename to packages/craftcms-ui/src/components/tooltip/Tooltip.mdx diff --git a/packages/craftcms-cp/src/components/tooltip/tooltip.stories.ts b/packages/craftcms-ui/src/components/tooltip/tooltip.stories.ts similarity index 100% rename from packages/craftcms-cp/src/components/tooltip/tooltip.stories.ts rename to packages/craftcms-ui/src/components/tooltip/tooltip.stories.ts diff --git a/packages/craftcms-cp/src/components/tooltip/tooltip.ts b/packages/craftcms-ui/src/components/tooltip/tooltip.ts similarity index 100% rename from packages/craftcms-cp/src/components/tooltip/tooltip.ts rename to packages/craftcms-ui/src/components/tooltip/tooltip.ts diff --git a/packages/craftcms-cp/src/components/visually-hidden/visually-hidden.ts b/packages/craftcms-ui/src/components/visually-hidden/visually-hidden.ts similarity index 100% rename from packages/craftcms-cp/src/components/visually-hidden/visually-hidden.ts rename to packages/craftcms-ui/src/components/visually-hidden/visually-hidden.ts diff --git a/packages/craftcms-cp/src/constants/appearances.ts b/packages/craftcms-ui/src/constants/appearances.ts similarity index 100% rename from packages/craftcms-cp/src/constants/appearances.ts rename to packages/craftcms-ui/src/constants/appearances.ts diff --git a/packages/craftcms-cp/src/constants/colors.ts b/packages/craftcms-ui/src/constants/colors.ts similarity index 100% rename from packages/craftcms-cp/src/constants/colors.ts rename to packages/craftcms-ui/src/constants/colors.ts diff --git a/packages/craftcms-cp/src/constants/variants.ts b/packages/craftcms-ui/src/constants/variants.ts similarity index 100% rename from packages/craftcms-cp/src/constants/variants.ts rename to packages/craftcms-ui/src/constants/variants.ts diff --git a/packages/craftcms-cp/src/index.ts b/packages/craftcms-ui/src/index.ts similarity index 89% rename from packages/craftcms-cp/src/index.ts rename to packages/craftcms-ui/src/index.ts index 01965ccd815..8a866d8c936 100644 --- a/packages/craftcms-cp/src/index.ts +++ b/packages/craftcms-ui/src/index.ts @@ -5,7 +5,6 @@ import {configureIcons} from './utilities/icons'; import './types/globals.js'; import './types/events.js'; import './types/index.js'; -import './types/queue.js'; export {CraftAuthChallengeForm} from './components/auth-challenge-form/auth-challenge-form.js'; export {default as CraftActionItem} from './components/action-item/action-item.js'; @@ -70,28 +69,9 @@ export {default as CraftVisuallyHidden} from './components/visually-hidden/visua export * from './utilities/cookies.js'; export * from './utilities/translate.js'; export * from './utilities/format.js'; -export * from './utilities/api/actionClient.js'; -export * from './utilities/api/apiClient.js'; export * from './utilities/string.js'; export * from './utilities/dom.js'; -// Services -export {QueueService} from './services/Queue.js'; -export {ConfigService} from './services/Config.js'; -export {AssetIndexer} from './services/AssetIndexer.js'; -export type { - IndexingSession, - IndexingResponse, - StartIndexingParams, - FinishIndexingParams, - ChangeEventData, - ErrorEventData, - MissingEntries, - IndexerEventType, - IndexerEventListener, -} from './services/AssetIndexer.js'; -export {IndexingActions} from './services/AssetIndexer.js'; - // Types export * from './types/index.js'; diff --git a/packages/craftcms-cp/src/stories/tokens/Colors.mdx b/packages/craftcms-ui/src/stories/tokens/Colors.mdx similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/Colors.mdx rename to packages/craftcms-ui/src/stories/tokens/Colors.mdx diff --git a/packages/craftcms-cp/src/stories/tokens/Docs.mdx b/packages/craftcms-ui/src/stories/tokens/Docs.mdx similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/Docs.mdx rename to packages/craftcms-ui/src/stories/tokens/Docs.mdx diff --git a/packages/craftcms-cp/src/stories/tokens/colorable.stories.ts b/packages/craftcms-ui/src/stories/tokens/colorable.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/colorable.stories.ts rename to packages/craftcms-ui/src/stories/tokens/colorable.stories.ts diff --git a/packages/craftcms-cp/src/stories/tokens/colors.stories.ts b/packages/craftcms-ui/src/stories/tokens/colors.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/colors.stories.ts rename to packages/craftcms-ui/src/stories/tokens/colors.stories.ts diff --git a/packages/craftcms-cp/src/stories/tokens/helpers.ts b/packages/craftcms-ui/src/stories/tokens/helpers.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/helpers.ts rename to packages/craftcms-ui/src/stories/tokens/helpers.ts diff --git a/packages/craftcms-cp/src/stories/tokens/spacing.stories.ts b/packages/craftcms-ui/src/stories/tokens/spacing.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/spacing.stories.ts rename to packages/craftcms-ui/src/stories/tokens/spacing.stories.ts diff --git a/packages/craftcms-cp/src/stories/tokens/surface.stories.ts b/packages/craftcms-ui/src/stories/tokens/surface.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/surface.stories.ts rename to packages/craftcms-ui/src/stories/tokens/surface.stories.ts diff --git a/packages/craftcms-cp/src/stories/tokens/text.stories.ts b/packages/craftcms-ui/src/stories/tokens/text.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/text.stories.ts rename to packages/craftcms-ui/src/stories/tokens/text.stories.ts diff --git a/packages/craftcms-cp/src/stories/tokens/variants.stories.ts b/packages/craftcms-ui/src/stories/tokens/variants.stories.ts similarity index 100% rename from packages/craftcms-cp/src/stories/tokens/variants.stories.ts rename to packages/craftcms-ui/src/stories/tokens/variants.stories.ts diff --git a/packages/craftcms-ui/src/styles/base.css b/packages/craftcms-ui/src/styles/base.css new file mode 100644 index 00000000000..35923c27552 --- /dev/null +++ b/packages/craftcms-ui/src/styles/base.css @@ -0,0 +1,7 @@ +@layer preflight, theme, base, components, utilities; + +@import './shared/preflight.css' layer(preflight); +@import './shared/variables.css' layer(theme); +@import './shared/tokens.css' layer(theme); +@import './shared/colorable.css' layer(theme); +@import './shared/base.css' layer(base); diff --git a/packages/craftcms-cp/src/styles/color-definitions.js b/packages/craftcms-ui/src/styles/color-definitions.js similarity index 100% rename from packages/craftcms-cp/src/styles/color-definitions.js rename to packages/craftcms-ui/src/styles/color-definitions.js diff --git a/packages/craftcms-cp/src/styles/form.styles.ts b/packages/craftcms-ui/src/styles/form.styles.ts similarity index 100% rename from packages/craftcms-cp/src/styles/form.styles.ts rename to packages/craftcms-ui/src/styles/form.styles.ts diff --git a/packages/craftcms-cp/src/styles/host.styles.ts b/packages/craftcms-ui/src/styles/host.styles.ts similarity index 100% rename from packages/craftcms-cp/src/styles/host.styles.ts rename to packages/craftcms-ui/src/styles/host.styles.ts diff --git a/packages/craftcms-cp/src/styles/shared/base.css b/packages/craftcms-ui/src/styles/shared/base.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/base.css rename to packages/craftcms-ui/src/styles/shared/base.css diff --git a/packages/craftcms-cp/src/styles/shared/color-palette.css b/packages/craftcms-ui/src/styles/shared/color-palette.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/color-palette.css rename to packages/craftcms-ui/src/styles/shared/color-palette.css diff --git a/packages/craftcms-cp/src/styles/shared/colorable.css b/packages/craftcms-ui/src/styles/shared/colorable.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/colorable.css rename to packages/craftcms-ui/src/styles/shared/colorable.css diff --git a/packages/craftcms-cp/src/styles/shared/preflight.css b/packages/craftcms-ui/src/styles/shared/preflight.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/preflight.css rename to packages/craftcms-ui/src/styles/shared/preflight.css diff --git a/packages/craftcms-cp/src/styles/shared/tokens.css b/packages/craftcms-ui/src/styles/shared/tokens.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/tokens.css rename to packages/craftcms-ui/src/styles/shared/tokens.css diff --git a/packages/craftcms-cp/src/styles/shared/variables.css b/packages/craftcms-ui/src/styles/shared/variables.css similarity index 100% rename from packages/craftcms-cp/src/styles/shared/variables.css rename to packages/craftcms-ui/src/styles/shared/variables.css diff --git a/packages/craftcms-cp/src/styles/static-variants.styles.ts b/packages/craftcms-ui/src/styles/static-variants.styles.ts similarity index 100% rename from packages/craftcms-cp/src/styles/static-variants.styles.ts rename to packages/craftcms-ui/src/styles/static-variants.styles.ts diff --git a/packages/craftcms-cp/src/styles/variants.styles.ts b/packages/craftcms-ui/src/styles/variants.styles.ts similarity index 100% rename from packages/craftcms-cp/src/styles/variants.styles.ts rename to packages/craftcms-ui/src/styles/variants.styles.ts diff --git a/packages/craftcms-cp/src/styles/visually-hidden.styles.ts b/packages/craftcms-ui/src/styles/visually-hidden.styles.ts similarity index 100% rename from packages/craftcms-cp/src/styles/visually-hidden.styles.ts rename to packages/craftcms-ui/src/styles/visually-hidden.styles.ts diff --git a/packages/craftcms-cp/src/types/events.ts b/packages/craftcms-ui/src/types/events.ts similarity index 100% rename from packages/craftcms-cp/src/types/events.ts rename to packages/craftcms-ui/src/types/events.ts diff --git a/packages/craftcms-ui/src/types/globals.ts b/packages/craftcms-ui/src/types/globals.ts new file mode 100644 index 00000000000..36031aaddde --- /dev/null +++ b/packages/craftcms-ui/src/types/globals.ts @@ -0,0 +1,37 @@ +declare const d3: any | undefined; +declare const d3FormatLocaleDefinition: any | undefined; + +interface ProgressBarInterface { + $progressBar: JQuery; + + new ( + $element: JQuery, + displaySteps?: boolean, + settings?: Object + ): ProgressBarInterface; + + setItemCount(count: number): void; + + setProcessedItemCount(count: number): void; + + updateProgressBar(): void; + + showProgressBar(): void; +} + +interface IntervalManagerInterface { + new (settings?: Object): IntervalManagerInterface; + + stop(): void; + + start(): void; +} + +type Site = { + handle: string; + id: number; + name: string; + uid: string; +}; + +export {}; diff --git a/packages/craftcms-cp/src/types/index.ts b/packages/craftcms-ui/src/types/index.ts similarity index 78% rename from packages/craftcms-cp/src/types/index.ts rename to packages/craftcms-ui/src/types/index.ts index 5b11fbcc2f3..c86e57d590d 100644 --- a/packages/craftcms-cp/src/types/index.ts +++ b/packages/craftcms-ui/src/types/index.ts @@ -1,9 +1,3 @@ -export interface DateObject { - date: string; - timezone_type: string; - timezone: string; -} - export const AsyncStates = { Idle: 'idle', Loading: 'loading', @@ -13,7 +7,6 @@ export const AsyncStates = { export type AsyncState = (typeof AsyncStates)[keyof typeof AsyncStates]; -export * from './queue.js'; export type { ActionMenuActions, ActionMenuItem, diff --git a/packages/craftcms-cp/src/utilities/cookies.test.ts b/packages/craftcms-ui/src/utilities/cookies.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/cookies.test.ts rename to packages/craftcms-ui/src/utilities/cookies.test.ts diff --git a/packages/craftcms-cp/src/utilities/cookies.ts b/packages/craftcms-ui/src/utilities/cookies.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/cookies.ts rename to packages/craftcms-ui/src/utilities/cookies.ts diff --git a/packages/craftcms-cp/src/utilities/dom.test.ts b/packages/craftcms-ui/src/utilities/dom.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/dom.test.ts rename to packages/craftcms-ui/src/utilities/dom.test.ts diff --git a/packages/craftcms-cp/src/utilities/dom.ts b/packages/craftcms-ui/src/utilities/dom.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/dom.ts rename to packages/craftcms-ui/src/utilities/dom.ts diff --git a/packages/craftcms-cp/src/utilities/escapeHtml.ts b/packages/craftcms-ui/src/utilities/escapeHtml.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/escapeHtml.ts rename to packages/craftcms-ui/src/utilities/escapeHtml.ts diff --git a/packages/craftcms-cp/src/utilities/format.test.ts b/packages/craftcms-ui/src/utilities/format.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/format.test.ts rename to packages/craftcms-ui/src/utilities/format.test.ts diff --git a/packages/craftcms-cp/src/utilities/format.ts b/packages/craftcms-ui/src/utilities/format.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/format.ts rename to packages/craftcms-ui/src/utilities/format.ts diff --git a/packages/craftcms-cp/src/utilities/icons.test.ts b/packages/craftcms-ui/src/utilities/icons.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/icons.test.ts rename to packages/craftcms-ui/src/utilities/icons.test.ts diff --git a/packages/craftcms-cp/src/utilities/icons.ts b/packages/craftcms-ui/src/utilities/icons.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/icons.ts rename to packages/craftcms-ui/src/utilities/icons.ts diff --git a/packages/craftcms-cp/src/utilities/string.test.ts b/packages/craftcms-ui/src/utilities/string.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/string.test.ts rename to packages/craftcms-ui/src/utilities/string.test.ts diff --git a/packages/craftcms-cp/src/utilities/string.ts b/packages/craftcms-ui/src/utilities/string.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/string.ts rename to packages/craftcms-ui/src/utilities/string.ts diff --git a/packages/craftcms-cp/src/utilities/translate.test.ts b/packages/craftcms-ui/src/utilities/translate.test.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/translate.test.ts rename to packages/craftcms-ui/src/utilities/translate.test.ts diff --git a/packages/craftcms-cp/src/utilities/translate.ts b/packages/craftcms-ui/src/utilities/translate.ts similarity index 100% rename from packages/craftcms-cp/src/utilities/translate.ts rename to packages/craftcms-ui/src/utilities/translate.ts diff --git a/packages/craftcms-cp/tailwind.css b/packages/craftcms-ui/tailwind.css similarity index 96% rename from packages/craftcms-cp/tailwind.css rename to packages/craftcms-ui/tailwind.css index e7c21df8fac..67c8659debd 100644 --- a/packages/craftcms-cp/tailwind.css +++ b/packages/craftcms-ui/tailwind.css @@ -6,11 +6,11 @@ * * Usage in your CSS entry file: * - * @import "@craftcms/cp/dist/styles/cp.css"; // loads :root token values - * @import "@craftcms/cp/tailwind.css"; // @theme inline — generate utilities + * @import "@craftcms/ui/styles/base.css"; // loads :root token values + * @import "@craftcms/ui/tailwind.css"; // @theme inline — generate utilities * @import "tailwindcss"; // Tailwind v4 engine * - * The --c-* variables must already be in scope (via cp.css) for var() to + * The --c-* variables must already be in scope (via base.css) for var() to * resolve at render time. Using @theme inline means the generated utilities * reference the CSS custom properties directly, so dark-mode overrides in * [data-theme='dark'] are picked up automatically. diff --git a/packages/craftcms-cp/tsconfig.json b/packages/craftcms-ui/tsconfig.json similarity index 100% rename from packages/craftcms-cp/tsconfig.json rename to packages/craftcms-ui/tsconfig.json diff --git a/packages/craftcms-cp/vitest.config.ts b/packages/craftcms-ui/vitest.config.ts similarity index 88% rename from packages/craftcms-cp/vitest.config.ts rename to packages/craftcms-ui/vitest.config.ts index ff016216e31..1d1d7e2a225 100644 --- a/packages/craftcms-cp/vitest.config.ts +++ b/packages/craftcms-ui/vitest.config.ts @@ -22,16 +22,6 @@ export default defineConfig({ environment: 'happy-dom', }, }, - { - resolve: { - tsconfigPaths: true, - }, - test: { - name: 'services', - root: './src/services', - environment: 'happy-dom', - }, - }, { resolve: { tsconfigPaths: true, diff --git a/packages/craftcms-cp/vitest.shims.d.ts b/packages/craftcms-ui/vitest.shims.d.ts similarity index 100% rename from packages/craftcms-cp/vitest.shims.d.ts rename to packages/craftcms-ui/vitest.shims.d.ts diff --git a/resources/css/cp.css b/resources/css/cp.css index 5c1d450c1a7..a951a83e806 100644 --- a/resources/css/cp.css +++ b/resources/css/cp.css @@ -4,8 +4,8 @@ CP Styles @layer theme, base, components, cp, utilities; @import 'tailwindcss/theme.css' layer(theme); @import 'tailwindcss/utilities.css' layer(utilities); -@import '@craftcms/cp/styles/cp.css' layer(cp); -@import '@craftcms/cp/tailwind.css' layer(theme); +@import './ui.css' layer(cp); +@import '@craftcms/ui/tailwind.css' layer(theme); @import './fld.css'; @import './cvd.css'; @@ -153,9 +153,3 @@ Form controls box-shadow: var(--c-input-shadow); overflow: clip; } - -/** -Select - */ -.cp-form-control--select { -} diff --git a/resources/css/fld.css b/resources/css/fld.css index d9db9998d3c..2720614a012 100644 --- a/resources/css/fld.css +++ b/resources/css/fld.css @@ -222,7 +222,7 @@ body:not(.dragging) .fld-element { } .fld-element-icon svg * { - fill: currentColor; + fill: currentcolor; stroke-width: 0; } @@ -347,9 +347,11 @@ body:not(.dragging) .fld-element { margin-block-start: var(--c-spacing-sm); } -/*.fld-field-indicators {*/ -/* display: none;*/ -/*}*/ +/* .fld-field-indicators { */ + +/* display: none; */ + +/* } */ .fld-ui-library > *:not(:first-child) { margin-block-start: var(--c-spacing-sm); diff --git a/packages/craftcms-cp/src/styles/cp.css b/resources/css/ui.css similarity index 79% rename from packages/craftcms-cp/src/styles/cp.css rename to resources/css/ui.css index 715500bf73a..b0441eb2b54 100644 --- a/packages/craftcms-cp/src/styles/cp.css +++ b/resources/css/ui.css @@ -1,10 +1,10 @@ @layer preflight, theme, base, components, utilities; -@import './shared/preflight.css' layer(preflight); -@import './shared/variables.css' layer(theme); -@import './shared/tokens.css' layer(theme); -@import './shared/colorable.css' layer(theme); -@import './shared/base.css' layer(base); +@import '@craftcms/ui/styles/shared/preflight.css' layer(preflight); +@import '@craftcms/ui/styles/shared/variables.css' layer(theme); +@import '@craftcms/ui/styles/shared/tokens.css' layer(theme); +@import '@craftcms/ui/styles/shared/colorable.css' layer(theme); +@import '@craftcms/ui/styles/shared/base.css' layer(base); .resizable-container { border: 2px solid; @@ -24,7 +24,7 @@ height: 1px; margin: -1px; overflow: hidden; - clip: rect(0, 0, 0, 0); + clip-path: inset(50%); white-space: nowrap; background-color: var(--c-bg-body); text-decoration: none; @@ -40,7 +40,7 @@ width: auto; height: auto; overflow: visible; - clip: auto; + clip-path: none; white-space: normal; inset-inline-start: var(--x-position); inset-block-start: var(--y-position); diff --git a/resources/js/bootstrap/cp.ts b/resources/js/bootstrap/cp.ts index 066303f32cc..29f49669438 100644 --- a/resources/js/bootstrap/cp.ts +++ b/resources/js/bootstrap/cp.ts @@ -1,7 +1,7 @@ -import {QueueService, ConfigService} from '@craftcms/cp'; +import {QueueService} from '@/common/services/Queue'; import {createInertiaApp, router} from '@inertiajs/vue3'; import QueueManager from '@/modules/utilities/components/queue-manager/QueueManager.vue'; -import {Axios, Config, Queue} from '@/common/types/keys'; +import {Axios, Queue} from '@/common/types/keys'; import axios from 'axios'; import QueueManagerToolbar from '@/modules/utilities/components/queue-manager/QueueManagerToolbar.vue'; import DeprecationErrors from '@/modules/utilities/components/deprecation-errors/DeprecationErrors.vue'; @@ -14,15 +14,12 @@ import ProjectConfig from '@/modules/utilities/components/project-config/Project import AssetIndexes from '@/modules/utilities/components/asset-indexes/AssetIndexes.vue'; import SystemMessages from '@/modules/utilities/components/system-messages/SystemMessages.vue'; import DeprecationErrorsToolbar from '@/modules/utilities/components/deprecation-errors/DeprecationErrorsToolbar.vue'; -import {setTranslations} from '@craftcms/cp/utilities/translate.ts.mjs'; +import {setTranslations} from '@craftcms/ui/utilities/translate.ts.mjs'; import {setUrlDefaults} from '@/wayfinder'; import {inertiaPageRegistry, resolveInertiaPage} from './inertia-pages.js'; import AppLayout from '@/common/layouts/AppLayout.vue'; import {createCpComponentRegistry} from './components.js'; -let bootedCallbacks: Array<(instance: any) => void> = []; -let bootingCallbacks: Array<(instance: any) => void> = []; - /** * Pages under these prefixes render outside the CP shell: auth screens wrap * `` themselves and the installer is a standalone wizard. @@ -40,11 +37,9 @@ function defaultPageLayout(name: string) { return AppLayout; } - -// Instantiate services -const config = ConfigService.getInstance(); const queue = QueueService.getInstance(); const components = createCpComponentRegistry(); +let hasBooted = false; function routeSegment(value: unknown): string { if (value === null || value === undefined) { @@ -54,111 +49,81 @@ function routeSegment(value: unknown): string { return value.toString().replace(/^\/+|\/+$/g, ''); } -// Create our object -const Cp = { - initialConfig: {} as Record, - - get $config() { - return config; - }, - - get $queue() { - return queue; - }, - - get $axios() { - return axios; - }, - - get $inertia() { - return inertiaPageRegistry; - }, - - get $components() { - return components; - }, - - booted(callback: (instance: any) => void) { - bootedCallbacks.push(callback); - }, - - booting(callback: (instance: any) => void) { - bootingCallbacks.push(callback); - }, - - config(config: Record) { - this.initialConfig = config; - }, - - init() { - config.initialize(this.initialConfig); - - setUrlDefaults(() => ({ - cpTrigger: routeSegment(config.get('cpTrigger')), - actionTrigger: routeSegment(config.get('actionTrigger')), - })); - - queue.initialize({ - runAutomatically: config.get('runQueueAutomatically', true), - enabled: true, - appId: config.get('systemUid', ''), - canAccessQueueManager: config.get('canAccessQueueManager', false), - }); - - setTranslations(this.initialConfig.translations); - }, - - async start() { - this.init(); - - axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; - axios.defaults.headers.common['X-CSRF-TOKEN'] = - this.$config.get('csrfTokenValue'); - - console.groupCollapsed('Craft configuration'); - console.log(config.all().entries()); - console.groupEnd(); - - console.log('Calling booting callbacks', bootingCallbacks); - bootingCallbacks.forEach((callback) => callback(this)); - bootingCallbacks = []; - - await createInertiaApp({ - resolve: (name) => resolveInertiaPage(name), - layout: defaultPageLayout, - title: (title) => `${title} - ${this.$config.get('systemName')}`, - withApp(app) { - app.config.compilerOptions.isCustomElement = (tag) => tag.includes('-'); - - app.provide(Queue, queue); - app.provide(Axios, axios); - app.provide(Config, config); - app.provide(Craft, config); - - app.component('QueueManager', QueueManager); - app.component('QueueManagerToolbar', QueueManagerToolbar); - app.component('DeprecationErrors', DeprecationErrors); - app.component('DeprecationErrorsToolbar', DeprecationErrorsToolbar); - app.component('ClearCaches', ClearCaches); - app.component('FindReplace', FindReplace); - app.component('DatabaseBackup', DatabaseBackup); - app.component('Migrations', Migrations); - app.component('Updates', Updates); - app.component('ProjectConfig', ProjectConfig); - app.component('AssetIndexes', AssetIndexes); - app.component('SystemMessages', SystemMessages); - - components.install(app); - }, - }); - - handleNonInertiaRequests(); - - console.log('Calling booted callbacks', bootedCallbacks); - bootedCallbacks.forEach((callback) => callback(this)); - bootedCallbacks = []; - }, -}; +function booting(callback: (craft: any) => void) { + (window.bootingCallbacks ||= []).push(callback); +} + +function booted(callback: (craft: any) => void) { + if (hasBooted) { + callback(window.Craft); + } else { + (window.bootedCallbacks ||= []).push(callback); + } +} + +function init() { + setUrlDefaults(() => ({ + cpTrigger: routeSegment(window.Craft.cpTrigger), + actionTrigger: routeSegment(window.Craft.actionTrigger), + })); + + queue.initialize({ + runAutomatically: window.Craft.runQueueAutomatically ?? true, + enabled: true, + appId: window.Craft.systemUid ?? '', + canAccessQueueManager: window.Craft.canAccessQueueManager ?? false, + }); + + setTranslations(window.Craft.translations ?? {}); +} + +async function start() { + init(); + + axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + axios.defaults.headers.common['X-CSRF-TOKEN'] = + window.Craft.csrfTokenValue; + + (window.bootingCallbacks ?? []).forEach((callback) => + callback(window.Craft) + ); + window.bootingCallbacks = []; + + await createInertiaApp({ + resolve: (name) => resolveInertiaPage(name), + layout: defaultPageLayout, + title: (title) => `${title} - ${window.Craft.systemName}`, + withApp(app) { + app.config.compilerOptions.isCustomElement = (tag) => tag.includes('-'); + + app.provide(Queue, queue); + app.provide(Axios, axios); + + app.component('QueueManager', QueueManager); + app.component('QueueManagerToolbar', QueueManagerToolbar); + app.component('DeprecationErrors', DeprecationErrors); + app.component('DeprecationErrorsToolbar', DeprecationErrorsToolbar); + app.component('ClearCaches', ClearCaches); + app.component('FindReplace', FindReplace); + app.component('DatabaseBackup', DatabaseBackup); + app.component('Migrations', Migrations); + app.component('Updates', Updates); + app.component('ProjectConfig', ProjectConfig); + app.component('AssetIndexes', AssetIndexes); + app.component('SystemMessages', SystemMessages); + + components.install(app); + }, + }); + + handleNonInertiaRequests(); + + hasBooted = true; + (window.bootedCallbacks ?? []).forEach((callback) => + callback(window.Craft) + ); + window.bootedCallbacks = []; +} function handleNonInertiaRequests() { let fallbackUrl = ''; @@ -201,4 +166,15 @@ function handleNonInertiaRequests() { }); } -export default Cp; +Object.assign(window.Craft, { + $queue: queue, + $axios: axios, + $inertia: inertiaPageRegistry, + $components: components, + booting, + booted, + init, + start, +}); + +export default window.Craft; diff --git a/packages/craftcms-cp/src/utilities/api/actionClient.ts b/resources/js/common/api/actionClient.ts similarity index 63% rename from packages/craftcms-cp/src/utilities/api/actionClient.ts rename to resources/js/common/api/actionClient.ts index 6cac50742ce..c2d49d8d6f6 100644 --- a/packages/craftcms-cp/src/utilities/api/actionClient.ts +++ b/resources/js/common/api/actionClient.ts @@ -1,31 +1,31 @@ import axios, {type RawAxiosRequestHeaders} from 'axios'; -import {Csrf} from '@src/services/Csrf'; -import {ConfigService} from '@src/services/Config'; +import {Csrf} from '@/common/services/Csrf'; /** * Builds an action URL using the runtime-configured action base * (`Url::actionUrl()`), so the CP trigger isn't hard-coded to `/admin`. */ export function getActionUrl(action: string = '') { - return ConfigService.getInstance().getActionUrl(action); + return window.Craft.getActionUrl(action); } /** - * @TODO + * Get the CP URL for a given path. */ +export function getCpUrl(path: string = '', params?: object) { + return window.Craft.getCpUrl(path, params); +} + export function actionHeaders(): RawAxiosRequestHeaders { - let headers: Record = { - 'X-Registered-Asset-Bundles': [...new Set(Cp.registeredAssetBundles)].join( + const headers: Record = { + 'X-Registered-Asset-Bundles': [ + ...new Set(window.Craft.registeredAssetBundles), + ].join(','), + 'X-Registered-Js-Files': [...new Set(window.Craft.registeredJsFiles)].join( ',' ), - 'X-Registered-Js-Files': [...new Set(Cp.registeredJsFiles)].join(','), }; - // @TODO Make sure we really don't need this anymore - // if (Cp.csrfTokenValue) { - // headers['X-CSRF-Token'] = Cp.csrfTokenValue; - // } - return headers; } @@ -36,7 +36,7 @@ const csrf = new Csrf(); actionClient.interceptors.request.use(async (config) => { // Resolve the base URL lazily so it reflects the runtime CP trigger. Config // isn't guaranteed to be initialized when this module is first imported. - config.baseURL = getActionUrl(); + config.baseURL ??= getActionUrl(); // Set X-Requested-With header config.headers.set('X-Requested-With', 'XMLHttpRequest'); @@ -47,19 +47,6 @@ actionClient.interceptors.request.use(async (config) => { config.headers.set(key, value); }); - // @TODO Make sure we really don't need this anymore - // if ( - // ['post', 'put', 'patch', 'delete'].includes( - // config.method?.toLowerCase() || '' - // ) && - // !config.url?.includes('users/session-info') - // ) { - // const tokenValue = await csrf.getToken(); - // if (tokenValue) { - // config.headers.set('X-CSRF-Token', tokenValue); - // } - // } - return config; }); diff --git a/packages/craftcms-cp/src/utilities/api/apiClient.ts b/resources/js/common/api/apiClient.ts similarity index 93% rename from packages/craftcms-cp/src/utilities/api/apiClient.ts rename to resources/js/common/api/apiClient.ts index 3d63712ca39..95d8d1d4fa2 100644 --- a/packages/craftcms-cp/src/utilities/api/apiClient.ts +++ b/resources/js/common/api/apiClient.ts @@ -3,10 +3,9 @@ import axios, { type CancelToken, type InternalAxiosRequestConfig, } from 'axios'; -import {actionClient} from './actionClient.js'; +import {actionClient} from './actionClient'; let loadingApiHeaders = false; -let apiHeaderWaitlist: Promise[] = []; let apiHeaders: Record | null = null; /** @@ -40,7 +39,7 @@ async function getApiHeaders(cancelToken?: CancelToken) { ); return response.data; - } catch (error) { + } catch { // @TODO: I'm not sure we need a queue here // while (apiHeaderWaitlist.length) { // apiHeaderWaitlist.shift()[1](error); @@ -111,7 +110,7 @@ apiClient.interceptors.request.use(async (config) => { const finalConfig = { ...config, params: { - ...(Cp.apiParams || {}), + ...(window.Craft.apiParams || {}), ...config.params, v: new Date().getTime(), }, @@ -121,8 +120,8 @@ apiClient.interceptors.request.use(async (config) => { finalConfig.params.processCraftHeaders = 1; } - if (Cp.httpProxy) { - finalConfig.proxy = Cp.httpProxy as AxiosProxyConfig; + if (window.Craft.httpProxy) { + finalConfig.proxy = window.Craft.httpProxy as AxiosProxyConfig; } return finalConfig; diff --git a/resources/js/common/components/ActionMenu.vue b/resources/js/common/components/ActionMenu.vue index 3cdb536ad9b..9f0b4899240 100644 --- a/resources/js/common/components/ActionMenu.vue +++ b/resources/js/common/components/ActionMenu.vue @@ -1,6 +1,6 @@