diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 122adddf..621374b1 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -33,7 +33,7 @@ module.exports = { 'react/prop-types': 'off', 'react-hooks/exhaustive-deps': 'error', // Checks effect dependencies 'react-hooks/rules-of-hooks': 'error', // Checks rules of Hooks - 'react-hooks/react-compiler': 'error', + // 'react-hooks/react-compiler': 'error', 'react/no-unescaped-entities': 'off', 'simple-import-sort/exports': 'warn', 'simple-import-sort/imports': 'warn', diff --git a/README.md b/README.md index f6611b1e..528fe6bb 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ An environment for designing, reviewing, and quality-testing React components. npm install @sanity/ui-workshop -D # Install peer dependencies -npm install @sanity/icons @sanity/ui react react-dom styled-components +npm install @sanity/icons @sanity/ui react react-dom ``` [![npm version](https://img.shields.io/npm/v/@sanity/ui-workshop.svg?style=flat-square)](https://www.npmjs.com/package/@sanity/ui-workshop) diff --git a/package.json b/package.json index 1f672da5..901ed8fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sanity/ui-workshop", - "version": "2.1.3", + "version": "3.0.0-local.2", "keywords": [ "sanity", "ui", @@ -79,7 +79,7 @@ "format": "prettier --write --cache --ignore-unknown .", "lint": "eslint . --ext .cjs,.js,.jsx,.mjs,.ts,.tsx", "prepare": "husky install", - "prepublishOnly": "pnpm run build", + "prepack": "pnpm build", "release": "semantic-release", "test": "vitest", "watch": "pkg watch --strict", @@ -140,7 +140,7 @@ "@sanity/pkg-utils": "^6.13.4", "@sanity/prettier-config": "^1.0.3", "@sanity/semantic-release-preset": "^4.1.8", - "@sanity/ui": "^2.15.14", + "@sanity/ui": "^3.0.0", "@types/cpx": "^1.5.5", "@types/express": "^5.0.1", "@types/lodash": "^4.17.16", @@ -176,16 +176,20 @@ "vitest": "^2.1.9" }, "peerDependencies": { - "@sanity/icons": "^2 || ^3", - "@sanity/ui": "^1 || ^2", - "react": "^18 || ^19", - "react-dom": "^18 || ^19", - "styled-components": "^5.2 || ^6" + "@sanity/icons": "^3", + "@sanity/ui": "^3", + "react": "^19", + "react-dom": "^19" }, "packageManager": "pnpm@9.15.9", "publishConfig": { "access": "public" }, + "pnpm": { + "overrides": { + "@sanity/ui": "file:registry/sanity-ui-3.0.0-local.17.tgz" + } + }, "esm.sh": { "bundle": false } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fa09a0f..49400bc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@sanity/ui': file:registry/sanity-ui-3.0.0-local.17.tgz + importers: .: @@ -79,8 +82,8 @@ importers: specifier: ^4.1.8 version: 4.1.8(semantic-release@23.1.1(typescript@5.8.3)) '@sanity/ui': - specifier: ^2.15.14 - version: 2.15.14(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react-is@19.1.0)(react@19.1.0)(styled-components@6.1.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + specifier: file:registry/sanity-ui-3.0.0-local.17.tgz + version: file:registry/sanity-ui-3.0.0-local.17.tgz(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react-is@19.1.0)(react@19.1.0)(styled-components@6.1.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) '@types/cpx': specifier: ^1.5.5 version: 1.5.5 @@ -1259,9 +1262,11 @@ packages: peerDependencies: semantic-release: ^22.0.12 || ^23.0.2 || ^24.0.0 - '@sanity/ui@2.15.14': - resolution: {integrity: sha512-n1Hn97A1W/ku6+hDhojlA601w03XjBBbeEH+e5n6nXBnLj81GjE5DsoJcZ+ZDQI47iGmGsvG1M8eAb6E2VPuuQ==} + '@sanity/ui@file:registry/sanity-ui-3.0.0-local.17.tgz': + resolution: {integrity: sha512-2TKMjLXZJEwALpWeCQPf/qeG7Bta5XhVQizMgIm2IsCuTQIlwft8a0LUrLIsg+e9jqFJnacQfevG4o5iKDmOCQ==, tarball: file:registry/sanity-ui-3.0.0-local.17.tgz} + version: 3.0.0-local.17 engines: {node: '>=14.0.0'} + hasBin: true peerDependencies: react: ^18 || >=19.0.0-0 react-dom: ^18 || >=19.0.0-0 @@ -1337,6 +1342,10 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1797,6 +1806,9 @@ packages: resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} engines: {node: '>=18'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -1823,6 +1835,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1864,9 +1881,15 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + caniuse-lite@1.0.30001695: resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -1975,6 +1998,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1985,6 +2011,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + commitizen@4.3.1: resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} @@ -2110,9 +2140,57 @@ packages: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} + css-declaration-sorter@7.2.0: + resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.0.9 + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@7.0.7: + resolution: {integrity: sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + cssnano@7.0.7: + resolution: {integrity: sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} @@ -2260,11 +2338,24 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -2290,6 +2381,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.155: + resolution: {integrity: sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==} + electron-to-chromium@1.5.83: resolution: {integrity: sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==} @@ -2732,8 +2826,8 @@ packages: resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} engines: {node: '>=0.10.0'} - framer-motion@12.9.2: - resolution: {integrity: sha512-R0O3Jdqbfwywpm45obP+8sTgafmdEcUoShQTAV+rB5pi+Y1Px/FYL5qLLRe5tPtBdN1J4jos7M+xN2VV2oEAbQ==} + framer-motion@12.11.3: + resolution: {integrity: sha512-ksUtDFBZtrbQFt4bEMFrFgo7camhmXcLeuylKQxEYSd9czkZ4tZmFROxWczWeu51WqC2m91ifpvgGCBLd0uviQ==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -2941,6 +3035,10 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@7.0.0: + resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -3543,6 +3641,10 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3590,6 +3692,9 @@ packages: lodash.map@4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3668,6 +3773,12 @@ packages: math-random@1.0.4: resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + media-typer@1.1.0: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} @@ -3790,11 +3901,11 @@ packages: engines: {node: '>=10'} hasBin: true - motion-dom@12.9.1: - resolution: {integrity: sha512-xqXEwRLDYDTzOgXobSoWtytRtGlf7zdkRfFbrrdP7eojaGQZ5Go4OOKtgnx7uF8sAkfr1ZjMvbCJSCIT2h6fkQ==} + motion-dom@12.11.2: + resolution: {integrity: sha512-wZ396XNNTI9GOkyrr80wFSbZc1JbIHSHTbLdririSbkEgahWWKmsHzsxyxqBBvuBU/iaQWVu1YCjdpXYNfo2yQ==} - motion-utils@12.8.3: - resolution: {integrity: sha512-GYVauZEbca8/zOhEiYOY9/uJeedYQld6co/GJFKOy//0c/4lDqk0zB549sBYqqV2iMuX+uHrY1E5zd8A2L+1Lw==} + motion-utils@12.9.4: + resolution: {integrity: sha512-BW3I65zeM76CMsfh3kHid9ansEJk9Qvl+K5cu4DVHKGsI52n76OJ4z2CUJUV+Mn3uEP9k1JJA3tClG0ggSrRcg==} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -3951,6 +4062,9 @@ packages: - which - write-file-atomic + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} @@ -4263,6 +4377,172 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-calc@10.1.1: + resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} + engines: {node: ^18.12 || ^20.9 || >=22.0} + peerDependencies: + postcss: ^8.4.38 + + postcss-colormin@7.0.3: + resolution: {integrity: sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-convert-values@7.0.5: + resolution: {integrity: sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-comments@7.0.4: + resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-merge-rules@7.0.5: + resolution: {integrity: sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-params@7.0.3: + resolution: {integrity: sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-minify-selectors@7.0.5: + resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-unicode@7.0.3: + resolution: {integrity: sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-initial@7.0.3: + resolution: {integrity: sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@7.0.2: + resolution: {integrity: sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==} + engines: {node: ^18.12.0 || ^20.9.0 || >= 18} + peerDependencies: + postcss: ^8.4.32 + + postcss-unique-selectors@7.0.4: + resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -4303,6 +4583,10 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + pretty-bytes@7.0.0: + resolution: {integrity: sha512-U5otLYPR3L0SVjHGrkEUx5mf7MxV2ceXeE7VwWPk+hyzC5drNohsOGNPDZqxCqyX1lkbEN4kl1LiI8QFd7r0ZA==} + engines: {node: '>=20'} + pretty-ms@9.2.0: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} @@ -4373,11 +4657,6 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-compiler-runtime@19.0.0-beta-e993439-20250405: - resolution: {integrity: sha512-uTvtVgJR21Xy7XAthYbC3R9V00V/U7xP3BWrwpSvcmHgtar8+TweghRIankQJLps/g7HIYxy+dnXCGBy0cKv5w==} - peerDependencies: - react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental - react-compiler-runtime@19.1.0-rc.1: resolution: {integrity: sha512-wCt6g+cRh8g32QT18/9blfQHywGjYu+4FlEc3CW1mx3pPxYzZZl1y+VtqxRgnKKBCFLIGUYxog4j4rs5YS86hw==} peerDependencies: @@ -4908,6 +5187,12 @@ packages: react: '>= 16.8.0' react-dom: '>= 16.8.0' + stylehacks@7.0.5: + resolution: {integrity: sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} + peerDependencies: + postcss: ^8.4.32 + stylis@4.3.2: resolution: {integrity: sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg==} @@ -4938,6 +5223,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -5201,6 +5491,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -6486,16 +6782,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@sanity/ui@2.15.14(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react-is@19.1.0)(react@19.1.0)(styled-components@6.1.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + '@sanity/ui@file:registry/sanity-ui-3.0.0-local.17.tgz(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react-is@19.1.0)(react@19.1.0)(styled-components@6.1.17(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@juggle/resize-observer': 3.4.0 '@sanity/color': 3.0.6 '@sanity/icons': 3.7.0(react@19.1.0) + cssnano: 7.0.7(postcss@8.5.3) csstype: 3.1.3 - framer-motion: 12.9.2(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + framer-motion: 12.11.3(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + gzip-size: 7.0.0 + postcss: 8.5.3 + prettier: 3.5.3 + pretty-bytes: 7.0.0 react: 19.1.0 - react-compiler-runtime: 19.0.0-beta-e993439-20250405(react@19.1.0) + react-compiler-runtime: 19.1.0-rc.1(react@19.1.0) react-dom: 19.1.0(react@19.1.0) react-is: 19.1.0 react-refractor: 2.2.0(react@19.1.0) @@ -6620,6 +6921,8 @@ snapshots: '@tootallnate/once@2.0.0': {} + '@trysound/sax@0.2.0': {} + '@types/argparse@1.0.38': {} '@types/babel__core@7.20.5': @@ -7154,6 +7457,8 @@ snapshots: transitivePeerDependencies: - supports-color + boolbase@1.0.0: {} + bottleneck@2.19.5: {} brace-expansion@1.1.11: @@ -7197,6 +7502,13 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.155 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + buffer-from@1.1.2: {} buffer@5.7.1: @@ -7243,8 +7555,17 @@ snapshots: camelize@1.0.1: {} + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + caniuse-lite@1.0.30001695: {} + caniuse-lite@1.0.30001718: {} + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -7376,6 +7697,8 @@ snapshots: color-name@1.1.4: {} + colord@2.9.3: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -7384,6 +7707,8 @@ snapshots: commander@2.20.3: {} + commander@7.2.0: {} + commitizen@4.3.1(@types/node@20.17.9)(typescript@5.8.3): dependencies: cachedir: 2.3.0 @@ -7526,12 +7851,86 @@ snapshots: css-color-keywords@1.0.0: {} + css-declaration-sorter@7.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + css-to-react-native@3.2.0: dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@7.0.7(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + css-declaration-sorter: 7.2.0(postcss@8.5.3) + cssnano-utils: 5.0.1(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 10.1.1(postcss@8.5.3) + postcss-colormin: 7.0.3(postcss@8.5.3) + postcss-convert-values: 7.0.5(postcss@8.5.3) + postcss-discard-comments: 7.0.4(postcss@8.5.3) + postcss-discard-duplicates: 7.0.2(postcss@8.5.3) + postcss-discard-empty: 7.0.1(postcss@8.5.3) + postcss-discard-overridden: 7.0.1(postcss@8.5.3) + postcss-merge-longhand: 7.0.5(postcss@8.5.3) + postcss-merge-rules: 7.0.5(postcss@8.5.3) + postcss-minify-font-values: 7.0.1(postcss@8.5.3) + postcss-minify-gradients: 7.0.1(postcss@8.5.3) + postcss-minify-params: 7.0.3(postcss@8.5.3) + postcss-minify-selectors: 7.0.5(postcss@8.5.3) + postcss-normalize-charset: 7.0.1(postcss@8.5.3) + postcss-normalize-display-values: 7.0.1(postcss@8.5.3) + postcss-normalize-positions: 7.0.1(postcss@8.5.3) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.3) + postcss-normalize-string: 7.0.1(postcss@8.5.3) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.3) + postcss-normalize-unicode: 7.0.3(postcss@8.5.3) + postcss-normalize-url: 7.0.1(postcss@8.5.3) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.3) + postcss-ordered-values: 7.0.2(postcss@8.5.3) + postcss-reduce-initial: 7.0.3(postcss@8.5.3) + postcss-reduce-transforms: 7.0.1(postcss@8.5.3) + postcss-svgo: 7.0.2(postcss@8.5.3) + postcss-unique-selectors: 7.0.4(postcss@8.5.3) + + cssnano-utils@5.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + cssnano@7.0.7(postcss@8.5.3): + dependencies: + cssnano-preset-default: 7.0.7(postcss@8.5.3) + lilconfig: 3.1.3 + postcss: 8.5.3 + + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + cssstyle@3.0.0: dependencies: rrweb-cssom: 0.6.0 @@ -7663,10 +8062,28 @@ snapshots: dependencies: esutils: 2.0.3 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -7691,6 +8108,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.5.155: {} + electron-to-chromium@1.5.83: {} emoji-regex@8.0.0: {} @@ -8403,10 +8822,10 @@ snapshots: dependencies: map-cache: 0.2.2 - framer-motion@12.9.2(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + framer-motion@12.11.3(@emotion/is-prop-valid@1.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - motion-dom: 12.9.1 - motion-utils: 12.8.3 + motion-dom: 12.11.2 + motion-utils: 12.9.4 tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.2.2 @@ -8653,6 +9072,10 @@ snapshots: graphemer@1.4.0: {} + gzip-size@7.0.0: + dependencies: + duplexer: 0.1.2 + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -9251,6 +9674,8 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} load-json-file@4.0.0: @@ -9294,6 +9719,8 @@ snapshots: lodash.map@4.6.0: {} + lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} lodash.mergewith@4.6.2: {} @@ -9360,6 +9787,10 @@ snapshots: math-random@1.0.4: {} + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + media-typer@1.1.0: {} memorystream@0.3.1: {} @@ -9472,11 +9903,11 @@ snapshots: mkdirp@3.0.1: {} - motion-dom@12.9.1: + motion-dom@12.11.2: dependencies: - motion-utils: 12.8.3 + motion-utils: 12.9.4 - motion-utils@12.8.3: {} + motion-utils@12.9.4: {} ms@2.0.0: {} @@ -9570,6 +10001,10 @@ snapshots: npm@10.9.2: {} + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + nwsapi@2.2.16: {} object-assign@4.1.1: {} @@ -9868,6 +10303,160 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-calc@10.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-colormin@7.0.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-convert-values@7.0.5(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@7.0.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-discard-duplicates@7.0.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-empty@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-overridden@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-merge-longhand@7.0.5(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + stylehacks: 7.0.5(postcss@8.5.3) + + postcss-merge-rules@7.0.5(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + cssnano-utils: 5.0.1(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-minify-font-values@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@7.0.1(postcss@8.5.3): + dependencies: + colord: 2.9.3 + cssnano-utils: 5.0.1(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-params@7.0.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + cssnano-utils: 5.0.1(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@7.0.5(postcss@8.5.3): + dependencies: + cssesc: 3.0.0 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-normalize-charset@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-normalize-display-values@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@7.0.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@7.0.2(postcss@8.5.3): + dependencies: + cssnano-utils: 5.0.1(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@7.0.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + postcss: 8.5.3 + + postcss-reduce-transforms@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + svgo: 3.3.2 + + postcss-unique-selectors@7.0.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser@4.2.0: {} postcss@8.4.49: @@ -9901,6 +10490,8 @@ snapshots: pretty-bytes@5.6.0: {} + pretty-bytes@7.0.0: {} + pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 @@ -9978,10 +10569,6 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-compiler-runtime@19.0.0-beta-e993439-20250405(react@19.1.0): - dependencies: - react: 19.1.0 - react-compiler-runtime@19.1.0-rc.1(react@19.1.0): dependencies: react: 19.1.0 @@ -10640,6 +11227,12 @@ snapshots: stylis: 4.3.2 tslib: 2.6.2 + stylehacks@7.0.5(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + stylis@4.3.2: {} subarg@1.0.0: @@ -10670,6 +11263,16 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.1.1 + symbol-tree@3.2.4: {} synckit@0.11.4: @@ -10926,6 +11529,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 diff --git a/src/core/GlobalStyle.ts b/src/core/GlobalStyle.ts deleted file mode 100644 index 2bd8c492..00000000 --- a/src/core/GlobalStyle.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {createGlobalStyle} from 'styled-components' - -export const GlobalStyle = createGlobalStyle` - @font-face { - font-family: 'Inter'; - font-style: normal; - font-weight: 100 900; - font-display: swap; - src: url('https://rsms.me/inter/font-files/Inter-roman.var.woff2?v=3.19') format('woff2'); - font-named-instance: 'Regular'; - } - - @font-face { - font-family: 'Inter'; - font-style: italic; - font-weight: 100 900; - font-display: swap; - src: url('https://rsms.me/inter/font-files/Inter-italic.var.woff2?v=3.19') format('woff2'); - font-named-instance: 'Italic'; - } - - body { - background-color: ${({theme}) => theme.sanity.color.base.bg}; - } -` diff --git a/src/core/RootClassNames.tsx b/src/core/RootClassNames.tsx new file mode 100644 index 00000000..08c51b4e --- /dev/null +++ b/src/core/RootClassNames.tsx @@ -0,0 +1,24 @@ +import {useCard} from '@sanity/ui' +import {card} from '@sanity/ui/css' +import {type ReactNode, useEffect, useRef} from 'react' + +export function RootClassNames(): ReactNode { + const {scheme, tone} = useCard() + + const schemeRef = useRef(scheme) + + useEffect(() => { + if (schemeRef.current === scheme) { + document.documentElement.className = card({scheme, tone}) ?? '' + return + } + + schemeRef.current = scheme + + document.startViewTransition(() => { + document.documentElement.className = card({scheme, tone}) ?? '' + }) + }, [scheme, tone]) + + return null +} diff --git a/src/core/Workshop.tsx b/src/core/Workshop.tsx index 715078ca..a03bb751 100644 --- a/src/core/Workshop.tsx +++ b/src/core/Workshop.tsx @@ -2,10 +2,10 @@ import { BoundaryElementProvider, Flex, PortalProvider, - ThemeColorSchemeKey, ToastProvider, useMediaIndex, } from '@sanity/ui' +import {ThemeColorSchemeKey} from '@sanity/ui/theme' import {memo, useCallback, useEffect, useMemo, useRef, useState} from 'react' import {WorkshopConfig} from './config' diff --git a/src/core/WorkshopCanvas.tsx b/src/core/WorkshopCanvas.tsx index a23bc446..b3f3abd4 100644 --- a/src/core/WorkshopCanvas.tsx +++ b/src/core/WorkshopCanvas.tsx @@ -1,31 +1,23 @@ -import {BoxDisplay, Card, Container, Flex, Heading, Spinner, Stack, Text} from '@sanity/ui' +import {Box, BoxDisplay, Card, Container, Flex, Heading, Spinner, Stack, Text} from '@sanity/ui' import {memo, useMemo, useState} from 'react' -import styled from 'styled-components' import {VIEWPORT_OPTIONS} from './constants' import {buildFrameUrl} from './helpers' import {useWorkshop} from './useWorkshop' -const Frame = styled.iframe` - display: block; - border: 0; - height: 100%; - width: 100%; -` - /** @internal */ export const WorkshopCanvas = memo(function WorkshopCanvas(props: { frameRef: React.Ref hidden: boolean }): React.ReactNode { const {frameRef, hidden} = props - const {frameReady, frameUrl, path, payload, scheme, title, viewport, zoom} = useWorkshop() + const {frameReady, frameUrl, path, payload, title, viewport, zoom} = useWorkshop() const viewportOption = VIEWPORT_OPTIONS.find((o) => o.name === viewport) || VIEWPORT_OPTIONS[0] const viewportW = viewportOption?.rect.width const viewportH = viewportOption?.rect.height const [initialFrameUrl] = useState(() => - buildFrameUrl({baseUrl: frameUrl, path, payload, scheme, viewport, zoom}), + buildFrameUrl({baseUrl: frameUrl, path, payload, viewport, zoom}), ) const containerStyle = useMemo( @@ -44,6 +36,11 @@ export const WorkshopCanvas = memo(function WorkshopCanvas(props: { transformOrigin: '0 0', width: `${100 / zoom}%`, height: `${100 / zoom}%`, + transition: [ + 'transform 200ms ease-in-out', + 'width 200ms ease-in-out', + 'height 200ms ease-in-out', + ].join(','), }), [zoom], ) @@ -71,7 +68,15 @@ export const WorkshopCanvas = memo(function WorkshopCanvas(props: { width="auto" > - + diff --git a/src/core/config/types.ts b/src/core/config/types.ts index 12048cd6..85d6dff7 100644 --- a/src/core/config/types.ts +++ b/src/core/config/types.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import {RootTheme} from '@sanity/ui' + +import {PartialTokens, Tokens} from '@sanity/ui/theme' import {ElementType, ReactNode} from 'react' /** @public */ @@ -32,7 +33,7 @@ export interface WorkshopConfig { frameUrl?: string plugins?: WorkshopPlugin[] scopes: WorkshopScope[] - theme?: RootTheme + theme?: PartialTokens title?: string } diff --git a/src/core/frame/WorkshopFrame.tsx b/src/core/frame/WorkshopFrame.tsx index 56fe4293..ee7edf2c 100644 --- a/src/core/frame/WorkshopFrame.tsx +++ b/src/core/frame/WorkshopFrame.tsx @@ -4,6 +4,7 @@ import { PortalProvider, ThemeColorSchemeKey, ToastProvider, + usePrefersDark, } from '@sanity/ui' import {memo, useCallback, useEffect, useMemo, useState} from 'react' @@ -45,6 +46,8 @@ export const WorkshopFrame = memo(function WorkshopFrame( const channel = useMemo(() => createPubsub(), []) const [boundaryElement, setBoundaryElement] = useState(null) const [portalElement, setPortalElement] = useState(null) + const prefersDark = usePrefersDark() + const scheme = prefersDark ? 'dark' : 'light' // Publish messages to both frame+main const broadcast = useCallback( @@ -58,8 +61,8 @@ export const WorkshopFrame = memo(function WorkshopFrame( [channel, main], ) - const [{frameReady, path, payload, scheme, viewport, zoom}, setState] = useState( - () => getStateFromLocation(), + const [{frameReady, path, payload, viewport, zoom}, setState] = useState(() => + getStateFromLocation(), ) // Subscribe to global messages diff --git a/src/core/globalCss.ts b/src/core/globalCss.ts new file mode 100644 index 00000000..3b186fad --- /dev/null +++ b/src/core/globalCss.ts @@ -0,0 +1,40 @@ +import {vars} from '@sanity/ui/css' + +export const globalCss = ` +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url('https://rsms.me/inter/font-files/Inter-roman.var.woff2?v=3.19') format('woff2'); + font-named-instance: 'Regular'; +} + +@font-face { + font-family: 'Inter'; + font-style: italic; + font-weight: 100 900; + font-display: swap; + src: url('https://rsms.me/inter/font-files/Inter-italic.var.woff2?v=3.19') format('woff2'); + font-named-instance: 'Italic'; +} + +html { + -webkit-text-size-adjust: 100%; + text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; + -webkit-font-smoothing: antialiased; +} + +html, +body, +#root { + height: 100%; + margin: 0; +} + +body { + background-color: ${vars.color.bg}; + overflow: hidden; +} +` diff --git a/src/core/helpers.ts b/src/core/helpers.ts index 82b07b01..1f596cd9 100644 --- a/src/core/helpers.ts +++ b/src/core/helpers.ts @@ -1,5 +1,3 @@ -import {ThemeColorSchemeKey} from '@sanity/ui' - import {WorkshopScope, WorkshopStory} from './config' /** @internal */ @@ -36,16 +34,14 @@ export function buildFrameUrl(params: { baseUrl?: string path: string payload: Record - scheme: ThemeColorSchemeKey viewport: string zoom: number }): string { - const {baseUrl = '/frame/', path, payload, scheme, viewport, zoom} = params + const {baseUrl = '/frame/', path, payload, viewport, zoom} = params return [ baseUrl, `?path=${encodeURIComponent(path)}`, - `&scheme=${scheme}`, `&viewport=${viewport}`, `&zoom=${zoom}`, ...Object.entries(payload).map(([key, value]) => { diff --git a/src/core/inspector/InspectorHeader.tsx b/src/core/inspector/InspectorHeader.tsx index a9b12131..217ef886 100644 --- a/src/core/inspector/InspectorHeader.tsx +++ b/src/core/inspector/InspectorHeader.tsx @@ -1,19 +1,10 @@ import {Card, Layer, Tab, TabList} from '@sanity/ui' import {CSSProperties, memo, useCallback, useMemo} from 'react' -import styled from 'styled-components' import {InspectorTab} from './types' const MemoTab = memo(Tab) -const Root = styled(Card)` - line-height: 0; - - @media screen and (max-width: ${({theme}) => theme.sanity.media[1] - 1}px) { - text-align: center; - } -` - export const InspectorHeader = memo(function InspectorHeader(props: { currentTabId: string | null onTabChange: (id: string) => void @@ -38,9 +29,9 @@ export const InspectorHeader = memo(function InspectorHeader(props: { return ( - - {children} - + + {children} + ) }) diff --git a/src/core/inspector/WorkshopInspector.tsx b/src/core/inspector/WorkshopInspector.tsx index 44c37cf8..70d7a80a 100644 --- a/src/core/inspector/WorkshopInspector.tsx +++ b/src/core/inspector/WorkshopInspector.tsx @@ -1,21 +1,18 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import {Box, BoxDisplay, Card, Flex, TabPanel} from '@sanity/ui' + +import {Box, BoxDisplay, Flex, Layer, TabPanel} from '@sanity/ui' import {ElementType, memo, useState} from 'react' -import styled from 'styled-components' +import {styled} from 'styled-components' import {EMPTY_RECORD} from '../constants' import {useWorkshop} from '../useWorkshop' import {InspectorHeader} from './InspectorHeader' import {InspectorTab} from './types' -const Root = styled(Card)` - overflow: hidden; - - @media screen and (min-width: ${({theme}) => theme.sanity.media[1]}px) { - border-left: 1px solid var(--card-border-color); +const Root = styled(Layer)` + @media screen and (min-width: 600px) { min-width: 180px; max-width: 300px; - overflow: auto; } ` @@ -49,7 +46,7 @@ export const WorkshopInspector = memo(function WorkshopInspector(props: { const display: BoxDisplay[] = expanded ? ['block'] : ['none', 'none', 'block'] return ( - + {showTabs && } diff --git a/src/core/mount.tsx b/src/core/mount.tsx index 1049cc27..67695db1 100644 --- a/src/core/mount.tsx +++ b/src/core/mount.tsx @@ -1,10 +1,12 @@ -import {studioTheme, ThemeColorSchemeKey, ThemeProvider, usePrefersDark} from '@sanity/ui' +import {CardProvider, StyleTags, usePrefersDark} from '@sanity/ui' +import {buildTheme_v3, ThemeColorSchemeKey} from '@sanity/ui/theme' import {StrictMode, useEffect, useMemo, useState} from 'react' import {createRoot} from 'react-dom/client' import {WorkshopConfig} from './config' -import {GlobalStyle} from './GlobalStyle' +import {globalCss} from './globalCss' import {createLocationStore} from './location' +import {RootClassNames} from './RootClassNames' import {Workshop} from './Workshop' /** @beta */ @@ -24,6 +26,7 @@ export function mount(options: {config: WorkshopConfig; element: HTMLElement | n function Root(props: {config: WorkshopConfig}) { const {config} = props + const theme = useMemo(() => buildTheme_v3({tokens: config.theme}), [config.theme]) const prefersDark = usePrefersDark() const [scheme, setScheme] = useState(prefersDark ? 'dark' : 'light') const locationStore = useMemo(() => createLocationStore(), []) @@ -33,14 +36,18 @@ function Root(props: {config: WorkshopConfig}) { }, [prefersDark]) return ( - - + + + + + + - + ) } diff --git a/src/core/mountFrame.tsx b/src/core/mountFrame.tsx index d5425e78..cc5511f1 100644 --- a/src/core/mountFrame.tsx +++ b/src/core/mountFrame.tsx @@ -1,10 +1,12 @@ -import {studioTheme, ThemeColorSchemeKey, ThemeProvider, usePrefersDark} from '@sanity/ui' -import {StrictMode, useState} from 'react' +import {CardProvider, StyleTags, usePrefersDark} from '@sanity/ui' +import {buildTheme_v3, ThemeColorSchemeKey} from '@sanity/ui/theme' +import {StrictMode, useMemo, useState} from 'react' import {createRoot} from 'react-dom/client' import {WorkshopConfig} from './config' import {WorkshopFrame} from './frame' -import {GlobalStyle} from './GlobalStyle' +import {globalCss} from './globalCss' +import {RootClassNames} from './RootClassNames' /** @beta */ export function mountFrame(options: {config: WorkshopConfig; element: HTMLElement | null}): void { @@ -23,13 +25,18 @@ export function mountFrame(options: {config: WorkshopConfig; element: HTMLElemen function Root(props: {config: WorkshopConfig}) { const {config} = props + const theme = useMemo(() => buildTheme_v3({tokens: config.theme}), [config.theme]) const prefersDark = usePrefersDark() const [scheme, setScheme] = useState(prefersDark ? 'dark' : 'light') return ( - - + + + + + + - + ) } diff --git a/src/core/navbar/OpenCanvasButton.tsx b/src/core/navbar/OpenCanvasButton.tsx index 8d228d7c..87d7ba3c 100644 --- a/src/core/navbar/OpenCanvasButton.tsx +++ b/src/core/navbar/OpenCanvasButton.tsx @@ -1,5 +1,5 @@ import {LaunchIcon} from '@sanity/icons' -import {Button} from '@sanity/ui' +import {Button, ButtonProps} from '@sanity/ui' import {memo, useMemo} from 'react' import {buildFrameUrl} from '../helpers' @@ -7,28 +7,26 @@ import {useWorkshop} from '../useWorkshop' /** @internal */ export const OpenCanvasButton = memo(function OpenCanvasButton() { - const {frameUrl, path, payload, scheme, zoom, viewport} = useWorkshop() + const {frameUrl, path, payload, zoom, viewport} = useWorkshop() const canvasUrl = useMemo( () => - path === '/' - ? undefined - : buildFrameUrl({baseUrl: frameUrl, path, payload, scheme, zoom, viewport}), - [frameUrl, path, payload, scheme, zoom, viewport], + path === '/' ? undefined : buildFrameUrl({baseUrl: frameUrl, path, payload, zoom, viewport}), + [frameUrl, path, payload, zoom, viewport], ) - return ( -