diff --git a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml index fe7922d..a41fc80 100644 --- a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml +++ b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml @@ -1,7 +1,8 @@ -body: - - type: textarea - attributes: - label: Describe the feature you'd like - description: A clear and concise description of what you want to happen - validations: - required: true +--- +body: + - type: textarea + attributes: + label: Describe the feature you'd like + description: A clear and concise description of what you want to happen + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 60ac91a..4b8294e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,3 +1,4 @@ +--- name: Report an issue description: Create a report to help us improve labels: ["bug"] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 05b2014..76df72a 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,4 @@ +--- blank_issues_enabled: false contact_links: - name: Feature request / Ideas diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc new file mode 100644 index 0000000..9b71a68 --- /dev/null +++ b/.github/linters/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +skip = */src/lang/*.json \ No newline at end of file diff --git a/.github/linters/.stylelintrc.json b/.github/linters/.stylelintrc.json new file mode 100644 index 0000000..c434436 --- /dev/null +++ b/.github/linters/.stylelintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["../../stylelint.config.mjs"] +} diff --git a/.github/linters/eslint.config.mjs b/.github/linters/eslint.config.mjs new file mode 100644 index 0000000..1b756a2 --- /dev/null +++ b/.github/linters/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from "../../eslint.config.mjs"; + +export default config; diff --git a/.github/linters/zizmor.yaml b/.github/linters/zizmor.yaml new file mode 100644 index 0000000..bbb0366 --- /dev/null +++ b/.github/linters/zizmor.yaml @@ -0,0 +1,6 @@ +--- +rules: + unpinned-uses: + config: + policies: + "*": ref-pin diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..4a8ec23 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,42 @@ +--- +name: Lint + +on: + pull_request: null + +permissions: {} + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + + permissions: + contents: read + statuses: write + + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: "pnpm" + + - run: pnpm install --frozen-lockfile + + - name: super-linter + uses: super-linter/super-linter/slim@v8.4.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + IGNORE_GITIGNORED_FILES: true + STRIP_DEFAULT_WORKSPACE_FOR_REGEX: true + FILTER_REGEX_EXCLUDE: ^(CHANGELOG\.md|pnpm-lock\.yaml)$ + VALIDATE_BIOME_FORMAT: false # Prettier is used instead + VALIDATE_BIOME_LINT: false # Prettier is used instead + VALIDATE_JSCPD: false # TODO: Enable this linter in the future to detect code duplication diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index 539605f..d4f538f 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -1,38 +1,45 @@ -name: Publish Pre-Release - -on: - release: - types: - - prereleased - -permissions: - contents: write - -jobs: - publish-chrome-pre-release: - name: Publish Pre-Release to Chrome Web Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run build:chrome:pre-release - - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip) - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip - env: - CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb - CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} - CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} - CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} +--- +name: Publish Pre-Release + +on: + release: + types: + - prereleased + +permissions: {} + +jobs: + publish-chrome-pre-release: + name: Publish Pre-Release to Chrome Web Store + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run build:chrome:pre-release + + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-chrome.zip)" + env: + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + + - run: pnpm wxt submit \ + --chrome-zip .output/*-chrome.zip + env: + CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb + CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} + CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} + CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index acca322..37d8396 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,64 +1,78 @@ -name: Publish - -on: - release: - types: - - released - -permissions: - contents: write - -jobs: - publish-chrome: - name: Publish to Chrome Web Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run build:chrome:release - - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip) - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip - env: - CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg - CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} - CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} - CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} - - publish-firefox: - name: Publish to Firefox Addon Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run build:firefox:release - - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-firefox.zip) - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - - run: pnpm wxt submit --firefox-zip .output/*-firefox.zip --firefox-sources-zip .output/*-sources.zip - env: - FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}" - FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} - FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} +--- +name: Publish + +on: + release: + types: + - released + +permissions: {} + +jobs: + publish-chrome: + name: Publish to Chrome Web Store + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run build:chrome:release + + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-chrome.zip)" + env: + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip + env: + CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg + CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} + CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} + CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} + + publish-firefox: + name: Publish to Firefox Addon Store + runs-on: ubuntu-latest + + permissions: + contents: write + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run build:firefox:release + + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-firefox.zip)" + env: + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + + - run: pnpm wxt submit \ + --firefox-zip .output/*-firefox.zip \ + --firefox-sources-zip .output/*-sources.zip + env: + FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}" + FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} + FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3faac8..a2d7e20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,4 @@ +--- name: Release on: @@ -6,8 +7,7 @@ on: - main workflow_dispatch: -permissions: - contents: read +permissions: {} jobs: release: @@ -23,6 +23,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + persist-credentials: false - uses: pnpm/action-setup@v4 diff --git a/.prettierignore b/.prettierignore index 2240fb9..661cc63 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,3 @@ +CHANGELOG.md +pnpm-lock.yaml src/routeTree.gen.ts \ No newline at end of file diff --git a/.redmine/README.md b/.redmine/README.md index 22fb32a..7a9d8b1 100644 --- a/.redmine/README.md +++ b/.redmine/README.md @@ -1,25 +1,24 @@ -## Redmine dev setup +# Redmine dev setup This folder provides local Redmine instances for manual testing against multiple Redmine versions. -### Start a version +## Start a version -Run from this directory: +Run from this directory (`.redmine`): ```bash -cd .redmine docker compose up -d redmine-v6 ``` Available services and ports: -- Redmine 6: http://localhost:3006 (service `redmine-v6`) -- Redmine 5: http://localhost:3005 (service `redmine-v5`) -- Redmine 4: http://localhost:3004 (service `redmine-v4`) -- Redmine 3: http://localhost:3003 (service `redmine-v3`) -- Redmine 2: http://localhost:3002 (service `redmine-v2`) +- Redmine 6: [http://localhost:3006](http://localhost:3006) (service `redmine-v6`) +- Redmine 5: [http://localhost:3005](http://localhost:3005) (service `redmine-v5`) +- Redmine 4: [http://localhost:3004](http://localhost:3004) (service `redmine-v4`) +- Redmine 3: [http://localhost:3003](http://localhost:3003) (service `redmine-v3`) +- Redmine 2: [http://localhost:3002](http://localhost:3002) (service `redmine-v2`) -### Notes +## Notes - [Default credentials](https://hub.docker.com/_/redmine#accessing-the-application): `admin`/`admin` - [Themes](https://www.redmine.org/projects/redmine/wiki/theme_list) are mounted from `.redmine/themes` diff --git a/README.md b/README.md index 603db55..2d20270 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ [Install-Button-Firefox]: https://img.shields.io/badge/Install-71b500?style=for-the-badge&logoColor=white&logo=firefox-browser [Install-Link-Firefox]: https://addons.mozilla.org/de/firefox/addon/redmine-time-tracking "Open in firefox add-on store" -# 🚀 Features +## 🚀 Features - View all your assigned Redmine issues grouped by projects - Filter issues by project and status @@ -38,7 +38,7 @@ - Multiple languages - Dark & light mode (system default) -# 🛠️ Requirements +## 🛠️ Requirements Supported browsers: @@ -61,7 +61,7 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` | Display project-available time entry activities when _adding spent time entries_ | `< 3.4.0` | | Remote Redmine search | `< 3.3.0` | -# 🌐 Supported languages +## 🌐 Supported languages - English - German @@ -70,7 +70,7 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` > If you want to add more languages or extend existing ones, feel free to contribute. Just create a pull request with the desired changes. The language files are located under [src/lang](src/lang) and [public/\_locales](public/_locales). -# 📸 Screenshots +## 📸 Screenshots ![issues](screenshots/en/dark/issues.png) ![issues-time](screenshots/en/dark/time.png) @@ -79,6 +79,6 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` ![issues-add-spent-time](screenshots/en/dark/issues-add-spent-time.png) ![issues-context-menu](screenshots/en/dark/issues-context-menu.png) -# Credits +## Credits -Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons (https://www.redmine.org/projects/redmine/wiki/logo) +Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons ([https://www.redmine.org/projects/redmine/wiki/logo](https://www.redmine.org/projects/redmine/wiki/logo)) diff --git a/eslint.config.js b/eslint.config.mjs similarity index 100% rename from eslint.config.js rename to eslint.config.mjs diff --git a/package.json b/package.json index b958165..087c558 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,11 @@ "build:firefox:pre-release": "cross-env NODE_ENV=production wxt zip -b firefox --mv3 --mode pre-release", "build:chrome:release": "cross-env NODE_ENV=production wxt zip -b chrome --mode release", "build:firefox:release": "cross-env NODE_ENV=production wxt zip -b firefox --mv3 --mode release", - "lint": "eslint --fix src tests fixtures", - "format": "prettier --write src tests public fixtures", + "lint": "eslint --fix src tests fixtures && stylelint --fix src/**/*.css", + "format": "prettier --write .", "compile": "tsc --noEmit", + "lang-verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", "test": "playwright test", - "lang:verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", "release": "semantic-release" }, "dependencies": { @@ -85,6 +85,9 @@ "semantic-release": "^25.0.3", "shadcn": "^3.8.4", "sharp": "^0.34.5", + "stylelint": "^17.3.0", + "stylelint-config-standard": "^40.0.0", + "stylelint-config-tailwindcss": "^1.0.1", "tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b7be029..6c1b93f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -171,6 +171,15 @@ importers: sharp: specifier: ^0.34.5 version: 0.34.5 + stylelint: + specifier: ^17.3.0 + version: 17.3.0(typescript@5.9.3) + stylelint-config-standard: + specifier: ^40.0.0 + version: 40.0.0(stylelint@17.3.0(typescript@5.9.3)) + stylelint-config-tailwindcss: + specifier: ^1.0.1 + version: 1.0.1(stylelint@17.3.0(typescript@5.9.3))(tailwindcss@4.1.18) tailwindcss: specifier: ^4.1.18 version: 4.1.18 @@ -458,10 +467,55 @@ packages: '@types/react': optional: true + '@cacheable/memory@2.0.7': + resolution: {integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==} + + '@cacheable/utils@2.3.4': + resolution: {integrity: sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.27': + resolution: {integrity: sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==} + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@csstools/media-query-list-parser@5.0.0': + resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/selector-resolve-nested@4.0.0': + resolution: {integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} @@ -1170,6 +1224,15 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@modelcontextprotocol/sdk@1.26.0': resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==} engines: {node: '>=18'} @@ -1985,6 +2048,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -2017,6 +2084,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@3.0.1: + resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==} + engines: {node: '>= 16'} + balanced-match@4.0.2: resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==} engines: {node: 20 || >=22} @@ -2096,6 +2167,9 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable@2.3.2: + resolution: {integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==} + call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -2244,6 +2318,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==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2378,9 +2455,17 @@ packages: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -2827,6 +2912,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} @@ -2851,6 +2940,9 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2892,9 +2984,15 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat-cache@6.1.20: + resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} + flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -3048,6 +3146,14 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3060,6 +3166,13 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@16.1.0: + resolution: {integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==} + engines: {node: '>=20'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3096,6 +3209,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3111,6 +3228,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hashery@1.4.0: + resolution: {integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==} + engines: {node: '>=20'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3141,6 +3262,9 @@ packages: hookable@6.0.1: resolution: {integrity: sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3152,6 +3276,10 @@ packages: html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + htmlparser2@10.0.0: resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} @@ -3395,6 +3523,10 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -3586,6 +3718,13 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -3594,6 +3733,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} + ky@1.14.1: resolution: {integrity: sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==} engines: {node: '>=18'} @@ -3740,6 +3882,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} @@ -3811,6 +3956,12 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + media-typer@1.1.0: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} @@ -3819,6 +3970,10 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} + meow@14.0.0: + resolution: {integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==} + engines: {node: '>=20'} + merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -4360,10 +4515,19 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -4479,6 +4643,10 @@ packages: resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} + qified@0.6.0: + resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} + engines: {node: '>=20'} + qs@6.14.2: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} @@ -4796,6 +4964,14 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -4961,10 +5137,37 @@ packages: stubborn-utils@1.0.2: resolution: {integrity: sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==} + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-standard@40.0.0: + resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-tailwindcss@1.0.1: + resolution: {integrity: sha512-IeIMivgaB1kxPBgllMzBqyv0g61IwFxxZKo/fDDelfZ/JtPPlSBT04VuOCslk6PIaq5GQvdRnHOP1K3HpxSkeg==} + peerDependencies: + stylelint: '>=13.13.1' + tailwindcss: '>=2.2.16' + + stylelint@17.3.0: + resolution: {integrity: sha512-1POV91lcEMhj6SLVaOeA0KlS9yattS+qq+cyWqP/nYzWco7K5jznpGH1ExngvPlTM9QF1Kjd2bmuzJu9TH2OcA==} + engines: {node: '>=20.19.0'} + hasBin: true + super-regex@1.1.0: resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} engines: {node: '>=18'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4977,13 +5180,24 @@ packages: resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} + engines: {node: '>=20'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} @@ -5198,6 +5412,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + unimport@5.6.0: resolution: {integrity: sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A==} engines: {node: '>=18.12.0'} @@ -5363,6 +5581,10 @@ packages: resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} hasBin: true + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -5398,6 +5620,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@7.0.0: + resolution: {integrity: sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==} + engines: {node: ^20.17.0 || >=22.9.0} + wsl-utils@0.3.1: resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} engines: {node: '>=20'} @@ -5861,9 +6087,47 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + '@cacheable/memory@2.0.7': + dependencies: + '@cacheable/utils': 2.3.4 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.3.4': + dependencies: + hashery: 1.4.0 + keyv: 5.6.0 + '@colors/colors@1.5.0': optional: true + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.27': {} + + '@csstools/css-tokenizer@4.0.0': {} + + '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + '@date-fns/tz@1.4.1': {} '@devicefarmer/adbkit-logcat@2.1.3': {} @@ -6350,6 +6614,14 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.5 + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.4.0 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + '@modelcontextprotocol/sdk@1.26.0(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.9(hono@4.11.4) @@ -7261,6 +7533,8 @@ snapshots: dependencies: tslib: 2.8.1 + astral-regex@2.0.0: {} + async-mutex@0.5.0: dependencies: tslib: 2.8.1 @@ -7303,6 +7577,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@3.0.1: {} + balanced-match@4.0.2: dependencies: jackspeak: 4.2.3 @@ -7403,6 +7679,14 @@ snapshots: cac@6.7.14: {} + cacheable@2.3.2: + dependencies: + '@cacheable/memory': 2.0.7 + '@cacheable/utils': 2.3.4 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.6.0 + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -7562,6 +7846,8 @@ snapshots: color-name@1.1.4: {} + colord@2.9.3: {} + colorette@2.0.20: {} combined-stream@1.0.8: @@ -7680,6 +7966,8 @@ snapshots: dependencies: type-fest: 1.4.0 + css-functions-list@3.3.3: {} + css-select@5.2.2: dependencies: boolbase: 1.0.0 @@ -7688,6 +7976,11 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssesc@3.0.0: {} @@ -8275,6 +8568,8 @@ snapshots: fast-uri@3.1.0: {} + fastest-levenshtein@1.0.16: {} + fastq@1.15.0: dependencies: reusify: 1.0.4 @@ -8296,6 +8591,10 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@11.1.2: + dependencies: + flat-cache: 6.1.20 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -8346,8 +8645,16 @@ snapshots: flatted: 3.3.2 keyv: 4.5.4 + flat-cache@6.1.20: + dependencies: + cacheable: 2.3.2 + flatted: 3.3.3 + hookified: 1.15.1 + flatted@3.3.2: {} + flatted@3.3.3: {} + follow-redirects@1.15.11: {} for-each@0.3.3: @@ -8506,6 +8813,16 @@ snapshots: dependencies: ini: 4.1.1 + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + globals@14.0.0: {} globals@17.3.0: {} @@ -8515,6 +8832,17 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@16.1.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + globjoin@0.1.4: {} + gopd@1.2.0: {} graceful-fs@4.2.10: {} @@ -8542,6 +8870,8 @@ snapshots: has-flag@4.0.0: {} + has-flag@5.0.1: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -8556,6 +8886,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.4.0: + dependencies: + hookified: 1.15.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -8580,6 +8914,8 @@ snapshots: hookable@6.0.1: {} + hookified@1.15.1: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -8590,6 +8926,8 @@ snapshots: html-escaper@3.0.3: {} + html-tags@5.1.0: {} + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 @@ -8799,6 +9137,8 @@ snapshots: dependencies: isobject: 3.0.1 + is-plain-object@5.0.0: {} + is-potential-custom-element-name@1.0.1: {} is-primitive@3.0.1: {} @@ -8963,10 +9303,18 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@4.1.5: {} + known-css-properties@0.37.0: {} + ky@1.14.1: {} latest-version@9.0.0: @@ -9093,6 +9441,8 @@ snapshots: lodash.merge@4.6.2: {} + lodash.truncate@4.4.2: {} + lodash.uniqby@4.7.0: {} lodash@4.17.23: {} @@ -9168,10 +9518,16 @@ snapshots: math-intrinsics@1.1.0: {} + mathml-tag-names@4.0.0: {} + + mdn-data@2.12.2: {} + media-typer@1.1.0: {} meow@13.2.0: {} + meow@14.0.0: {} + merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} @@ -9656,11 +10012,17 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-value-parser@4.2.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -9726,6 +10088,10 @@ snapshots: dependencies: escape-goat: 4.0.0 + qified@0.6.0: + dependencies: + hookified: 1.15.1 + qs@6.14.2: dependencies: side-channel: 1.1.0 @@ -10208,6 +10574,14 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.3 @@ -10387,12 +10761,73 @@ snapshots: stubborn-utils@1.0.2: {} + stylelint-config-recommended@18.0.0(stylelint@17.3.0(typescript@5.9.3)): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + + stylelint-config-standard@40.0.0(stylelint@17.3.0(typescript@5.9.3)): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.3.0(typescript@5.9.3)) + + stylelint-config-tailwindcss@1.0.1(stylelint@17.3.0(typescript@5.9.3))(tailwindcss@4.1.18): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + tailwindcss: 4.1.18 + + stylelint@17.3.0(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.0.27 + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) + balanced-match: 3.0.1 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.9.3) + css-functions-list: 3.3.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.2 + global-modules: 2.0.0 + globby: 16.1.0 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.5 + import-meta-resolve: 4.2.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.37.0 + mathml-tag-names: 4.0.0 + meow: 14.0.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-safe-parser: 7.0.1(postcss@8.5.6) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + string-width: 8.1.1 + supports-hyperlinks: 4.4.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.0 + transitivePeerDependencies: + - supports-color + - typescript + super-regex@1.1.0: dependencies: function-timeout: 1.0.2 make-asynchronous: 1.0.1 time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -10406,10 +10841,25 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + supports-preserve-symlinks-flag@1.0.0: {} + svg-tags@1.0.0: {} + tabbable@6.4.0: {} + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + tagged-tag@1.0.0: {} tailwind-merge@3.4.0: {} @@ -10611,6 +11061,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unimport@5.6.0: dependencies: acorn: 8.15.0 @@ -10822,6 +11274,10 @@ snapshots: is-absolute: 0.1.7 isexe: 1.1.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -10858,6 +11314,11 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@7.0.0: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + wsl-utils@0.3.1: dependencies: is-wsl: 3.1.0 diff --git a/src/entrypoints/options.html b/src/entrypoints/options.html index 2e4088f..fbe06f1 100644 --- a/src/entrypoints/options.html +++ b/src/entrypoints/options.html @@ -5,6 +5,7 @@ +
diff --git a/src/entrypoints/popup.html b/src/entrypoints/popup.html index 85169fa..0fb2a71 100644 --- a/src/entrypoints/popup.html +++ b/src/entrypoints/popup.html @@ -5,6 +5,7 @@ +
diff --git a/src/index.css b/src/index.css index f3cf18e..46bf94d 100644 --- a/src/index.css +++ b/src/index.css @@ -3,79 +3,79 @@ @import "shadcn/tailwind.css"; :root { - --background: oklch(1 0 0); - --foreground: oklch(0.3211 0 0); - --card: oklch(0.98 0 0); - --card-foreground: oklch(0.3211 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.3211 0 0); - --primary: oklch(0.6231 0.188 259.8145); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.967 0.0029 264.5419); - --secondary-foreground: oklch(0.4461 0.0263 256.8018); - --muted: oklch(0.9346 0.0017 247.8389); - --muted-foreground: oklch(0.551 0.0234 264.3637); - --accent: oklch(0.9514 0.025 236.8242); - --accent-foreground: oklch(0.3791 0.1378 265.5222); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.9276 0.0058 264.5313); - --input: oklch(0.9276 0.0058 264.5313); - --ring: oklch(0.6231 0.188 259.8145); - --chart-1: oklch(0.6231 0.188 259.8145); - --chart-2: oklch(0.5461 0.2152 262.8809); - --chart-3: oklch(0.4882 0.2172 264.3763); - --chart-4: oklch(0.4244 0.1809 265.6377); - --chart-5: oklch(0.3791 0.1378 265.5222); - --sidebar: oklch(0.9846 0.0017 247.8389); - --sidebar-foreground: oklch(0.3211 0 0); - --sidebar-primary: oklch(0.6231 0.188 259.8145); - --sidebar-primary-foreground: oklch(1 0 0); - --sidebar-accent: oklch(0.9514 0.025 236.8242); - --sidebar-accent-foreground: oklch(0.3791 0.1378 265.5222); - --sidebar-border: oklch(0.9276 0.0058 264.5313); - --sidebar-ring: oklch(0.6231 0.188 259.8145); - --font-sans: Inter, sans-serif; - --font-serif: Source Serif 4, serif; - --font-mono: JetBrains Mono, monospace; + --background: oklch(100% 0 0deg); + --foreground: oklch(32.11% 0 0deg); + --card: oklch(98% 0 0deg); + --card-foreground: oklch(32.11% 0 0deg); + --popover: oklch(100% 0 0deg); + --popover-foreground: oklch(32.11% 0 0deg); + --primary: oklch(62.31% 0.188 259.8145deg); + --primary-foreground: oklch(100% 0 0deg); + --secondary: oklch(96.7% 0.0029 264.5419deg); + --secondary-foreground: oklch(44.61% 0.0263 256.8018deg); + --muted: oklch(93.46% 0.0017 247.8389deg); + --muted-foreground: oklch(55.1% 0.0234 264.3637deg); + --accent: oklch(95.14% 0.025 236.8242deg); + --accent-foreground: oklch(37.91% 0.1378 265.5222deg); + --destructive: oklch(63.68% 0.2078 25.3313deg); + --destructive-foreground: oklch(100% 0 0deg); + --border: oklch(92.76% 0.0058 264.5313deg); + --input: oklch(92.76% 0.0058 264.5313deg); + --ring: oklch(62.31% 0.188 259.8145deg); + --chart-1: oklch(62.31% 0.188 259.8145deg); + --chart-2: oklch(54.61% 0.2152 262.8809deg); + --chart-3: oklch(48.82% 0.2172 264.3763deg); + --chart-4: oklch(42.44% 0.1809 265.6377deg); + --chart-5: oklch(37.91% 0.1378 265.5222deg); + --sidebar: oklch(98.46% 0.0017 247.8389deg); + --sidebar-foreground: oklch(32.11% 0 0deg); + --sidebar-primary: oklch(62.31% 0.188 259.8145deg); + --sidebar-primary-foreground: oklch(100% 0 0deg); + --sidebar-accent: oklch(95.14% 0.025 236.8242deg); + --sidebar-accent-foreground: oklch(37.91% 0.1378 265.5222deg); + --sidebar-border: oklch(92.76% 0.0058 264.5313deg); + --sidebar-ring: oklch(62.31% 0.188 259.8145deg); + --font-sans: inter, sans-serif; + --font-serif: source serif 4, serif; + --font-mono: jetbrains mono, monospace; --radius: 0.6rem; --spacing: 0.225rem; } @media (prefers-color-scheme: dark) { :root { - --background: oklch(0.2046 0 0); - --foreground: oklch(0.9219 0 0); - --card: oklch(0.245 0 0); - --card-foreground: oklch(0.9219 0 0); - --popover: oklch(0.2686 0 0); - --popover-foreground: oklch(0.9219 0 0); - --primary: oklch(0.6231 0.188 259.8145); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.2686 0 0); - --secondary-foreground: oklch(0.9219 0 0); - --muted: oklch(0.3 0 0); - --muted-foreground: oklch(0.7155 0 0); - --accent: oklch(0.3791 0.1378 265.5222); - --accent-foreground: oklch(0.8823 0.0571 254.1284); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.3715 0 0); - --input: oklch(0.3715 0 0); - --ring: oklch(0.6231 0.188 259.8145); - --chart-1: oklch(0.7137 0.1434 254.624); - --chart-2: oklch(0.6231 0.188 259.8145); - --chart-3: oklch(0.5461 0.2152 262.8809); - --chart-4: oklch(0.4882 0.2172 264.3763); - --chart-5: oklch(0.4244 0.1809 265.6377); - --sidebar: oklch(0.2046 0 0); - --sidebar-foreground: oklch(0.9219 0 0); - --sidebar-primary: oklch(0.6231 0.188 259.8145); - --sidebar-primary-foreground: oklch(1 0 0); - --sidebar-accent: oklch(0.3791 0.1378 265.5222); - --sidebar-accent-foreground: oklch(0.8823 0.0571 254.1284); - --sidebar-border: oklch(0.3715 0 0); - --sidebar-ring: oklch(0.6231 0.188 259.8145); + --background: oklch(20.46% 0 0deg); + --foreground: oklch(92.19% 0 0deg); + --card: oklch(24.5% 0 0deg); + --card-foreground: oklch(92.19% 0 0deg); + --popover: oklch(26.86% 0 0deg); + --popover-foreground: oklch(92.19% 0 0deg); + --primary: oklch(62.31% 0.188 259.8145deg); + --primary-foreground: oklch(100% 0 0deg); + --secondary: oklch(26.86% 0 0deg); + --secondary-foreground: oklch(92.19% 0 0deg); + --muted: oklch(30% 0 0deg); + --muted-foreground: oklch(71.55% 0 0deg); + --accent: oklch(37.91% 0.1378 265.5222deg); + --accent-foreground: oklch(88.23% 0.0571 254.1284deg); + --destructive: oklch(63.68% 0.2078 25.3313deg); + --destructive-foreground: oklch(100% 0 0deg); + --border: oklch(37.15% 0 0deg); + --input: oklch(37.15% 0 0deg); + --ring: oklch(62.31% 0.188 259.8145deg); + --chart-1: oklch(71.37% 0.1434 254.624deg); + --chart-2: oklch(62.31% 0.188 259.8145deg); + --chart-3: oklch(54.61% 0.2152 262.8809deg); + --chart-4: oklch(48.82% 0.2172 264.3763deg); + --chart-5: oklch(42.44% 0.1809 265.6377deg); + --sidebar: oklch(20.46% 0 0deg); + --sidebar-foreground: oklch(92.19% 0 0deg); + --sidebar-primary: oklch(62.31% 0.188 259.8145deg); + --sidebar-primary-foreground: oklch(100% 0 0deg); + --sidebar-accent: oklch(37.91% 0.1378 265.5222deg); + --sidebar-accent-foreground: oklch(88.23% 0.0571 254.1284deg); + --sidebar-border: oklch(37.15% 0 0deg); + --sidebar-ring: oklch(62.31% 0.188 259.8145deg); } } @@ -112,44 +112,47 @@ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); - --font-sans: var(--font-sans); --font-mono: var(--font-mono); --font-serif: var(--font-serif); - --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); } +/* stylelint-disable nesting-selector-no-missing-scoping-root */ @utility appearance-none { &input[type="number"]::-webkit-inner-spin-button { appearance: none; } - & input[type="number"]::-webkit-outer-spin-button { + + &input[type="number"]::-webkit-outer-spin-button { appearance: none; } + &input[type="number"] { - -moz-appearance: textfield; + appearance: textfield; } &input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; appearance: none; cursor: pointer; width: 2px; } + &input[type="range"]::-moz-range-thumb { cursor: pointer; width: 2px; } } +/* stylelint-enable nesting-selector-no-missing-scoping-root */ @layer base { * { @apply border-border outline-ring/50; } + body, :host { @apply text-foreground; @@ -158,6 +161,7 @@ ::-webkit-scrollbar { width: 5px; } + ::-webkit-scrollbar-thumb { background-color: var(--color-primary); border-radius: 3px; diff --git a/stylelint.config.mjs b/stylelint.config.mjs new file mode 100644 index 0000000..6f35315 --- /dev/null +++ b/stylelint.config.mjs @@ -0,0 +1,4 @@ +/** @type {import("stylelint").Config} */ +export default { + extends: ["stylelint-config-standard", "stylelint-config-tailwindcss"], +}; diff --git a/tsconfig.json b/tsconfig.json index 0766891..49b743e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,6 @@ "module": "ESNext", "skipLibCheck": true, - /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true, @@ -19,7 +18,6 @@ "noEmit": true, "jsx": "react-jsx", - /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true,