diff --git a/.lint/.htmlhintrc b/.lint/.htmlhintrc index 11464f9..2a3728a 100644 --- a/.lint/.htmlhintrc +++ b/.lint/.htmlhintrc @@ -13,7 +13,7 @@ "title-require": true, "alt-require": true, "doctype-html5": true, - "id-class-value": "dash", + "id-class-value": false, "style-disabled": true, "inline-style-disabled": true, "inline-script-disabled": true, @@ -21,4 +21,4 @@ "id-class-ad-disabled": true, "href-abs-or-rel": false, "attr-unsafe-chars": true -} \ No newline at end of file +} diff --git a/.lint/.stylelintrc.json b/.lint/.stylelintrc.json index 689703b..323fdb9 100644 --- a/.lint/.stylelintrc.json +++ b/.lint/.stylelintrc.json @@ -1,17 +1,13 @@ { "extends": "stylelint-config-sass-guidelines", - "plugins": [ - "stylelint-scss" - ], + "plugins": ["stylelint-scss"], "rules": { "color-hex-length": "long", "selector-pseudo-element-no-unknown": [ true, { - "ignorePseudoElements": [ - "ng-deep" - ] + "ignorePseudoElements": ["ng-deep"] } ] } -} \ No newline at end of file +} diff --git a/.lintstagedrc.json b/.lintstagedrc.json index 4c209ce..2b22c7e 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,4 +1,4 @@ { "**/*.{ts,js}": "eslint --cache --fix", "*": "prettier --cache --ignore-unknown --write" -} \ No newline at end of file +} diff --git a/.postcssrc.json b/.postcssrc.json new file mode 100644 index 0000000..e092dc7 --- /dev/null +++ b/.postcssrc.json @@ -0,0 +1,5 @@ +{ + "plugins": { + "@tailwindcss/postcss": {} + } +} diff --git a/.prettierignore b/.prettierignore index be92875..0621750 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,8 @@ package.json package-lock.json -yarn -yarn.error.log \ No newline at end of file +yarn.lock +yarn.error.log +.github/ +.git/ +.gitignore +.prettierignore \ No newline at end of file diff --git a/.prettierrc: b/.prettierrc similarity index 98% rename from .prettierrc: rename to .prettierrc index 20e0a0f..10a7901 100644 --- a/.prettierrc: +++ b/.prettierrc @@ -5,4 +5,4 @@ "semi": true, "singleQuote": true, "bracketSpacing": true -} \ No newline at end of file +} diff --git a/angular.json b/angular.json index e65df8a..1bd85a4 100644 --- a/angular.json +++ b/angular.json @@ -30,7 +30,7 @@ "input": "public" } ], - "styles": ["src/styles.scss"] + "styles": ["src/tailwind.css", "src/styles.scss"] }, "configurations": { "production": { diff --git a/commitlint.config.js b/commitlint.config.js index 1e59b67..422b194 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1 +1 @@ -module.exports = {extends: ['@commitlint/config-conventional']}; \ No newline at end of file +module.exports = { extends: ['@commitlint/config-conventional'] }; diff --git a/eslint.config.js b/eslint.config.js index eebc35c..229b989 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,12 +1,12 @@ // @ts-check -const eslint = require("@eslint/js"); -const { defineConfig } = require("eslint/config"); -const tseslint = require("typescript-eslint"); -const angular = require("angular-eslint"); +const eslint = require('@eslint/js'); +const { defineConfig } = require('eslint/config'); +const tseslint = require('typescript-eslint'); +const angular = require('angular-eslint'); module.exports = defineConfig([ { - files: ["**/*.ts"], + files: ['**/*.ts'], extends: [ eslint.configs.recommended, tseslint.configs.recommended, @@ -15,30 +15,27 @@ module.exports = defineConfig([ ], processor: angular.processInlineTemplates, rules: { - "@angular-eslint/directive-selector": [ - "error", + '@angular-eslint/directive-selector': [ + 'error', { - type: "attribute", - prefix: "cai", - style: "camelCase", + type: 'attribute', + prefix: 'cai', + style: 'camelCase', }, ], - "@angular-eslint/component-selector": [ - "error", + '@angular-eslint/component-selector': [ + 'error', { - type: "element", - prefix: "cai", - style: "kebab-case", + type: 'element', + prefix: 'cai', + style: 'kebab-case', }, ], }, }, { - files: ["**/*.html"], - extends: [ - angular.configs.templateRecommended, - angular.configs.templateAccessibility, - ], + files: ['**/*.html'], + extends: [angular.configs.templateRecommended, angular.configs.templateAccessibility], rules: {}, }, ]); diff --git a/package.json b/package.json index 8d29c20..ee4a765 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@commitlint/config-conventional": "^21.0.0", "@eslint/js": "^10.0.1", "@ngx-env/builder": "^21.0.1", + "@tailwindcss/postcss": "^4", "angular-eslint": "21.3.1", "cross-env": "^10.1.0", "eslint": "^10.0.3", @@ -49,12 +50,14 @@ "json-server": "^1.0.0-beta.15", "lint-staged": "^17.0.4", "npm-run-all": "^4.1.5", + "postcss": "^8", "prettier": "^3.8.3", "stylelint": "^17.11.0", "stylelint-config-sass-guidelines": "^13.0.0", "stylelint-scss": "^7.0.0", + "tailwindcss": "^4", "typescript": "~6.0.3", - "typescript-eslint": "8.56.1", + "typescript-eslint": "8.59.2", "vitest": "^4.0.8" } } diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 2a90400..f607328 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,15 +1,11 @@ -import { - ApplicationConfig, - importProvidersFrom, - provideBrowserGlobalErrorListeners, -} from "@angular/core"; -import { provideRouter } from "@angular/router"; +import { ApplicationConfig, importProvidersFrom, provideBrowserGlobalErrorListeners } from '@angular/core'; +import { provideRouter } from '@angular/router'; -import { routes } from "./app.routes"; -import { provideTranslateHttpLoader } from "@ngx-translate/http-loader"; -import { provideHttpClient } from "@angular/common/http"; -import { provideTranslateService } from "@ngx-translate/core"; -import { LoggerModule, NgxLoggerLevel } from "ngx-logger"; +import { routes } from './app.routes'; +import { provideTranslateHttpLoader } from '@ngx-translate/http-loader'; +import { provideHttpClient } from '@angular/common/http'; +import { provideTranslateService } from '@ngx-translate/core'; +import { LoggerModule, NgxLoggerLevel } from 'ngx-logger'; export const appConfig: ApplicationConfig = { providers: [ @@ -18,11 +14,11 @@ export const appConfig: ApplicationConfig = { provideHttpClient(), provideTranslateService({ loader: provideTranslateHttpLoader({ - prefix: "/assets/i18n/", - suffix: ".json", + prefix: '/assets/i18n/', + suffix: '.json', }), - fallbackLang: "en", - lang: import.meta.env.NG_APP_DEFAULT_LANGUAGE || "en", + fallbackLang: 'en', + lang: import.meta.env.NG_APP_DEFAULT_LANGUAGE || 'en', }), importProvidersFrom(LoggerModule.forRoot({ level: NgxLoggerLevel.INFO })), ], diff --git a/src/app/app.html b/src/app/app.html index b8e539e..f8f1c7f 100644 --- a/src/app/app.html +++ b/src/app/app.html @@ -1 +1,9 @@ -

{{ 'app.hello' | translate }}

+
+
+

{{ 'app.hello' | translate }}

+ +
+
+ +
+
diff --git a/src/app/app.spec.ts b/src/app/app.spec.ts index 6c53de2..cf4e486 100644 --- a/src/app/app.spec.ts +++ b/src/app/app.spec.ts @@ -1,12 +1,8 @@ -import { TestBed } from "@angular/core/testing"; -import { App } from "./app"; -import { - TranslateLoader, - provideTranslateLoader, - provideTranslateService, -} from "@ngx-translate/core"; -import { of } from "rxjs"; -import en from "../../public/assets/i18n/en.json"; +import { TestBed } from '@angular/core/testing'; +import { App } from './app'; +import { TranslateLoader, provideTranslateLoader, provideTranslateService } from '@ngx-translate/core'; +import { of } from 'rxjs'; +import en from '../../public/assets/i18n/en.json'; class TestTranslateLoader extends TranslateLoader { getTranslation() { @@ -14,33 +10,31 @@ class TestTranslateLoader extends TranslateLoader { } } -describe("App", () => { +describe('App', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [App], providers: [ provideTranslateService({ loader: provideTranslateLoader(TestTranslateLoader), - fallbackLang: "en", - lang: "en", + fallbackLang: 'en', + lang: 'en', }), ], }).compileComponents(); }); - it("should create the app", () => { + it('should create the app', () => { const fixture = TestBed.createComponent(App); const app = fixture.componentInstance; expect(app).toBeTruthy(); }); - it("should render title", async () => { + it('should render title', async () => { const fixture = TestBed.createComponent(App); fixture.detectChanges(); await fixture.whenStable(); const compiled = fixture.nativeElement as HTMLElement; - expect(compiled.querySelector("h1")?.textContent).toContain( - "Welcome to Cortex AI Dev Kit", - ); + expect(compiled.querySelector('h1')?.textContent).toContain('Welcome to Cortex AI Dev Kit'); }); }); diff --git a/src/app/app.ts b/src/app/app.ts index f50eb5f..2fa4d74 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -1,13 +1,16 @@ -import { Component, signal } from "@angular/core"; -import { RouterOutlet } from "@angular/router"; -import { TranslatePipe } from "@ngx-translate/core"; +import { Component, inject, signal } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; +import { TranslatePipe } from '@ngx-translate/core'; +import { ThemeService } from './core/theme/theme.service'; +import { ThemeToggle } from './core/theme/theme-toggle'; @Component({ - selector: "cai-root", - imports: [RouterOutlet, TranslatePipe], - templateUrl: "./app.html", - styleUrl: "./app.scss", + selector: 'cai-root', + imports: [RouterOutlet, TranslatePipe, ThemeToggle], + templateUrl: './app.html', + styleUrl: './app.scss', }) export class App { - protected readonly title = signal("cortextaidevkit-ui"); + protected readonly title = signal('cortextaidevkit-ui'); + protected readonly theme = inject(ThemeService); } diff --git a/src/app/core/theme/theme-toggle.ts b/src/app/core/theme/theme-toggle.ts new file mode 100644 index 0000000..a217e32 --- /dev/null +++ b/src/app/core/theme/theme-toggle.ts @@ -0,0 +1,55 @@ +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { ThemeService } from './theme.service'; + +@Component({ + selector: 'cai-theme-toggle', + changeDetection: ChangeDetectionStrategy.OnPush, + template: ` + + `, +}) +export class ThemeToggle { + protected readonly theme = inject(ThemeService); +} diff --git a/src/app/core/theme/theme.service.ts b/src/app/core/theme/theme.service.ts new file mode 100644 index 0000000..5a4725e --- /dev/null +++ b/src/app/core/theme/theme.service.ts @@ -0,0 +1,61 @@ +import { Injectable, PLATFORM_ID, computed, effect, inject, signal } from '@angular/core'; +import { isPlatformBrowser } from '@angular/common'; + +export type Theme = 'light' | 'dark'; + +const STORAGE_KEY = 'theme'; + +@Injectable({ providedIn: 'root' }) +export class ThemeService { + private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID)); + + private readonly userChosen = signal(this.readStored() !== null); + + readonly theme = signal(this.resolveInitialTheme()); + + readonly isDark = computed(() => this.theme() === 'dark'); + + constructor() { + effect(() => { + const value = this.theme(); + if (!this.isBrowser) return; + + document.documentElement.classList.toggle('dark', value === 'dark'); + + if (this.userChosen()) { + try { + localStorage.setItem(STORAGE_KEY, value); + } catch { + // ignore storage errors (private mode, quota) + } + } + }); + } + + toggle(): void { + this.setTheme(this.theme() === 'dark' ? 'light' : 'dark'); + } + + setTheme(theme: Theme): void { + this.userChosen.set(true); + this.theme.set(theme); + } + + private resolveInitialTheme(): Theme { + if (!this.isBrowser) return 'dark'; + const stored = this.readStored(); + if (stored === 'light' || stored === 'dark') return stored; + if (window.matchMedia?.('(prefers-color-scheme: dark)').matches) return 'dark'; + if (window.matchMedia?.('(prefers-color-scheme: light)').matches) return 'light'; + return 'dark'; + } + + private readStored(): string | null { + if (!this.isBrowser) return null; + try { + return localStorage.getItem(STORAGE_KEY); + } catch { + return null; + } + } +} diff --git a/src/index.html b/src/index.html index df1425d..8062d26 100644 --- a/src/index.html +++ b/src/index.html @@ -1,13 +1,32 @@ - - - CortextaidevkitUi - - - - - - - + + + CortextaidevkitUi + + + + + + + + + + + diff --git a/src/main.ts b/src/main.ts index 5df75f9..190f341 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,5 +2,4 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { App } from './app/app'; -bootstrapApplication(App, appConfig) - .catch((err) => console.error(err)); +bootstrapApplication(App, appConfig).catch((err) => console.error(err)); diff --git a/src/styles.scss b/src/styles.scss index 90d4ee0..5f9b232 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1 +1,58 @@ -/* You can add global styles to this file, and also import other style files */ +@use './tailwind.css'; +:root { + --background: #ffffff; + --surface: #f7f8f9; + --foreground: #1a1f23; + --muted: #5f6b76; + --border: #e5e8eb; + --accent: #dd0031; + + color-scheme: light; +} + +.dark { + --background: #0b0d10; + --surface: #15181d; + --foreground: #f1f3f5; + --muted: #9aa4ad; + --border: #232830; + --accent: #ff4081; + + color-scheme: dark; +} + +html, +body { + height: 100%; +} + +body { + margin: 0; + background-color: var(--background); + color: var(--foreground); + font-family: var(--font-sans); + letter-spacing: -0.005em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: + background-color 200ms ease, + color 200ms ease; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: var(--font-heading); + font-weight: 500; + letter-spacing: -0.01em; +} + +code, +pre, +kbd, +samp { + font-family: var(--font-mono); +} diff --git a/src/tailwind.css b/src/tailwind.css new file mode 100644 index 0000000..a6e2cfc --- /dev/null +++ b/src/tailwind.css @@ -0,0 +1,12 @@ +@import 'tailwindcss'; + +@custom-variant dark (&:where(.dark, .dark *)); + +@theme { + --font-sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; + --font-heading: 'Inter Tight', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; + --font-mono: 'DM Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace; + + --color-brand: #dd0031; + --color-brand-soft: #ff4081; +} diff --git a/tsconfig.app.json b/tsconfig.app.json index 264f459..a0dcc37 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -6,10 +6,6 @@ "outDir": "./out-tsc/app", "types": [] }, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "src/**/*.spec.ts" - ] + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.spec.ts"] } diff --git a/tsconfig.spec.json b/tsconfig.spec.json index d383706..26230b0 100644 --- a/tsconfig.spec.json +++ b/tsconfig.spec.json @@ -4,12 +4,7 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", - "types": [ - "vitest/globals" - ] + "types": ["vitest/globals"] }, - "include": [ - "src/**/*.d.ts", - "src/**/*.spec.ts" - ] + "include": ["src/**/*.d.ts", "src/**/*.spec.ts"] } diff --git a/yarn.lock b/yarn.lock index ff1123e..a9550d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -128,6 +128,11 @@ dependencies: "@algolia/client-common" "5.48.1" +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@ampproject/remapping@2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" @@ -775,7 +780,7 @@ dependencies: "@dotenv-run/core" "^1.3.7" -"@emnapi/core@1.10.0": +"@emnapi/core@1.10.0", "@emnapi/core@^1.10.0": version "1.10.0" resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== @@ -783,14 +788,14 @@ "@emnapi/wasi-threads" "1.2.1" tslib "^2.4.0" -"@emnapi/runtime@1.10.0": +"@emnapi/runtime@1.10.0", "@emnapi/runtime@^1.10.0": version "1.10.0" resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.2.1": +"@emnapi/wasi-threads@1.2.1", "@emnapi/wasi-threads@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== @@ -2197,6 +2202,115 @@ postcss-value-parser "^4.2.0" style-search "^0.1.0" +"@tailwindcss/node@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.3.0.tgz#9dc5312bf41c48658529f36021e0b466c4eb7860" + integrity sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g== + dependencies: + "@jridgewell/remapping" "^2.3.5" + enhanced-resolve "^5.21.0" + jiti "^2.6.1" + lightningcss "1.32.0" + magic-string "^0.30.21" + source-map-js "^1.2.1" + tailwindcss "4.3.0" + +"@tailwindcss/oxide-android-arm64@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz#e4533b6125236fe81a899cf5a82028c85244def8" + integrity sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng== + +"@tailwindcss/oxide-darwin-arm64@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz#96b074ef64ec6c41d580063740c8d36cf5c459ce" + integrity sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ== + +"@tailwindcss/oxide-darwin-x64@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz#0d9638d06d38684339b2dc06631966a7296bb64e" + integrity sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA== + +"@tailwindcss/oxide-freebsd-x64@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz#efc7acd17cd38d7585c07cb938a4f1b703f79d7a" + integrity sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ== + +"@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz#e41c945e529670cd93fd6ed0c6a2880de5c40333" + integrity sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA== + +"@tailwindcss/oxide-linux-arm64-gnu@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz#6bb608b16ba7146d61097c2f4c7ee927d1f3580a" + integrity sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg== + +"@tailwindcss/oxide-linux-arm64-musl@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz#1bb443aa371bb99b50cb39d4d688151fadcd8a63" + integrity sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ== + +"@tailwindcss/oxide-linux-x64-gnu@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz#5267c0bb2597426c0d2e759acb5389cde2aa71fd" + integrity sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ== + +"@tailwindcss/oxide-linux-x64-musl@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz#fb2da97c67b218e5c7c723cb32782d55d7e4a5d5" + integrity sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg== + +"@tailwindcss/oxide-wasm32-wasi@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz#3f6538e511066d67d8683863dcaeeb16c22de849" + integrity sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA== + dependencies: + "@emnapi/core" "^1.10.0" + "@emnapi/runtime" "^1.10.0" + "@emnapi/wasi-threads" "^1.2.1" + "@napi-rs/wasm-runtime" "^1.1.4" + "@tybys/wasm-util" "^0.10.1" + tslib "^2.8.1" + +"@tailwindcss/oxide-win32-arm64-msvc@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz#ec45fba773c76759338c05d4fe5cf42c4eea2e4e" + integrity sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ== + +"@tailwindcss/oxide-win32-x64-msvc@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz#58cdd6e06adbe2e3160274edfcd0b0b43e17fee4" + integrity sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA== + +"@tailwindcss/oxide@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.3.0.tgz#cc1c61e88f62c0e9f56062de3e7873acaa2159d4" + integrity sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg== + optionalDependencies: + "@tailwindcss/oxide-android-arm64" "4.3.0" + "@tailwindcss/oxide-darwin-arm64" "4.3.0" + "@tailwindcss/oxide-darwin-x64" "4.3.0" + "@tailwindcss/oxide-freebsd-x64" "4.3.0" + "@tailwindcss/oxide-linux-arm-gnueabihf" "4.3.0" + "@tailwindcss/oxide-linux-arm64-gnu" "4.3.0" + "@tailwindcss/oxide-linux-arm64-musl" "4.3.0" + "@tailwindcss/oxide-linux-x64-gnu" "4.3.0" + "@tailwindcss/oxide-linux-x64-musl" "4.3.0" + "@tailwindcss/oxide-wasm32-wasi" "4.3.0" + "@tailwindcss/oxide-win32-arm64-msvc" "4.3.0" + "@tailwindcss/oxide-win32-x64-msvc" "4.3.0" + +"@tailwindcss/postcss@^4": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@tailwindcss/postcss/-/postcss-4.3.0.tgz#58a087d8c6f06c6aa81e8a3f6c1e7282b8ee94d9" + integrity sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w== + dependencies: + "@alloc/quick-lru" "^5.2.0" + "@tailwindcss/node" "4.3.0" + "@tailwindcss/oxide" "4.3.0" + postcss "^8.5.10" + tailwindcss "4.3.0" + "@tinyhttp/accepts@2.3.0", "@tinyhttp/accepts@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@tinyhttp/accepts/-/accepts-2.3.0.tgz#01593d450459d12558ba3cd5502bf79202f13d81" @@ -2391,38 +2505,29 @@ resolved "https://registry.yarnpkg.com/@types/sarif/-/sarif-2.1.7.tgz#dab4d16ba7568e9846c454a8764f33c5d98e5524" integrity sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ== -"@typescript-eslint/eslint-plugin@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz#b1ce606d87221daec571e293009675992f0aae76" - integrity sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A== +"@typescript-eslint/eslint-plugin@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz#f37b2c189a0177141fe3de3b08f2a83991bfdbfa" + integrity sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/type-utils" "8.56.1" - "@typescript-eslint/utils" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" + "@typescript-eslint/scope-manager" "8.59.2" + "@typescript-eslint/type-utils" "8.59.2" + "@typescript-eslint/utils" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" ignore "^7.0.5" natural-compare "^1.4.0" - ts-api-utils "^2.4.0" - -"@typescript-eslint/parser@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.56.1.tgz#21d13b3d456ffb08614c1d68bb9a4f8d9237cdc7" - integrity sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg== - dependencies: - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" - debug "^4.4.3" + ts-api-utils "^2.5.0" -"@typescript-eslint/project-service@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.56.1.tgz#65c8d645f028b927bfc4928593b54e2ecd809244" - integrity sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ== +"@typescript-eslint/parser@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.59.2.tgz#e2fd0084baa5dd0c24cd789af1c72cbc3a7a1c62" + integrity sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.56.1" - "@typescript-eslint/types" "^8.56.1" + "@typescript-eslint/scope-manager" "8.59.2" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/visitor-keys" "8.59.2" debug "^4.4.3" "@typescript-eslint/project-service@8.59.2": @@ -2434,14 +2539,6 @@ "@typescript-eslint/types" "^8.59.2" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz#254df93b5789a871351335dd23e20bc164060f24" - integrity sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w== - dependencies: - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" - "@typescript-eslint/scope-manager@8.59.2": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz#63cbd0af2e3180949d6be81122cc555bc71e736d" @@ -2450,52 +2547,27 @@ "@typescript-eslint/types" "8.59.2" "@typescript-eslint/visitor-keys" "8.59.2" -"@typescript-eslint/tsconfig-utils@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz#1afa830b0fada5865ddcabdc993b790114a879b7" - integrity sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ== - -"@typescript-eslint/tsconfig-utils@8.59.2", "@typescript-eslint/tsconfig-utils@^8.56.1", "@typescript-eslint/tsconfig-utils@^8.59.2": +"@typescript-eslint/tsconfig-utils@8.59.2", "@typescript-eslint/tsconfig-utils@^8.59.2": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz#6e92bc412083753185a79c9f1431e78169d9232f" integrity sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw== -"@typescript-eslint/type-utils@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz#7a6c4fabf225d674644931e004302cbbdd2f2e24" - integrity sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg== +"@typescript-eslint/type-utils@8.59.2": + version "8.59.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz#a60a1192a804fa472a92c41656853ac6a9ba7176" + integrity sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ== dependencies: - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/utils" "8.56.1" + "@typescript-eslint/types" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/utils" "8.59.2" debug "^4.4.3" - ts-api-utils "^2.4.0" - -"@typescript-eslint/types@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.56.1.tgz#975e5942bf54895291337c91b9191f6eb0632ab9" - integrity sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw== + ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.59.2", "@typescript-eslint/types@^8.0.0", "@typescript-eslint/types@^8.56.1", "@typescript-eslint/types@^8.59.2": +"@typescript-eslint/types@8.59.2", "@typescript-eslint/types@^8.0.0", "@typescript-eslint/types@^8.59.2": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.59.2.tgz#01caabcd7e4715c33ad5e11cab260829714d6b9c" integrity sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q== -"@typescript-eslint/typescript-estree@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz#3b9e57d8129a860c50864c42188f761bdef3eab0" - integrity sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg== - dependencies: - "@typescript-eslint/project-service" "8.56.1" - "@typescript-eslint/tsconfig-utils" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" - debug "^4.4.3" - minimatch "^10.2.2" - semver "^7.7.3" - tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" - "@typescript-eslint/typescript-estree@8.59.2": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz#6a217ef65b18dbd12c718fc86a675d1d7a1414cc" @@ -2511,17 +2583,7 @@ tinyglobby "^0.2.15" ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.56.1.tgz#5a86acaf9f1b4c4a85a42effb217f73059f6deb7" - integrity sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA== - dependencies: - "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - -"@typescript-eslint/utils@^8.0.0": +"@typescript-eslint/utils@8.59.2", "@typescript-eslint/utils@^8.0.0": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.59.2.tgz#ff619a6a3075f4017fa91b8610b752a8ca3366aa" integrity sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q== @@ -2531,14 +2593,6 @@ "@typescript-eslint/types" "8.59.2" "@typescript-eslint/typescript-estree" "8.59.2" -"@typescript-eslint/visitor-keys@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz#50e03475c33a42d123dc99e63acf1841c0231f87" - integrity sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw== - dependencies: - "@typescript-eslint/types" "8.56.1" - eslint-visitor-keys "^5.0.0" - "@typescript-eslint/visitor-keys@8.59.2": version "8.59.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz#5ccc486913cd347883d69158836b1189a660bfe6" @@ -3450,6 +3504,14 @@ encodeurl@^2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== +enhanced-resolve@^5.21.0: + version "5.21.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz#ddbedd0c7f14c3c51adfc24f5a14d76a83395442" + integrity sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.3.3" + entities@^4.2.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -4189,7 +4251,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -4735,6 +4797,11 @@ jiti@2.6.1: resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92" integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== +jiti@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.7.0.tgz#974228f2f4ca2bc21885a1797b45fea68e950c64" + integrity sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ== + jose@^6.1.3: version "6.2.3" resolved "https://registry.yarnpkg.com/jose/-/jose-6.2.3.tgz#0975197ad973251221c658a3cddc4b951a250c2d" @@ -4954,7 +5021,7 @@ lightningcss-win32-x64-msvc@1.32.0: resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz#141aa5605645064928902bb4af045fa7d9f4220a" integrity sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q== -lightningcss@^1.32.0: +lightningcss@1.32.0, lightningcss@^1.32.0: version "1.32.0" resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.32.0.tgz#b85aae96486dcb1bf49a7c8571221273f4f1e4a9" integrity sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ== @@ -5823,7 +5890,7 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.49, postcss@^8.5.13, postcss@^8.5.14, postcss@^8.5.6, postcss@^8.5.8: +postcss@^8, postcss@^8.4.49, postcss@^8.5.10, postcss@^8.5.13, postcss@^8.5.14, postcss@^8.5.6, postcss@^8.5.8: version "8.5.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c" integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg== @@ -6750,6 +6817,16 @@ tagged-tag@^1.0.0: resolved "https://registry.yarnpkg.com/tagged-tag/-/tagged-tag-1.0.0.tgz#a0b5917c2864cba54841495abfa3f6b13edcf4d6" integrity sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng== +tailwindcss@4.3.0, tailwindcss@^4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.3.0.tgz#0a874e044a859cf6de413f3a59e76a9bedf05264" + integrity sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q== + +tapable@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160" + integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A== + tar@^7.4.3, tar@^7.5.4: version "7.5.15" resolved "https://registry.yarnpkg.com/tar/-/tar-7.5.15.tgz#afe6d1316cddf614a566e3813e42fe01aed46fee" @@ -6835,12 +6912,12 @@ tr46@^6.0.0: dependencies: punycode "^2.3.1" -ts-api-utils@^2.1.0, ts-api-utils@^2.4.0, ts-api-utils@^2.5.0: +ts-api-utils@^2.1.0, ts-api-utils@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -6922,15 +6999,15 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript-eslint@8.56.1: - version "8.56.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.56.1.tgz#15a9fcc5d2150a0d981772bb36f127a816fe103f" - integrity sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ== +typescript-eslint@8.59.2: + version "8.59.2" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.59.2.tgz#e24b4f7232e20112e40572dba162a829a738ce98" + integrity sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ== dependencies: - "@typescript-eslint/eslint-plugin" "8.56.1" - "@typescript-eslint/parser" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/utils" "8.56.1" + "@typescript-eslint/eslint-plugin" "8.59.2" + "@typescript-eslint/parser" "8.59.2" + "@typescript-eslint/typescript-estree" "8.59.2" + "@typescript-eslint/utils" "8.59.2" typescript@~6.0.3: version "6.0.3"