From 9fe0168dc9fe914d2c68f0feb2514a6b5df43c83 Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Thu, 4 Jan 2024 09:58:09 -0500 Subject: [PATCH 1/3] Remove styles dir --- styles/.eslintrc.js | 34 - styles/.gitignore | 2 - styles/.prettierignore | 3 - styles/.prettierrc | 6 - styles/.zed/settings.json | 20 - styles/package-lock.json | 4372 ----------------- styles/package.json | 37 - styles/src/build_licenses.ts | 50 - styles/src/build_themes.ts | 45 - styles/src/build_tokens.ts | 88 - styles/src/build_types.ts | 62 - styles/src/common.ts | 34 - styles/src/component/button.ts | 127 - styles/src/component/icon_button.ts | 111 - styles/src/component/index.ts | 6 - styles/src/component/indicator.ts | 15 - styles/src/component/input.ts | 23 - styles/src/component/tab.ts | 73 - styles/src/component/tab_bar_button.ts | 58 - styles/src/component/text_button.ts | 129 - styles/src/element/index.ts | 6 - styles/src/element/interactive.test.ts | 56 - styles/src/element/interactive.ts | 97 - styles/src/element/margin.ts | 41 - styles/src/element/padding.ts | 41 - styles/src/element/toggle.test.ts | 52 - styles/src/element/toggle.ts | 47 - styles/src/style_tree/app.ts | 65 - styles/src/style_tree/assistant.ts | 398 -- styles/src/style_tree/chat_panel.ts | 160 - styles/src/style_tree/collab_modals.ts | 176 - styles/src/style_tree/collab_panel.ts | 427 -- styles/src/style_tree/command_palette.ts | 46 - styles/src/style_tree/component_test.ts | 27 - styles/src/style_tree/components.ts | 302 -- styles/src/style_tree/contact_finder.ts | 74 - styles/src/style_tree/contact_notification.ts | 55 - styles/src/style_tree/contacts_popover.ts | 6 - styles/src/style_tree/context_menu.ts | 60 - styles/src/style_tree/copilot.ts | 293 -- styles/src/style_tree/editor.ts | 327 -- styles/src/style_tree/feedback.ts | 59 - styles/src/style_tree/hover_popover.ts | 49 - .../style_tree/incoming_call_notification.ts | 55 - styles/src/style_tree/notification_panel.ts | 75 - styles/src/style_tree/picker.ts | 158 - styles/src/style_tree/project_diagnostics.ts | 14 - styles/src/style_tree/project_panel.ts | 201 - .../style_tree/project_shared_notification.ts | 55 - styles/src/style_tree/search.ts | 437 -- styles/src/style_tree/shared_screen.ts | 10 - .../style_tree/simple_message_notification.ts | 52 - styles/src/style_tree/status_bar.ts | 161 - styles/src/style_tree/tab_bar.ts | 167 - styles/src/style_tree/terminal.ts | 54 - styles/src/style_tree/titlebar.ts | 287 -- styles/src/style_tree/toolbar.ts | 58 - .../src/style_tree/toolbar_dropdown_menu.ts | 66 - styles/src/style_tree/tooltip.ts | 24 - styles/src/style_tree/update_notification.ts | 41 - styles/src/style_tree/welcome.ts | 157 - styles/src/style_tree/workspace.ts | 153 - styles/src/theme/color.ts | 5 - styles/src/theme/create_theme.ts | 329 -- styles/src/theme/index.ts | 26 - styles/src/theme/ramps.ts | 47 - styles/src/theme/syntax.ts | 332 -- styles/src/theme/theme_config.ts | 81 - styles/src/theme/tokens/layer.ts | 63 - styles/src/theme/tokens/players.ts | 37 - styles/src/theme/tokens/theme.ts | 97 - styles/src/theme/tokens/token.ts | 19 - styles/src/themes/andromeda/LICENSE | 21 - styles/src/themes/andromeda/andromeda.ts | 39 - styles/src/themes/atelier/LICENSE | 21 - .../src/themes/atelier/atelier-cave-dark.ts | 61 - .../src/themes/atelier/atelier-cave-light.ts | 63 - .../src/themes/atelier/atelier-dune-dark.ts | 61 - .../src/themes/atelier/atelier-dune-light.ts | 63 - .../themes/atelier/atelier-estuary-dark.ts | 61 - .../themes/atelier/atelier-estuary-light.ts | 63 - .../src/themes/atelier/atelier-forest-dark.ts | 61 - .../themes/atelier/atelier-forest-light.ts | 63 - .../src/themes/atelier/atelier-heath-dark.ts | 61 - .../src/themes/atelier/atelier-heath-light.ts | 63 - .../themes/atelier/atelier-lakeside-dark.ts | 61 - .../themes/atelier/atelier-lakeside-light.ts | 63 - .../themes/atelier/atelier-plateau-dark.ts | 61 - .../themes/atelier/atelier-plateau-light.ts | 63 - .../themes/atelier/atelier-savanna-dark.ts | 61 - .../themes/atelier/atelier-savanna-light.ts | 63 - .../themes/atelier/atelier-seaside-dark.ts | 61 - .../themes/atelier/atelier-seaside-light.ts | 63 - .../atelier/atelier-sulphurpool-dark.ts | 61 - .../atelier/atelier-sulphurpool-light.ts | 63 - styles/src/themes/atelier/common.ts | 56 - styles/src/themes/ayu/LICENSE | 21 - styles/src/themes/ayu/ayu-dark.ts | 16 - styles/src/themes/ayu/ayu-light.ts | 16 - styles/src/themes/ayu/ayu-mirage.ts | 16 - styles/src/themes/ayu/common.ts | 85 - styles/src/themes/gruvbox/LICENSE | 21 - styles/src/themes/gruvbox/gruvbox-common.ts | 264 - .../src/themes/gruvbox/gruvbox-dark-hard.ts | 1 - .../src/themes/gruvbox/gruvbox-dark-soft.ts | 1 - styles/src/themes/gruvbox/gruvbox-dark.ts | 1 - .../src/themes/gruvbox/gruvbox-light-hard.ts | 1 - .../src/themes/gruvbox/gruvbox-light-soft.ts | 1 - styles/src/themes/gruvbox/gruvbox-light.ts | 1 - styles/src/themes/index.ts | 82 - styles/src/themes/one/LICENSE | 21 - styles/src/themes/one/one-dark.ts | 80 - styles/src/themes/one/one-light.ts | 79 - styles/src/themes/rose-pine/LICENSE | 21 - styles/src/themes/rose-pine/common.ts | 75 - styles/src/themes/rose-pine/rose-pine-dawn.ts | 49 - styles/src/themes/rose-pine/rose-pine-moon.ts | 47 - styles/src/themes/rose-pine/rose-pine.ts | 44 - styles/src/themes/sandcastle/LICENSE | 21 - styles/src/themes/sandcastle/sandcastle.ts | 37 - styles/src/themes/solarized/LICENSE | 21 - styles/src/themes/solarized/solarized.ts | 52 - styles/src/themes/staff/.gitkeep | 0 styles/src/themes/summercamp/LICENSE | 21 - styles/src/themes/summercamp/summercamp.ts | 39 - styles/src/utils/slugify.ts | 10 - styles/tsconfig.json | 27 - styles/vitest.config.ts | 8 - 128 files changed, 13976 deletions(-) delete mode 100644 styles/.eslintrc.js delete mode 100644 styles/.gitignore delete mode 100644 styles/.prettierignore delete mode 100644 styles/.prettierrc delete mode 100644 styles/.zed/settings.json delete mode 100644 styles/package-lock.json delete mode 100644 styles/package.json delete mode 100644 styles/src/build_licenses.ts delete mode 100644 styles/src/build_themes.ts delete mode 100644 styles/src/build_tokens.ts delete mode 100644 styles/src/build_types.ts delete mode 100644 styles/src/common.ts delete mode 100644 styles/src/component/button.ts delete mode 100644 styles/src/component/icon_button.ts delete mode 100644 styles/src/component/index.ts delete mode 100644 styles/src/component/indicator.ts delete mode 100644 styles/src/component/input.ts delete mode 100644 styles/src/component/tab.ts delete mode 100644 styles/src/component/tab_bar_button.ts delete mode 100644 styles/src/component/text_button.ts delete mode 100644 styles/src/element/index.ts delete mode 100644 styles/src/element/interactive.test.ts delete mode 100644 styles/src/element/interactive.ts delete mode 100644 styles/src/element/margin.ts delete mode 100644 styles/src/element/padding.ts delete mode 100644 styles/src/element/toggle.test.ts delete mode 100644 styles/src/element/toggle.ts delete mode 100644 styles/src/style_tree/app.ts delete mode 100644 styles/src/style_tree/assistant.ts delete mode 100644 styles/src/style_tree/chat_panel.ts delete mode 100644 styles/src/style_tree/collab_modals.ts delete mode 100644 styles/src/style_tree/collab_panel.ts delete mode 100644 styles/src/style_tree/command_palette.ts delete mode 100644 styles/src/style_tree/component_test.ts delete mode 100644 styles/src/style_tree/components.ts delete mode 100644 styles/src/style_tree/contact_finder.ts delete mode 100644 styles/src/style_tree/contact_notification.ts delete mode 100644 styles/src/style_tree/contacts_popover.ts delete mode 100644 styles/src/style_tree/context_menu.ts delete mode 100644 styles/src/style_tree/copilot.ts delete mode 100644 styles/src/style_tree/editor.ts delete mode 100644 styles/src/style_tree/feedback.ts delete mode 100644 styles/src/style_tree/hover_popover.ts delete mode 100644 styles/src/style_tree/incoming_call_notification.ts delete mode 100644 styles/src/style_tree/notification_panel.ts delete mode 100644 styles/src/style_tree/picker.ts delete mode 100644 styles/src/style_tree/project_diagnostics.ts delete mode 100644 styles/src/style_tree/project_panel.ts delete mode 100644 styles/src/style_tree/project_shared_notification.ts delete mode 100644 styles/src/style_tree/search.ts delete mode 100644 styles/src/style_tree/shared_screen.ts delete mode 100644 styles/src/style_tree/simple_message_notification.ts delete mode 100644 styles/src/style_tree/status_bar.ts delete mode 100644 styles/src/style_tree/tab_bar.ts delete mode 100644 styles/src/style_tree/terminal.ts delete mode 100644 styles/src/style_tree/titlebar.ts delete mode 100644 styles/src/style_tree/toolbar.ts delete mode 100644 styles/src/style_tree/toolbar_dropdown_menu.ts delete mode 100644 styles/src/style_tree/tooltip.ts delete mode 100644 styles/src/style_tree/update_notification.ts delete mode 100644 styles/src/style_tree/welcome.ts delete mode 100644 styles/src/style_tree/workspace.ts delete mode 100644 styles/src/theme/color.ts delete mode 100644 styles/src/theme/create_theme.ts delete mode 100644 styles/src/theme/index.ts delete mode 100644 styles/src/theme/ramps.ts delete mode 100644 styles/src/theme/syntax.ts delete mode 100644 styles/src/theme/theme_config.ts delete mode 100644 styles/src/theme/tokens/layer.ts delete mode 100644 styles/src/theme/tokens/players.ts delete mode 100644 styles/src/theme/tokens/theme.ts delete mode 100644 styles/src/theme/tokens/token.ts delete mode 100644 styles/src/themes/andromeda/LICENSE delete mode 100644 styles/src/themes/andromeda/andromeda.ts delete mode 100644 styles/src/themes/atelier/LICENSE delete mode 100644 styles/src/themes/atelier/atelier-cave-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-cave-light.ts delete mode 100644 styles/src/themes/atelier/atelier-dune-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-dune-light.ts delete mode 100644 styles/src/themes/atelier/atelier-estuary-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-estuary-light.ts delete mode 100644 styles/src/themes/atelier/atelier-forest-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-forest-light.ts delete mode 100644 styles/src/themes/atelier/atelier-heath-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-heath-light.ts delete mode 100644 styles/src/themes/atelier/atelier-lakeside-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-lakeside-light.ts delete mode 100644 styles/src/themes/atelier/atelier-plateau-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-plateau-light.ts delete mode 100644 styles/src/themes/atelier/atelier-savanna-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-savanna-light.ts delete mode 100644 styles/src/themes/atelier/atelier-seaside-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-seaside-light.ts delete mode 100644 styles/src/themes/atelier/atelier-sulphurpool-dark.ts delete mode 100644 styles/src/themes/atelier/atelier-sulphurpool-light.ts delete mode 100644 styles/src/themes/atelier/common.ts delete mode 100644 styles/src/themes/ayu/LICENSE delete mode 100644 styles/src/themes/ayu/ayu-dark.ts delete mode 100644 styles/src/themes/ayu/ayu-light.ts delete mode 100644 styles/src/themes/ayu/ayu-mirage.ts delete mode 100644 styles/src/themes/ayu/common.ts delete mode 100644 styles/src/themes/gruvbox/LICENSE delete mode 100644 styles/src/themes/gruvbox/gruvbox-common.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-dark-hard.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-dark-soft.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-dark.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-light-hard.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-light-soft.ts delete mode 100644 styles/src/themes/gruvbox/gruvbox-light.ts delete mode 100644 styles/src/themes/index.ts delete mode 100644 styles/src/themes/one/LICENSE delete mode 100644 styles/src/themes/one/one-dark.ts delete mode 100644 styles/src/themes/one/one-light.ts delete mode 100644 styles/src/themes/rose-pine/LICENSE delete mode 100644 styles/src/themes/rose-pine/common.ts delete mode 100644 styles/src/themes/rose-pine/rose-pine-dawn.ts delete mode 100644 styles/src/themes/rose-pine/rose-pine-moon.ts delete mode 100644 styles/src/themes/rose-pine/rose-pine.ts delete mode 100644 styles/src/themes/sandcastle/LICENSE delete mode 100644 styles/src/themes/sandcastle/sandcastle.ts delete mode 100644 styles/src/themes/solarized/LICENSE delete mode 100644 styles/src/themes/solarized/solarized.ts delete mode 100644 styles/src/themes/staff/.gitkeep delete mode 100644 styles/src/themes/summercamp/LICENSE delete mode 100644 styles/src/themes/summercamp/summercamp.ts delete mode 100644 styles/src/utils/slugify.ts delete mode 100644 styles/tsconfig.json delete mode 100644 styles/vitest.config.ts diff --git a/styles/.eslintrc.js b/styles/.eslintrc.js deleted file mode 100644 index 82e9636189a40755fa3e9f083e4ebddd4845330a..0000000000000000000000000000000000000000 --- a/styles/.eslintrc.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - env: { - node: true, - }, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/typescript", - ], - parser: "@typescript-eslint/parser", - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - }, - plugins: ["@typescript-eslint", "import"], - globals: { - module: true, - }, - settings: { - "import/parsers": { - "@typescript-eslint/parser": [".ts"], - }, - "import/resolver": { - typescript: true, - node: true, - }, - "import/extensions": [".ts"], - }, - rules: { - "linebreak-style": ["error", "unix"], - "@typescript-eslint/no-explicit-any": "off", - semi: ["error", "never"], - }, -} diff --git a/styles/.gitignore b/styles/.gitignore deleted file mode 100644 index 25fbf5a1c42c82c0f45aa74514722b67863ba17d..0000000000000000000000000000000000000000 --- a/styles/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -coverage/ diff --git a/styles/.prettierignore b/styles/.prettierignore deleted file mode 100644 index 98aa9da7e02d2685d8a3b2033bde7db87432275b..0000000000000000000000000000000000000000 --- a/styles/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -package-lock.json -package.json -target diff --git a/styles/.prettierrc b/styles/.prettierrc deleted file mode 100644 index b83ccdda6a71debf8e212f52dd8cc288dd5b521b..0000000000000000000000000000000000000000 --- a/styles/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "semi": false, - "printWidth": 80, - "htmlWhitespaceSensitivity": "strict", - "tabWidth": 4 -} diff --git a/styles/.zed/settings.json b/styles/.zed/settings.json deleted file mode 100644 index 5c31fc5ac13790f1fc813811dce63904b9a79b6a..0000000000000000000000000000000000000000 --- a/styles/.zed/settings.json +++ /dev/null @@ -1,20 +0,0 @@ -// Folder-specific settings -// -// For a full list of overridable settings, and general information on folder-specific settings, -// see the documentation: https://docs.zed.dev/configuration/configuring-zed#folder-specific-settings -{ - "languages": { - "TypeScript": { - "tab_size": 4 - }, - "TSX": { - "tab_size": 4 - }, - "JavaScript": { - "tab_size": 4 - }, - "JSON": { - "tab_size": 4 - } - } -} diff --git a/styles/package-lock.json b/styles/package-lock.json deleted file mode 100644 index 6fc5f746e52e93f16263d37f6d1ef57cebbf822f..0000000000000000000000000000000000000000 --- a/styles/package-lock.json +++ /dev/null @@ -1,4372 +0,0 @@ -{ - "name": "styles", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "styles", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@tokens-studio/types": "^0.2.3", - "@types/chroma-js": "^2.4.0", - "@types/node": "^18.14.1", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", - "@vitest/coverage-v8": "^0.32.0", - "ayu": "^8.0.1", - "chroma-js": "^2.4.2", - "deepmerge": "^4.3.0", - "eslint": "^8.43.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", - "json-schema-to-typescript": "^13.0.2", - "toml": "^3.0.0", - "ts-deepmerge": "^6.0.3", - "ts-node": "^10.9.1", - "typescript": "^5.1.5", - "utility-types": "^3.10.0", - "vitest": "^0.32.0", - "zustand": "^4.3.8" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@bcherny/json-schema-ref-parser": { - "version": "10.0.5-fork", - "resolved": "https://registry.npmjs.org/@bcherny/json-schema-ref-parser/-/json-schema-ref-parser-10.0.5-fork.tgz", - "integrity": "sha512-E/jKbPoca1tfUPj3iSbitDZTGnq6FUFjkH6L8U2oDwSuwK1WhnnVtCG7oFOTg/DDnyoXbQYUiUiGOibHqaGVnw==", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.1.tgz", - "integrity": "sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==", - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.2.12", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pkgr/utils/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, - "node_modules/@tokens-studio/types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@tokens-studio/types/-/types-0.2.3.tgz", - "integrity": "sha512-2KN3V0JPf+Zh8aoVMwykJq29Lsi7vYgKGYBQ/zQ+FbDEmrH6T/Vwn8kG7cvbTmW1JAAvgxVxMIivgC9PmFelNA==" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - }, - "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==" - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chroma-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/chroma-js/-/chroma-js-2.4.0.tgz", - "integrity": "sha512-JklMxityrwjBTjGY2anH8JaTx3yjRU3/sEHSblLH1ba5lqcSh1LnImXJZO5peJfXyqKYWjHTGy4s5Wz++hARrw==" - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==" - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - }, - "node_modules/@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==" - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", - "dependencies": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@vitest/coverage-v8": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.32.0.tgz", - "integrity": "sha512-VXXlWq9X/NbsoP/l/CHLBjutsFFww1UY1qEhzGjn/DY7Tqe+z0Nu8XKc8im/XUAmjiWsh2XV7sy/F0IKAl4eaw==", - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@bcoe/v8-coverage": "^0.2.3", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.1.5", - "magic-string": "^0.30.0", - "picocolors": "^1.0.0", - "std-env": "^3.3.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": ">=0.32.0 <1" - } - }, - "node_modules/@vitest/expect": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.32.0.tgz", - "integrity": "sha512-VxVHhIxKw9Lux+O9bwLEEk2gzOUe93xuFHy9SzYWnnoYZFYg1NfBtnfnYWiJN7yooJ7KNElCK5YtA7DTZvtXtg==", - "dependencies": { - "@vitest/spy": "0.32.0", - "@vitest/utils": "0.32.0", - "chai": "^4.3.7" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.32.0.tgz", - "integrity": "sha512-QpCmRxftHkr72xt5A08xTEs9I4iWEXIOCHWhQQguWOKE4QH7DXSKZSOFibuwEIMAD7G0ERvtUyQn7iPWIqSwmw==", - "dependencies": { - "@vitest/utils": "0.32.0", - "concordance": "^5.0.4", - "p-limit": "^4.0.0", - "pathe": "^1.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.32.0.tgz", - "integrity": "sha512-yCKorPWjEnzpUxQpGlxulujTcSPgkblwGzAUEL+z01FTUg/YuCDZ8dxr9sHA08oO2EwxzHXNLjQKWJ2zc2a19Q==", - "dependencies": { - "magic-string": "^0.30.0", - "pathe": "^1.1.0", - "pretty-format": "^27.5.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.32.0.tgz", - "integrity": "sha512-MruAPlM0uyiq3d53BkwTeShXY0rYEfhNGQzVO5GHBmmX3clsxcWp79mMnkOVcV244sNTeDcHbcPFWIjOI4tZvw==", - "dependencies": { - "tinyspy": "^2.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.32.0.tgz", - "integrity": "sha512-53yXunzx47MmbuvcOPpLaVljHaeSu1G2dHdmy7+9ngMnQIkBQcvwOcoclWFnxDMxFbnq8exAfh3aKSZaK71J5A==", - "dependencies": { - "concordance": "^5.0.4", - "loupe": "^2.3.6", - "pretty-format": "^27.5.1" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "engines": { - "node": "*" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ayu": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ayu/-/ayu-8.0.1.tgz", - "integrity": "sha512-yuPZ2kZYQoYaPRQ/78F9rXDVx1rVGCJ1neBYithBoSprD6zPdIJdAKizUXG0jtTBu7nTFyAnVFFYuLnCS3cpDw==", - "dependencies": { - "@types/chroma-js": "^2.0.0", - "chroma-js": "^2.1.0", - "nonenumerable": "^1.1.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", - "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "engines": { - "node": "*" - } - }, - "node_modules/chroma-js": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==" - }, - "node_modules/cli-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", - "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.61", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concordance": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", - "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", - "dependencies": { - "date-time": "^3.1.0", - "esutils": "^2.0.3", - "fast-diff": "^1.2.0", - "js-string-escape": "^1.0.1", - "lodash": "^4.17.15", - "md5-hex": "^3.0.1", - "semver": "^7.3.2", - "well-known-symbols": "^2.0.0" - }, - "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/date-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", - "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", - "dependencies": { - "time-zone": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", - "@humanwhocodes/config-array": "^0.11.10", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz", - "integrity": "sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==", - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "get-tsconfig": "^4.5.0", - "globby": "^13.1.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.0.tgz", - "integrity": "sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.6.2.tgz", - "integrity": "sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", - "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", - "dependencies": { - "@types/glob": "^7.1.3" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/ahmadnassri" - }, - "peerDependencies": { - "glob": "^7.1.6" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-string-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", - "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-to-typescript": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-13.0.2.tgz", - "integrity": "sha512-TCaEVW4aI2FmMQe7f98mvr3/oiVmXEC1xZjkTZ9L/BSoTXFlC7p64mD5AD2d8XWycNBQZUnHwXL5iVXt1HWwNQ==", - "dependencies": { - "@bcherny/json-schema-ref-parser": "10.0.5-fork", - "@types/json-schema": "^7.0.11", - "@types/lodash": "^4.14.182", - "@types/prettier": "^2.6.1", - "cli-color": "^2.0.2", - "get-stdin": "^8.0.0", - "glob": "^7.1.6", - "glob-promise": "^4.2.2", - "is-glob": "^4.0.3", - "lodash": "^4.17.21", - "minimist": "^1.2.6", - "mkdirp": "^1.0.4", - "mz": "^2.7.0", - "prettier": "^2.6.2" - }, - "bin": { - "json2ts": "dist/src/cli.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/md5-hex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", - "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", - "dependencies": { - "blueimp-md5": "^2.10.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mlly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.3.0.tgz", - "integrity": "sha512-HT5mcgIQKkOrZecOjOX3DJorTikWXwsBfpcr/MGBkhfWcjiqvnaL/9ppxvIUXfjT6xt4DVIAsN9fMUz1ev4bIw==", - "dependencies": { - "acorn": "^8.8.2", - "pathe": "^1.1.0", - "pkg-types": "^1.0.3", - "ufo": "^1.1.2" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - }, - "node_modules/nonenumerable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nonenumerable/-/nonenumerable-1.1.1.tgz", - "integrity": "sha512-ptUD9w9D8WqW6fuJJkZNCImkf+0vdbgUTbRK3i7jsy3olqtH96hYE6Q/S3Tx9NWbcB/ocAjYshXCAUP0lZ9B4Q==" - }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==" - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "engines": { - "node": "*" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" - } - }, - "node_modules/postcss": { - "version": "8.4.24", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", - "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.1.tgz", - "integrity": "sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" - }, - "node_modules/std-env": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", - "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==" - }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dependencies": { - "acorn": "^8.8.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/synckit/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/time-zone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", - "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tinybench": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.0.tgz", - "integrity": "sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==" - }, - "node_modules/tinypool": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.5.0.tgz", - "integrity": "sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - }, - "node_modules/ts-deepmerge": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-6.0.3.tgz", - "integrity": "sha512-MBBJL0UK/mMnZRONMz4J1CRu5NsGtsh+gR1nkn8KLE9LXo/PCzeHhQduhNary8m5/m9ryOOyFwVKxq81cPlaow==", - "engines": { - "node": ">=14.13.1" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.5.tgz", - "integrity": "sha512-FOH+WN/DQjUvN6WgW+c4Ml3yi0PH+a/8q+kNIfRehv1wLhWONedw85iu+vQ39Wp49IzTJEsZ2lyLXpBF7mkF1g==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/ufo": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz", - "integrity": "sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==" - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", - "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.32.0.tgz", - "integrity": "sha512-220P/y8YacYAU+daOAqiGEFXx2A8AwjadDzQqos6wSukjvvTWNqleJSwoUn0ckyNdjHIKoxn93Nh1vWBqEKr3Q==", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.2.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.32.0.tgz", - "integrity": "sha512-SW83o629gCqnV3BqBnTxhB10DAwzwEx3z+rqYZESehUB+eWsJxwcBQx7CKy0otuGMJTYh7qCVuUX23HkftGl/Q==", - "dependencies": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.32.0", - "@vitest/runner": "0.32.0", - "@vitest/snapshot": "0.32.0", - "@vitest/spy": "0.32.0", - "@vitest/utils": "0.32.0", - "acorn": "^8.8.2", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "concordance": "^5.0.4", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "std-env": "^3.3.2", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.5.0", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.32.0", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } - } - }, - "node_modules/well-known-symbols": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", - "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zustand": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.8.tgz", - "integrity": "sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==", - "dependencies": { - "use-sync-external-store": "1.2.0" - }, - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "immer": ">=9.0", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "immer": { - "optional": true - }, - "react": { - "optional": true - } - } - } - } -} diff --git a/styles/package.json b/styles/package.json deleted file mode 100644 index 16e95d90d5bebb18e7cfffe88e8d0098b48eb00f..0000000000000000000000000000000000000000 --- a/styles/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "styles", - "version": "1.0.0", - "description": "Typescript app that builds Zed's themes", - "main": "./src/build_themes.ts", - "scripts": { - "build": "ts-node ./src/build_themes.ts", - "build-licenses": "ts-node ./src/build_licenses.ts", - "build-tokens": "ts-node ./src/build_tokens.ts", - "build-types": "ts-node ./src/build_types.ts", - "test": "vitest" - }, - "author": "Zed Industries (https://github.com/zed-industries/)", - "license": "ISC", - "dependencies": { - "@tokens-studio/types": "^0.2.3", - "@types/chroma-js": "^2.4.0", - "@types/node": "^18.14.1", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", - "@vitest/coverage-v8": "^0.32.0", - "ayu": "^8.0.1", - "chroma-js": "^2.4.2", - "deepmerge": "^4.3.0", - "eslint": "^8.43.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", - "json-schema-to-typescript": "^13.0.2", - "toml": "^3.0.0", - "ts-deepmerge": "^6.0.3", - "ts-node": "^10.9.1", - "typescript": "^5.1.5", - "utility-types": "^3.10.0", - "vitest": "^0.32.0", - "zustand": "^4.3.8" - } -} diff --git a/styles/src/build_licenses.ts b/styles/src/build_licenses.ts deleted file mode 100644 index 76c18dfee1fcb63e346d7bad8f093d57fae97dbe..0000000000000000000000000000000000000000 --- a/styles/src/build_licenses.ts +++ /dev/null @@ -1,50 +0,0 @@ -import * as fs from "fs" -import toml from "toml" -import { themes } from "./themes" -import { ThemeConfig } from "./common" - -const ACCEPTED_LICENSES_FILE = `${__dirname}/../../script/licenses/zed-licenses.toml` - -// Use the cargo-about configuration file as the source of truth for supported licenses. -function parse_accepted_toml(file: string): string[] { - const buffer = fs.readFileSync(file).toString() - - const obj = toml.parse(buffer) - - if (!Array.isArray(obj.accepted)) { - throw Error("Accepted license source is malformed") - } - - return obj.accepted -} - -function check_licenses(themes: ThemeConfig[]) { - for (const theme of themes) { - if (!theme.license_file) { - throw Error(`Theme ${theme.name} should have a LICENSE file`) - } - } -} - -function generate_license_file(themes: ThemeConfig[]) { - check_licenses(themes) - for (const theme of themes) { - const license_text = fs.readFileSync(theme.license_file).toString() - write_license(theme.name, license_text, theme.license_url) - } -} - -function write_license( - theme_name: string, - license_text: string, - license_url?: string -) { - process.stdout.write( - license_url - ? `## [${theme_name}](${license_url})\n\n${license_text}\n********************************************************************************\n\n` - : `## ${theme_name}\n\n${license_text}\n********************************************************************************\n\n` - ) -} - -const accepted_licenses = parse_accepted_toml(ACCEPTED_LICENSES_FILE) -generate_license_file(themes) diff --git a/styles/src/build_themes.ts b/styles/src/build_themes.ts deleted file mode 100644 index d8be6cfbdf862255704eca74a414d774fe79652b..0000000000000000000000000000000000000000 --- a/styles/src/build_themes.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as fs from "fs" -import { tmpdir } from "os" -import * as path from "path" -import app from "./style_tree/app" -import { Theme, create_theme } from "./theme/create_theme" -import { themes } from "./themes" -import { useThemeStore } from "./theme" - -const assets_directory = `${__dirname}/../../assets` -const temp_directory = fs.mkdtempSync(path.join(tmpdir(), "build-themes")) - -function clear_themes(theme_directory: string) { - if (!fs.existsSync(theme_directory)) { - fs.mkdirSync(theme_directory, { recursive: true }) - } else { - for (const file of fs.readdirSync(theme_directory)) { - if (file.endsWith(".json")) { - fs.unlinkSync(path.join(theme_directory, file)) - } - } - } -} - -const all_themes: Theme[] = themes.map((theme) => create_theme(theme)) - -function write_themes(themes: Theme[], output_directory: string) { - clear_themes(output_directory) - for (const theme of themes) { - const { setTheme } = useThemeStore.getState() - setTheme(theme) - - const style_tree = app() - // Nathan: New elements will read directly from the theme colors. - // Adding this during the transition. Afterwards, we can port all themes to Rust. - style_tree.base_theme = theme - const style_tree_json = JSON.stringify(style_tree, null, 2) - const temp_path = path.join(temp_directory, `${theme.name}.json`) - const out_path = path.join(output_directory, `${theme.name}.json`) - fs.writeFileSync(temp_path, style_tree_json) - fs.renameSync(temp_path, out_path) - console.log(`- ${out_path} created`) - } -} - -write_themes(all_themes, `${assets_directory}/themes`) diff --git a/styles/src/build_tokens.ts b/styles/src/build_tokens.ts deleted file mode 100644 index 3c52b6d989640a93025ac5eafe5a959b8bc83163..0000000000000000000000000000000000000000 --- a/styles/src/build_tokens.ts +++ /dev/null @@ -1,88 +0,0 @@ -import * as fs from "fs" -import * as path from "path" -import { Theme, create_theme, useThemeStore } from "./common" -import { themes } from "./themes" -import { slugify } from "./utils/slugify" -import { theme_tokens } from "./theme/tokens/theme" - -const TOKENS_DIRECTORY = path.join(__dirname, "..", "target", "tokens") -const TOKENS_FILE = path.join(TOKENS_DIRECTORY, "$themes.json") -const METADATA_FILE = path.join(TOKENS_DIRECTORY, "$metadata.json") - -function clear_tokens(tokens_directory: string) { - if (!fs.existsSync(tokens_directory)) { - fs.mkdirSync(tokens_directory, { recursive: true }) - } else { - for (const file of fs.readdirSync(tokens_directory)) { - if (file.endsWith(".json")) { - fs.unlinkSync(path.join(tokens_directory, file)) - } - } - } -} - -type TokenSet = { - id: string - name: string - selected_token_sets: { [key: string]: "enabled" } -} - -function build_token_set_order(theme: Theme[]): { - token_set_order: string[] -} { - const token_set_order: string[] = theme.map((scheme) => - scheme.name.toLowerCase().replace(/\s+/g, "_") - ) - return { token_set_order } -} - -function build_themes_index(theme: Theme[]): TokenSet[] { - const themes_index: TokenSet[] = theme.map((scheme, index) => { - const id = `${scheme.is_light ? "light" : "dark"}_${scheme.name - .toLowerCase() - .replace(/\s+/g, "_")}_${index}` - const selected_token_sets: { [key: string]: "enabled" } = {} - const token_set = scheme.name.toLowerCase().replace(/\s+/g, "_") - selected_token_sets[token_set] = "enabled" - - return { - id, - name: `${scheme.name} - ${scheme.is_light ? "Light" : "Dark"}`, - selected_token_sets, - } - }) - - return themes_index -} - -function write_tokens(themes: Theme[], tokens_directory: string) { - clear_tokens(tokens_directory) - - for (const theme of themes) { - const { setTheme } = useThemeStore.getState() - setTheme(theme) - - const file_name = slugify(theme.name) + ".json" - const tokens = theme_tokens() - const tokens_json = JSON.stringify(tokens, null, 2) - const out_path = path.join(tokens_directory, file_name) - fs.writeFileSync(out_path, tokens_json, { mode: 0o644 }) - console.log(`- ${out_path} created`) - } - - const theme_index_data = build_themes_index(themes) - - const themes_json = JSON.stringify(theme_index_data, null, 2) - fs.writeFileSync(TOKENS_FILE, themes_json, { mode: 0o644 }) - console.log(`- ${TOKENS_FILE} created`) - - const token_set_order_data = build_token_set_order(themes) - - const metadata_json = JSON.stringify(token_set_order_data, null, 2) - fs.writeFileSync(METADATA_FILE, metadata_json, { mode: 0o644 }) - console.log(`- ${METADATA_FILE} created`) -} - -const all_themes: Theme[] = themes.map((theme) => create_theme(theme)) - -write_tokens(all_themes, TOKENS_DIRECTORY) diff --git a/styles/src/build_types.ts b/styles/src/build_types.ts deleted file mode 100644 index 5d7aa6e0ad259e62b60494f55436c70388017e14..0000000000000000000000000000000000000000 --- a/styles/src/build_types.ts +++ /dev/null @@ -1,62 +0,0 @@ -import * as fs from "fs/promises" -import * as fsSync from "fs" -import * as path from "path" -import { compile } from "json-schema-to-typescript" - -const BANNER = `/* -* This file is autogenerated -*/\n\n` -const dirname = __dirname - -async function main() { - const schemas_path = path.join(dirname, "../../", "crates/theme/schemas") - const schema_files = (await fs.readdir(schemas_path)).filter((x) => - x.endsWith(".json") - ) - - const compiled_types = new Set() - - for (const filename of schema_files) { - const file_path = path.join(schemas_path, filename) - const file_contents = await fs.readFile(file_path) - const schema = JSON.parse(file_contents.toString()) - const compiled = await compile(schema, schema.title, { - bannerComment: "", - }) - const each_type = compiled.split("export") - for (const type of each_type) { - if (!type) { - continue - } - compiled_types.add("export " + type.trim()) - } - } - - const output = BANNER + Array.from(compiled_types).join("\n\n") - const output_path = path.join(dirname, "../../styles/src/types/zed.ts") - - try { - const existing = await fs.readFile(output_path) - if (existing.toString() == output) { - // Skip writing if it hasn't changed - console.log("Schemas are up to date") - return - } - } catch (e) { - if (e.code !== "ENOENT") { - throw e - } - } - - const types_dic = path.dirname(output_path) - if (!fsSync.existsSync(types_dic)) { - await fs.mkdir(types_dic) - } - await fs.writeFile(output_path, output) - console.log(`Wrote Typescript types to ${output_path}`) -} - -main().catch((e) => { - console.error(e) - process.exit(1) -}) diff --git a/styles/src/common.ts b/styles/src/common.ts deleted file mode 100644 index e4747093c8780ba0e449700128bcaafd697ebe3f..0000000000000000000000000000000000000000 --- a/styles/src/common.ts +++ /dev/null @@ -1,34 +0,0 @@ -import chroma from "chroma-js" -export * from "./theme" -export * from "./theme/theme_config" -export { chroma } - -export const font_families = { - ui_sans: "IBM Plex Sans", - sans: "Zed Sans", - mono: "Zed Mono", -} - -export const font_sizes = { - "2xs": 10, - xs: 12, - sm: 14, - md: 16, - lg: 18, -} - -export type FontWeight = "normal" | "bold" - -export const font_weights: { [key: string]: FontWeight } = { - normal: "normal", - bold: "bold", -} - -export const sizes = { - px: 1, - xs: 2, - sm: 4, - md: 6, - lg: 8, - xl: 12, -} diff --git a/styles/src/component/button.ts b/styles/src/component/button.ts deleted file mode 100644 index e0e831b0826d4b3f44c006a746424eb72adae7e8..0000000000000000000000000000000000000000 --- a/styles/src/component/button.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { font_sizes, useTheme } from "../common" -import { Layer, Theme } from "../theme" -import { TextStyle, background } from "../style_tree/components" - -// eslint-disable-next-line @typescript-eslint/no-namespace -export namespace Button { - export type Options = { - layer: Layer - background: keyof Theme["lowest"] - color: keyof Theme["lowest"] - variant: Button.Variant - size: Button.Size - shape: Button.Shape - margin: { - top?: number - bottom?: number - left?: number - right?: number - } - states: { - enabled?: boolean - hovered?: boolean - pressed?: boolean - focused?: boolean - disabled?: boolean - } - } - - export type ToggleableOptions = Options & { - active_background: keyof Theme["lowest"] - active_color: keyof Theme["lowest"] - } - - /** Padding added to each side of a Shape.Rectangle button */ - export const RECTANGLE_PADDING = 2 - export const FONT_SIZE = font_sizes.sm - export const ICON_SIZE = 14 - export const CORNER_RADIUS = 6 - - export const variant = { - Default: "filled", - Outline: "outline", - Ghost: "ghost", - } as const - - export type Variant = (typeof variant)[keyof typeof variant] - - export const shape = { - Rectangle: "rectangle", - Square: "square", - } as const - - export type Shape = (typeof shape)[keyof typeof shape] - - export const size = { - Small: "sm", - Medium: "md", - } as const - - export type Size = (typeof size)[keyof typeof size] - - export type BaseStyle = { - corder_radius: number - background: string | null - padding: { - top: number - bottom: number - left: number - right: number - } - margin: Button.Options["margin"] - button_height: number - } - - export type LabelButtonStyle = BaseStyle & TextStyle - // export type IconButtonStyle = ButtonStyle - - export const button_base = ( - options: Partial = { - variant: Button.variant.Default, - shape: Button.shape.Rectangle, - states: { - hovered: true, - pressed: true, - }, - } - ): BaseStyle => { - const theme = useTheme() - - const layer = options.layer ?? theme.middle - const color = options.color ?? "base" - const background_color = - options.variant === Button.variant.Ghost - ? null - : background(layer, options.background ?? color) - - const m = { - top: options.margin?.top ?? 0, - bottom: options.margin?.bottom ?? 0, - left: options.margin?.left ?? 0, - right: options.margin?.right ?? 0, - } - const size = options.size || Button.size.Medium - const padding = 2 - - const base: BaseStyle = { - background: background_color, - corder_radius: Button.CORNER_RADIUS, - padding: { - top: padding, - bottom: padding, - left: - options.shape === Button.shape.Rectangle - ? padding + Button.RECTANGLE_PADDING - : padding, - right: - options.shape === Button.shape.Rectangle - ? padding + Button.RECTANGLE_PADDING - : padding, - }, - margin: m, - button_height: 16, - } - - return base - } -} diff --git a/styles/src/component/icon_button.ts b/styles/src/component/icon_button.ts deleted file mode 100644 index 5b7c61b17c040c9dade28e1f4516e9ea9c3226ae..0000000000000000000000000000000000000000 --- a/styles/src/component/icon_button.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { interactive, toggleable } from "../element" -import { background, foreground } from "../style_tree/components" -import { useTheme, Theme, Layer } from "../theme" -import { Button } from "./button" - -export type Margin = { - top: number - bottom: number - left: number - right: number -} - -interface IconButtonOptions { - layer?: Theme["lowest"] | Theme["middle"] | Theme["highest"] - color?: keyof Theme["lowest"] - background_color?: keyof Theme["lowest"] - margin?: Partial - variant?: Button.Variant - size?: Button.Size -} - -type ToggleableIconButtonOptions = IconButtonOptions & { - active_color?: keyof Theme["lowest"] - active_background_color?: keyof Theme["lowest"] - active_layer?: Layer - active_variant?: Button.Variant -} - -export function icon_button( - { color, background_color, margin, layer, variant, size }: IconButtonOptions = { - variant: Button.variant.Default, - size: Button.size.Medium, - } -) { - const theme = useTheme() - - if (!color) color = "base" - - const default_background = - variant === Button.variant.Ghost - ? null - : background(layer ?? theme.lowest, background_color ?? color) - - const m = { - top: margin?.top ?? 0, - bottom: margin?.bottom ?? 0, - left: margin?.left ?? 0, - right: margin?.right ?? 0, - } - - const padding = { - top: size === Button.size.Small ? 2 : 2, - bottom: size === Button.size.Small ? 2 : 2, - left: size === Button.size.Small ? 2 : 4, - right: size === Button.size.Small ? 2 : 4, - } - - return interactive({ - base: { - corner_radius: 6, - padding: padding, - margin: m, - icon_width: 14, - icon_height: 14, - button_width: size === Button.size.Small ? 16 : 20, - button_height: 14, - }, - state: { - default: { - background: default_background, - color: foreground(layer ?? theme.lowest, color), - }, - hovered: { - background: background(layer ?? theme.lowest, background_color ?? color, "hovered"), - color: foreground(layer ?? theme.lowest, color, "hovered"), - }, - clicked: { - background: background(layer ?? theme.lowest, background_color ?? color, "pressed"), - color: foreground(layer ?? theme.lowest, color, "pressed"), - }, - }, - }) -} - -export function toggleable_icon_button({ - color, - background_color, - active_color, - active_background_color, - active_variant, - margin, - variant, - size, - active_layer, -}: ToggleableIconButtonOptions) { - if (!color) color = "base" - - return toggleable({ - state: { - inactive: icon_button({ color, background_color, margin, variant, size }), - active: icon_button({ - color: active_color ? active_color : color, - background_color: active_background_color ? active_background_color : background_color, - margin, - layer: active_layer, - variant: active_variant || variant, - size, - }), - }, - }) -} diff --git a/styles/src/component/index.ts b/styles/src/component/index.ts deleted file mode 100644 index f2cbc7b26a01f54ca2eef095ef27b290c8a1ffa6..0000000000000000000000000000000000000000 --- a/styles/src/component/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./icon_button" -export * from "./indicator" -export * from "./input" -export * from "./tab" -export * from "./tab_bar_button" -export * from "./text_button" diff --git a/styles/src/component/indicator.ts b/styles/src/component/indicator.ts deleted file mode 100644 index b3d2105f6ae0aa4b0f0d52075b6c2dbcf298576b..0000000000000000000000000000000000000000 --- a/styles/src/component/indicator.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { foreground } from "../style_tree/components" -import { Layer, StyleSets } from "../theme" - -export const indicator = ({ - layer, - color, -}: { - layer: Layer - color: StyleSets -}) => ({ - corner_radius: 4, - padding: 4, - margin: { top: 12, left: 12 }, - background: foreground(layer, color), -}) diff --git a/styles/src/component/input.ts b/styles/src/component/input.ts deleted file mode 100644 index 5921210f88795ea7945a330de5a0818d05de8275..0000000000000000000000000000000000000000 --- a/styles/src/component/input.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useTheme } from "../common" -import { background, border, text } from "../style_tree/components" - -export const input = () => { - const theme = useTheme() - - return { - background: background(theme.highest), - corner_radius: 8, - min_width: 200, - max_width: 500, - placeholder_text: text(theme.highest, "mono", "disabled"), - selection: theme.players[0], - text: text(theme.highest, "mono", "default"), - border: border(theme.highest), - padding: { - top: 3, - bottom: 3, - left: 12, - right: 8, - }, - } -} diff --git a/styles/src/component/tab.ts b/styles/src/component/tab.ts deleted file mode 100644 index 6f73b6f3fbf8e45fa834e76e101002cb55512cf6..0000000000000000000000000000000000000000 --- a/styles/src/component/tab.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Layer } from "../common" -import { interactive, toggleable } from "../element" -import { Border, text } from "../style_tree/components" - -type TabProps = { - layer: Layer -} - -export const tab = ({ layer }: TabProps) => { - const active_color = text(layer, "sans", "base").color - const inactive_border: Border = { - color: "#FFFFFF00", - width: 1, - bottom: true, - left: false, - right: false, - top: false, - } - const active_border: Border = { - ...inactive_border, - color: active_color, - } - - const base = { - ...text(layer, "sans", "variant"), - padding: { - top: 8, - left: 8, - right: 8, - bottom: 6, - }, - border: inactive_border, - } - - const i = interactive({ - state: { - default: { - ...base, - }, - hovered: { - ...base, - ...text(layer, "sans", "base", "hovered"), - }, - clicked: { - ...base, - ...text(layer, "sans", "base", "pressed"), - }, - }, - }) - - return toggleable({ - base: i, - state: { - active: { - default: { - ...i, - ...text(layer, "sans", "base"), - border: active_border, - }, - hovered: { - ...i, - ...text(layer, "sans", "base", "hovered"), - border: active_border, - }, - clicked: { - ...i, - ...text(layer, "sans", "base", "pressed"), - border: active_border, - }, - }, - }, - }) -} diff --git a/styles/src/component/tab_bar_button.ts b/styles/src/component/tab_bar_button.ts deleted file mode 100644 index 9e7f9acfc314be75850128690d8d066dde520182..0000000000000000000000000000000000000000 --- a/styles/src/component/tab_bar_button.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Theme, StyleSets } from "../common" -import { interactive } from "../element" -import { InteractiveState } from "../element/interactive" -import { background, foreground } from "../style_tree/components" - -interface TabBarButtonOptions { - icon: string - color?: StyleSets -} - -type TabBarButtonProps = TabBarButtonOptions & { - state?: Partial>> -} - -export function tab_bar_button( - theme: Theme, - { icon, color = "base" }: TabBarButtonProps -) { - const button_spacing = 8 - - return interactive({ - base: { - icon: { - color: foreground(theme.middle, color), - asset: icon, - dimensions: { - width: 15, - height: 15, - }, - }, - container: { - corner_radius: 4, - padding: { - top: 4, - bottom: 4, - left: 4, - right: 4, - }, - margin: { - left: button_spacing / 2, - right: button_spacing / 2, - }, - }, - }, - state: { - hovered: { - container: { - background: background(theme.middle, color, "hovered"), - }, - }, - clicked: { - container: { - background: background(theme.middle, color, "pressed"), - }, - }, - }, - }) -} diff --git a/styles/src/component/text_button.ts b/styles/src/component/text_button.ts deleted file mode 100644 index 0e293e403ae4766bc188d78a91782521c3f866ac..0000000000000000000000000000000000000000 --- a/styles/src/component/text_button.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { interactive, toggleable } from "../element" -import { - Border, - TextProperties, - background, - foreground, - text, -} from "../style_tree/components" -import { useTheme, Theme } from "../theme" -import { Button } from "./button" -import { Margin } from "./icon_button" - -interface TextButtonOptions { - layer?: Theme["lowest"] | Theme["middle"] | Theme["highest"] - variant?: Button.Variant - color?: keyof Theme["lowest"] - margin?: Partial - disabled?: boolean - text_properties?: TextProperties - border?: Border -} - -type ToggleableTextButtonOptions = TextButtonOptions & { - active_color?: keyof Theme["lowest"] -} - -export function text_button({ - variant = Button.variant.Default, - color, - layer, - margin, - disabled, - text_properties, - border, -}: TextButtonOptions = {}) { - const theme = useTheme() - if (!color) color = "base" - - const background_color = - variant === Button.variant.Ghost - ? null - : background(layer ?? theme.lowest, color) - - const text_options: TextProperties = { - size: "xs", - weight: "normal", - ...text_properties, - } - - const m = { - top: margin?.top ?? 0, - bottom: margin?.bottom ?? 0, - left: margin?.left ?? 0, - right: margin?.right ?? 0, - } - - return interactive({ - base: { - corner_radius: 6, - padding: { - top: 1, - bottom: 1, - left: 6, - right: 6, - }, - margin: m, - button_height: 22, - ...text(layer ?? theme.lowest, "sans", color, text_options), - }, - state: { - default: { - border, - background: background_color, - color: disabled - ? foreground(layer ?? theme.lowest, "disabled") - : foreground(layer ?? theme.lowest, color), - }, - hovered: disabled - ? {} - : { - border, - background: background( - layer ?? theme.lowest, - color, - "hovered" - ), - color: foreground( - layer ?? theme.lowest, - color, - "hovered" - ), - }, - clicked: disabled - ? {} - : { - border, - background: background( - layer ?? theme.lowest, - color, - "pressed" - ), - color: foreground( - layer ?? theme.lowest, - color, - "pressed" - ), - }, - }, - }) -} - -export function toggleable_text_button( - theme: Theme, - { variant, color, active_color, margin }: ToggleableTextButtonOptions = {} -) { - if (!color) color = "base" - - return toggleable({ - state: { - inactive: text_button({ variant, color, margin }), - active: text_button({ - variant, - color: active_color ? active_color : color, - margin, - layer: theme.middle, - }), - }, - }) -} diff --git a/styles/src/element/index.ts b/styles/src/element/index.ts deleted file mode 100644 index 0586399fb1c4a0ba3aba32816620c56bdbfbba7b..0000000000000000000000000000000000000000 --- a/styles/src/element/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { interactive, Interactive } from "./interactive" -import { toggleable, Toggleable } from "./toggle" - -export * from "./padding" -export * from "./margin" -export { interactive, Interactive, toggleable, Toggleable } diff --git a/styles/src/element/interactive.test.ts b/styles/src/element/interactive.test.ts deleted file mode 100644 index 0e0013fc071ae36e8c80513b56b9cb7d12764ee8..0000000000000000000000000000000000000000 --- a/styles/src/element/interactive.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - NOT_ENOUGH_STATES_ERROR, - NO_DEFAULT_OR_BASE_ERROR, - interactive, -} from "./interactive" -import { describe, it, expect } from "vitest" - -describe("interactive", () => { - it("creates an Interactive with base properties and states", () => { - const result = interactive({ - base: { font_size: 10, color: "#FFFFFF" }, - state: { - hovered: { color: "#EEEEEE" }, - clicked: { color: "#CCCCCC" }, - }, - }) - - expect(result).toEqual({ - default: { color: "#FFFFFF", font_size: 10 }, - hovered: { color: "#EEEEEE", font_size: 10 }, - clicked: { color: "#CCCCCC", font_size: 10 }, - }) - }) - - it("creates an Interactive with no base properties", () => { - const result = interactive({ - state: { - default: { color: "#FFFFFF", font_size: 10 }, - hovered: { color: "#EEEEEE" }, - clicked: { color: "#CCCCCC" }, - }, - }) - - expect(result).toEqual({ - default: { color: "#FFFFFF", font_size: 10 }, - hovered: { color: "#EEEEEE", font_size: 10 }, - clicked: { color: "#CCCCCC", font_size: 10 }, - }) - }) - - it("throws error when both default and base are missing", () => { - const state = { - hovered: { color: "blue" }, - } - - expect(() => interactive({ state })).toThrow(NO_DEFAULT_OR_BASE_ERROR) - }) - - it("throws error when no other state besides default is present", () => { - const state = { - default: { font_size: 10 }, - } - - expect(() => interactive({ state })).toThrow(NOT_ENOUGH_STATES_ERROR) - }) -}) diff --git a/styles/src/element/interactive.ts b/styles/src/element/interactive.ts deleted file mode 100644 index 59ccff40f7c71d0997eb4c112c89d1e316096f32..0000000000000000000000000000000000000000 --- a/styles/src/element/interactive.ts +++ /dev/null @@ -1,97 +0,0 @@ -import merge from "ts-deepmerge" -import { DeepPartial } from "utility-types" - -export type InteractiveState = - | "default" - | "hovered" - | "clicked" - | "selected" - | "disabled" - -export type Interactive = { - default: T - hovered?: T - clicked?: T - selected?: T - disabled?: T -} - -export const NO_DEFAULT_OR_BASE_ERROR = - "An interactive object must have a default state, or a base property." -export const NOT_ENOUGH_STATES_ERROR = - "An interactive object must have a default and at least one other state." - -interface InteractiveProps { - base?: T - state: Partial>> -} - -/** - * Helper function for creating Interactive objects that works with Toggle-like behavior. - * It takes a default object to be used as the value for `default` field and fills out other fields - * with fields from either `base` or from the `state` object which contains values for specific states. - * Notably, it does not touch `hover`, `clicked`, `selected` and `disabled` states if there are no modifications for them. - * - * @param defaultObj Object to be used as the value for the `default` field. - * @param base Optional object containing base fields to be included in the resulting object. - * @param state Object containing optional modified fields to be included in the resulting object for each state. - * @returns Interactive object with fields from `base` and `state`. - */ -export function interactive({ - base, - state, -}: InteractiveProps): Interactive { - if (!base && !state.default) throw new Error(NO_DEFAULT_OR_BASE_ERROR) - - let default_state: T - - if (state.default && base) { - default_state = merge(base, state.default) as T - } else { - default_state = base ? base : (state.default as T) - } - - const interactive_obj: Interactive = { - default: default_state, - } - - let state_count = 0 - - if (state.hovered !== undefined) { - interactive_obj.hovered = merge( - interactive_obj.default, - state.hovered - ) as T - state_count++ - } - - if (state.clicked !== undefined) { - interactive_obj.clicked = merge( - interactive_obj.default, - state.clicked - ) as T - state_count++ - } - - if (state.selected !== undefined) { - interactive_obj.selected = merge( - interactive_obj.default, - state.selected - ) as T - state_count++ - } - - if (state.disabled !== undefined) { - interactive_obj.disabled = merge( - interactive_obj.default, - state.disabled - ) as T - state_count++ - } - - if (state_count < 1) { - throw new Error(NOT_ENOUGH_STATES_ERROR) - } - - return interactive_obj -} diff --git a/styles/src/element/margin.ts b/styles/src/element/margin.ts deleted file mode 100644 index 5bbdd646a8ef0c932c345bac9c8420dec6a6f9ef..0000000000000000000000000000000000000000 --- a/styles/src/element/margin.ts +++ /dev/null @@ -1,41 +0,0 @@ -type MarginOptions = { - all?: number - left?: number - right?: number - top?: number - bottom?: number -} - -export type MarginStyle = { - top: number - bottom: number - left: number - right: number -} - -export const margin_style = (options: MarginOptions): MarginStyle => { - const { all, top, bottom, left, right } = options - - if (all !== undefined) - return { - top: all, - bottom: all, - left: all, - right: all, - } - - if ( - top === undefined && - bottom === undefined && - left === undefined && - right === undefined - ) - throw new Error("Margin must have at least one value") - - return { - top: top || 0, - bottom: bottom || 0, - left: left || 0, - right: right || 0, - } -} diff --git a/styles/src/element/padding.ts b/styles/src/element/padding.ts deleted file mode 100644 index b94e2639222de7e11cb127706807afc36d275369..0000000000000000000000000000000000000000 --- a/styles/src/element/padding.ts +++ /dev/null @@ -1,41 +0,0 @@ -type PaddingOptions = { - all?: number - left?: number - right?: number - top?: number - bottom?: number -} - -export type PaddingStyle = { - top: number - bottom: number - left: number - right: number -} - -export const padding_style = (options: PaddingOptions): PaddingStyle => { - const { all, top, bottom, left, right } = options - - if (all !== undefined) - return { - top: all, - bottom: all, - left: all, - right: all, - } - - if ( - top === undefined && - bottom === undefined && - left === undefined && - right === undefined - ) - throw new Error("Padding must have at least one value") - - return { - top: top || 0, - bottom: bottom || 0, - left: left || 0, - right: right || 0, - } -} diff --git a/styles/src/element/toggle.test.ts b/styles/src/element/toggle.test.ts deleted file mode 100644 index 8018ce10393fb6145f7214e0deb9620f2b627181..0000000000000000000000000000000000000000 --- a/styles/src/element/toggle.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - NO_ACTIVE_ERROR, - NO_INACTIVE_OR_BASE_ERROR, - toggleable, -} from "./toggle" -import { describe, it, expect } from "vitest" - -describe("toggleable", () => { - it("creates a Toggleable with base properties and states", () => { - const result = toggleable({ - base: { background: "#000000", color: "#CCCCCC" }, - state: { - active: { color: "#FFFFFF" }, - }, - }) - - expect(result).toEqual({ - inactive: { background: "#000000", color: "#CCCCCC" }, - active: { background: "#000000", color: "#FFFFFF" }, - }) - }) - - it("creates a Toggleable with no base properties", () => { - const result = toggleable({ - state: { - inactive: { background: "#000000", color: "#CCCCCC" }, - active: { background: "#000000", color: "#FFFFFF" }, - }, - }) - - expect(result).toEqual({ - inactive: { background: "#000000", color: "#CCCCCC" }, - active: { background: "#000000", color: "#FFFFFF" }, - }) - }) - - it("throws error when both inactive and base are missing", () => { - const state = { - active: { background: "#000000", color: "#FFFFFF" }, - } - - expect(() => toggleable({ state })).toThrow(NO_INACTIVE_OR_BASE_ERROR) - }) - - it("throws error when no active state is present", () => { - const state = { - inactive: { background: "#000000", color: "#CCCCCC" }, - } - - expect(() => toggleable({ state })).toThrow(NO_ACTIVE_ERROR) - }) -}) diff --git a/styles/src/element/toggle.ts b/styles/src/element/toggle.ts deleted file mode 100644 index 25217444dab599bba46e4c7a46a2f03b4bf83a99..0000000000000000000000000000000000000000 --- a/styles/src/element/toggle.ts +++ /dev/null @@ -1,47 +0,0 @@ -import merge from "ts-deepmerge" -import { DeepPartial } from "utility-types" - -type ToggleState = "inactive" | "active" - -export type Toggleable = Record - -export const NO_INACTIVE_OR_BASE_ERROR = - "A toggleable object must have an inactive state, or a base property." -export const NO_ACTIVE_ERROR = "A toggleable object must have an active state." - -interface ToggleableProps { - base?: T - state: Partial>> -} - -/** - * Helper function for creating Toggleable objects. - * @template T The type of the object being toggled. - * @param props Object containing the base (inactive) state and state modifications to create the active state. - * @returns A Toggleable object containing both the inactive and active states. - * @example - * ``` - * toggleable({ - * base: { background: "#000000", text: "#CCCCCC" }, - * state: { active: { text: "#CCCCCC" } }, - * }) - * ``` - */ -export function toggleable( - props: ToggleableProps -): Toggleable { - const { base, state } = props - - if (!base && !state.inactive) throw new Error(NO_INACTIVE_OR_BASE_ERROR) - if (!state.active) throw new Error(NO_ACTIVE_ERROR) - - const inactive_state = base - ? ((state.inactive ? merge(base, state.inactive) : base) as T) - : (state.inactive as T) - - const toggle_obj: Toggleable = { - inactive: inactive_state, - active: merge(base ?? {}, state.active) as T, - } - return toggle_obj -} diff --git a/styles/src/style_tree/app.ts b/styles/src/style_tree/app.ts deleted file mode 100644 index 61125a15c0355e5f978f256b21f0e61996940dce..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/app.ts +++ /dev/null @@ -1,65 +0,0 @@ -import command_palette from "./command_palette" -import project_panel from "./project_panel" -import search from "./search" -import picker from "./picker" -import workspace from "./workspace" -import context_menu from "./context_menu" -import shared_screen from "./shared_screen" -import project_diagnostics from "./project_diagnostics" -import contact_notification from "./contact_notification" -import update_notification from "./update_notification" -import simple_message_notification from "./simple_message_notification" -import project_shared_notification from "./project_shared_notification" -import tooltip from "./tooltip" -import terminal from "./terminal" -import chat_panel from "./chat_panel" -import notification_panel from "./notification_panel" -import collab_panel from "./collab_panel" -import toolbar_dropdown_menu from "./toolbar_dropdown_menu" -import incoming_call_notification from "./incoming_call_notification" -import welcome from "./welcome" -import copilot from "./copilot" -import assistant from "./assistant" -import { titlebar } from "./titlebar" -import editor from "./editor" -import feedback from "./feedback" -import component_test from "./component_test" -import { useTheme } from "../common" - -export default function app(): any { - const theme = useTheme() - - return { - meta: { - name: theme.name, - is_light: theme.is_light, - }, - command_palette: command_palette(), - contact_notification: contact_notification(), - project_shared_notification: project_shared_notification(), - incoming_call_notification: incoming_call_notification(), - picker: picker(), - workspace: workspace(), - titlebar: titlebar(), - copilot: copilot(), - welcome: welcome(), - context_menu: context_menu(), - editor: editor(), - project_diagnostics: project_diagnostics(), - project_panel: project_panel(), - collab_panel: collab_panel(), - toolbar_dropdown_menu: toolbar_dropdown_menu(), - search: search(), - shared_screen: shared_screen(), - update_notification: update_notification(), - simple_message_notification: simple_message_notification(), - tooltip: tooltip(), - terminal: terminal(), - assistant: assistant(), - feedback: feedback(), - chat_panel: chat_panel(), - notification_panel: notification_panel(), - component_test: component_test(), - base_theme: theme, - } -} diff --git a/styles/src/style_tree/assistant.ts b/styles/src/style_tree/assistant.ts deleted file mode 100644 index d261a23bcd96e14df673d11f98944d6061460d2e..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/assistant.ts +++ /dev/null @@ -1,398 +0,0 @@ -import { text, border, background, foreground, TextStyle } from "./components" -import { Interactive, interactive, toggleable } from "../element" -import { tab_bar_button } from "../component/tab_bar_button" -import { StyleSets, useTheme } from "../theme" - -type RoleCycleButton = TextStyle & { - background?: string -} -// TODO: Replace these with zed types -type RemainingTokens = TextStyle & { - background: string - margin: { top: number; right: number } - padding: { - right: number - left: number - top: number - bottom: number - } - corner_radius: number -} - -export default function assistant(): any { - const theme = useTheme() - - const interactive_role = ( - color: StyleSets, - ): Interactive => { - return interactive({ - base: { - ...text(theme.highest, "sans", color, { size: "sm" }), - }, - state: { - hovered: { - ...text(theme.highest, "sans", color, { size: "sm" }), - background: background(theme.highest, color, "hovered"), - }, - clicked: { - ...text(theme.highest, "sans", color, { size: "sm" }), - background: background(theme.highest, color, "pressed"), - }, - }, - }) - } - - const tokens_remaining = (color: StyleSets): RemainingTokens => { - return { - ...text(theme.highest, "mono", color, { size: "xs" }), - background: background(theme.highest, "on", "default"), - margin: { top: 12, right: 20 }, - padding: { right: 4, left: 4, top: 1, bottom: 1 }, - corner_radius: 6, - } - } - - return { - container: { - background: background(theme.highest), - padding: { left: 12 }, - }, - inline: { - background: background(theme.highest), - margin: { top: 3, bottom: 3 }, - border: border(theme.lowest, "on", { - top: true, - bottom: true, - overlay: true, - }), - editor: { - text: text(theme.highest, "mono", "default", { size: "sm" }), - placeholder_text: text(theme.highest, "sans", "on", "disabled"), - selection: theme.players[0], - }, - disabled_editor: { - text: text(theme.highest, "mono", "disabled", { size: "sm" }), - placeholder_text: text(theme.highest, "sans", "on", "disabled"), - selection: { - cursor: text(theme.highest, "mono", "disabled").color, - selection: theme.players[0].selection, - }, - }, - pending_edit_background: background(theme.highest, "positive"), - context_status: { - error_icon: { - margin: { left: 8, right: 18 }, - color: foreground(theme.highest, "negative"), - width: 12, - }, - in_progress_icon: { - margin: { left: 8, right: 18 }, - color: foreground(theme.highest, "positive"), - width: 12, - }, - complete_icon: { - margin: { left: 8, right: 18 }, - color: foreground(theme.highest, "positive"), - width: 12, - }, - }, - retrieve_context: toggleable({ - base: interactive({ - base: { - icon_size: 12, - color: foreground(theme.highest, "variant"), - - button_width: 12, - background: background(theme.highest, "on"), - corner_radius: 2, - border: { - width: 1, - color: background(theme.highest, "on"), - }, - margin: { left: 2 }, - padding: { - left: 4, - right: 4, - top: 4, - bottom: 4, - }, - }, - state: { - hovered: { - ...text( - theme.highest, - "mono", - "variant", - "hovered", - ), - background: background( - theme.highest, - "on", - "hovered", - ), - border: { - width: 1, - color: background( - theme.highest, - "on", - "hovered", - ), - }, - }, - clicked: { - ...text( - theme.highest, - "mono", - "variant", - "pressed", - ), - background: background( - theme.highest, - "on", - "pressed", - ), - border: { - width: 1, - color: background( - theme.highest, - "on", - "pressed", - ), - }, - }, - }, - }), - state: { - active: { - default: { - icon_size: 12, - button_width: 12, - color: foreground(theme.highest, "variant"), - background: background(theme.highest, "accent"), - border: border(theme.highest, "accent"), - }, - hovered: { - background: background( - theme.highest, - "accent", - "hovered", - ), - border: border(theme.highest, "accent", "hovered"), - }, - clicked: { - background: background( - theme.highest, - "accent", - "pressed", - ), - border: border(theme.highest, "accent", "pressed"), - }, - }, - }, - }), - include_conversation: toggleable({ - base: interactive({ - base: { - icon_size: 12, - color: foreground(theme.highest, "variant"), - - button_width: 12, - background: background(theme.highest, "on"), - corner_radius: 2, - border: { - width: 1, - color: background(theme.highest, "on"), - }, - padding: { - left: 4, - right: 4, - top: 4, - bottom: 4, - }, - }, - state: { - hovered: { - ...text( - theme.highest, - "mono", - "variant", - "hovered", - ), - background: background( - theme.highest, - "on", - "hovered", - ), - border: { - width: 1, - color: background( - theme.highest, - "on", - "hovered", - ), - }, - }, - clicked: { - ...text( - theme.highest, - "mono", - "variant", - "pressed", - ), - background: background( - theme.highest, - "on", - "pressed", - ), - border: { - width: 1, - color: background( - theme.highest, - "on", - "pressed", - ), - }, - }, - }, - }), - state: { - active: { - default: { - icon_size: 12, - button_width: 12, - color: foreground(theme.highest, "variant"), - background: background(theme.highest, "accent"), - border: border(theme.highest, "accent"), - }, - hovered: { - background: background( - theme.highest, - "accent", - "hovered", - ), - border: border(theme.highest, "accent", "hovered"), - }, - clicked: { - background: background( - theme.highest, - "accent", - "pressed", - ), - border: border(theme.highest, "accent", "pressed"), - }, - }, - }, - }), - }, - message_header: { - margin: { bottom: 4, top: 4 }, - background: background(theme.highest), - }, - hamburger_button: tab_bar_button(theme, { - icon: "icons/menu.svg", - }), - - split_button: tab_bar_button(theme, { - icon: "icons/split_message.svg", - }), - quote_button: tab_bar_button(theme, { - icon: "icons/quote.svg", - }), - assist_button: tab_bar_button(theme, { - icon: "icons/magic-wand.svg", - }), - zoom_in_button: tab_bar_button(theme, { - icon: "icons/maximize.svg", - }), - zoom_out_button: tab_bar_button(theme, { - icon: "icons/minimize.svg", - }), - plus_button: tab_bar_button(theme, { - icon: "icons/plus.svg", - }), - title: { - ...text(theme.highest, "sans", "default", { size: "xs" }), - }, - saved_conversation: { - container: interactive({ - base: { - background: background(theme.middle), - padding: { top: 4, bottom: 4 }, - border: border(theme.middle, "default", { - top: true, - overlay: true, - }), - }, - state: { - hovered: { - background: background(theme.middle, "hovered"), - }, - clicked: { - background: background(theme.middle, "pressed"), - }, - }, - }), - saved_at: { - margin: { left: 8 }, - ...text(theme.highest, "sans", "variant", { size: "xs" }), - }, - title: { - margin: { left: 12 }, - ...text(theme.highest, "sans", "default", { - size: "sm", - weight: "bold", - }), - }, - }, - user_sender: interactive_role("base"), - assistant_sender: interactive_role("accent"), - system_sender: interactive_role("warning"), - sent_at: { - margin: { top: 2, left: 8 }, - ...text(theme.highest, "sans", "variant", { size: "2xs" }), - }, - model: interactive({ - base: { - background: background(theme.highest), - margin: { left: 12, right: 4, top: 12 }, - padding: { right: 4, left: 4, top: 1, bottom: 1 }, - corner_radius: 4, - ...text(theme.highest, "sans", "default", { size: "xs" }), - }, - state: { - hovered: { - background: background(theme.highest, "on", "hovered"), - border: border(theme.highest, "on", { overlay: true }), - }, - }, - }), - remaining_tokens: tokens_remaining("positive"), - low_remaining_tokens: tokens_remaining("warning"), - no_remaining_tokens: tokens_remaining("negative"), - error_icon: { - margin: { left: 8 }, - color: foreground(theme.highest, "negative"), - width: 12, - }, - api_key_editor: { - background: background(theme.highest, "on"), - corner_radius: 4, - text: text(theme.highest, "mono", "on"), - placeholder_text: text(theme.highest, "mono", "on", "disabled", { - size: "xs", - }), - selection: theme.players[0], - border: border(theme.highest, "on"), - padding: { - bottom: 4, - left: 8, - right: 8, - top: 4, - }, - }, - api_key_prompt: { - padding: 10, - ...text(theme.highest, "sans", "default", { size: "xs" }), - }, - } -} diff --git a/styles/src/style_tree/chat_panel.ts b/styles/src/style_tree/chat_panel.ts deleted file mode 100644 index bbcebbf4c839503963a9ef4a6b5202a23236c555..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/chat_panel.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { background, border, foreground, text } from "./components" -import { icon_button } from "../component/icon_button" -import { useTheme, with_opacity } from "../theme" -import { interactive } from "../element" - -export default function chat_panel(): any { - const theme = useTheme() - const layer = theme.middle - - const SPACING = 12 as const - - const channel_name = { - padding: { - left: SPACING, - right: SPACING, - top: 4, - bottom: 4, - }, - hash: { - ...text(layer, "sans", "base"), - }, - name: text(layer, "sans", "base"), - } - - return { - background: background(layer), - avatar: { - icon_width: 24, - icon_height: 24, - corner_radius: 4, - outer_width: 24, - outer_corner_radius: 16, - }, - avatar_container: { - padding: { - right: 6, - left: 2, - top: 2, - bottom: 2, - }, - }, - list: {}, - channel_select: { - header: { - ...channel_name, - border: border(layer, { bottom: true }), - }, - item: channel_name, - active_item: { - ...channel_name, - background: background(layer, "on", "active"), - }, - hovered_item: { - ...channel_name, - background: background(layer, "on", "hovered"), - }, - menu: { - background: background(layer, "on"), - border: border(layer, { bottom: true }), - }, - }, - icon_button: icon_button({ - variant: "ghost", - color: "variant", - size: "sm", - }), - input_editor: { - background: background(layer, "on"), - corner_radius: 6, - text: text(layer, "sans", "base"), - placeholder_text: text(layer, "sans", "base", "disabled", { - size: "xs", - }), - selection: theme.players[0], - border: border(layer, "on"), - margin: { - left: SPACING, - right: SPACING, - bottom: SPACING, - }, - padding: { - bottom: 4, - left: 8, - right: 8, - top: 4, - }, - }, - - rich_text: { - text: text(layer, "sans", "base"), - code_background: with_opacity(foreground(layer, "accent"), 0.1), - mention_highlight: { weight: "bold" }, - self_mention_highlight: { weight: "bold" }, - self_mention_background: background(layer, "active"), - }, - message_sender: { - margin: { - right: 8, - }, - ...text(layer, "sans", "base", { weight: "bold" }), - }, - message_timestamp: text(layer, "sans", "base", "disabled"), - message: { - ...interactive({ - base: { - margin: { top: SPACING }, - padding: { - top: 4, - bottom: 4, - left: SPACING / 2, - right: SPACING / 3, - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - }, - }), - }, - last_message_bottom_spacing: SPACING, - continuation_message: { - ...interactive({ - base: { - padding: { - top: 4, - bottom: 4, - left: SPACING / 2, - right: SPACING / 3, - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - }, - }), - }, - pending_message: { - ...interactive({ - base: { - padding: { - top: 4, - bottom: 4, - left: SPACING / 2, - right: SPACING / 3, - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - }, - }), - }, - sign_in_prompt: { - default: text(layer, "sans", "base"), - }, - } -} diff --git a/styles/src/style_tree/collab_modals.ts b/styles/src/style_tree/collab_modals.ts deleted file mode 100644 index 6132ce5ff4dd1d831ea976d5723a9d9e69550b02..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/collab_modals.ts +++ /dev/null @@ -1,176 +0,0 @@ -import { StyleSets, useTheme } from "../theme" -import { background, border, foreground, text } from "./components" -import picker from "./picker" -import { input } from "../component/input" -import contact_finder from "./contact_finder" -import { tab } from "../component/tab" -import { icon_button } from "../component/icon_button" -import { interactive } from "../element/interactive" - -export default function channel_modal(): any { - const theme = useTheme() - - const SPACING = 12 as const - const BUTTON_OFFSET = 6 as const - const ITEM_HEIGHT = 36 as const - - const contact_button = { - background: background(theme.middle, "variant"), - color: foreground(theme.middle, "variant"), - icon_width: 8, - button_width: 16, - corner_radius: 8, - } - - const picker_style = picker() - delete picker_style.shadow - delete picker_style.border - - const picker_input = input() - - const interactive_text = (styleset: StyleSets) => - interactive({ - base: { - padding: { - left: 8, - top: 8 - }, - ...text(theme.middle, "sans", styleset, "default"), - }, state: { - hovered: { - ...text(theme.middle, "sans", styleset, "hovered"), - }, - clicked: { - ...text(theme.middle, "sans", styleset, "active"), - } - } - }) - - const member_icon_style = icon_button({ - variant: "ghost", - size: "sm", - }).default - - return { - contact_finder: contact_finder(), - tabbed_modal: { - tab_button: tab({ layer: theme.middle }), - row_height: ITEM_HEIGHT, - header: { - background: background(theme.lowest), - border: border(theme.middle, { - bottom: true, - top: false, - left: false, - right: false, - }), - padding: { - top: SPACING, - left: SPACING - BUTTON_OFFSET, - right: SPACING - BUTTON_OFFSET, - }, - corner_radii: { - top_right: 12, - top_left: 12, - }, - }, - body: { - background: background(theme.middle), - padding: { - top: SPACING - 4, - left: SPACING, - right: SPACING, - bottom: SPACING, - }, - corner_radii: { - bottom_right: 12, - bottom_left: 12, - }, - }, - modal: { - background: background(theme.middle), - shadow: theme.modal_shadow, - corner_radius: 12, - padding: { - bottom: 0, - left: 0, - right: 0, - top: 0, - }, - }, - // FIXME: due to a bug in the picker's size calculation, this must be 600 - max_height: 600, - max_width: 540, - title: { - ...text(theme.middle, "sans", "on", { size: "lg" }), - padding: { - left: BUTTON_OFFSET, - }, - }, - visibility_toggle: interactive_text("base"), - channel_link: interactive_text("accent"), - picker: { - empty_container: {}, - item: { - ...picker_style.item, - margin: { left: SPACING, right: SPACING }, - }, - no_matches: picker_style.no_matches, - input_editor: picker_input, - empty_input_editor: picker_input, - header: picker_style.header, - footer: picker_style.footer, - }, - }, - channel_modal: { - // This is used for the icons that are rendered to the right of channel Members in both UIs - member_icon: member_icon_style, - // This is used for the icons that are rendered to the right of channel invites in both UIs - invitee_icon: member_icon_style, - remove_member_button: { - ...text(theme.middle, "sans", { size: "xs" }), - background: background(theme.middle), - padding: { - left: 7, - right: 7, - }, - }, - cancel_invite_button: { - ...text(theme.middle, "sans", { size: "xs" }), - background: background(theme.middle), - }, - member_tag: { - ...text(theme.middle, "sans", { size: "xs" }), - border: border(theme.middle, "active"), - background: background(theme.middle), - margin: { - left: 8, - }, - padding: { - left: 4, - right: 4, - }, - }, - contact_avatar: { - corner_radius: 10, - width: 18, - }, - contact_username: { - padding: { - left: 8, - }, - }, - contact_button: { - ...contact_button, - hover: { - background: background(theme.middle, "variant", "hovered"), - }, - }, - disabled_contact_button: { - ...contact_button, - background: background(theme.middle, "disabled"), - color: foreground(theme.middle, "disabled"), - }, - }, - } -} diff --git a/styles/src/style_tree/collab_panel.ts b/styles/src/style_tree/collab_panel.ts deleted file mode 100644 index 272b6055edb09bec222c49fd8eed07d94f47c4d0..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/collab_panel.ts +++ /dev/null @@ -1,427 +0,0 @@ -import { - background, - border, - border_color, - foreground, - text, -} from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" -import collab_modals from "./collab_modals" -import { icon_button, toggleable_icon_button } from "../component/icon_button" -import { indicator } from "../component/indicator" - -export default function contacts_panel(): any { - const theme = useTheme() - - const CHANNEL_SPACING = 4 as const - const NAME_MARGIN = 6 as const - const SPACING = 12 as const - const INDENT_SIZE = 8 as const - const ITEM_HEIGHT = 28 as const - - const layer = theme.middle - - const contact_button = { - background: background(layer, "on"), - color: foreground(layer, "on"), - icon_width: 14, - button_width: 16, - corner_radius: 8, - } - - const project_row = { - guest_avatar_spacing: 4, - height: 24, - guest_avatar: { - corner_radius: 8, - width: 14, - }, - name: { - ...text(layer, "sans", { size: "sm" }), - margin: { - left: NAME_MARGIN, - right: 4, - }, - }, - guests: { - margin: { - left: NAME_MARGIN, - right: NAME_MARGIN, - }, - }, - padding: { - left: SPACING, - right: SPACING, - }, - } - - const icon_style = { - color: foreground(layer, "variant"), - width: 14, - } - - const header_icon_button = toggleable_icon_button({ - variant: "ghost", - size: "sm", - active_layer: theme.lowest, - }) - - const subheader_row = toggleable({ - base: interactive({ - base: { - ...text(layer, "sans", { size: "sm" }), - padding: { - left: SPACING, - right: SPACING, - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }), - state: { - active: { - default: { - ...text(theme.lowest, "sans", { size: "sm" }), - background: background(theme.lowest), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }, - }) - - const filter_input = { - background: background(layer, "on"), - corner_radius: 6, - text: text(layer, "sans", "base"), - placeholder_text: text(layer, "sans", "base", "disabled", { - size: "xs", - }), - selection: theme.players[0], - border: border(layer, "on"), - padding: { - bottom: 4, - left: 8, - right: 8, - top: 4, - }, - margin: { - left: SPACING, - right: SPACING, - }, - } - - const item_row = toggleable({ - base: interactive({ - base: { - padding: { - left: SPACING, - right: SPACING, - }, - }, - state: { - clicked: { - background: background(layer, "pressed"), - }, - }, - }), - state: { - inactive: { - hovered: { - background: background(layer, "hovered"), - }, - }, - active: { - default: { - ...text(theme.lowest, "sans", { size: "sm" }), - background: background(theme.lowest), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }, - }) - - return { - ...collab_modals(), - disclosure: { - button: icon_button({ variant: "ghost", size: "sm" }), - spacing: CHANNEL_SPACING, - }, - log_in_button: interactive({ - base: { - background: background(theme.middle), - border: border(theme.middle, "active"), - corner_radius: 4, - margin: { - top: 4, - left: 16, - right: 16, - }, - padding: { - top: 3, - bottom: 3, - left: 7, - right: 7, - }, - ...text(theme.middle, "sans", "default", { size: "sm" }), - }, - state: { - hovered: { - ...text(theme.middle, "sans", "default", { size: "sm" }), - background: background(theme.middle, "hovered"), - border: border(theme.middle, "active"), - }, - clicked: { - ...text(theme.middle, "sans", "default", { size: "sm" }), - background: background(theme.middle, "pressed"), - border: border(theme.middle, "active"), - }, - }, - }), - background: background(layer), - padding: { - top: SPACING, - }, - user_query_editor: filter_input, - channel_hash: icon_style, - channel_note_active_color: foreground(layer, "active"), - user_query_editor_height: 33, - add_contact_button: header_icon_button, - add_channel_button: header_icon_button, - leave_call_button: header_icon_button, - row_height: ITEM_HEIGHT, - channel_indent: INDENT_SIZE * 2 + 2, - section_icon_size: 14, - header_row: { - ...text(layer, "sans", { size: "sm", weight: "bold" }), - margin: { top: SPACING }, - padding: { - left: SPACING, - right: SPACING, - }, - }, - dragged_over_header: { - margin: { top: SPACING }, - padding: { - left: SPACING, - right: SPACING, - }, - background: background(layer, "hovered"), - }, - subheader_row, - leave_call: interactive({ - base: { - background: background(layer), - border: border(layer), - corner_radius: 6, - margin: { - top: 1, - }, - padding: { - top: 1, - bottom: 1, - left: 7, - right: 7, - }, - ...text(layer, "sans", "variant", { size: "xs" }), - }, - state: { - hovered: { - ...text(layer, "sans", "hovered", { size: "xs" }), - background: background(layer, "hovered"), - border: border(layer, "hovered"), - }, - }, - }), - contact_row: toggleable({ - base: interactive({ - base: { - padding: { - left: SPACING, - right: SPACING, - }, - }, - state: { - clicked: { - background: background(layer, "pressed"), - }, - }, - }), - state: { - inactive: { - hovered: { - background: background(layer, "hovered"), - }, - }, - active: { - default: { - ...text(theme.lowest, "sans", { size: "sm" }), - background: background(theme.lowest), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }, - }), - channel_row: item_row, - channel_name: { - active: { - ...text(layer, "sans", { size: "sm", weight: "bold" }), - margin: { - left: CHANNEL_SPACING, - }, - }, - inactive: { - ...text(layer, "sans", { size: "sm" }), - margin: { - left: CHANNEL_SPACING, - }, - }, - }, - list_empty_label_container: { - margin: { - left: NAME_MARGIN, - }, - }, - list_empty_icon: { - color: foreground(layer, "variant"), - width: 14, - }, - list_empty_state: toggleable({ - base: interactive({ - base: { - ...text(layer, "sans", "variant", { size: "sm" }), - padding: { - top: SPACING / 2, - bottom: SPACING / 2, - left: SPACING, - right: SPACING, - }, - }, - state: { - clicked: { - background: background(layer, "pressed"), - }, - }, - }), - state: { - inactive: { - hovered: { - background: background(layer, "hovered"), - }, - }, - active: { - default: { - ...text(theme.lowest, "sans", { size: "sm" }), - background: background(theme.lowest), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }, - }), - contact_avatar: { - corner_radius: 10, - width: 20, - }, - channel_avatar: { - corner_radius: 10, - width: 20, - }, - extra_participant_label: { - corner_radius: 10, - padding: { - left: 10, - right: 4, - }, - background: background(layer, "hovered"), - ...text(layer, "sans", "hovered", { size: "xs" }), - }, - contact_status_free: indicator({ layer, color: "positive" }), - contact_status_busy: indicator({ layer, color: "negative" }), - contact_username: { - ...text(layer, "sans", { size: "sm" }), - margin: { - left: NAME_MARGIN, - }, - }, - contact_button_spacing: NAME_MARGIN, - contact_button: icon_button({ - variant: "ghost", - color: "variant", - size: "sm", - }), - disabled_button: { - ...contact_button, - background: background(layer, "on"), - color: foreground(layer, "on"), - }, - calling_indicator: { - ...text(layer, "sans", "variant", { size: "xs" }), - }, - tree_branch: toggleable({ - base: interactive({ - base: { - color: border_color(layer), - width: 1, - }, - state: { - hovered: { - color: border_color(layer), - }, - }, - }), - state: { - active: { - default: { - color: border_color(layer), - }, - }, - }, - }), - project_row: toggleable({ - base: interactive({ - base: { - ...project_row, - icon: { - margin: { left: NAME_MARGIN }, - color: foreground(layer, "variant"), - width: 14, - }, - name: { - ...project_row.name, - ...text(layer, "sans", { size: "sm" }), - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - }, - }), - state: { - active: { - default: { background: background(theme.lowest) }, - }, - }, - }), - face_overlap: 8, - channel_editor: { - padding: { - left: NAME_MARGIN, - }, - }, - } -} diff --git a/styles/src/style_tree/command_palette.ts b/styles/src/style_tree/command_palette.ts deleted file mode 100644 index 2f7404c8d4ed2b909e29a4086c7a2339645fea7d..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/command_palette.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { with_opacity } from "../theme/color" -import { text, background } from "./components" -import { toggleable } from "../element" -import { useTheme } from "../theme" - -export default function command_palette(): any { - const theme = useTheme() - - const key = toggleable({ - base: { - text: text(theme.highest, "mono", "variant", "default", { - size: "xs", - }), - corner_radius: 2, - background: background(theme.highest, "on"), - padding: { - top: 1, - bottom: 1, - left: 6, - right: 6, - }, - margin: { - top: 1, - bottom: 1, - left: 2, - }, - }, - state: { - active: { - text: text(theme.highest, "mono", "on", "default", { - size: "xs", - }), - background: with_opacity(background(theme.highest, "on"), 0.2), - }, - }, - }) - - return { - keystroke_spacing: 8, - // TODO: This should be a Toggle on the rust side so we don't have to do this - key: { - inactive: { ...key.inactive }, - active: key.active, - }, - } -} diff --git a/styles/src/style_tree/component_test.ts b/styles/src/style_tree/component_test.ts deleted file mode 100644 index 8dc22eec31a725ceca11fc70cb06c4875b63781e..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/component_test.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { useTheme } from "../common" -import { text_button } from "../component/text_button" -import { icon_button } from "../component/icon_button" -import { text } from "./components" -import { toggleable } from "../element" - -export default function contacts_panel(): any { - const theme = useTheme() - - return { - button: text_button({}), - toggle: toggleable({ - base: text_button({}), - state: { - active: { - ...text_button({ color: "accent" }), - }, - }, - }), - disclosure: { - ...text(theme.lowest, "sans", "base"), - button: icon_button({ variant: "ghost" }), - spacing: 4, - padding: 4, - }, - } -} diff --git a/styles/src/style_tree/components.ts b/styles/src/style_tree/components.ts deleted file mode 100644 index 43a5fa9d28e2c96f25a9975db15d139bee4ff897..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/components.ts +++ /dev/null @@ -1,302 +0,0 @@ -import { font_families, font_sizes, FontWeight } from "../common" -import { Layer, Styles, StyleSets, Style } from "../theme/create_theme" - -function is_style_set(key: any): key is StyleSets { - return [ - "base", - "variant", - "on", - "accent", - "positive", - "warning", - "negative", - ].includes(key) -} - -function is_style(key: any): key is Styles { - return [ - "default", - "active", - "disabled", - "hovered", - "pressed", - "inverted", - ].includes(key) -} -function get_style( - layer: Layer, - possible_style_set_or_style?: any, - possible_style?: any -): Style { - let style_set: StyleSets = "base" - let style: Styles = "default" - if (is_style_set(possible_style_set_or_style)) { - style_set = possible_style_set_or_style - } else if (is_style(possible_style_set_or_style)) { - style = possible_style_set_or_style - } - - if (is_style(possible_style)) { - style = possible_style - } - - return layer[style_set][style] -} - -export function background(layer: Layer, style?: Styles): string -export function background( - layer: Layer, - style_set?: StyleSets, - style?: Styles -): string -export function background( - layer: Layer, - style_set_or_styles?: StyleSets | Styles, - style?: Styles -): string { - return get_style(layer, style_set_or_styles, style).background -} - -export function border_color(layer: Layer, style?: Styles): string -export function border_color( - layer: Layer, - style_set?: StyleSets, - style?: Styles -): string -export function border_color( - layer: Layer, - style_set_or_styles?: StyleSets | Styles, - style?: Styles -): string { - return get_style(layer, style_set_or_styles, style).border -} - -export function foreground(layer: Layer, style?: Styles): string -export function foreground( - layer: Layer, - style_set?: StyleSets, - style?: Styles -): string -export function foreground( - layer: Layer, - style_set_or_styles?: StyleSets | Styles, - style?: Styles -): string { - return get_style(layer, style_set_or_styles, style).foreground -} - -export interface TextStyle extends Object { - family: keyof typeof font_families - color: string - size: number - weight?: FontWeight - underline?: boolean -} - -export interface TextProperties { - size?: keyof typeof font_sizes - weight?: FontWeight - underline?: boolean - color?: string - features?: FontFeatures -} - -interface FontFeatures { - /** Contextual Alternates: Applies a second substitution feature based on a match of a character pattern within a context of surrounding patterns */ - calt?: boolean - /** Case-Sensitive Forms: Shifts various punctuation marks up to a position that works better with all-capital sequences */ - case?: boolean - /** Capital Spacing: Adjusts inter-glyph spacing for all-capital text */ - cpsp?: boolean - /** Fractions: Replaces figures separated by a slash with diagonal fractions */ - frac?: boolean - /** Standard Ligatures: Replaces a sequence of glyphs with a single glyph which is preferred for typographic purposes */ - liga?: boolean - /** Oldstyle Figures: Changes selected figures from the default or lining style to oldstyle form. */ - onum?: boolean - /** Ordinals: Replaces default alphabetic glyphs with the corresponding ordinal forms for use after figures */ - ordn?: boolean - /** Proportional Figures: Replaces figure glyphs set on uniform (tabular) widths with corresponding glyphs set on proportional widths */ - pnum?: boolean - /** Stylistic set 01 */ - ss01?: boolean - /** Stylistic set 02 */ - ss02?: boolean - /** Stylistic set 03 */ - ss03?: boolean - /** Stylistic set 04 */ - ss04?: boolean - /** Stylistic set 05 */ - ss05?: boolean - /** Stylistic set 06 */ - ss06?: boolean - /** Stylistic set 07 */ - ss07?: boolean - /** Stylistic set 08 */ - ss08?: boolean - /** Stylistic set 09 */ - ss09?: boolean - /** Stylistic set 10 */ - ss10?: boolean - /** Stylistic set 11 */ - ss11?: boolean - /** Stylistic set 12 */ - ss12?: boolean - /** Stylistic set 13 */ - ss13?: boolean - /** Stylistic set 14 */ - ss14?: boolean - /** Stylistic set 15 */ - ss15?: boolean - /** Stylistic set 16 */ - ss16?: boolean - /** Stylistic set 17 */ - ss17?: boolean - /** Stylistic set 18 */ - ss18?: boolean - /** Stylistic set 19 */ - ss19?: boolean - /** Stylistic set 20 */ - ss20?: boolean - /** Subscript: Replaces default glyphs with subscript glyphs */ - subs?: boolean - /** Superscript: Replaces default glyphs with superscript glyphs */ - sups?: boolean - /** Swash: Replaces default glyphs with swash glyphs for stylistic purposes */ - swsh?: boolean - /** Titling: Replaces default glyphs with titling glyphs for use in large-size settings */ - titl?: boolean - /** Tabular Figures: Replaces figure glyphs set on proportional widths with corresponding glyphs set on uniform (tabular) widths */ - tnum?: boolean - /** Slashed Zero: Replaces default zero with a slashed zero for better distinction between "0" and "O" */ - zero?: boolean -} - -export function text( - layer: Layer, - font_family: keyof typeof font_families, - style_set: StyleSets, - style: Styles, - properties?: TextProperties -): TextStyle -export function text( - layer: Layer, - font_family: keyof typeof font_families, - style_set: StyleSets, - properties?: TextProperties -): TextStyle -export function text( - layer: Layer, - font_family: keyof typeof font_families, - style: Styles, - properties?: TextProperties -): TextStyle -export function text( - layer: Layer, - font_family: keyof typeof font_families, - properties?: TextProperties -): TextStyle -export function text( - layer: Layer, - font_family: keyof typeof font_families, - style_set_style_or_properties?: StyleSets | Styles | TextProperties, - style_or_properties?: Styles | TextProperties, - properties?: TextProperties -) { - const style = get_style( - layer, - style_set_style_or_properties, - style_or_properties - ) - - if (typeof style_set_style_or_properties === "object") { - properties = style_set_style_or_properties - } - if (typeof style_or_properties === "object") { - properties = style_or_properties - } - - const size = font_sizes[properties?.size || "sm"] - const color = properties?.color || style.foreground - - return { - family: font_families[font_family], - ...properties, - color, - size, - } -} - -export interface Border { - color: string - width: number - top?: boolean - bottom?: boolean - left?: boolean - right?: boolean - overlay?: boolean -} - -export interface BorderProperties { - width?: number - top?: boolean - bottom?: boolean - left?: boolean - right?: boolean - overlay?: boolean -} - -export function border( - layer: Layer, - style_set: StyleSets, - style: Styles, - properties?: BorderProperties -): Border -export function border( - layer: Layer, - style_set: StyleSets, - properties?: BorderProperties -): Border -export function border( - layer: Layer, - style: Styles, - properties?: BorderProperties -): Border -export function border(layer: Layer, properties?: BorderProperties): Border -export function border( - layer: Layer, - style_set_or_properties?: StyleSets | Styles | BorderProperties, - style_or_properties?: Styles | BorderProperties, - properties?: BorderProperties -): Border { - const style = get_style(layer, style_set_or_properties, style_or_properties) - - if (typeof style_set_or_properties === "object") { - properties = style_set_or_properties - } - if (typeof style_or_properties === "object") { - properties = style_or_properties - } - - return { - color: style.border, - width: 1, - ...properties, - } -} - -export function svg( - color: string, - asset: string, - width: number, - height: number -) { - return { - color, - asset, - dimensions: { - width, - height, - }, - } -} diff --git a/styles/src/style_tree/contact_finder.ts b/styles/src/style_tree/contact_finder.ts deleted file mode 100644 index 04f95cc367fa48024cc53556f84d281a8a2e6899..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/contact_finder.ts +++ /dev/null @@ -1,74 +0,0 @@ -// import picker from "./picker" -import { background, border, foreground, text } from "./components" -import { useTheme } from "../theme" - -export default function contact_finder(): any { - const theme = useTheme() - - // const side_margin = 6 - const contact_button = { - background: background(theme.middle, "variant"), - color: foreground(theme.middle, "variant"), - icon_width: 8, - button_width: 16, - corner_radius: 8, - } - - // const picker_style = picker() - // const picker_input = { - // background: background(theme.middle, "on"), - // corner_radius: 6, - // text: text(theme.middle, "mono"), - // placeholder_text: text(theme.middle, "mono", "on", "disabled", { - // size: "xs", - // }), - // selection: theme.players[0], - // border: border(theme.middle), - // padding: { - // bottom: 4, - // left: 8, - // right: 8, - // top: 4, - // }, - // margin: { - // left: side_margin, - // right: side_margin, - // }, - // } - - return { - // picker: { - // empty_container: {}, - // item: { - // ...picker_style.item, - // margin: { left: side_margin, right: side_margin }, - // }, - // no_matches: picker_style.no_matches, - // input_editor: picker_input, - // empty_input_editor: picker_input, - // header: picker_style.header, - // footer: picker_style.footer, - // }, - // row_height: 28, - contact_avatar: { - corner_radius: 10, - width: 18, - }, - contact_username: { - padding: { - left: 8, - }, - }, - contact_button: { - ...contact_button, - hover: { - background: background(theme.middle, "variant", "hovered"), - }, - }, - disabled_contact_button: { - ...contact_button, - background: background(theme.middle, "disabled"), - color: foreground(theme.middle, "disabled"), - }, - } -} diff --git a/styles/src/style_tree/contact_notification.ts b/styles/src/style_tree/contact_notification.ts deleted file mode 100644 index 0f52201c16420def6674f77bdf3d9756896b53ad..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/contact_notification.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { background, foreground, text } from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" - -export default function contact_notification(): any { - const theme = useTheme() - - const avatar_size = 12 - const header_padding = 8 - - return { - header_avatar: { - height: avatar_size, - width: avatar_size, - corner_radius: 6, - }, - header_message: { - ...text(theme.lowest, "sans", { size: "xs" }), - margin: { left: header_padding, right: header_padding }, - }, - header_height: 18, - body_message: { - ...text(theme.lowest, "sans", { size: "xs" }), - margin: { left: avatar_size + header_padding, top: 6, bottom: 6 }, - }, - button: interactive({ - base: { - ...text(theme.lowest, "sans", "on", { size: "xs" }), - background: background(theme.lowest, "on"), - padding: 4, - corner_radius: 6, - margin: { left: 6 }, - }, - - state: { - hovered: { - background: background(theme.lowest, "on", "hovered"), - }, - }, - }), - - dismiss_button: { - default: { - color: foreground(theme.lowest, "variant"), - icon_width: 14, - icon_height: 14, - button_width: 14, - button_height: 14, - hover: { - color: foreground(theme.lowest, "hovered"), - }, - }, - }, - } -} diff --git a/styles/src/style_tree/contacts_popover.ts b/styles/src/style_tree/contacts_popover.ts deleted file mode 100644 index dcd84c3252de0406011456da8c58a98c6434511a..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/contacts_popover.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { useTheme } from "../theme" -import { background, border } from "./components" - -export default function contacts_popover(): any { - const theme = useTheme() -} diff --git a/styles/src/style_tree/context_menu.ts b/styles/src/style_tree/context_menu.ts deleted file mode 100644 index 2225cee5275ade020b39ec634413e0d3e520cbe5..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/context_menu.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { background, border, border_color, text } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" - -export default function context_menu(): any { - const theme = useTheme() - - return { - background: background(theme.middle), - corner_radius: 10, - padding: 4, - shadow: theme.popover_shadow, - border: border(theme.middle), - keystroke_margin: 30, - item: toggleable({ - base: interactive({ - base: { - icon_spacing: 8, - icon_width: 14, - padding: { left: 6, right: 6, top: 2, bottom: 2 }, - corner_radius: 6, - label: text(theme.middle, "sans", { size: "sm" }), - keystroke: { - ...text(theme.middle, "sans", "variant", { - size: "sm", - weight: "bold", - }), - padding: { left: 3, right: 3 }, - }, - }, - state: { - hovered: { - background: background(theme.middle, "hovered"), - }, - clicked: { - background: background(theme.middle, "pressed"), - }, - }, - }), - state: { - active: { - default: { - background: background(theme.middle, "active"), - }, - hovered: { - background: background(theme.middle, "hovered"), - }, - clicked: { - background: background(theme.middle, "pressed"), - }, - }, - }, - }), - - separator: { - background: border_color(theme.middle), - margin: { top: 2, bottom: 2 }, - }, - } -} diff --git a/styles/src/style_tree/copilot.ts b/styles/src/style_tree/copilot.ts deleted file mode 100644 index 4e3e867c0ab13c7913f433ebc655d6e34e2dd131..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/copilot.ts +++ /dev/null @@ -1,293 +0,0 @@ -import { background, border, foreground, svg, text } from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" -export default function copilot(): any { - const theme = useTheme() - - const content_width = 264 - - const cta_button = - // Copied from welcome screen. FIXME: Move this into a ZDS component - interactive({ - base: { - background: background(theme.middle), - border: border(theme.middle, "default"), - corner_radius: 4, - margin: { - top: 4, - bottom: 4, - left: 8, - right: 8, - }, - padding: { - top: 3, - bottom: 3, - left: 7, - right: 7, - }, - ...text(theme.middle, "sans", "default", { size: "sm" }), - }, - state: { - hovered: { - ...text(theme.middle, "sans", "default", { size: "sm" }), - background: background(theme.middle, "hovered"), - border: border(theme.middle, "active"), - }, - }, - }) - - return { - out_link_icon: interactive({ - base: { - icon: svg( - foreground(theme.middle, "variant"), - "icons/external_link.svg", - 12, - 12 - ), - container: { - corner_radius: 6, - padding: { left: 6 }, - }, - }, - state: { - hovered: { - icon: { - color: foreground(theme.middle, "hovered"), - }, - }, - }, - }), - - modal: { - title_text: { - default: { - ...text(theme.middle, "sans", { - size: "xs", - weight: "bold", - }), - }, - }, - titlebar: { - background: background(theme.lowest), - border: border(theme.middle, "active"), - padding: { - top: 4, - bottom: 4, - left: 8, - right: 8, - }, - }, - container: { - background: background(theme.lowest), - padding: { - top: 0, - left: 0, - right: 0, - bottom: 8, - }, - }, - close_icon: interactive({ - base: { - icon: svg( - foreground(theme.middle, "variant"), - "icons/x.svg", - 8, - 8 - ), - container: { - corner_radius: 2, - padding: { - top: 4, - bottom: 4, - left: 4, - right: 4, - }, - margin: { - right: 0, - }, - }, - }, - state: { - hovered: { - icon: svg( - foreground(theme.middle, "on"), - "icons/x.svg", - 8, - 8 - ), - }, - clicked: { - icon: svg( - foreground(theme.middle, "base"), - "icons/x.svg", - 8, - 8 - ), - }, - }, - }), - dimensions: { - width: 280, - height: 280, - }, - }, - - auth: { - content_width, - - cta_button, - - header: { - icon: svg( - foreground(theme.middle, "default"), - "icons/zed_x_copilot.svg", - 92, - 32 - ), - container: { - margin: { - top: 35, - bottom: 5, - left: 0, - right: 0, - }, - }, - }, - - prompting: { - subheading: { - ...text(theme.middle, "sans", { size: "xs" }), - margin: { - top: 6, - bottom: 12, - left: 0, - right: 0, - }, - }, - - hint: { - ...text(theme.middle, "sans", { - size: "xs", - color: "#838994", - }), - margin: { - top: 6, - bottom: 2, - }, - }, - - device_code: { - text: text(theme.middle, "mono", { size: "sm" }), - cta: { - ...cta_button, - background: background(theme.lowest), - border: border(theme.lowest, "inverted"), - padding: { - top: 0, - bottom: 0, - left: 16, - right: 16, - }, - margin: { - left: 16, - right: 16, - }, - }, - left: content_width / 2, - left_container: { - padding: { - top: 3, - bottom: 3, - left: 0, - right: 6, - }, - }, - right: (content_width * 1) / 3, - right_container: interactive({ - base: { - border: border(theme.lowest, "inverted", { - bottom: false, - right: false, - top: false, - left: true, - }), - padding: { - top: 3, - bottom: 5, - left: 8, - right: 0, - }, - }, - state: { - hovered: { - border: border(theme.middle, "active", { - bottom: false, - right: false, - top: false, - left: true, - }), - }, - }, - }), - }, - }, - - not_authorized: { - subheading: { - ...text(theme.middle, "sans", { size: "xs" }), - - margin: { - top: 16, - bottom: 16, - left: 0, - right: 0, - }, - }, - - warning: { - ...text(theme.middle, "sans", { - size: "xs", - color: foreground(theme.middle, "warning"), - }), - border: border(theme.middle, "warning"), - background: background(theme.middle, "warning"), - corner_radius: 2, - padding: { - top: 4, - left: 4, - bottom: 4, - right: 4, - }, - margin: { - bottom: 16, - left: 8, - right: 8, - }, - }, - }, - - authorized: { - subheading: { - ...text(theme.middle, "sans", { size: "xs" }), - - margin: { - top: 16, - bottom: 16, - }, - }, - - hint: { - ...text(theme.middle, "sans", { - size: "xs", - color: "#838994", - }), - margin: { - top: 24, - bottom: 4, - }, - }, - }, - }, - } -} diff --git a/styles/src/style_tree/editor.ts b/styles/src/style_tree/editor.ts deleted file mode 100644 index 27a6eaf19579fa9ba891d03d92f7408e83c68ba3..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/editor.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { with_opacity } from "../theme/color" -import { Layer, StyleSets } from "../theme/create_theme" -import { - background, - border, - border_color, - foreground, - text, -} from "./components" -import hover_popover from "./hover_popover" - -import { build_syntax } from "../theme/syntax" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" - -export default function editor(): any { - const theme = useTheme() - - const { is_light } = theme - - const layer = theme.highest - - const autocomplete_item = { - corner_radius: 6, - padding: { - bottom: 2, - left: 6, - right: 6, - top: 2, - }, - } - - function diagnostic(layer: Layer, style_set: StyleSets) { - return { - text_scale_factor: 0.857, - header: { - border: border(layer, { - top: true, - }), - }, - message: { - text: text(layer, "sans", style_set, "default", { size: "sm" }), - highlight_text: text(layer, "sans", style_set, "default", { - size: "sm", - weight: "bold", - }), - }, - } - } - - const syntax = build_syntax() - - return { - text_color: syntax.primary.color, - background: background(layer), - active_line_background: with_opacity(background(layer, "on"), 0.75), - highlighted_line_background: background(layer, "on"), - // Inline autocomplete suggestions, Co-pilot suggestions, etc. - hint: syntax.hint, - suggestion: syntax.predictive, - code_actions: { - indicator: toggleable({ - base: interactive({ - base: { - color: foreground(layer, "variant"), - }, - state: { - hovered: { - color: foreground(layer, "variant", "hovered"), - }, - clicked: { - color: foreground(layer, "variant", "pressed"), - }, - }, - }), - state: { - active: { - default: { - color: foreground(layer, "accent"), - }, - hovered: { - color: foreground(layer, "accent", "hovered"), - }, - clicked: { - color: foreground(layer, "accent", "pressed"), - }, - }, - }, - }), - - vertical_scale: 0.55, - }, - folds: { - icon_margin_scale: 4, - folded_icon: "icons/chevron_right.svg", - foldable_icon: "icons/chevron_down.svg", - indicator: toggleable({ - base: interactive({ - base: { - color: foreground(layer, "variant"), - }, - state: { - hovered: { - color: foreground(layer, "on"), - }, - clicked: { - color: foreground(layer, "base"), - }, - }, - }), - state: { - active: { - default: { - color: foreground(layer, "default"), - }, - hovered: { - color: foreground(layer, "on"), - }, - }, - }, - }), - ellipses: { - text_color: theme.ramps.neutral(0.71).hex(), - corner_radius_factor: 0.15, - background: { - // Copied from hover_popover highlight - default: { - color: theme.ramps.neutral(0.5).alpha(0.0).hex(), - }, - - hovered: { - color: theme.ramps.neutral(0.5).alpha(0.5).hex(), - }, - - clicked: { - color: theme.ramps.neutral(0.5).alpha(0.7).hex(), - }, - }, - }, - fold_background: foreground(layer, "variant"), - }, - diff: { - deleted: is_light - ? theme.ramps.red(0.5).hex() - : theme.ramps.red(0.4).hex(), - modified: is_light - ? theme.ramps.yellow(0.5).hex() - : theme.ramps.yellow(0.5).hex(), - inserted: is_light - ? theme.ramps.green(0.4).hex() - : theme.ramps.green(0.5).hex(), - removed_width_em: 0.275, - width_em: 0.15, - corner_radius: 0.05, - }, - /** Highlights matching occurrences of what is under the cursor - * as well as matched brackets - */ - document_highlight_read_background: with_opacity( - foreground(layer, "accent"), - 0.1 - ), - document_highlight_write_background: theme.ramps - .neutral(0.5) - .alpha(0.4) - .hex(), // TODO: This was blend * 2 - error_color: background(layer, "negative"), - gutter_background: background(layer), - gutter_padding_factor: 3.5, - line_number: with_opacity(foreground(layer), 0.35), - line_number_active: foreground(layer), - rename_fade: 0.6, - wrap_guide: with_opacity(foreground(layer), 0.05), - active_wrap_guide: with_opacity(foreground(layer), 0.1), - unnecessary_code_fade: 0.5, - selection: theme.players[0], - whitespace: theme.ramps.neutral(0.5).hex(), - guest_selections: [ - theme.players[1], - theme.players[2], - theme.players[3], - theme.players[4], - theme.players[5], - theme.players[6], - theme.players[7], - ], - absent_selection: theme.players[7], - autocomplete: { - background: background(theme.middle), - corner_radius: 8, - padding: 4, - margin: { - left: -14, - }, - border: border(theme.middle), - shadow: theme.popover_shadow, - match_highlight: foreground(theme.middle, "accent"), - item: autocomplete_item, - hovered_item: { - ...autocomplete_item, - match_highlight: foreground(theme.middle, "accent", "hovered"), - background: background(theme.middle, "hovered"), - }, - selected_item: { - ...autocomplete_item, - match_highlight: foreground(theme.middle, "accent", "active"), - background: background(theme.middle, "active"), - }, - completion_min_width: 300, - completion_max_width: 700, - inline_docs_container: { padding: { left: 40 } }, - inline_docs_color: text(theme.middle, "sans", "disabled", {}).color, - inline_docs_size_percent: 0.75, - alongside_docs_max_width: 700, - alongside_docs_container: { padding: autocomplete_item.padding } - }, - diagnostic_header: { - background: background(theme.middle), - icon_width_factor: 1.5, - text_scale_factor: 0.857, - border: border(theme.middle, { - bottom: true, - top: true, - }), - code: { - ...text(theme.middle, "mono", { size: "sm" }), - margin: { - left: 10, - }, - }, - source: { - text: text(theme.middle, "sans", { - size: "sm", - weight: "bold", - }), - }, - message: { - highlight_text: text(theme.middle, "sans", { - size: "sm", - weight: "bold", - }), - text: text(theme.middle, "sans", { size: "sm" }), - }, - }, - diagnostic_path_header: { - background: background(theme.middle), - text_scale_factor: 0.857, - filename: text(theme.middle, "mono", { size: "sm" }), - path: { - ...text(theme.middle, "mono", { size: "sm" }), - margin: { - left: 12, - }, - }, - }, - error_diagnostic: diagnostic(theme.middle, "negative"), - warning_diagnostic: diagnostic(theme.middle, "warning"), - information_diagnostic: diagnostic(theme.middle, "accent"), - hint_diagnostic: diagnostic(theme.middle, "warning"), - invalid_error_diagnostic: diagnostic(theme.middle, "base"), - invalid_hint_diagnostic: diagnostic(theme.middle, "base"), - invalid_information_diagnostic: diagnostic(theme.middle, "base"), - invalid_warning_diagnostic: diagnostic(theme.middle, "base"), - hover_popover: hover_popover(), - link_definition: { - color: syntax.link_uri.color, - underline: syntax.link_uri.underline, - }, - jump_icon: interactive({ - base: { - color: foreground(layer, "on"), - icon_width: 20, - button_width: 20, - corner_radius: 6, - padding: { - top: 6, - bottom: 6, - left: 6, - right: 6, - }, - }, - state: { - hovered: { - background: background(layer, "on", "hovered"), - }, - }, - }), - - scrollbar: { - width: 12, - min_height_factor: 1.0, - track: { - border: border(layer, "variant", { left: true }), - }, - thumb: { - background: with_opacity(background(layer, "inverted"), 0.3), - border: { - width: 1, - color: border_color(layer, "variant"), - top: false, - right: true, - left: true, - bottom: false, - }, - }, - git: { - deleted: is_light - ? with_opacity(theme.ramps.red(0.5).hex(), 0.8) - : with_opacity(theme.ramps.red(0.4).hex(), 0.8), - modified: is_light - ? with_opacity(theme.ramps.yellow(0.5).hex(), 0.8) - : with_opacity(theme.ramps.yellow(0.4).hex(), 0.8), - inserted: is_light - ? with_opacity(theme.ramps.green(0.5).hex(), 0.8) - : with_opacity(theme.ramps.green(0.4).hex(), 0.8), - }, - selections: foreground(layer, "accent"), - }, - composition_mark: { - underline: { - thickness: 1.0, - color: border_color(layer), - }, - }, - syntax, - } -} diff --git a/styles/src/style_tree/feedback.ts b/styles/src/style_tree/feedback.ts deleted file mode 100644 index 4226db9753ad0429d4119293c80bace9928b61be..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/feedback.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { background, border, text } from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" - -export default function feedback(): any { - const theme = useTheme() - - return { - submit_button: interactive({ - base: { - ...text(theme.highest, "mono", "on"), - background: background(theme.highest, "on"), - corner_radius: 6, - border: border(theme.highest, "on"), - padding: { - bottom: 2, - left: 10, - right: 10, - top: 2, - }, - }, - state: { - clicked: { - ...text(theme.highest, "mono", "on", "pressed"), - background: background(theme.highest, "on", "pressed"), - border: border(theme.highest, "on", "pressed"), - }, - hovered: { - ...text(theme.highest, "mono", "on", "hovered"), - background: background(theme.highest, "on", "hovered"), - border: border(theme.highest, "on", "hovered"), - }, - disabled: { - ...text(theme.highest, "mono", "on", "disabled"), - background: background(theme.highest, "on", "disabled"), - border: border(theme.highest, "on", "disabled"), - }, - }, - }), - button_margin: 8, - info_text_default: { - padding: { - left: 4, - right: 4, - }, - ...text(theme.highest, "sans", "default", { - size: "xs", - }) - }, - link_text_default: text(theme.highest, "sans", "default", { - size: "xs", - underline: true, - }), - link_text_hover: text(theme.highest, "sans", "hovered", { - size: "xs", - underline: true, - }), - } -} diff --git a/styles/src/style_tree/hover_popover.ts b/styles/src/style_tree/hover_popover.ts deleted file mode 100644 index 80f22503496771bf39d8a271c3cfe66988a4b96f..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/hover_popover.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { useTheme } from "../theme" -import { background, border, foreground, text } from "./components" - -export default function hover_popover(): any { - const theme = useTheme() - - const base_container = { - background: background(theme.middle), - corner_radius: 8, - padding: { - left: 8, - right: 8, - top: 4, - bottom: 4, - }, - shadow: theme.popover_shadow, - border: border(theme.middle), - margin: { - left: -8, - }, - } - - return { - container: base_container, - info_container: { - ...base_container, - background: background(theme.middle, "accent"), - border: border(theme.middle, "accent"), - }, - warning_container: { - ...base_container, - background: background(theme.middle, "warning"), - border: border(theme.middle, "warning"), - }, - error_container: { - ...base_container, - background: background(theme.middle, "negative"), - border: border(theme.middle, "negative"), - }, - block_style: { - padding: { top: 4 }, - }, - prose: text(theme.middle, "sans", { size: "sm" }), - diagnostic_source_highlight: { - color: foreground(theme.middle, "accent"), - }, - highlight: theme.ramps.neutral(0.5).alpha(0.2).hex(), // TODO: blend was used here. Replace with something better - } -} diff --git a/styles/src/style_tree/incoming_call_notification.ts b/styles/src/style_tree/incoming_call_notification.ts deleted file mode 100644 index 294ec00a73152f4a79f96ba2e0866cc25baf5fa7..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/incoming_call_notification.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { useTheme } from "../theme" -import { background, border, text } from "./components" - -export default function incoming_call_notification(): unknown { - const theme = useTheme() - - const avatar_size = 48 - return { - window_height: 74, - window_width: 380, - background: background(theme.middle), - caller_container: { - padding: 12, - }, - caller_avatar: { - height: avatar_size, - width: avatar_size, - corner_radius: avatar_size / 2, - }, - caller_metadata: { - margin: { left: 10 }, - }, - caller_username: { - ...text(theme.middle, "sans", { size: "sm", weight: "bold" }), - margin: { top: -3 }, - }, - caller_message: { - ...text(theme.middle, "sans", "variant", { size: "xs" }), - margin: { top: -3 }, - }, - worktree_roots: { - ...text(theme.middle, "sans", "variant", { - size: "xs", - weight: "bold", - }), - margin: { top: -3 }, - }, - button_width: 96, - accept_button: { - background: background(theme.middle, "accent"), - border: border(theme.middle, { left: true, bottom: true }), - ...text(theme.middle, "sans", "positive", { - size: "xs", - weight: "bold", - }), - }, - decline_button: { - border: border(theme.middle, { left: true }), - ...text(theme.middle, "sans", "negative", { - size: "xs", - weight: "bold", - }), - }, - } -} diff --git a/styles/src/style_tree/notification_panel.ts b/styles/src/style_tree/notification_panel.ts deleted file mode 100644 index ecafc3c8e6c8fc2b8b2cc7a54990fdb74d4e9aa8..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/notification_panel.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { background, border, text } from "./components" -import { icon_button } from "../component/icon_button" -import { useTheme, with_opacity } from "../theme" -import { text_button } from "../component" - -export default function (): any { - const theme = useTheme() - const layer = theme.middle - - const notification_text = { - padding: { top: 4, bottom: 4 }, - ...text(layer, "sans", "base"), - } - - const notification_read_text_color = with_opacity( - theme.middle.base.default.foreground, - 0.6 - ) - - return { - background: background(layer), - avatar: { - icon_width: 24, - icon_height: 24, - corner_radius: 12, - outer_width: 24, - outer_corner_radius: 24, - }, - title: { - ...text(layer, "sans", "default"), - padding: { left: 8, right: 8 }, - border: border(layer, { bottom: true }), - }, - title_height: 32, - title_icon: { - asset: "icons/feedback.svg", - color: text(theme.lowest, "sans", "default").color, - dimensions: { - width: 16, - height: 16, - }, - }, - read_text: { - ...notification_text, - color: notification_read_text_color, - }, - unread_text: notification_text, - button: text_button({ - variant: "ghost", - }), - timestamp: text(layer, "sans", "base", "disabled"), - avatar_container: { - padding: { - right: 8, - left: 2, - top: 4, - bottom: 2, - }, - }, - list: { - padding: { - left: 8, - right: 8, - }, - }, - icon_button: icon_button({ - variant: "ghost", - color: "variant", - size: "sm", - }), - sign_in_prompt: { - default: text(layer, "sans", "base"), - }, - } -} diff --git a/styles/src/style_tree/picker.ts b/styles/src/style_tree/picker.ts deleted file mode 100644 index 317f600b1e2fca3f6b8756c3ba033fa22e6b0220..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/picker.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { with_opacity } from "../theme/color" -import { background, border, text } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" - -export default function picker(): any { - const theme = useTheme() - - const container = { - background: background(theme.lowest), - border: border(theme.lowest), - shadow: theme.modal_shadow, - corner_radius: 12, - padding: { - bottom: 4, - }, - } - const input_editor = { - placeholder_text: text(theme.lowest, "sans", "on", "disabled"), - selection: theme.players[0], - text: text(theme.lowest, "mono", "on"), - border: border(theme.lowest, { bottom: true }), - padding: { - bottom: 8, - left: 16, - right: 16, - top: 8, - }, - margin: { - bottom: 4, - }, - } - const empty_input_editor: any = { ...input_editor } - delete empty_input_editor.border - delete empty_input_editor.margin - - return { - ...container, - empty_container: { - ...container, - padding: {}, - }, - item: toggleable({ - base: interactive({ - base: { - padding: { - bottom: 4, - left: 12, - right: 12, - top: 4, - }, - margin: { - top: 1, - left: 4, - right: 4, - }, - corner_radius: 8, - text: text(theme.lowest, "sans", "variant"), - highlight_text: text(theme.lowest, "sans", "accent", { - weight: "bold", - }), - }, - state: { - hovered: { - background: with_opacity( - background(theme.lowest, "hovered"), - 0.5 - ), - }, - clicked: { - background: with_opacity( - background(theme.lowest, "pressed"), - 0.5 - ), - }, - }, - }), - state: { - active: { - default: { - background: with_opacity( - background(theme.lowest, "base", "active"), - 0.5 - ), - }, - hovered: { - background: with_opacity( - background(theme.lowest, "hovered"), - 0.5 - ), - }, - clicked: { - background: with_opacity( - background(theme.lowest, "pressed"), - 0.5 - ), - }, - }, - }, - }), - - input_editor, - empty_input_editor, - no_matches: { - text: text(theme.lowest, "sans", "variant"), - padding: { - bottom: 8, - left: 16, - right: 16, - top: 8, - }, - }, - header: { - text: text(theme.lowest, "sans", "variant", { size: "xs" }), - - margin: { - top: 1, - left: 8, - right: 8, - }, - }, - footer: interactive({ - base: { - text: text(theme.lowest, "sans", "base", { size: "xs" }), - padding: { - bottom: 4, - left: 12, - right: 12, - top: 4, - }, - margin: { - top: 1, - left: 4, - right: 4, - }, - corner_radius: 8, - background: with_opacity( - background(theme.lowest, "active"), - 0.5 - ), - }, - state: { - hovered: { - background: with_opacity( - background(theme.lowest, "hovered"), - 0.5 - ), - }, - clicked: { - background: with_opacity( - background(theme.lowest, "pressed"), - 0.5 - ), - }, - }, - }), - } -} diff --git a/styles/src/style_tree/project_diagnostics.ts b/styles/src/style_tree/project_diagnostics.ts deleted file mode 100644 index 1c13b31a4af969518d7d06f4668334480a84bdd4..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/project_diagnostics.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useTheme } from "../theme" -import { background, text } from "./components" - -export default function project_diagnostics(): any { - const theme = useTheme() - - return { - background: background(theme.highest), - tab_icon_spacing: 4, - tab_icon_width: 13, - tab_summary_spacing: 10, - empty_message: text(theme.highest, "sans", "variant", { size: "md" }), - } -} diff --git a/styles/src/style_tree/project_panel.ts b/styles/src/style_tree/project_panel.ts deleted file mode 100644 index 51958af145b50afd25510788ff0a530cc77a5a1d..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/project_panel.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { with_opacity } from "../theme/color" -import { - Border, - TextStyle, - background, - border, - foreground, - text, -} from "./components" -import { interactive, toggleable } from "../element" -import merge from "ts-deepmerge" -import { useTheme } from "../theme" -export default function project_panel(): any { - const theme = useTheme() - - const { is_light } = theme - - type EntryStateProps = { - background?: string - border?: Border - text?: TextStyle - icon_color?: string - } - - type EntryState = { - default: EntryStateProps - hovered?: EntryStateProps - clicked?: EntryStateProps - } - - const entry = (unselected?: EntryState, selected?: EntryState) => { - const git_status = { - git: { - modified: is_light - ? theme.ramps.yellow(0.6).hex() - : theme.ramps.yellow(0.5).hex(), - inserted: is_light - ? theme.ramps.green(0.45).hex() - : theme.ramps.green(0.5).hex(), - conflict: is_light - ? theme.ramps.red(0.6).hex() - : theme.ramps.red(0.5).hex(), - }, - } - - const base_properties = { - height: 22, - background: background(theme.middle), - chevron_color: foreground(theme.middle, "variant"), - icon_color: with_opacity(foreground(theme.middle, "active"), 0.3), - chevron_size: 7, - icon_size: 14, - icon_spacing: 6, - text: text(theme.middle, "sans", "variant", { size: "sm" }), - status: { - ...git_status, - }, - } - - const selected_style: EntryState | undefined = selected - ? selected - : unselected - - const unselected_default_style = merge( - base_properties, - unselected?.default ?? {}, - {} - ) - const unselected_hovered_style = merge( - base_properties, - { background: background(theme.middle, "hovered") }, - unselected?.hovered ?? {} - ) - const unselected_clicked_style = merge( - base_properties, - { background: background(theme.middle, "pressed") }, - unselected?.clicked ?? {} - ) - const selected_default_style = merge( - base_properties, - { - background: background(theme.lowest), - text: text(theme.lowest, "sans", { size: "sm" }), - }, - selected_style?.default ?? {} - ) - const selected_hovered_style = merge( - base_properties, - { - background: background(theme.lowest, "hovered"), - text: text(theme.lowest, "sans", { size: "sm" }), - }, - selected_style?.hovered ?? {} - ) - const selected_clicked_style = merge( - base_properties, - { - background: background(theme.lowest, "pressed"), - text: text(theme.lowest, "sans", { size: "sm" }), - }, - selected_style?.clicked ?? {} - ) - - return toggleable({ - state: { - inactive: interactive({ - state: { - default: unselected_default_style, - hovered: unselected_hovered_style, - clicked: unselected_clicked_style, - }, - }), - active: interactive({ - state: { - default: selected_default_style, - hovered: selected_hovered_style, - clicked: selected_clicked_style, - }, - }), - }, - }) - } - - const default_entry = entry() - - return { - open_project_button: interactive({ - base: { - background: background(theme.middle), - border: border(theme.middle, "active"), - corner_radius: 4, - margin: { - top: 16, - left: 16, - right: 16, - }, - padding: { - top: 3, - bottom: 3, - left: 7, - right: 7, - }, - ...text(theme.middle, "sans", "default", { size: "sm" }), - }, - state: { - hovered: { - ...text(theme.middle, "sans", "default", { size: "sm" }), - background: background(theme.middle, "hovered"), - border: border(theme.middle, "active"), - }, - clicked: { - ...text(theme.middle, "sans", "default", { size: "sm" }), - background: background(theme.middle, "pressed"), - border: border(theme.middle, "active"), - }, - }, - }), - background: background(theme.middle), - padding: { left: 6, right: 6, top: 0, bottom: 6 }, - indent_width: 20, - entry: default_entry, - dragged_entry: { - ...default_entry.inactive.default, - text: text(theme.middle, "sans", "on", { size: "sm" }), - background: with_opacity(background(theme.middle, "on"), 0.9), - border: border(theme.middle), - }, - ignored_entry: entry( - { - default: { - text: text(theme.middle, "sans", "disabled"), - }, - }, - { - default: { - icon_color: foreground(theme.middle, "variant"), - }, - } - ), - cut_entry: entry( - { - default: { - text: text(theme.middle, "sans", "disabled"), - }, - }, - { - default: { - background: background(theme.middle, "active"), - text: text(theme.middle, "sans", "disabled", { - size: "sm", - }), - }, - } - ), - filename_editor: { - background: background(theme.middle, "on"), - text: text(theme.middle, "sans", "on", { size: "sm" }), - selection: theme.players[0], - }, - } -} diff --git a/styles/src/style_tree/project_shared_notification.ts b/styles/src/style_tree/project_shared_notification.ts deleted file mode 100644 index e7c1dcedd513ecaf07d16464c8510ccd93d36df8..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/project_shared_notification.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { useTheme } from "../theme" -import { background, border, text } from "./components" - -export default function project_shared_notification(): unknown { - const theme = useTheme() - - const avatar_size = 48 - return { - window_height: 74, - window_width: 380, - background: background(theme.middle), - owner_container: { - padding: 12, - }, - owner_avatar: { - height: avatar_size, - width: avatar_size, - corner_radius: avatar_size / 2, - }, - owner_metadata: { - margin: { left: 10 }, - }, - owner_username: { - ...text(theme.middle, "sans", { size: "sm", weight: "bold" }), - margin: { top: -3 }, - }, - message: { - ...text(theme.middle, "sans", "variant", { size: "xs" }), - margin: { top: -3 }, - }, - worktree_roots: { - ...text(theme.middle, "sans", "variant", { - size: "xs", - weight: "bold", - }), - margin: { top: -3 }, - }, - button_width: 96, - open_button: { - background: background(theme.middle, "accent"), - border: border(theme.middle, { left: true, bottom: true }), - ...text(theme.middle, "sans", "accent", { - size: "xs", - weight: "bold", - }), - }, - dismiss_button: { - border: border(theme.middle, { left: true }), - ...text(theme.middle, "sans", "variant", { - size: "xs", - weight: "bold", - }), - }, - } -} diff --git a/styles/src/style_tree/search.ts b/styles/src/style_tree/search.ts deleted file mode 100644 index 2317108bdebfe5fee8e74a12f28f8bc54af80cc1..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/search.ts +++ /dev/null @@ -1,437 +0,0 @@ -import { with_opacity } from "../theme/color" -import { background, border, foreground, text } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" - -const search_results = () => { - const theme = useTheme() - - return { - // TODO: Add an activeMatchBackground on the rust side to differentiate between active and inactive - match_background: with_opacity( - foreground(theme.highest, "accent"), - 0.4 - ), - } -} - -export default function search(): any { - const theme = useTheme() - const SEARCH_ROW_SPACING = 12 - - // Search input - const editor = { - background: background(theme.highest), - corner_radius: 8, - min_width: 200, - max_width: 500, - placeholder_text: text(theme.highest, "mono", "disabled"), - selection: theme.players[0], - text: text(theme.highest, "mono", "default"), - border: border(theme.highest), - padding: { - top: 4, - bottom: 4, - left: 10, - right: 4, - }, - margin: { right: SEARCH_ROW_SPACING }, - } - - const include_exclude_editor = { - ...editor, - min_width: 100, - max_width: 250, - } - - return { - padding: { top: 4, bottom: 4 }, - - option_button: toggleable({ - base: interactive({ - base: { - icon_width: 14, - button_width: 32, - color: foreground(theme.highest, "variant"), - background: background(theme.highest, "on"), - corner_radius: 2, - margin: { right: 2 }, - border: { - width: 1, - color: background(theme.highest, "on"), - }, - padding: { - left: 4, - right: 4, - top: 4, - bottom: 4, - }, - }, - state: { - hovered: { - ...text(theme.highest, "mono", "variant", "hovered"), - background: background(theme.highest, "on", "hovered"), - border: { - width: 1, - color: background(theme.highest, "on", "hovered"), - }, - }, - clicked: { - ...text(theme.highest, "mono", "variant", "pressed"), - background: background(theme.highest, "on", "pressed"), - border: { - width: 1, - color: background(theme.highest, "on", "pressed"), - }, - }, - }, - }), - state: { - active: { - default: { - icon_width: 14, - button_width: 32, - color: foreground(theme.highest, "variant"), - background: background(theme.highest, "accent"), - border: border(theme.highest, "accent"), - }, - hovered: { - background: background( - theme.highest, - "accent", - "hovered" - ), - border: border(theme.highest, "accent", "hovered"), - }, - clicked: { - background: background( - theme.highest, - "accent", - "pressed" - ), - border: border(theme.highest, "accent", "pressed"), - }, - }, - }, - }), - option_button_component: toggleable({ - base: interactive({ - base: { - icon_size: 14, - color: foreground(theme.highest, "variant"), - - button_width: 32, - background: background(theme.highest, "on"), - corner_radius: 6, - margin: { right: 2 }, - border: { - width: 1, - color: background(theme.highest, "on"), - }, - padding: { - left: 4, - right: 4, - top: 4, - bottom: 4, - }, - }, - state: { - hovered: { - ...text(theme.highest, "mono", "variant", "hovered"), - background: background(theme.highest, "on", "hovered"), - border: { - width: 1, - color: background(theme.highest, "on", "hovered"), - }, - }, - clicked: { - ...text(theme.highest, "mono", "variant", "pressed"), - background: background(theme.highest, "on", "pressed"), - border: { - width: 1, - color: background(theme.highest, "on", "pressed"), - }, - }, - }, - }), - state: { - active: { - default: { - icon_size: 14, - button_width: 32, - color: foreground(theme.highest, "variant"), - background: background(theme.highest, "accent"), - border: border(theme.highest, "accent"), - }, - hovered: { - background: background( - theme.highest, - "accent", - "hovered" - ), - border: border(theme.highest, "accent", "hovered"), - }, - clicked: { - background: background( - theme.highest, - "accent", - "pressed" - ), - border: border(theme.highest, "accent", "pressed"), - }, - }, - }, - }), - editor, - invalid_editor: { - ...editor, - border: border(theme.highest, "negative"), - }, - include_exclude_editor, - invalid_include_exclude_editor: { - ...include_exclude_editor, - border: border(theme.highest, "negative"), - }, - match_index: { - ...text(theme.highest, "mono", { size: "sm" }), - padding: { - left: SEARCH_ROW_SPACING, - right: SEARCH_ROW_SPACING, - }, - }, - option_button_group: { - padding: { - right: SEARCH_ROW_SPACING, - }, - }, - include_exclude_inputs: { - ...text(theme.highest, "mono", "variant"), - padding: { - right: 6, - }, - }, - major_results_status: { - ...text(theme.highest, "mono", "on"), - size: 15, - }, - minor_results_status: { - ...text(theme.highest, "mono", "variant"), - size: 13, - }, - // Input Icon - editor_icon: { - icon: { - color: foreground(theme.highest, "disabled"), - asset: "icons/magnifying_glass.svg", - dimensions: { - width: 14, - height: 14, - }, - }, - container: { - margin: { right: 4 }, - padding: { left: 1, right: 1 }, - }, - }, - // Toggle group buttons - Text | Regex | Semantic - mode_button: toggleable({ - base: interactive({ - base: { - ...text(theme.highest, "mono", "variant", { size: "sm" }), - background: background(theme.highest, "variant"), - - border: { - ...border(theme.highest, "on"), - left: false, - right: false, - }, - margin: { - top: 1, - bottom: 1, - }, - padding: { - left: 10, - right: 10, - }, - corner_radius: 6, - }, - state: { - hovered: { - ...text(theme.highest, "mono", "variant", "hovered", { - size: "sm", - }), - background: background( - theme.highest, - "variant", - "hovered" - ), - border: border(theme.highest, "on", "hovered"), - }, - clicked: { - ...text(theme.highest, "mono", "variant", "pressed", { - size: "sm", - }), - background: background( - theme.highest, - "variant", - "pressed" - ), - border: border(theme.highest, "on", "pressed"), - }, - }, - }), - state: { - active: { - default: { - ...text(theme.highest, "mono", "on", { size: "sm" }), - background: background(theme.highest, "on"), - }, - hovered: { - ...text(theme.highest, "mono", "on", "hovered", { - size: "sm", - }), - background: background(theme.highest, "on", "hovered"), - }, - clicked: { - ...text(theme.highest, "mono", "on", "pressed", { - size: "sm", - }), - background: background(theme.highest, "on", "pressed"), - }, - }, - }, - }), - // Next/Previous Match buttons - // HACK: This is not how disabled elements should be created - // Disabled elements should use a disabled state of an interactive element, not a toggleable element with the inactive state being disabled - nav_button: toggleable({ - state: { - inactive: interactive({ - base: { - background: background(theme.highest, "disabled"), - text: text(theme.highest, "mono", "disabled"), - corner_radius: 6, - border: { - ...border(theme.highest, "disabled"), - left: false, - right: false, - }, - margin: { - top: 1, - bottom: 1, - }, - padding: { - left: 10, - right: 10, - }, - }, - state: { - hovered: {}, - }, - }), - active: interactive({ - base: { - text: text(theme.highest, "mono", "on"), - background: background(theme.highest, "on"), - corner_radius: 6, - border: { - ...border(theme.highest, "on"), - left: false, - right: false, - }, - margin: { - top: 1, - bottom: 1, - }, - padding: { - left: 10, - right: 10, - }, - }, - state: { - hovered: { - ...text(theme.highest, "mono", "on", "hovered"), - background: background( - theme.highest, - "on", - "hovered" - ), - border: border(theme.highest, "on", "hovered"), - }, - clicked: { - ...text(theme.highest, "mono", "on", "pressed"), - background: background( - theme.highest, - "on", - "pressed" - ), - border: border(theme.highest, "on", "pressed"), - }, - }, - }), - }, - }), - search_bar_row_height: 34, - search_row_spacing: 8, - option_button_height: 22, - modes_container: { - padding: { - right: SEARCH_ROW_SPACING, - }, - }, - replace_icon: { - icon: { - color: foreground(theme.highest, "disabled"), - asset: "icons/replace.svg", - dimensions: { - width: 14, - height: 14, - }, - }, - container: { - margin: { right: 4 }, - padding: { left: 1, right: 1 }, - }, - }, - action_button: interactive({ - base: { - icon_size: 14, - color: foreground(theme.highest, "variant"), - - button_width: 32, - background: background(theme.highest, "on"), - corner_radius: 6, - margin: { right: 2 }, - border: { - width: 1, - color: background(theme.highest, "on"), - }, - padding: { - left: 4, - right: 4, - top: 4, - bottom: 4, - }, - }, - state: { - hovered: { - ...text(theme.highest, "mono", "variant", "hovered"), - background: background(theme.highest, "on", "hovered"), - border: { - width: 1, - color: background(theme.highest, "on", "hovered"), - }, - }, - clicked: { - ...text(theme.highest, "mono", "variant", "pressed"), - background: background(theme.highest, "on", "pressed"), - border: { - width: 1, - color: background(theme.highest, "on", "pressed"), - }, - }, - }, - }), - ...search_results(), - } -} diff --git a/styles/src/style_tree/shared_screen.ts b/styles/src/style_tree/shared_screen.ts deleted file mode 100644 index aca7fd7f0778d6984cf5d26aea7cab007fad8ebb..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/shared_screen.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { useTheme } from "../theme" -import { background } from "./components" - -export default function sharedScreen() { - const theme = useTheme() - - return { - background: background(theme.highest), - } -} diff --git a/styles/src/style_tree/simple_message_notification.ts b/styles/src/style_tree/simple_message_notification.ts deleted file mode 100644 index 45ecc0eab90a4cebece12a827638a5e59180beab..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/simple_message_notification.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { background, border, foreground, text } from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" - -export default function simple_message_notification(): any { - const theme = useTheme() - - const header_padding = 8 - - return { - message: { - ...text(theme.middle, "sans", { size: "xs" }), - margin: { left: header_padding, right: header_padding }, - }, - action_message: interactive({ - base: { - ...text(theme.middle, "sans", { size: "xs" }), - border: border(theme.middle, "active"), - corner_radius: 4, - padding: { - top: 3, - bottom: 3, - left: 7, - right: 7, - }, - - margin: { left: header_padding, top: 6, bottom: 6 }, - }, - state: { - hovered: { - ...text(theme.middle, "sans", "default", { size: "xs" }), - background: background(theme.middle, "hovered"), - border: border(theme.middle, "active"), - }, - }, - }), - dismiss_button: interactive({ - base: { - color: foreground(theme.middle), - icon_width: 14, - icon_height: 14, - button_width: 14, - button_height: 14, - }, - state: { - hovered: { - color: foreground(theme.middle, "hovered"), - }, - }, - }), - } -} diff --git a/styles/src/style_tree/status_bar.ts b/styles/src/style_tree/status_bar.ts deleted file mode 100644 index 5ced6b0d7b908d1cac14093dcfc4648d9973742c..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/status_bar.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { background, border, foreground, text } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../common" -import { text_button } from "../component/text_button" - -export default function status_bar(): any { - const theme = useTheme() - - const layer = theme.lowest - - const status_container = { - corner_radius: 6, - padding: { top: 3, bottom: 3, left: 6, right: 6 }, - } - - const diagnostic_status_container = { - corner_radius: 6, - padding: { top: 1, bottom: 1, left: 6, right: 6 }, - } - - return { - height: 30, - item_spacing: 8, - padding: { - top: 1, - bottom: 1, - left: 6, - right: 6, - }, - border: border(layer, { top: true, overlay: true }), - cursor_position: text(layer, "sans", "base", { size: "xs" }), - vim_mode_indicator: { - margin: { left: 6 }, - ...text(layer, "mono", "base", { size: "xs" }), - }, - active_language: text_button({ - color: "base", - }), - auto_update_progress_message: text(layer, "sans", "base", { - size: "xs", - }), - auto_update_done_message: text(layer, "sans", "base", { size: "xs" }), - lsp_status: interactive({ - base: { - ...diagnostic_status_container, - icon_spacing: 4, - icon_width: 14, - height: 18, - message: text(layer, "sans", { size: "xs" }), - icon_color: foreground(layer), - }, - state: { - hovered: { - message: text(layer, "sans", { size: "xs" }), - icon_color: foreground(layer), - background: background(layer, "hovered"), - }, - }, - }), - diagnostic_message: interactive({ - base: { - ...text(layer, "sans", { size: "xs" }), - }, - state: { hovered: text(layer, "sans", "hovered", { size: "xs" }) }, - }), - diagnostic_summary: interactive({ - base: { - height: 20, - icon_width: 14, - icon_spacing: 2, - summary_spacing: 6, - text: text(layer, "sans", { size: "sm" }), - icon_color_ok: foreground(layer, "base"), - icon_color_warning: foreground(layer, "warning"), - icon_color_error: foreground(layer, "negative"), - container_ok: { - corner_radius: 6, - padding: { top: 2, bottom: 2, left: 6, right: 6 }, - }, - container_warning: diagnostic_status_container, - container_error: diagnostic_status_container, - }, - state: { - hovered: { - icon_color_ok: foreground(layer, "on"), - container_ok: { - background: background(layer, "hovered"), - }, - container_warning: { - background: background(layer, "hovered"), - }, - container_error: { - background: background(layer, "hovered"), - }, - }, - clicked: { - icon_color_ok: foreground(layer, "on"), - container_ok: { - background: background(layer, "pressed"), - }, - container_warning: { - background: background(layer, "pressed"), - }, - container_error: { - background: background(layer, "pressed"), - }, - }, - }, - }), - panel_buttons: { - group_left: {}, - group_bottom: {}, - group_right: {}, - button: toggleable({ - base: interactive({ - base: { - ...status_container, - icon_size: 14, - icon_color: foreground(layer, "base"), - background: background(layer, "default"), - label: { - margin: { left: 6 }, - ...text(layer, "sans", { size: "xs" }), - }, - }, - state: { - hovered: { - background: background(layer, "hovered"), - }, - clicked: { - background: background(layer, "pressed"), - }, - }, - }), - state: { - active: { - default: { - icon_color: foreground(layer, "accent", "default"), - background: background(layer, "default"), - }, - hovered: { - icon_color: foreground(layer, "accent", "hovered"), - background: background(layer, "hovered"), - }, - clicked: { - icon_color: foreground(layer, "accent", "pressed"), - background: background(layer, "pressed"), - }, - }, - }, - }), - badge: { - corner_radius: 3, - padding: 2, - margin: { bottom: -1, right: -1 }, - border: border(layer), - background: background(layer, "accent"), - }, - }, - } -} diff --git a/styles/src/style_tree/tab_bar.ts b/styles/src/style_tree/tab_bar.ts deleted file mode 100644 index e1ad1c6c8bf4469ecbef8be733d1a5afc9cba44e..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/tab_bar.ts +++ /dev/null @@ -1,167 +0,0 @@ -import { with_opacity } from "../theme/color" -import { text, border, background, foreground } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../common" - -export default function tab_bar(): any { - const theme = useTheme() - - const { is_light } = theme - - const height = 32 - - const active_layer = theme.highest - const layer = theme.middle - - const tab = { - height, - text: text(layer, "sans", "variant", { size: "sm" }), - background: background(layer), - border: border(layer, { - right: true, - bottom: true, - overlay: true, - }), - padding: { - left: 8, - right: 12, - }, - spacing: 8, - - // Tab type icons (e.g. Project Search) - type_icon_width: 14, - - // Close icons - close_icon_width: 14, - icon_close: foreground(layer, "variant"), - icon_close_active: foreground(layer, "hovered"), - - // Indicators - icon_conflict: foreground(layer, "warning"), - icon_dirty: foreground(layer, "accent"), - - git: { - modified: is_light - ? theme.ramps.yellow(0.6).hex() - : theme.ramps.yellow(0.5).hex(), - inserted: is_light - ? theme.ramps.green(0.45).hex() - : theme.ramps.green(0.5).hex(), - conflict: is_light - ? theme.ramps.red(0.6).hex() - : theme.ramps.red(0.5).hex(), - }, - - // When two tabs of the same name are open, a label appears next to them - description: { - margin: { left: 8 }, - ...text(layer, "sans", "disabled", { size: "2xs" }), - }, - } - - const active_pane_active_tab = { - ...tab, - background: background(active_layer), - text: text(active_layer, "sans", "active", { size: "sm" }), - border: { - ...tab.border, - bottom: false, - }, - } - - const inactive_pane_inactive_tab = { - ...tab, - background: background(layer), - text: text(layer, "sans", "variant", { size: "sm" }), - } - - const inactive_pane_active_tab = { - ...tab, - background: background(active_layer), - text: text(layer, "sans", "variant", { size: "sm" }), - border: { - ...tab.border, - bottom: false, - }, - } - const nav_button = interactive({ - base: { - color: foreground(theme.highest, "on"), - icon_width: 12, - - button_width: active_pane_active_tab.height, - border: border(theme.lowest, "on", { - bottom: true, - overlay: true, - }), - }, - state: { - hovered: { - color: foreground(theme.highest, "on", "hovered"), - background: background(theme.highest, "on", "hovered"), - }, - disabled: { - color: foreground(theme.highest, "on", "disabled"), - }, - }, - }) - - const dragged_tab = { - ...active_pane_active_tab, - background: with_opacity(tab.background, 0.9), - border: undefined as any, - shadow: theme.popover_shadow, - } - - return { - height, - background: background(layer), - active_pane: { - active_tab: active_pane_active_tab, - inactive_tab: tab, - }, - inactive_pane: { - active_tab: inactive_pane_active_tab, - inactive_tab: inactive_pane_inactive_tab, - }, - dragged_tab, - pane_button: toggleable({ - base: interactive({ - base: { - color: foreground(layer, "variant"), - icon_width: 12, - button_width: active_pane_active_tab.height, - }, - state: { - hovered: { - color: foreground(layer, "hovered"), - }, - clicked: { - color: foreground(layer, "pressed"), - }, - }, - }), - state: { - active: { - default: { - color: foreground(layer, "accent"), - }, - hovered: { - color: foreground(layer, "hovered"), - }, - clicked: { - color: foreground(layer, "pressed"), - }, - }, - }, - }), - pane_button_container: { - background: tab.background, - border: { - ...tab.border, - right: false, - }, - }, - nav_button: nav_button, - } -} diff --git a/styles/src/style_tree/terminal.ts b/styles/src/style_tree/terminal.ts deleted file mode 100644 index 5b98eebfcdb416dfd0acdfd7f15076785eec59b7..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/terminal.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { useTheme } from "../theme" - -export default function terminal() { - const theme = useTheme() - - /** - * Colors are controlled per-cell in the terminal grid. - * Cells can be set to any of these more 'theme-capable' colors - * or can be set directly with RGB values. - * Here are the common interpretations of these names: - * https://en.wikipedia.org/wiki/ANSI_escape_code#Colors - */ - return { - black: theme.ramps.neutral(0).hex(), - red: theme.ramps.red(0.5).hex(), - green: theme.ramps.green(0.5).hex(), - yellow: theme.ramps.yellow(0.5).hex(), - blue: theme.ramps.blue(0.5).hex(), - magenta: theme.ramps.magenta(0.5).hex(), - cyan: theme.ramps.cyan(0.5).hex(), - white: theme.ramps.neutral(1).hex(), - bright_black: theme.ramps.neutral(0.4).hex(), - bright_red: theme.ramps.red(0.25).hex(), - bright_green: theme.ramps.green(0.25).hex(), - bright_yellow: theme.ramps.yellow(0.25).hex(), - bright_blue: theme.ramps.blue(0.25).hex(), - bright_magenta: theme.ramps.magenta(0.25).hex(), - bright_cyan: theme.ramps.cyan(0.25).hex(), - bright_white: theme.ramps.neutral(1).hex(), - /** - * Default color for characters - */ - foreground: theme.ramps.neutral(1).hex(), - /** - * Default color for the rectangle background of a cell - */ - background: theme.ramps.neutral(0).hex(), - modal_background: theme.ramps.neutral(0.1).hex(), - /** - * Default color for the cursor - */ - cursor: theme.players[0].cursor, - dim_black: theme.ramps.neutral(1).hex(), - dim_red: theme.ramps.red(0.75).hex(), - dim_green: theme.ramps.green(0.75).hex(), - dim_yellow: theme.ramps.yellow(0.75).hex(), - dim_blue: theme.ramps.blue(0.75).hex(), - dim_magenta: theme.ramps.magenta(0.75).hex(), - dim_cyan: theme.ramps.cyan(0.75).hex(), - dim_white: theme.ramps.neutral(0.6).hex(), - bright_foreground: theme.ramps.neutral(1).hex(), - dim_foreground: theme.ramps.neutral(0).hex(), - } -} diff --git a/styles/src/style_tree/titlebar.ts b/styles/src/style_tree/titlebar.ts deleted file mode 100644 index 63c057a8eb44c45766eda0983565268663eef5d3..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/titlebar.ts +++ /dev/null @@ -1,287 +0,0 @@ -import { icon_button, text_button, toggleable_icon_button, toggleable_text_button } from "../component" -import { interactive, toggleable } from "../element" -import { useTheme, with_opacity } from "../theme" -import { background, border, foreground, text } from "./components" - -const ITEM_SPACING = 8 -const TITLEBAR_HEIGHT = 32 - -function build_spacing( - container_height: number, - element_height: number, - spacing: number -) { - return { - group: spacing, - item: spacing / 2, - half_item: spacing / 4, - margin_y: (container_height - element_height) / 2, - margin_x: (container_height - element_height) / 2, - } -} - -function call_controls() { - const theme = useTheme() - - const button_height = 18 - - const space = build_spacing(TITLEBAR_HEIGHT, button_height, ITEM_SPACING) - const margin_y = { - top: space.margin_y, - bottom: space.margin_y, - } - - return { - toggle_microphone_button: toggleable_icon_button({ - margin: { - ...margin_y, - left: space.group, - right: space.half_item, - }, - active_color: "negative", - active_background_color: "negative", - }), - - toggle_speakers_button: toggleable_icon_button({ - margin: { - ...margin_y, - left: space.half_item, - right: space.half_item, - }, - }), - - screen_share_button: toggleable_icon_button({ - margin: { - ...margin_y, - left: space.half_item, - right: space.group, - }, - active_color: "accent", - active_background_color: "accent", - }), - - muted: foreground(theme.lowest, "negative"), - speaking: foreground(theme.lowest, "accent"), - } -} - -/** - * Opens the User Menu when toggled - * - * When logged in shows the user's avatar and a chevron, - * When logged out only shows a chevron. - */ -function user_menu() { - const theme = useTheme() - - const button_height = 18 - - const space = build_spacing(TITLEBAR_HEIGHT, button_height, ITEM_SPACING) - - const build_button = ({ online }: { online: boolean }) => { - const button = toggleable({ - base: interactive({ - base: { - corner_radius: 6, - height: button_height, - width: 20, - padding: { - top: 2, - bottom: 2, - left: 6, - right: 6, - }, - margin: { - left: space.item, - right: space.item, - }, - ...text(theme.lowest, "sans", { size: "xs" }), - background: background(theme.lowest), - }, - state: { - hovered: { - ...text(theme.lowest, "sans", "hovered", { - size: "xs", - }), - background: background(theme.lowest, "hovered"), - }, - clicked: { - ...text(theme.lowest, "sans", "pressed", { - size: "xs", - }), - background: background(theme.lowest, "pressed"), - }, - }, - }), - state: { - active: { - default: { - ...text(theme.lowest, "sans", "active", { size: "xs" }), - background: background(theme.middle), - }, - hovered: { - ...text(theme.lowest, "sans", "active", { size: "xs" }), - background: background(theme.middle, "hovered"), - }, - clicked: { - ...text(theme.lowest, "sans", "active", { size: "xs" }), - background: background(theme.middle, "pressed"), - }, - }, - }, - }) - - return { - user_menu: button, - avatar: { - icon_width: 16, - icon_height: 16, - corner_radius: 4, - outer_width: 16, - outer_corner_radius: 16, - }, - icon: { - margin: { - top: 2, - left: online ? space.item : 0, - right: space.group, - bottom: 2, - }, - width: 11, - height: 11, - color: foreground(theme.lowest), - }, - } - } - - return { - user_menu_button_online: build_button({ online: true }), - user_menu_button_offline: build_button({ online: false }), - } -} - -export function titlebar(): any { - const theme = useTheme() - - const avatar_width = 15 - const avatar_outer_width = avatar_width + 4 - const follower_avatar_width = 14 - const follower_avatar_outer_width = follower_avatar_width + 4 - - return { - item_spacing: ITEM_SPACING, - face_pile_spacing: 2, - height: TITLEBAR_HEIGHT, - background: background(theme.lowest), - border: border(theme.lowest, { bottom: true }), - padding: { - left: 80, - right: 0, - }, - menu: { - width: 300, - height: 400, - }, - - project_menu_button: toggleable_text_button(theme, { - color: "base" - }), - - git_menu_button: toggleable_text_button(theme, { - color: "variant", - }), - - project_host: text_button({ - text_properties: { - weight: "bold" - } - }), - - // Collaborators - leader_avatar: { - width: avatar_width, - outer_width: avatar_outer_width, - corner_radius: avatar_width / 2, - outer_corner_radius: avatar_outer_width / 2, - }, - follower_avatar: { - width: follower_avatar_width, - outer_width: follower_avatar_outer_width, - corner_radius: follower_avatar_width / 2, - outer_corner_radius: follower_avatar_outer_width / 2, - }, - inactive_avatar_grayscale: true, - follower_avatar_overlap: 8, - leader_selection: { - margin: { - top: 4, - bottom: 4, - }, - padding: { - left: 2, - right: 2, - top: 2, - bottom: 2, - }, - corner_radius: 6, - }, - avatar_ribbon: { - height: 3, - width: 14, - // TODO: Chore: Make avatarRibbon colors driven by the theme rather than being hard coded. - }, - - sign_in_button: toggleable_text_button(theme, {}), - offline_icon: { - color: foreground(theme.lowest, "variant"), - width: 16, - margin: { - left: ITEM_SPACING, - }, - padding: { - right: 4, - }, - }, - - // When the collaboration server is out of date, show a warning - outdated_warning: { - ...text(theme.lowest, "sans", "warning", { size: "xs" }), - background: with_opacity(background(theme.lowest, "warning"), 0.3), - border: border(theme.lowest, "warning"), - margin: { - left: ITEM_SPACING, - }, - padding: { - left: 8, - right: 8, - }, - corner_radius: 6, - }, - - leave_call_button: icon_button({ - margin: { - left: ITEM_SPACING / 2, - right: ITEM_SPACING, - }, - }), - - ...call_controls(), - - toggle_contacts_button: toggleable_icon_button({ - margin: { - left: ITEM_SPACING, - }, - }), - - // Jewel that notifies you that there are new contact requests - toggle_contacts_badge: { - corner_radius: 3, - padding: 2, - margin: { top: 3, left: 3 }, - border: border(theme.lowest), - background: foreground(theme.lowest, "accent"), - }, - share_button: toggleable_text_button(theme, {}), - user_menu: user_menu(), - } -} diff --git a/styles/src/style_tree/toolbar.ts b/styles/src/style_tree/toolbar.ts deleted file mode 100644 index 8ec46d9f2a4b2a99e302dbee82c295cb84d410cd..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/toolbar.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { useTheme } from "../common" -import { toggleable_icon_button } from "../component/icon_button" -import { interactive, toggleable } from "../element" -import { background, border, foreground, text } from "./components" -import { text_button } from "../component" - -export const toolbar = () => { - const theme = useTheme() - - return { - height: 42, - padding: { left: 8, right: 8 }, - background: background(theme.highest), - border: border(theme.highest, { bottom: true }), - item_spacing: 4, - toggleable_tool: toggleable_icon_button({ - margin: { left: 4 }, - variant: "ghost", - active_color: "accent", - }), - breadcrumb_height: 24, - breadcrumbs: interactive({ - base: { - ...text(theme.highest, "sans", "variant"), - corner_radius: 6, - padding: { - left: 4, - right: 4, - } - }, - state: { - hovered: { - color: foreground(theme.highest, "on", "hovered"), - background: background(theme.highest, "on", "hovered"), - }, - }, - }), - toggleable_text_tool: toggleable({ - state: { - inactive: text_button({ - disabled: true, - variant: "ghost", - layer: theme.highest, - margin: { left: 4 }, - text_properties: { size: "sm" }, - border: border(theme.middle), - }), - active: text_button({ - variant: "ghost", - layer: theme.highest, - margin: { left: 4 }, - text_properties: { size: "sm" }, - border: border(theme.middle), - }), - } - }), - } -} diff --git a/styles/src/style_tree/toolbar_dropdown_menu.ts b/styles/src/style_tree/toolbar_dropdown_menu.ts deleted file mode 100644 index 97f29ab18c0b873f68b4b020bb2722cadfaa1fbc..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/toolbar_dropdown_menu.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { background, border, text } from "./components" -import { interactive, toggleable } from "../element" -import { useTheme } from "../theme" -export default function dropdown_menu(): any { - const theme = useTheme() - - return { - row_height: 30, - background: background(theme.middle), - border: border(theme.middle), - shadow: theme.popover_shadow, - header: interactive({ - base: { - ...text(theme.middle, "sans", { size: "sm" }), - secondary_text: text(theme.middle, "sans", { - size: "sm", - color: "#aaaaaa", - }), - secondary_text_spacing: 10, - padding: { left: 8, right: 8, top: 2, bottom: 2 }, - corner_radius: 6, - background: background(theme.middle, "on"), - }, - state: { - hovered: { - background: background(theme.middle, "hovered"), - }, - clicked: { - background: background(theme.middle, "pressed"), - }, - }, - }), - section_header: { - ...text(theme.middle, "sans", { size: "sm" }), - padding: { left: 8, right: 8, top: 8, bottom: 8 }, - }, - item: toggleable({ - base: interactive({ - base: { - ...text(theme.middle, "sans", { size: "sm" }), - secondary_text_spacing: 10, - secondary_text: text(theme.middle, "sans", { size: "sm" }), - padding: { left: 18, right: 18, top: 2, bottom: 2 }, - }, - state: { - hovered: { - background: background(theme.middle, "hovered"), - ...text(theme.middle, "sans", "hovered", { - size: "sm", - }), - }, - }, - }), - state: { - active: { - default: { - background: background(theme.middle, "active"), - }, - hovered: { - background: background(theme.middle, "hovered"), - }, - }, - }, - }), - } -} diff --git a/styles/src/style_tree/tooltip.ts b/styles/src/style_tree/tooltip.ts deleted file mode 100644 index 54a2d7b78de071f316ee0151a2f99e7f4198d842..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/tooltip.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { useTheme } from "../theme" -import { background, border, text } from "./components" - -export default function tooltip(): any { - const theme = useTheme() - - return { - background: background(theme.middle), - border: border(theme.middle), - padding: { top: 4, bottom: 4, left: 8, right: 8 }, - margin: { top: 6, left: 6 }, - shadow: theme.popover_shadow, - corner_radius: 6, - text: text(theme.middle, "sans", { size: "xs" }), - keystroke: { - background: background(theme.middle, "on"), - corner_radius: 4, - margin: { left: 6 }, - padding: { left: 4, right: 4 }, - ...text(theme.middle, "mono", "on", { size: "xs", weight: "bold" }), - }, - max_text_width: 200, - } -} diff --git a/styles/src/style_tree/update_notification.ts b/styles/src/style_tree/update_notification.ts deleted file mode 100644 index 743f0a4c4eaeb06433aa9d5a62db53347d83aa07..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/update_notification.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { foreground, text } from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" - -export default function update_notification(): any { - const theme = useTheme() - - const header_padding = 8 - - return { - message: { - ...text(theme.middle, "sans", { size: "xs" }), - margin: { left: header_padding, right: header_padding }, - }, - action_message: interactive({ - base: { - ...text(theme.middle, "sans", { size: "xs" }), - margin: { left: header_padding, top: 6, bottom: 6 }, - }, - state: { - hovered: { - color: foreground(theme.middle, "hovered"), - }, - }, - }), - dismiss_button: interactive({ - base: { - color: foreground(theme.middle), - icon_width: 14, - icon_height: 14, - button_width: 14, - button_height: 14, - }, - state: { - hovered: { - color: foreground(theme.middle, "hovered"), - }, - }, - }), - } -} diff --git a/styles/src/style_tree/welcome.ts b/styles/src/style_tree/welcome.ts deleted file mode 100644 index 284a262a230896650f729422c9a184de86352559..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/welcome.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { with_opacity } from "../theme/color" -import { - border, - background, - foreground, - text, - TextProperties, - svg, -} from "./components" -import { interactive } from "../element" -import { useTheme } from "../theme" - -export default function welcome(): any { - const theme = useTheme() - - const checkbox_base = { - corner_radius: 4, - padding: { - left: 3, - right: 3, - top: 3, - bottom: 3, - }, - // shadow: theme.popover_shadow, - border: border(theme.highest), - margin: { - right: 8, - top: 5, - bottom: 5, - }, - } - - const interactive_text_size: TextProperties = { size: "sm" } - - return { - page_width: 320, - logo: svg( - foreground(theme.highest, "default"), - "icons/logo_96.svg", - 64, - 64 - ), - logo_subheading: { - ...text(theme.highest, "sans", "variant", { size: "md" }), - margin: { - top: 10, - bottom: 7, - }, - }, - button_group: { - margin: { - top: 8, - bottom: 16, - }, - }, - heading_group: { - margin: { - top: 8, - bottom: 12, - }, - }, - checkbox_group: { - border: border(theme.highest, "variant"), - background: with_opacity( - background(theme.highest, "hovered"), - 0.25 - ), - corner_radius: 4, - padding: { - left: 12, - top: 2, - bottom: 2, - }, - }, - button: interactive({ - base: { - background: background(theme.highest), - border: border(theme.highest, "active"), - corner_radius: 4, - margin: { - top: 4, - bottom: 4, - }, - padding: { - top: 3, - bottom: 3, - left: 7, - right: 7, - }, - ...text( - theme.highest, - "sans", - "default", - interactive_text_size - ), - }, - state: { - hovered: { - ...text( - theme.highest, - "sans", - "default", - interactive_text_size - ), - background: background(theme.highest, "hovered"), - }, - }, - }), - - usage_note: { - ...text(theme.highest, "sans", "variant", { size: "2xs" }), - padding: { - top: -4, - }, - }, - checkbox_container: { - margin: { - top: 4, - }, - padding: { - bottom: 8, - }, - }, - checkbox: { - label: { - ...text(theme.highest, "sans", interactive_text_size), - // Also supports margin, container, border, etc. - }, - icon: svg( - foreground(theme.highest, "on"), - "icons/check.svg", - 12, - 12 - ), - default: { - ...checkbox_base, - background: background(theme.highest, "default"), - border: border(theme.highest, "active"), - }, - checked: { - ...checkbox_base, - background: background(theme.highest, "hovered"), - border: border(theme.highest, "active"), - }, - hovered: { - ...checkbox_base, - background: background(theme.highest, "hovered"), - border: border(theme.highest, "active"), - }, - hovered_and_checked: { - ...checkbox_base, - background: background(theme.highest, "hovered"), - border: border(theme.highest, "active"), - }, - }, - } -} diff --git a/styles/src/style_tree/workspace.ts b/styles/src/style_tree/workspace.ts deleted file mode 100644 index ba89c7b05ffe12e617c0570ef458c18f6a99d286..0000000000000000000000000000000000000000 --- a/styles/src/style_tree/workspace.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { with_opacity } from "../theme/color" -import { - background, - border, - border_color, - foreground, - svg, - text, -} from "./components" -import statusBar from "./status_bar" -import tabBar from "./tab_bar" -import { interactive } from "../element" -import { titlebar } from "./titlebar" -import { useTheme } from "../theme" -import { toolbar } from "./toolbar" - -export default function workspace(): any { - const theme = useTheme() - - const { is_light } = theme - - return { - background: background(theme.lowest), - blank_pane: { - logo_container: { - width: 256, - height: 256, - }, - logo: svg( - with_opacity("#000000", theme.is_light ? 0.6 : 0.8), - "icons/logo_96.svg", - 256, - 256 - ), - - logo_shadow: svg( - with_opacity( - theme.is_light - ? "#FFFFFF" - : theme.lowest.base.default.background, - theme.is_light ? 1 : 0.6 - ), - "icons/logo_96.svg", - 256, - 256 - ), - keyboard_hints: { - margin: { - top: 96, - }, - corner_radius: 4, - }, - keyboard_hint: interactive({ - base: { - ...text(theme.lowest, "sans", "variant", { size: "sm" }), - padding: { - top: 3, - left: 8, - right: 8, - bottom: 3, - }, - corner_radius: 8, - }, - state: { - hovered: { - ...text(theme.lowest, "sans", "active", { size: "sm" }), - }, - }, - }), - - keyboard_hint_width: 320, - }, - joining_project_avatar: { - corner_radius: 40, - width: 80, - }, - joining_project_message: { - padding: 12, - ...text(theme.lowest, "sans", { size: "lg" }), - }, - external_location_message: { - background: background(theme.middle, "accent"), - border: border(theme.middle, "accent"), - corner_radius: 6, - padding: 12, - margin: { bottom: 8, right: 8 }, - ...text(theme.middle, "sans", "accent", { size: "xs" }), - }, - leader_border_opacity: 0.7, - leader_border_width: 2.0, - tab_bar: tabBar(), - modal: { - margin: { - bottom: 52, - top: 52, - }, - cursor: "Arrow", - }, - zoomed_background: { - cursor: "Arrow", - background: is_light - ? with_opacity(background(theme.lowest), 0.8) - : with_opacity(background(theme.highest), 0.6), - }, - zoomed_pane_foreground: { - margin: 16, - shadow: theme.modal_shadow, - border: border(theme.lowest, { overlay: true }), - }, - zoomed_panel_foreground: { - margin: 16, - border: border(theme.lowest, { overlay: true }), - }, - dock: { - left: { - border: border(theme.lowest, { right: true }), - }, - bottom: { - border: border(theme.lowest, { top: true }), - }, - right: { - border: border(theme.lowest, { left: true }), - }, - }, - pane_divider: { - color: border_color(theme.lowest), - width: 1, - }, - status_bar: statusBar(), - titlebar: titlebar(), - toolbar: toolbar(), - disconnected_overlay: { - ...text(theme.lowest, "sans"), - background: with_opacity(background(theme.lowest), 0.8), - }, - notification: { - margin: { top: 10 }, - background: background(theme.middle), - corner_radius: 6, - padding: 12, - border: border(theme.middle), - shadow: theme.popover_shadow, - }, - notifications: { - width: 400, - margin: { right: 10, bottom: 10 }, - }, - drop_target_overlay_color: with_opacity( - foreground(theme.lowest, "variant"), - 0.5 - ), - } -} diff --git a/styles/src/theme/color.ts b/styles/src/theme/color.ts deleted file mode 100644 index 83c2107483664986819a1f0e7c2eb42ac2c4b2d7..0000000000000000000000000000000000000000 --- a/styles/src/theme/color.ts +++ /dev/null @@ -1,5 +0,0 @@ -import chroma from "chroma-js" - -export function with_opacity(color: string, opacity: number): string { - return chroma(color).alpha(opacity).hex() -} diff --git a/styles/src/theme/create_theme.ts b/styles/src/theme/create_theme.ts deleted file mode 100644 index 61471616fbada3e948833a017cc76bb1ae14ab6e..0000000000000000000000000000000000000000 --- a/styles/src/theme/create_theme.ts +++ /dev/null @@ -1,329 +0,0 @@ -import { Scale, Color } from "chroma-js" -import { Syntax, ThemeSyntax, SyntaxHighlightStyle } from "./syntax" -export { Syntax, ThemeSyntax, SyntaxHighlightStyle } -import { - ThemeConfig, - ThemeAppearance, - ThemeConfigInputColors, -} from "./theme_config" -import { get_ramps } from "./ramps" - -export interface Theme { - name: string - is_light: boolean - - /** - * App background, other elements that should sit directly on top of the background. - */ - lowest: Layer - /** - * Panels, tabs, other UI surfaces that sit on top of the background. - */ - middle: Layer - /** - * Editors like code buffers, conversation editors, etc. - */ - highest: Layer - - ramps: RampSet - - popover_shadow: Shadow - modal_shadow: Shadow - - players: Players - syntax?: Partial - color_family: ColorFamily -} - -export interface Meta { - name: string - author: string - url: string - license: License -} - -export interface License { - SPDX: SPDXExpression -} - -// License name -> License text -export interface Licenses { - [key: string]: string -} - -// FIXME: Add support for the SPDX expression syntax -export type SPDXExpression = "MIT" - -export interface Player { - cursor: string - selection: string -} - -export interface Players { - "0": Player - "1": Player - "2": Player - "3": Player - "4": Player - "5": Player - "6": Player - "7": Player -} - -export type ColorFamily = Partial<{ [K in keyof RampSet]: ColorFamilyRange }> - -export interface ColorFamilyRange { - low: number - high: number - range: number - scaling_value: number -} - -export interface Shadow { - blur: number - color: string - offset: number[] -} - -export type StyleSets = keyof Layer -export interface Layer { - base: StyleSet - variant: StyleSet - on: StyleSet - accent: StyleSet - positive: StyleSet - warning: StyleSet - negative: StyleSet -} - -export interface RampSet { - neutral: Scale - red: Scale - orange: Scale - yellow: Scale - green: Scale - cyan: Scale - blue: Scale - violet: Scale - magenta: Scale -} - -export type Styles = keyof StyleSet -export interface StyleSet { - default: Style - active: Style - disabled: Style - hovered: Style - pressed: Style - inverted: Style -} - -export interface Style { - background: string - border: string - foreground: string -} - -export function create_theme(theme: ThemeConfig): Theme { - const { - name, - appearance, - input_color, - override: { syntax }, - } = theme - - const is_light = appearance === ThemeAppearance.Light - const color_ramps: ThemeConfigInputColors = input_color - - // Chromajs scales from 0 to 1 flipped if is_light is true - const ramps = get_ramps(is_light, color_ramps) - const lowest = lowest_layer(ramps) - const middle = middle_layer(ramps) - const highest = highest_layer(ramps) - - const popover_shadow = { - blur: 4, - color: ramps - .neutral(is_light ? 7 : 0) - .darken() - .alpha(0.2) - .hex(), // TODO used blend previously. Replace with something else - offset: [1, 2], - } - - const modal_shadow = { - blur: 16, - color: ramps - .neutral(is_light ? 7 : 0) - .darken() - .alpha(0.2) - .hex(), // TODO used blend previously. Replace with something else - offset: [0, 2], - } - - const players = { - "0": player(ramps.blue), - "1": player(ramps.green), - "2": player(ramps.magenta), - "3": player(ramps.orange), - "4": player(ramps.violet), - "5": player(ramps.cyan), - "6": player(ramps.red), - "7": player(ramps.yellow), - } - - const color_family = build_color_family(ramps) - - return { - name, - is_light, - - ramps, - - lowest, - middle, - highest, - - popover_shadow, - modal_shadow, - - players, - syntax, - color_family, - } -} - -function player(ramp: Scale): Player { - return { - selection: ramp(0.5).alpha(0.24).hex(), - cursor: ramp(0.5).hex(), - } -} - -function build_color_family(ramps: RampSet): ColorFamily { - const color_family: ColorFamily = {} - - for (const ramp in ramps) { - const ramp_value = ramps[ramp as keyof RampSet] - - const lightnessValues = [ - ramp_value(0).get("hsl.l") * 100, - ramp_value(1).get("hsl.l") * 100, - ] - const low = Math.min(...lightnessValues) - const high = Math.max(...lightnessValues) - const range = high - low - - color_family[ramp as keyof RampSet] = { - low, - high, - range, - scaling_value: 100 / range, - } - } - - return color_family -} - -function lowest_layer(ramps: RampSet): Layer { - return { - base: build_style_set(ramps.neutral, 0.2, 1), - variant: build_style_set(ramps.neutral, 0.2, 0.7), - on: build_style_set(ramps.neutral, 0.1, 1), - accent: build_style_set(ramps.blue, 0.1, 0.5), - positive: build_style_set(ramps.green, 0.1, 0.5), - warning: build_style_set(ramps.yellow, 0.1, 0.5), - negative: build_style_set(ramps.red, 0.1, 0.5), - } -} - -function middle_layer(ramps: RampSet): Layer { - return { - base: build_style_set(ramps.neutral, 0.1, 1), - variant: build_style_set(ramps.neutral, 0.1, 0.7), - on: build_style_set(ramps.neutral, 0, 1), - accent: build_style_set(ramps.blue, 0.1, 0.5), - positive: build_style_set(ramps.green, 0.1, 0.5), - warning: build_style_set(ramps.yellow, 0.1, 0.5), - negative: build_style_set(ramps.red, 0.1, 0.5), - } -} - -function highest_layer(ramps: RampSet): Layer { - return { - base: build_style_set(ramps.neutral, 0, 1), - variant: build_style_set(ramps.neutral, 0, 0.7), - on: build_style_set(ramps.neutral, 0.1, 1), - accent: build_style_set(ramps.blue, 0.1, 0.5), - positive: build_style_set(ramps.green, 0.1, 0.5), - warning: build_style_set(ramps.yellow, 0.1, 0.5), - negative: build_style_set(ramps.red, 0.1, 0.5), - } -} - -function build_style_set( - ramp: Scale, - background_base: number, - foreground_base: number, - step = 0.08 -): StyleSet { - const style_definitions = build_style_definition( - background_base, - foreground_base, - step - ) - - function color_string(index_or_color: number | Color): string { - if (typeof index_or_color === "number") { - return ramp(index_or_color).hex() - } else { - return index_or_color.hex() - } - } - - function build_style(style: Styles): Style { - return { - background: color_string(style_definitions.background[style]), - border: color_string(style_definitions.border[style]), - foreground: color_string(style_definitions.foreground[style]), - } - } - - return { - default: build_style("default"), - hovered: build_style("hovered"), - pressed: build_style("pressed"), - active: build_style("active"), - disabled: build_style("disabled"), - inverted: build_style("inverted"), - } -} - -function build_style_definition(bg_base: number, fg_base: number, step = 0.08) { - return { - background: { - default: bg_base, - hovered: bg_base + step, - pressed: bg_base + step * 1.5, - active: bg_base + step * 2.2, - disabled: bg_base, - inverted: fg_base + step * 6, - }, - border: { - default: bg_base + step * 1, - hovered: bg_base + step, - pressed: bg_base + step, - active: bg_base + step * 3, - disabled: bg_base + step * 0.5, - inverted: bg_base - step * 3, - }, - foreground: { - default: fg_base, - hovered: fg_base, - pressed: fg_base, - active: fg_base + step * 6, - disabled: bg_base + step * 4, - inverted: bg_base + step * 2, - }, - } -} diff --git a/styles/src/theme/index.ts b/styles/src/theme/index.ts deleted file mode 100644 index 47110940f550b1f8491d541ac800f7447bc4ec17..0000000000000000000000000000000000000000 --- a/styles/src/theme/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { create } from "zustand" -import { Theme } from "./create_theme" - -type ThemeState = { - theme: Theme | undefined - setTheme: (theme: Theme) => void -} - -export const useThemeStore = create((set) => ({ - theme: undefined, - setTheme: (theme) => set(() => ({ theme })), -})) - -export const useTheme = (): Theme => { - const { theme } = useThemeStore.getState() - - if (!theme) throw new Error("Tried to use theme before it was loaded") - - return theme -} - -export * from "./create_theme" -export * from "./ramps" -export * from "./syntax" -export * from "./theme_config" -export * from "./color" diff --git a/styles/src/theme/ramps.ts b/styles/src/theme/ramps.ts deleted file mode 100644 index c5b915a8c50c02529d136f0d42c9d6c61d832eaa..0000000000000000000000000000000000000000 --- a/styles/src/theme/ramps.ts +++ /dev/null @@ -1,47 +0,0 @@ -import chroma, { Color, Scale } from "chroma-js" -import { RampSet } from "./create_theme" -import { - ThemeConfigInputColors, - ThemeConfigInputColorsKeys, -} from "./theme_config" - -export function color_ramp(color: Color): Scale { - const end_color = color.desaturate(1).brighten(5) - const start_color = color.desaturate(1).darken(4) - return chroma.scale([start_color, color, end_color]).mode("lab") -} - -/** - * Chromajs mutates the underlying ramp when you call domain. This causes problems because - we now store the ramps object in the theme so that we can pull colors out of them. - So instead of calling domain and storing the result, we have to construct new ramps for each - theme so that we don't modify the passed in ramps. - This combined with an error in the type definitions for chroma js means we have to cast the colors - function to any in order to get the colors back out from the original ramps. - * @param is_light - * @param color_ramps - * @returns - */ -export function get_ramps( - is_light: boolean, - color_ramps: ThemeConfigInputColors -): RampSet { - const ramps: RampSet = {} as any // eslint-disable-line @typescript-eslint/no-explicit-any - const color_keys = Object.keys(color_ramps) as ThemeConfigInputColorsKeys[] - - if (is_light) { - for (const ramp_name of color_keys) { - ramps[ramp_name] = chroma.scale( - color_ramps[ramp_name].colors(100).reverse() - ) - } - ramps.neutral = chroma.scale(color_ramps.neutral.colors(100).reverse()) - } else { - for (const ramp_name of color_keys) { - ramps[ramp_name] = chroma.scale(color_ramps[ramp_name].colors(100)) - } - ramps.neutral = chroma.scale(color_ramps.neutral.colors(100)) - } - - return ramps -} diff --git a/styles/src/theme/syntax.ts b/styles/src/theme/syntax.ts deleted file mode 100644 index 540a1d0ff9822d5a8c2cf292ddba5ace6839ac6d..0000000000000000000000000000000000000000 --- a/styles/src/theme/syntax.ts +++ /dev/null @@ -1,332 +0,0 @@ -import deepmerge from "deepmerge" -import { FontWeight, font_weights, useTheme } from "../common" -import chroma from "chroma-js" - -export interface SyntaxHighlightStyle { - color?: string - weight?: FontWeight - underline?: boolean - italic?: boolean -} - -export interface Syntax { - // == Text Styles ====== / - comment: SyntaxHighlightStyle - // elixir: doc comment - "comment.doc": SyntaxHighlightStyle - primary: SyntaxHighlightStyle - predictive: SyntaxHighlightStyle - hint: SyntaxHighlightStyle - - // === Formatted Text ====== / - emphasis: SyntaxHighlightStyle - "emphasis.strong": SyntaxHighlightStyle - title: SyntaxHighlightStyle - link_uri: SyntaxHighlightStyle - link_text: SyntaxHighlightStyle - /** md: indented_code_block, fenced_code_block, code_span */ - "text.literal": SyntaxHighlightStyle - - // == Punctuation ====== / - punctuation: SyntaxHighlightStyle - /** Example: `(`, `[`, `{`...*/ - "punctuation.bracket": SyntaxHighlightStyle - /**., ;*/ - "punctuation.delimiter": SyntaxHighlightStyle - // js, ts: ${, } in a template literal - // yaml: *, &, ---, ... - "punctuation.special": SyntaxHighlightStyle - // md: list_marker_plus, list_marker_dot, etc - "punctuation.list_marker": SyntaxHighlightStyle - - // == Strings ====== / - - string: SyntaxHighlightStyle - // css: color_value - // js: this, super - // toml: offset_date_time, local_date_time... - "string.special": SyntaxHighlightStyle - // elixir: atom, quoted_atom, keyword, quoted_keyword - // ruby: simple_symbol, delimited_symbol... - "string.special.symbol"?: SyntaxHighlightStyle - // elixir, python, yaml...: escape_sequence - "string.escape"?: SyntaxHighlightStyle - // Regular expressions - "string.regex"?: SyntaxHighlightStyle - - // == Types ====== / - // We allow Function here because all JS objects literals have this property - constructor: SyntaxHighlightStyle | Function // eslint-disable-line @typescript-eslint/ban-types - variant: SyntaxHighlightStyle - type: SyntaxHighlightStyle - // js: predefined_type - "type.builtin"?: SyntaxHighlightStyle - - // == Values - variable: SyntaxHighlightStyle - // this, ... - // css: -- (var(--foo)) - // lua: self - "variable.special"?: SyntaxHighlightStyle - // c: statement_identifier, - label: SyntaxHighlightStyle - // css: tag_name, nesting_selector, universal_selector... - tag: SyntaxHighlightStyle - // css: attribute, pseudo_element_selector (tag_name), - attribute: SyntaxHighlightStyle - // css: class_name, property_name, namespace_name... - property: SyntaxHighlightStyle - // true, false, null, nullptr - constant: SyntaxHighlightStyle - // css: @media, @import, @supports... - // js: declare, implements, interface, keyof, public... - keyword: SyntaxHighlightStyle - // note: js enum is currently defined as a keyword - enum: SyntaxHighlightStyle - // -, --, ->, !=, &&, ||, <=... - operator: SyntaxHighlightStyle - number: SyntaxHighlightStyle - boolean: SyntaxHighlightStyle - // elixir: __MODULE__, __DIR__, __ENV__, etc - // go: nil, iota - "constant.builtin"?: SyntaxHighlightStyle - - // == Functions ====== / - - function: SyntaxHighlightStyle - // lua: assert, error, loadfile, tostring, unpack... - "function.builtin"?: SyntaxHighlightStyle - // go: call_expression, method_declaration - // js: call_expression, method_definition, pair (key, arrow function) - // rust: function_item name: (identifier) - "function.definition"?: SyntaxHighlightStyle - // rust: macro_definition name: (identifier) - "function.special.definition"?: SyntaxHighlightStyle - "function.method"?: SyntaxHighlightStyle - // ruby: identifier/"defined?" // Nate note: I don't fully understand this one. - "function.method.builtin"?: SyntaxHighlightStyle - - // == Unsorted ====== / - // lua: hash_bang_line - preproc: SyntaxHighlightStyle - // elixir, python: interpolation (ex: foo in ${foo}) - // js: template_substitution - embedded: SyntaxHighlightStyle -} - -export type ThemeSyntax = Partial - -const default_syntax_highlight_style: Omit = { - weight: "normal", - underline: false, - italic: false, -} - -function build_default_syntax(): Syntax { - const theme = useTheme() - - // Make a temporary object that is allowed to be missing - // the "color" property for each style - const syntax: { - [key: string]: Omit - } = {} - - // then spread the default to each style - for (const key of Object.keys({} as Syntax)) { - syntax[key as keyof Syntax] = { - ...default_syntax_highlight_style, - } - } - - // Mix the neutral and blue colors to get a - // predictive color distinct from any other color in the theme - const predictive = chroma - .mix( - theme.ramps.neutral(0.4).hex(), - theme.ramps.blue(0.4).hex(), - 0.45, - "lch" - ) - .hex() - // Mix the neutral and green colors to get a - // hint color distinct from any other color in the theme - const hint = chroma - .mix( - theme.ramps.neutral(0.6).hex(), - theme.ramps.blue(0.4).hex(), - 0.45, - "lch" - ) - .hex() - - const color = { - primary: theme.ramps.neutral(1).hex(), - comment: theme.ramps.neutral(0.71).hex(), - punctuation: theme.ramps.neutral(0.86).hex(), - predictive: predictive, - hint: hint, - emphasis: theme.ramps.blue(0.5).hex(), - string: theme.ramps.orange(0.5).hex(), - function: theme.ramps.yellow(0.5).hex(), - type: theme.ramps.cyan(0.5).hex(), - constructor: theme.ramps.blue(0.5).hex(), - variant: theme.ramps.blue(0.5).hex(), - property: theme.ramps.blue(0.5).hex(), - enum: theme.ramps.orange(0.5).hex(), - operator: theme.ramps.orange(0.5).hex(), - number: theme.ramps.green(0.5).hex(), - boolean: theme.ramps.green(0.5).hex(), - constant: theme.ramps.green(0.5).hex(), - keyword: theme.ramps.blue(0.5).hex(), - } - - // Then assign colors and use Syntax to enforce each style getting it's own color - const default_syntax: Syntax = { - ...syntax, - comment: { - color: color.comment, - }, - "comment.doc": { - color: color.comment, - }, - primary: { - color: color.primary, - }, - predictive: { - color: color.predictive, - italic: true, - }, - hint: { - color: color.hint, - weight: font_weights.bold, - }, - emphasis: { - color: color.emphasis, - }, - "emphasis.strong": { - color: color.emphasis, - weight: font_weights.bold, - }, - title: { - color: color.primary, - weight: font_weights.bold, - }, - link_uri: { - color: theme.ramps.green(0.5).hex(), - underline: true, - }, - link_text: { - color: theme.ramps.orange(0.5).hex(), - italic: true, - }, - "text.literal": { - color: color.string, - }, - punctuation: { - color: color.punctuation, - }, - "punctuation.bracket": { - color: color.punctuation, - }, - "punctuation.delimiter": { - color: color.punctuation, - }, - "punctuation.special": { - color: theme.ramps.neutral(0.86).hex(), - }, - "punctuation.list_marker": { - color: color.punctuation, - }, - string: { - color: color.string, - }, - "string.special": { - color: color.string, - }, - "string.special.symbol": { - color: color.string, - }, - "string.escape": { - color: color.comment, - }, - "string.regex": { - color: color.string, - }, - constructor: { - color: theme.ramps.blue(0.5).hex(), - }, - variant: { - color: theme.ramps.blue(0.5).hex(), - }, - type: { - color: color.type, - }, - variable: { - color: color.primary, - }, - label: { - color: theme.ramps.blue(0.5).hex(), - }, - tag: { - color: theme.ramps.blue(0.5).hex(), - }, - attribute: { - color: theme.ramps.blue(0.5).hex(), - }, - property: { - color: theme.ramps.blue(0.5).hex(), - }, - constant: { - color: color.constant, - }, - keyword: { - color: color.keyword, - }, - enum: { - color: color.enum, - }, - operator: { - color: color.operator, - }, - number: { - color: color.number, - }, - boolean: { - color: color.boolean, - }, - function: { - color: color.function, - }, - preproc: { - color: color.primary, - }, - embedded: { - color: color.primary, - }, - } - - return default_syntax -} - -export function build_syntax(): Syntax { - const theme = useTheme() - - const default_syntax: Syntax = build_default_syntax() - - if (!theme.syntax) { - return default_syntax - } - - const syntax = deepmerge>( - default_syntax, - theme.syntax, - { - arrayMerge: (destinationArray, sourceArray) => [ - ...destinationArray, - ...sourceArray, - ], - } - ) - - return syntax -} diff --git a/styles/src/theme/theme_config.ts b/styles/src/theme/theme_config.ts deleted file mode 100644 index bc8f07425f9e676a27d36ec929ea9a116006c694..0000000000000000000000000000000000000000 --- a/styles/src/theme/theme_config.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { Scale, Color } from "chroma-js" -import { Syntax } from "./syntax" - -interface ThemeMeta { - /** The name of the theme */ - name: string - /** The theme's appearance. Either `light` or `dark`. */ - appearance: ThemeAppearance - /** The author of the theme - * - * Ideally formatted as `Full Name ` - * - * Example: `John Doe ` - */ - author: string - /** SPDX License string - * - * Example: `MIT` - */ - license_type?: string | ThemeLicenseType - license_url?: string - license_file: string - theme_url?: string -} - -export type ThemeFamilyMeta = Pick< - ThemeMeta, - "name" | "author" | "license_type" | "license_url" -> - -export interface ThemeConfigInputColors { - neutral: Scale - red: Scale - orange: Scale - yellow: Scale - green: Scale - cyan: Scale - blue: Scale - violet: Scale - magenta: Scale -} - -export type ThemeConfigInputColorsKeys = keyof ThemeConfigInputColors - -/** Allow any part of a syntax highlight style to be overriden by the theme - * - * Example: - * ```ts - * override: { - * syntax: { - * boolean: { - * underline: true, - * }, - * }, - * } - * ``` - */ -export type ThemeConfigInputSyntax = Partial - -interface ThemeConfigOverrides { - syntax: ThemeConfigInputSyntax -} - -type ThemeConfigProperties = ThemeMeta & { - input_color: ThemeConfigInputColors - override: ThemeConfigOverrides -} - -export type ThemeConfig = { - [K in keyof ThemeConfigProperties]: ThemeConfigProperties[K] -} - -export enum ThemeAppearance { - Light = "light", - Dark = "dark", -} - -export enum ThemeLicenseType { - MIT = "MIT", - Apache2 = "Apache License 2.0", -} diff --git a/styles/src/theme/tokens/layer.ts b/styles/src/theme/tokens/layer.ts deleted file mode 100644 index 6b4e1d79f761bb389838044d668769f7a12e4f74..0000000000000000000000000000000000000000 --- a/styles/src/theme/tokens/layer.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { SingleColorToken } from "@tokens-studio/types" -import { Layer, Style, StyleSet } from "../create_theme" -import { color_token } from "./token" - -interface StyleToken { - background: SingleColorToken - border: SingleColorToken - foreground: SingleColorToken -} - -interface StyleSetToken { - default: StyleToken - active: StyleToken - disabled: StyleToken - hovered: StyleToken - pressed: StyleToken - inverted: StyleToken -} - -export interface LayerToken { - base: StyleSetToken - variant: StyleSetToken - on: StyleSetToken - accent: StyleSetToken - positive: StyleSetToken - warning: StyleSetToken - negative: StyleSetToken -} - -export const style_token = (style: Style, name: string): StyleToken => { - const token = { - background: color_token(`${name}Background`, style.background), - border: color_token(`${name}Border`, style.border), - foreground: color_token(`${name}Foreground`, style.foreground), - } - - return token -} - -export const style_set_token = ( - style_set: StyleSet, - name: string -): StyleSetToken => { - const token: StyleSetToken = {} as StyleSetToken - - for (const style in style_set) { - const s = style as keyof StyleSet - token[s] = style_token(style_set[s], `${name}${style}`) - } - - return token -} - -export const layer_token = (layer: Layer, name: string): LayerToken => { - const token: LayerToken = {} as LayerToken - - for (const style_set in layer) { - const s = style_set as keyof Layer - token[s] = style_set_token(layer[s], `${name}${style_set}`) - } - - return token -} diff --git a/styles/src/theme/tokens/players.ts b/styles/src/theme/tokens/players.ts deleted file mode 100644 index 4bf605aa93f00e3de3bb84c01c1a9e82f3989d20..0000000000000000000000000000000000000000 --- a/styles/src/theme/tokens/players.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { SingleColorToken } from "@tokens-studio/types" -import { color_token } from "./token" -import { Players } from "../create_theme" -import { useTheme } from "../../../src/common" - -export type PlayerToken = Record<"selection" | "cursor", SingleColorToken> - -export type PlayersToken = Record - -function build_player_token(index: number): PlayerToken { - const theme = useTheme() - const player_number = index.toString() as keyof Players - - return { - selection: color_token( - `player${index}Selection`, - theme.players[player_number].selection - ), - cursor: color_token( - `player${index}Cursor`, - theme.players[player_number].cursor - ), - } -} - -export const players_token = (): PlayersToken => { - return { - "0": build_player_token(0), - "1": build_player_token(1), - "2": build_player_token(2), - "3": build_player_token(3), - "4": build_player_token(4), - "5": build_player_token(5), - "6": build_player_token(6), - "7": build_player_token(7), - } -} diff --git a/styles/src/theme/tokens/theme.ts b/styles/src/theme/tokens/theme.ts deleted file mode 100644 index e2c3bb33d32b88ae7475696d621a1b647b35f643..0000000000000000000000000000000000000000 --- a/styles/src/theme/tokens/theme.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { - SingleBoxShadowToken, - SingleColorToken, - SingleOtherToken, - TokenTypes, -} from "@tokens-studio/types" -import { Shadow, SyntaxHighlightStyle, ThemeSyntax } from "../create_theme" -import { LayerToken, layer_token } from "./layer" -import { PlayersToken, players_token } from "./players" -import { color_token } from "./token" -import { Syntax } from "../syntax" -import editor from "../../style_tree/editor" -import { useTheme } from "../../../src/common" - -interface ThemeTokens { - name: SingleOtherToken - appearance: SingleOtherToken - lowest: LayerToken - middle: LayerToken - highest: LayerToken - players: PlayersToken - popover_shadow: SingleBoxShadowToken - modal_shadow: SingleBoxShadowToken - syntax?: Partial -} - -const create_shadow_token = ( - shadow: Shadow, - token_name: string -): SingleBoxShadowToken => { - return { - name: token_name, - type: TokenTypes.BOX_SHADOW, - value: `${shadow.offset[0]}px ${shadow.offset[1]}px ${shadow.blur}px 0px ${shadow.color}`, - } -} - -const popover_shadow_token = (): SingleBoxShadowToken => { - const theme = useTheme() - const shadow = theme.popover_shadow - return create_shadow_token(shadow, "popover_shadow") -} - -const modal_shadow_token = (): SingleBoxShadowToken => { - const theme = useTheme() - const shadow = theme.modal_shadow - return create_shadow_token(shadow, "modal_shadow") -} - -type ThemeSyntaxColorTokens = Record - -function syntax_highlight_style_color_tokens( - syntax: Syntax -): ThemeSyntaxColorTokens { - const style_keys = Object.keys(syntax) as (keyof Syntax)[] - - return style_keys.reduce((acc, style_key) => { - // Hack: The type of a style could be "Function" - // This can happen because we have a "constructor" property on the syntax object - // and a "constructor" property on the prototype of the syntax object - // To work around this just assert that the type of the style is not a function - if (!syntax[style_key] || typeof syntax[style_key] === "function") - return acc - const { color } = syntax[style_key] as Required - return { ...acc, [style_key]: color_token(style_key, color) } - }, {} as ThemeSyntaxColorTokens) -} - -const syntax_tokens = (): ThemeTokens["syntax"] => { - const syntax = editor().syntax - - return syntax_highlight_style_color_tokens(syntax) -} - -export function theme_tokens(): ThemeTokens { - const theme = useTheme() - - return { - name: { - name: "themeName", - value: theme.name, - type: TokenTypes.OTHER, - }, - appearance: { - name: "themeAppearance", - value: theme.is_light ? "light" : "dark", - type: TokenTypes.OTHER, - }, - lowest: layer_token(theme.lowest, "lowest"), - middle: layer_token(theme.middle, "middle"), - highest: layer_token(theme.highest, "highest"), - popover_shadow: popover_shadow_token(), - modal_shadow: modal_shadow_token(), - players: players_token(), - syntax: syntax_tokens(), - } -} diff --git a/styles/src/theme/tokens/token.ts b/styles/src/theme/tokens/token.ts deleted file mode 100644 index 60e846ce94aafbbd98bf17948acfda983420f769..0000000000000000000000000000000000000000 --- a/styles/src/theme/tokens/token.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { SingleColorToken, TokenTypes } from "@tokens-studio/types" - -export function color_token( - name: string, - value: string, - description?: string -): SingleColorToken { - const token: SingleColorToken = { - name, - type: TokenTypes.COLOR, - value, - description, - } - - if (!token.value || token.value === "") - throw new Error("Color token must have a value") - - return token -} diff --git a/styles/src/themes/andromeda/LICENSE b/styles/src/themes/andromeda/LICENSE deleted file mode 100644 index 9422adafa4dbd08333fb027481c2323c1d256872..0000000000000000000000000000000000000000 --- a/styles/src/themes/andromeda/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/andromeda/andromeda.ts b/styles/src/themes/andromeda/andromeda.ts deleted file mode 100644 index 18699d21cd9b8118ec18358e8a6cc515c268d002..0000000000000000000000000000000000000000 --- a/styles/src/themes/andromeda/andromeda.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -export const dark: ThemeConfig = { - name: "Andromeda", - author: "EliverLara", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/EliverLara/Andromeda", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale([ - "#1E2025", - "#23262E", - "#292E38", - "#2E323C", - "#ACA8AE", - "#CBC9CF", - "#E1DDE4", - "#F7F7F8", - ]) - .domain([0, 0.15, 0.25, 0.35, 0.7, 0.8, 0.9, 1]), - red: color_ramp(chroma("#F92672")), - orange: color_ramp(chroma("#F39C12")), - yellow: color_ramp(chroma("#FFE66D")), - green: color_ramp(chroma("#96E072")), - cyan: color_ramp(chroma("#00E8C6")), - blue: color_ramp(chroma("#0CA793")), - violet: color_ramp(chroma("#8A3FA6")), - magenta: color_ramp(chroma("#C74DED")), - }, - override: { syntax: {} }, -} diff --git a/styles/src/themes/atelier/LICENSE b/styles/src/themes/atelier/LICENSE deleted file mode 100644 index 47c46d04295dacb5373d352004286dcf1df8d3f9..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2023 Bram de Haan, http://atelierbramdehaan.nl - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/atelier/atelier-cave-dark.ts b/styles/src/themes/atelier/atelier-cave-dark.ts deleted file mode 100644 index faf957b6423c04f5997eef566c60e3a72e853af9..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-cave-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#19171c", - base01: "#26232a", - base02: "#585260", - base03: "#655f6d", - base04: "#7e7887", - base05: "#8b8792", - base06: "#e2dfe7", - base07: "#efecf4", - base08: "#be4678", - base09: "#aa573c", - base0A: "#a06e3b", - base0B: "#2a9292", - base0C: "#398bc6", - base0D: "#576ddb", - base0E: "#955ae7", - base0F: "#bf40bf", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Cave Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-cave-light.ts b/styles/src/themes/atelier/atelier-cave-light.ts deleted file mode 100644 index 856cd300436de7baa50e81de6e57f03a93a00e11..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-cave-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#efecf4", - base01: "#e2dfe7", - base02: "#8b8792", - base03: "#7e7887", - base04: "#655f6d", - base05: "#585260", - base06: "#26232a", - base07: "#19171c", - base08: "#be4678", - base09: "#aa573c", - base0A: "#a06e3b", - base0B: "#2a9292", - base0C: "#398bc6", - base0D: "#576ddb", - base0E: "#955ae7", - base0F: "#bf40bf", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Cave Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-dune-dark.ts b/styles/src/themes/atelier/atelier-dune-dark.ts deleted file mode 100644 index fb67fd2471a113dfed33847836276cb7cbac7044..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-dune-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#20201d", - base01: "#292824", - base02: "#6e6b5e", - base03: "#7d7a68", - base04: "#999580", - base05: "#a6a28c", - base06: "#e8e4cf", - base07: "#fefbec", - base08: "#d73737", - base09: "#b65611", - base0A: "#ae9513", - base0B: "#60ac39", - base0C: "#1fad83", - base0D: "#6684e1", - base0E: "#b854d4", - base0F: "#d43552", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Dune Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-dune-light.ts b/styles/src/themes/atelier/atelier-dune-light.ts deleted file mode 100644 index 5e9e5b69276562fb8ee5d945282c1ebe44b3e5fc..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-dune-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#fefbec", - base01: "#e8e4cf", - base02: "#a6a28c", - base03: "#999580", - base04: "#7d7a68", - base05: "#6e6b5e", - base06: "#292824", - base07: "#20201d", - base08: "#d73737", - base09: "#b65611", - base0A: "#ae9513", - base0B: "#60ac39", - base0C: "#1fad83", - base0D: "#6684e1", - base0E: "#b854d4", - base0F: "#d43552", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Dune Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-estuary-dark.ts b/styles/src/themes/atelier/atelier-estuary-dark.ts deleted file mode 100644 index 0badf4371e5a629030765d76f60f1ee7d7078e0f..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-estuary-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#22221b", - base01: "#302f27", - base02: "#5f5e4e", - base03: "#6c6b5a", - base04: "#878573", - base05: "#929181", - base06: "#e7e6df", - base07: "#f4f3ec", - base08: "#ba6236", - base09: "#ae7313", - base0A: "#a5980d", - base0B: "#7d9726", - base0C: "#5b9d48", - base0D: "#36a166", - base0E: "#5f9182", - base0F: "#9d6c7c", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Estuary Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-estuary-light.ts b/styles/src/themes/atelier/atelier-estuary-light.ts deleted file mode 100644 index adc77e760715b63c5955b36ab31db141c44e6e89..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-estuary-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f4f3ec", - base01: "#e7e6df", - base02: "#929181", - base03: "#878573", - base04: "#6c6b5a", - base05: "#5f5e4e", - base06: "#302f27", - base07: "#22221b", - base08: "#ba6236", - base09: "#ae7313", - base0A: "#a5980d", - base0B: "#7d9726", - base0C: "#5b9d48", - base0D: "#36a166", - base0E: "#5f9182", - base0F: "#9d6c7c", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Estuary Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-forest-dark.ts b/styles/src/themes/atelier/atelier-forest-dark.ts deleted file mode 100644 index 3e89518c0bb04095fabd86296853c31a66c0615e..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-forest-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#1b1918", - base01: "#2c2421", - base02: "#68615e", - base03: "#766e6b", - base04: "#9c9491", - base05: "#a8a19f", - base06: "#e6e2e0", - base07: "#f1efee", - base08: "#f22c40", - base09: "#df5320", - base0A: "#c38418", - base0B: "#7b9726", - base0C: "#3d97b8", - base0D: "#407ee7", - base0E: "#6666ea", - base0F: "#c33ff3", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Forest Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-forest-light.ts b/styles/src/themes/atelier/atelier-forest-light.ts deleted file mode 100644 index 68d2c50876df452145dc0e5cd6a674370ecf37f5..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-forest-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f1efee", - base01: "#e6e2e0", - base02: "#a8a19f", - base03: "#9c9491", - base04: "#766e6b", - base05: "#68615e", - base06: "#2c2421", - base07: "#1b1918", - base08: "#f22c40", - base09: "#df5320", - base0A: "#c38418", - base0B: "#7b9726", - base0C: "#3d97b8", - base0D: "#407ee7", - base0E: "#6666ea", - base0F: "#c33ff3", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Forest Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-heath-dark.ts b/styles/src/themes/atelier/atelier-heath-dark.ts deleted file mode 100644 index c185d69e43737c420dd1a6809e2cd187bd3c7c60..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-heath-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#1b181b", - base01: "#292329", - base02: "#695d69", - base03: "#776977", - base04: "#9e8f9e", - base05: "#ab9bab", - base06: "#d8cad8", - base07: "#f7f3f7", - base08: "#ca402b", - base09: "#a65926", - base0A: "#bb8a35", - base0B: "#918b3b", - base0C: "#159393", - base0D: "#516aec", - base0E: "#7b59c0", - base0F: "#cc33cc", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Heath Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-heath-light.ts b/styles/src/themes/atelier/atelier-heath-light.ts deleted file mode 100644 index 4414987e229a1d1dccff657c3f5d4de227cb51ba..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-heath-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f7f3f7", - base01: "#d8cad8", - base02: "#ab9bab", - base03: "#9e8f9e", - base04: "#776977", - base05: "#695d69", - base06: "#292329", - base07: "#1b181b", - base08: "#ca402b", - base09: "#a65926", - base0A: "#bb8a35", - base0B: "#918b3b", - base0C: "#159393", - base0D: "#516aec", - base0E: "#7b59c0", - base0F: "#cc33cc", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Heath Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-lakeside-dark.ts b/styles/src/themes/atelier/atelier-lakeside-dark.ts deleted file mode 100644 index 7fdc3b4eba363d74614db2f49b0bf512388acacc..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-lakeside-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#161b1d", - base01: "#1f292e", - base02: "#516d7b", - base03: "#5a7b8c", - base04: "#7195a8", - base05: "#7ea2b4", - base06: "#c1e4f6", - base07: "#ebf8ff", - base08: "#d22d72", - base09: "#935c25", - base0A: "#8a8a0f", - base0B: "#568c3b", - base0C: "#2d8f6f", - base0D: "#257fad", - base0E: "#6b6bb8", - base0F: "#b72dd2", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Lakeside Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-lakeside-light.ts b/styles/src/themes/atelier/atelier-lakeside-light.ts deleted file mode 100644 index bdda48f6c732f1b830c32be42002198d205a3699..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-lakeside-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#ebf8ff", - base01: "#c1e4f6", - base02: "#7ea2b4", - base03: "#7195a8", - base04: "#5a7b8c", - base05: "#516d7b", - base06: "#1f292e", - base07: "#161b1d", - base08: "#d22d72", - base09: "#935c25", - base0A: "#8a8a0f", - base0B: "#568c3b", - base0C: "#2d8f6f", - base0D: "#257fad", - base0E: "#6b6bb8", - base0F: "#b72dd2", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Lakeside Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-plateau-dark.ts b/styles/src/themes/atelier/atelier-plateau-dark.ts deleted file mode 100644 index ff287bc80dd6c033f65b086a571321915b2fb0cb..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-plateau-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#1b1818", - base01: "#292424", - base02: "#585050", - base03: "#655d5d", - base04: "#7e7777", - base05: "#8a8585", - base06: "#e7dfdf", - base07: "#f4ecec", - base08: "#ca4949", - base09: "#b45a3c", - base0A: "#a06e3b", - base0B: "#4b8b8b", - base0C: "#5485b6", - base0D: "#7272ca", - base0E: "#8464c4", - base0F: "#bd5187", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Plateau Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-plateau-light.ts b/styles/src/themes/atelier/atelier-plateau-light.ts deleted file mode 100644 index 8a9fb989ad2105b8f6f594b713b6115904eae141..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-plateau-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f4ecec", - base01: "#e7dfdf", - base02: "#8a8585", - base03: "#7e7777", - base04: "#655d5d", - base05: "#585050", - base06: "#292424", - base07: "#1b1818", - base08: "#ca4949", - base09: "#b45a3c", - base0A: "#a06e3b", - base0B: "#4b8b8b", - base0C: "#5485b6", - base0D: "#7272ca", - base0E: "#8464c4", - base0F: "#bd5187", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Plateau Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-savanna-dark.ts b/styles/src/themes/atelier/atelier-savanna-dark.ts deleted file mode 100644 index d94af30334ca378116ae79469e0181b9201c8744..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-savanna-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#171c19", - base01: "#232a25", - base02: "#526057", - base03: "#5f6d64", - base04: "#78877d", - base05: "#87928a", - base06: "#dfe7e2", - base07: "#ecf4ee", - base08: "#b16139", - base09: "#9f713c", - base0A: "#a07e3b", - base0B: "#489963", - base0C: "#1c9aa0", - base0D: "#478c90", - base0E: "#55859b", - base0F: "#867469", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Savanna Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-savanna-light.ts b/styles/src/themes/atelier/atelier-savanna-light.ts deleted file mode 100644 index 2426b05400a77472264e9e76333d5e4585313da6..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-savanna-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#ecf4ee", - base01: "#dfe7e2", - base02: "#87928a", - base03: "#78877d", - base04: "#5f6d64", - base05: "#526057", - base06: "#232a25", - base07: "#171c19", - base08: "#b16139", - base09: "#9f713c", - base0A: "#a07e3b", - base0B: "#489963", - base0C: "#1c9aa0", - base0D: "#478c90", - base0E: "#55859b", - base0F: "#867469", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Savanna Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-seaside-dark.ts b/styles/src/themes/atelier/atelier-seaside-dark.ts deleted file mode 100644 index abb267f5a4078774ef4efbbd9e0ecf122bc074c3..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-seaside-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#131513", - base01: "#242924", - base02: "#5e6e5e", - base03: "#687d68", - base04: "#809980", - base05: "#8ca68c", - base06: "#cfe8cf", - base07: "#f4fbf4", - base08: "#e6193c", - base09: "#87711d", - base0A: "#98981b", - base0B: "#29a329", - base0C: "#1999b3", - base0D: "#3d62f5", - base0E: "#ad2bee", - base0F: "#e619c3", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Seaside Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-seaside-light.ts b/styles/src/themes/atelier/atelier-seaside-light.ts deleted file mode 100644 index 455e7795e145dcca3c84a719671253a55aef26be..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-seaside-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f4fbf4", - base01: "#cfe8cf", - base02: "#8ca68c", - base03: "#809980", - base04: "#687d68", - base05: "#5e6e5e", - base06: "#242924", - base07: "#131513", - base08: "#e6193c", - base09: "#87711d", - base0A: "#98981b", - base0B: "#29a329", - base0C: "#1999b3", - base0D: "#3d62f5", - base0E: "#ad2bee", - base0F: "#e619c3", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Seaside Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-sulphurpool-dark.ts b/styles/src/themes/atelier/atelier-sulphurpool-dark.ts deleted file mode 100644 index 3f33647daa9414b6619005b7d0e6931e718d17c8..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-sulphurpool-dark.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#202746", - base01: "#293256", - base02: "#5e6687", - base03: "#6b7394", - base04: "#898ea4", - base05: "#979db4", - base06: "#dfe2f1", - base07: "#f5f7ff", - base08: "#c94922", - base09: "#c76b29", - base0A: "#c08b30", - base0B: "#ac9739", - base0C: "#22a2c9", - base0D: "#3d8fd1", - base0E: "#6679cc", - base0F: "#9c637a", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Sulphurpool Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ]), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/atelier-sulphurpool-light.ts b/styles/src/themes/atelier/atelier-sulphurpool-light.ts deleted file mode 100644 index 2cb4d0453952135265adf349da176fe772c98811..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/atelier-sulphurpool-light.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { chroma, ThemeAppearance, ThemeConfig, color_ramp } from "../../common" -import { meta, build_syntax, Variant } from "./common" - -const variant: Variant = { - colors: { - base00: "#f5f7ff", - base01: "#dfe2f1", - base02: "#979db4", - base03: "#898ea4", - base04: "#6b7394", - base05: "#5e6687", - base06: "#293256", - base07: "#202746", - base08: "#c94922", - base09: "#c76b29", - base0A: "#c08b30", - base0B: "#ac9739", - base0C: "#22a2c9", - base0D: "#3d8fd1", - base0E: "#6679cc", - base0F: "#9c637a", - }, -} - -const syntax = build_syntax(variant) - -const get_theme = (variant: Variant): ThemeConfig => { - const { colors } = variant - - return { - name: `${meta.name} Sulphurpool Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale( - [ - colors.base00, - colors.base01, - colors.base02, - colors.base03, - colors.base04, - colors.base05, - colors.base06, - colors.base07, - ].reverse() - ), - red: color_ramp(chroma(colors.base08)), - orange: color_ramp(chroma(colors.base09)), - yellow: color_ramp(chroma(colors.base0A)), - green: color_ramp(chroma(colors.base0B)), - cyan: color_ramp(chroma(colors.base0C)), - blue: color_ramp(chroma(colors.base0D)), - violet: color_ramp(chroma(colors.base0E)), - magenta: color_ramp(chroma(colors.base0F)), - }, - override: { syntax }, - } -} - -export const theme = get_theme(variant) diff --git a/styles/src/themes/atelier/common.ts b/styles/src/themes/atelier/common.ts deleted file mode 100644 index b76ccc5b607a2f149a35114a519ddaaf2d1b254d..0000000000000000000000000000000000000000 --- a/styles/src/themes/atelier/common.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { ThemeLicenseType, ThemeSyntax, ThemeFamilyMeta } from "../../common" - -export interface Variant { - colors: { - base00: string - base01: string - base02: string - base03: string - base04: string - base05: string - base06: string - base07: string - base08: string - base09: string - base0A: string - base0B: string - base0C: string - base0D: string - base0E: string - base0F: string - } -} - -export const meta: ThemeFamilyMeta = { - name: "Atelier", - author: "Bram de Haan (http://atelierbramdehaan.nl)", - license_type: ThemeLicenseType.MIT, - license_url: - "https://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave/", -} - -export const build_syntax = (variant: Variant): ThemeSyntax => { - const { colors } = variant - return { - primary: { color: colors.base06 }, - comment: { color: colors.base03 }, - "punctuation.delimiter": { color: colors.base05 }, - "punctuation.bracket": { color: colors.base05 }, - "punctuation.special": { color: colors.base0F }, - "string.special.symbol": { color: colors.base0B }, - operator: { color: colors.base05 }, - function: { color: colors.base0D }, - "function.method": { color: colors.base0D }, - "function.special.definition": { color: colors.base0A }, - string: { color: colors.base0B }, - "string.special": { color: colors.base0F }, - "string.regex": { color: colors.base0C }, - type: { color: colors.base0A }, - number: { color: colors.base09 }, - property: { color: colors.base08 }, - variable: { color: colors.base06 }, - "variable.special": { color: colors.base0E }, - variant: { color: colors.base0A }, - keyword: { color: colors.base0E }, - } -} diff --git a/styles/src/themes/ayu/LICENSE b/styles/src/themes/ayu/LICENSE deleted file mode 100644 index 37a92292688fe679502eaa6be87ae5e2ce09eb03..0000000000000000000000000000000000000000 --- a/styles/src/themes/ayu/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Ike Ku - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/ayu/ayu-dark.ts b/styles/src/themes/ayu/ayu-dark.ts deleted file mode 100644 index a12ce08e29e1d905ade51c12803f324c0c5f7678..0000000000000000000000000000000000000000 --- a/styles/src/themes/ayu/ayu-dark.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ThemeAppearance, ThemeConfig } from "../../common" -import { ayu, meta, build_theme } from "./common" - -const variant = ayu.dark -const { ramps, syntax } = build_theme(variant, false) - -export const theme: ThemeConfig = { - name: `${meta.name} Dark`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax }, -} diff --git a/styles/src/themes/ayu/ayu-light.ts b/styles/src/themes/ayu/ayu-light.ts deleted file mode 100644 index aceda0d01751ec69253278c983531f2f3435c614..0000000000000000000000000000000000000000 --- a/styles/src/themes/ayu/ayu-light.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ThemeAppearance, ThemeConfig } from "../../common" -import { ayu, meta, build_theme } from "./common" - -const variant = ayu.light -const { ramps, syntax } = build_theme(variant, true) - -export const theme: ThemeConfig = { - name: `${meta.name} Light`, - author: meta.author, - appearance: ThemeAppearance.Light, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax }, -} diff --git a/styles/src/themes/ayu/ayu-mirage.ts b/styles/src/themes/ayu/ayu-mirage.ts deleted file mode 100644 index 9dd3ea7a6133e875faa7727cc54b11d45e94b6fd..0000000000000000000000000000000000000000 --- a/styles/src/themes/ayu/ayu-mirage.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ThemeAppearance, ThemeConfig } from "../../common" -import { ayu, meta, build_theme } from "./common" - -const variant = ayu.mirage -const { ramps, syntax } = build_theme(variant, false) - -export const theme: ThemeConfig = { - name: `${meta.name} Mirage`, - author: meta.author, - appearance: ThemeAppearance.Dark, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax }, -} diff --git a/styles/src/themes/ayu/common.ts b/styles/src/themes/ayu/common.ts deleted file mode 100644 index 2bd0bbf259aef2d9fc6c084f1da3c72379927026..0000000000000000000000000000000000000000 --- a/styles/src/themes/ayu/common.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { dark, light, mirage } from "ayu" -import { - chroma, - color_ramp, - ThemeLicenseType, - ThemeSyntax, - ThemeFamilyMeta, -} from "../../common" - -export const ayu = { - dark, - light, - mirage, -} - -export const build_theme = (t: typeof dark, light: boolean) => { - const color = { - light_blue: t.syntax.tag.hex(), - yellow: t.syntax.func.hex(), - blue: t.syntax.entity.hex(), - green: t.syntax.string.hex(), - teal: t.syntax.regexp.hex(), - red: t.syntax.markup.hex(), - orange: t.syntax.keyword.hex(), - light_yellow: t.syntax.special.hex(), - gray: t.syntax.comment.hex(), - purple: t.syntax.constant.hex(), - } - - const syntax: ThemeSyntax = { - constant: { color: t.syntax.constant.hex() }, - "string.regex": { color: t.syntax.regexp.hex() }, - string: { color: t.syntax.string.hex() }, - comment: { color: t.syntax.comment.hex() }, - keyword: { color: t.syntax.keyword.hex() }, - operator: { color: t.syntax.operator.hex() }, - number: { color: t.syntax.constant.hex() }, - type: { color: color.blue }, - boolean: { color: color.purple }, - "punctuation.special": { color: color.purple }, - "string.special": { color: t.syntax.special.hex() }, - function: { color: t.syntax.func.hex() }, - } - - return { - ramps: { - neutral: chroma.scale([ - light ? t.editor.fg.hex() : t.editor.bg.hex(), - light ? t.editor.bg.hex() : t.editor.fg.hex(), - ]), - red: color_ramp(chroma(color.red)), - orange: color_ramp(chroma(color.orange)), - yellow: color_ramp(chroma(color.yellow)), - green: color_ramp(chroma(color.green)), - cyan: color_ramp(chroma(color.teal)), - blue: color_ramp(chroma(color.blue)), - violet: color_ramp(chroma(color.purple)), - magenta: color_ramp(chroma(color.light_blue)), - }, - syntax, - } -} - -export const build_syntax = (t: typeof dark): ThemeSyntax => { - return { - constant: { color: t.syntax.constant.hex() }, - "string.regex": { color: t.syntax.regexp.hex() }, - string: { color: t.syntax.string.hex() }, - comment: { color: t.syntax.comment.hex() }, - keyword: { color: t.syntax.keyword.hex() }, - operator: { color: t.syntax.operator.hex() }, - number: { color: t.syntax.constant.hex() }, - type: { color: t.syntax.regexp.hex() }, - "punctuation.special": { color: t.syntax.special.hex() }, - "string.special": { color: t.syntax.special.hex() }, - function: { color: t.syntax.func.hex() }, - } -} - -export const meta: ThemeFamilyMeta = { - name: "Ayu", - author: "dempfi", - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/dempfi/ayu", -} diff --git a/styles/src/themes/gruvbox/LICENSE b/styles/src/themes/gruvbox/LICENSE deleted file mode 100644 index 0e18d6d7a93b8054677b18cbe8d0d1e914718452..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/gruvbox/gruvbox-common.ts b/styles/src/themes/gruvbox/gruvbox-common.ts deleted file mode 100644 index 2fa6b58faadb91b5689c5eac93baf706f6faa391..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-common.ts +++ /dev/null @@ -1,264 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, - ThemeSyntax, - ThemeFamilyMeta, -} from "../../common" - -const meta: ThemeFamilyMeta = { - name: "Gruvbox", - author: "morhetz ", - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/morhetz/gruvbox", -} - -const color = { - dark0_hard: "#1d2021", - dark0: "#282828", - dark0_soft: "#32302f", - dark1: "#3c3836", - dark2: "#504945", - dark3: "#665c54", - dark4: "#7c6f64", - dark4_256: "#7c6f64", - - gray_245: "#928374", - gray_244: "#928374", - - light0_hard: "#f9f5d7", - light0: "#fbf1c7", - light0_soft: "#f2e5bc", - light1: "#ebdbb2", - light2: "#d5c4a1", - light3: "#bdae93", - light4: "#a89984", - light4_256: "#a89984", - - bright_red: "#fb4934", - bright_green: "#b8bb26", - bright_yellow: "#fabd2f", - bright_blue: "#83a598", - bright_purple: "#d3869b", - bright_aqua: "#8ec07c", - bright_orange: "#fe8019", - - neutral_red: "#cc241d", - neutral_green: "#98971a", - neutral_yellow: "#d79921", - neutral_blue: "#458588", - neutral_purple: "#b16286", - neutral_aqua: "#689d6a", - neutral_orange: "#d65d0e", - - faded_red: "#9d0006", - faded_green: "#79740e", - faded_yellow: "#b57614", - faded_blue: "#076678", - faded_purple: "#8f3f71", - faded_aqua: "#427b58", - faded_orange: "#af3a03", -} - -interface ThemeColors { - red: string - green: string - yellow: string - blue: string - purple: string - aqua: string - orange: string - gray: string -} - -const dark_neutrals = [ - color.dark1, - color.dark2, - color.dark3, - color.dark4, - color.light4, - color.light3, - color.light2, - color.light1, - color.light0, -] - -const dark: ThemeColors = { - red: color.bright_red, - green: color.bright_green, - yellow: color.bright_yellow, - blue: color.bright_blue, - purple: color.bright_purple, - aqua: color.bright_aqua, - orange: color.bright_orange, - gray: color.light4, -} - -const light_neutrals = [ - color.light1, - color.light2, - color.light3, - color.light4, - color.dark4, - color.dark3, - color.dark2, - color.dark1, - color.dark0, -] - -const light: ThemeColors = { - red: color.faded_red, - green: color.faded_green, - yellow: color.faded_yellow, - blue: color.faded_blue, - purple: color.faded_purple, - aqua: color.faded_aqua, - orange: color.faded_orange, - gray: color.dark4, -} - -interface Variant { - name: string - appearance: "light" | "dark" - colors: ThemeColors -} - -const variant: Variant[] = [ - { - name: "Dark Hard", - appearance: "dark", - colors: dark, - }, - { - name: "Dark", - appearance: "dark", - colors: dark, - }, - { - name: "Dark Soft", - appearance: "dark", - colors: dark, - }, - { - name: "Light Hard", - appearance: "light", - colors: light, - }, - { - name: "Light", - appearance: "light", - - colors: light, - }, - { - name: "Light Soft", - appearance: "light", - colors: light, - }, -] - -const dark_hard_neutral = [color.dark0_hard, ...dark_neutrals] -const dark_neutral = [color.dark0, ...dark_neutrals] -const dark_soft_neutral = [color.dark0_soft, ...dark_neutrals] - -const light_hard_neutral = [color.light0_hard, ...light_neutrals] -const light_neutral = [color.light0, ...light_neutrals] -const light_soft_neutral = [color.light0_soft, ...light_neutrals] - -const build_variant = (variant: Variant): ThemeConfig => { - const { colors } = variant - - const name = `Gruvbox ${variant.name}` - - const is_light = variant.appearance === "light" - - let neutral: string[] = [] - - switch (variant.name) { - case "Dark Hard": - neutral = dark_hard_neutral - break - - case "Dark": - neutral = dark_neutral - break - - case "Dark Soft": - neutral = dark_soft_neutral - break - - case "Light Hard": - neutral = light_hard_neutral - break - - case "Light": - neutral = light_neutral - break - - case "Light Soft": - neutral = light_soft_neutral - break - } - - const ramps = { - neutral: chroma.scale(is_light ? neutral.reverse() : neutral), - red: color_ramp(chroma(variant.colors.red)), - orange: color_ramp(chroma(variant.colors.orange)), - yellow: color_ramp(chroma(variant.colors.yellow)), - green: color_ramp(chroma(variant.colors.green)), - cyan: color_ramp(chroma(variant.colors.aqua)), - blue: color_ramp(chroma(variant.colors.blue)), - violet: color_ramp(chroma(variant.colors.purple)), - magenta: color_ramp(chroma(variant.colors.gray)), - } - - const syntax: ThemeSyntax = { - primary: { color: neutral[is_light ? 0 : 8] }, - "text.literal": { color: colors.blue }, - comment: { color: colors.gray }, - punctuation: { color: neutral[is_light ? 1 : 7] }, - "punctuation.bracket": { color: neutral[is_light ? 3 : 5] }, - "punctuation.list_marker": { color: neutral[is_light ? 0 : 8] }, - operator: { color: colors.aqua }, - boolean: { color: colors.purple }, - number: { color: colors.purple }, - string: { color: colors.green }, - "string.special": { color: colors.purple }, - "string.special.symbol": { color: colors.aqua }, - "string.regex": { color: colors.orange }, - type: { color: colors.yellow }, - enum: { color: colors.orange }, - tag: { color: colors.aqua }, - constant: { color: colors.yellow }, - keyword: { color: colors.red }, - function: { color: colors.green }, - "function.builtin": { color: colors.red }, - variable: { color: colors.blue }, - property: { color: neutral[is_light ? 0 : 8] }, - embedded: { color: colors.aqua }, - link_text: { color: colors.aqua }, - link_uri: { color: colors.purple }, - title: { color: colors.green }, - } - - return { - name, - author: meta.author, - appearance: variant.appearance as ThemeAppearance, - license_type: meta.license_type, - license_url: meta.license_url, - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax }, - } -} - -// Variants -export const dark_hard = build_variant(variant[0]) -export const dark_default = build_variant(variant[1]) -export const dark_soft = build_variant(variant[2]) -export const light_hard = build_variant(variant[3]) -export const light_default = build_variant(variant[4]) -export const light_soft = build_variant(variant[5]) diff --git a/styles/src/themes/gruvbox/gruvbox-dark-hard.ts b/styles/src/themes/gruvbox/gruvbox-dark-hard.ts deleted file mode 100644 index 72757c99f2425cb0fab24c5be23d5b888bcd5816..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-dark-hard.ts +++ /dev/null @@ -1 +0,0 @@ -export { dark_hard } from "./gruvbox-common" diff --git a/styles/src/themes/gruvbox/gruvbox-dark-soft.ts b/styles/src/themes/gruvbox/gruvbox-dark-soft.ts deleted file mode 100644 index d8f63ed3311ea2eb6e7b50d9d6c9e2e5f84d788c..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-dark-soft.ts +++ /dev/null @@ -1 +0,0 @@ -export { dark_soft } from "./gruvbox-common" diff --git a/styles/src/themes/gruvbox/gruvbox-dark.ts b/styles/src/themes/gruvbox/gruvbox-dark.ts deleted file mode 100644 index 0582baa0d8b8779c5e595efdf7d127a93c8113e8..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-dark.ts +++ /dev/null @@ -1 +0,0 @@ -export { dark_default } from "./gruvbox-common" diff --git a/styles/src/themes/gruvbox/gruvbox-light-hard.ts b/styles/src/themes/gruvbox/gruvbox-light-hard.ts deleted file mode 100644 index bcaea06a4116ceaae9f88436aa1ef811c2c12895..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-light-hard.ts +++ /dev/null @@ -1 +0,0 @@ -export { light_hard } from "./gruvbox-common" diff --git a/styles/src/themes/gruvbox/gruvbox-light-soft.ts b/styles/src/themes/gruvbox/gruvbox-light-soft.ts deleted file mode 100644 index 5eb79f647be57db20886bb22aff821d29a9dc4da..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-light-soft.ts +++ /dev/null @@ -1 +0,0 @@ -export { light_soft } from "./gruvbox-common" diff --git a/styles/src/themes/gruvbox/gruvbox-light.ts b/styles/src/themes/gruvbox/gruvbox-light.ts deleted file mode 100644 index dc54a33f2644469878773193bb0cb67ba37c5cc5..0000000000000000000000000000000000000000 --- a/styles/src/themes/gruvbox/gruvbox-light.ts +++ /dev/null @@ -1 +0,0 @@ -export { light_default } from "./gruvbox-common" diff --git a/styles/src/themes/index.ts b/styles/src/themes/index.ts deleted file mode 100644 index 72bb100e7b823e6d37aea5f7d8d8c84fa8e5b362..0000000000000000000000000000000000000000 --- a/styles/src/themes/index.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { ThemeConfig } from "../theme" -import { dark_default as gruvbox_dark } from "./gruvbox/gruvbox-dark" -import { dark_hard as gruvbox_dark_hard } from "./gruvbox/gruvbox-dark-hard" -import { dark_soft as gruvbox_dark_soft } from "./gruvbox/gruvbox-dark-soft" -import { light_default as gruvbox_light } from "./gruvbox/gruvbox-light" -import { light_hard as gruvbox_light_hard } from "./gruvbox/gruvbox-light-hard" -import { light_soft as gruvbox_light_soft } from "./gruvbox/gruvbox-light-soft" -import { dark as solarized_dark } from "./solarized/solarized" -import { light as solarized_light } from "./solarized/solarized" -import { dark as andromeda_dark } from "./andromeda/andromeda" -import { theme as one_dark } from "./one/one-dark" -import { theme as one_light } from "./one/one-light" -import { theme as ayu_light } from "./ayu/ayu-light" -import { theme as ayu_dark } from "./ayu/ayu-dark" -import { theme as ayu_mirage } from "./ayu/ayu-mirage" -import { theme as rose_pine } from "./rose-pine/rose-pine" -import { theme as rose_pine_dawn } from "./rose-pine/rose-pine-dawn" -import { theme as rose_pine_moon } from "./rose-pine/rose-pine-moon" -import { theme as sandcastle } from "./sandcastle/sandcastle" -import { theme as summercamp } from "./summercamp/summercamp" -import { theme as atelier_cave_dark } from "./atelier/atelier-cave-dark" -import { theme as atelier_cave_light } from "./atelier/atelier-cave-light" -import { theme as atelier_dune_dark } from "./atelier/atelier-dune-dark" -import { theme as atelier_dune_light } from "./atelier/atelier-dune-light" -import { theme as atelier_estuary_dark } from "./atelier/atelier-estuary-dark" -import { theme as atelier_estuary_light } from "./atelier/atelier-estuary-light" -import { theme as atelier_forest_dark } from "./atelier/atelier-forest-dark" -import { theme as atelier_forest_light } from "./atelier/atelier-forest-light" -import { theme as atelier_heath_dark } from "./atelier/atelier-heath-dark" -import { theme as atelier_heath_light } from "./atelier/atelier-heath-light" -import { theme as atelier_lakeside_dark } from "./atelier/atelier-lakeside-dark" -import { theme as atelier_lakeside_light } from "./atelier/atelier-lakeside-light" -import { theme as atelier_plateau_dark } from "./atelier/atelier-plateau-dark" -import { theme as atelier_plateau_light } from "./atelier/atelier-plateau-light" -import { theme as atelier_savanna_dark } from "./atelier/atelier-savanna-dark" -import { theme as atelier_savanna_light } from "./atelier/atelier-savanna-light" -import { theme as atelier_seaside_dark } from "./atelier/atelier-seaside-dark" -import { theme as atelier_seaside_light } from "./atelier/atelier-seaside-light" -import { theme as atelier_sulphurpool_dark } from "./atelier/atelier-sulphurpool-dark" -import { theme as atelier_sulphurpool_light } from "./atelier/atelier-sulphurpool-light" - -export const themes: ThemeConfig[] = [ - one_dark, - one_light, - ayu_light, - ayu_dark, - ayu_mirage, - gruvbox_dark, - gruvbox_dark_hard, - gruvbox_dark_soft, - gruvbox_light, - gruvbox_light_hard, - gruvbox_light_soft, - rose_pine, - rose_pine_dawn, - rose_pine_moon, - sandcastle, - solarized_dark, - solarized_light, - andromeda_dark, - summercamp, - atelier_cave_dark, - atelier_cave_light, - atelier_dune_dark, - atelier_dune_light, - atelier_estuary_dark, - atelier_estuary_light, - atelier_forest_dark, - atelier_forest_light, - atelier_heath_dark, - atelier_heath_light, - atelier_lakeside_dark, - atelier_lakeside_light, - atelier_plateau_dark, - atelier_plateau_light, - atelier_savanna_dark, - atelier_savanna_light, - atelier_seaside_dark, - atelier_seaside_light, - atelier_sulphurpool_dark, - atelier_sulphurpool_light, -] diff --git a/styles/src/themes/one/LICENSE b/styles/src/themes/one/LICENSE deleted file mode 100644 index f7637d33eafbc01c0ec8770eb9d900ddd8bca64b..0000000000000000000000000000000000000000 --- a/styles/src/themes/one/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/one/one-dark.ts b/styles/src/themes/one/one-dark.ts deleted file mode 100644 index f672b892ee040e60745f3d0f8bd6875c743ed46a..0000000000000000000000000000000000000000 --- a/styles/src/themes/one/one-dark.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { - chroma, - font_weights, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -const color = { - white: "#ACB2BE", - grey: "#5D636F", - red: "#D07277", - dark_red: "#B1574B", - orange: "#C0966B", - yellow: "#DFC184", - green: "#A1C181", - teal: "#6FB4C0", - blue: "#74ADE9", - purple: "#B478CF", -} - -export const theme: ThemeConfig = { - name: "One Dark", - author: "simurai", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: - "https://github.com/atom/atom/tree/master/packages/one-dark-ui", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale([ - "#282c34", - "#353b45", - "#3e4451", - "#545862", - "#565c64", - "#abb2bf", - "#b6bdca", - "#c8ccd4", - ]) - .domain([0.05, 0.22, 0.25, 0.45, 0.62, 0.8, 0.9, 1]), - red: color_ramp(chroma(color.red)), - orange: color_ramp(chroma(color.orange)), - yellow: color_ramp(chroma(color.yellow)), - green: color_ramp(chroma(color.green)), - cyan: color_ramp(chroma(color.teal)), - blue: color_ramp(chroma(color.blue)), - violet: color_ramp(chroma(color.purple)), - magenta: color_ramp(chroma("#be5046")), - }, - override: { - syntax: { - boolean: { color: color.orange }, - comment: { color: color.grey }, - enum: { color: color.red }, - "emphasis.strong": { color: color.orange }, - function: { color: color.blue }, - keyword: { color: color.purple }, - link_text: { color: color.blue, italic: false }, - link_uri: { color: color.teal }, - number: { color: color.orange }, - constant: { color: color.yellow }, - operator: { color: color.teal }, - primary: { color: color.white }, - property: { color: color.red }, - punctuation: { color: color.white }, - "punctuation.list_marker": { color: color.red }, - "punctuation.special": { color: color.dark_red }, - string: { color: color.green }, - title: { color: color.red, weight: font_weights.normal }, - "text.literal": { color: color.green }, - type: { color: color.teal }, - "variable.special": { color: color.orange }, - variant: { color: color.blue }, - constructor: { color: color.blue }, - }, - }, -} diff --git a/styles/src/themes/one/one-light.ts b/styles/src/themes/one/one-light.ts deleted file mode 100644 index c3de7826c96679fb1c1f2b1a9d81324687d919b9..0000000000000000000000000000000000000000 --- a/styles/src/themes/one/one-light.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { - chroma, - font_weights, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -const color = { - black: "#383A41", - grey: "#A2A3A7", - red: "#D36050", - dark_red: "#B92C46", - orange: "#AD6F26", - yellow: "#DFC184", - green: "#659F58", - teal: "#3982B7", - blue: "#5B79E3", - purple: "#A449AB", - magenta: "#994EA6", -} - -export const theme: ThemeConfig = { - name: "One Light", - author: "simurai", - appearance: ThemeAppearance.Light, - license_type: ThemeLicenseType.MIT, - license_url: - "https://github.com/atom/atom/tree/master/packages/one-light-ui", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale([ - "#383A41", - "#535456", - "#696c77", - "#9D9D9F", - "#A9A9A9", - "#DBDBDC", - "#EAEAEB", - "#FAFAFA", - ]) - .domain([0.05, 0.22, 0.25, 0.45, 0.62, 0.8, 0.9, 1]), - red: color_ramp(chroma(color.red)), - orange: color_ramp(chroma(color.orange)), - yellow: color_ramp(chroma(color.yellow)), - green: color_ramp(chroma(color.green)), - cyan: color_ramp(chroma(color.teal)), - blue: color_ramp(chroma(color.blue)), - violet: color_ramp(chroma(color.purple)), - magenta: color_ramp(chroma(color.magenta)), - }, - override: { - syntax: { - boolean: { color: color.orange }, - comment: { color: color.grey }, - enum: { color: color.red }, - "emphasis.strong": { color: color.orange }, - function: { color: color.blue }, - keyword: { color: color.purple }, - link_text: { color: color.blue }, - link_uri: { color: color.teal }, - number: { color: color.orange }, - operator: { color: color.teal }, - primary: { color: color.black }, - property: { color: color.red }, - punctuation: { color: color.black }, - "punctuation.list_marker": { color: color.red }, - "punctuation.special": { color: color.dark_red }, - string: { color: color.green }, - title: { color: color.red, weight: font_weights.normal }, - "text.literal": { color: color.green }, - type: { color: color.teal }, - "variable.special": { color: color.orange }, - variant: { color: color.blue }, - }, - }, -} diff --git a/styles/src/themes/rose-pine/LICENSE b/styles/src/themes/rose-pine/LICENSE deleted file mode 100644 index 12767334539540f92889031d8682d2487acc28bd..0000000000000000000000000000000000000000 --- a/styles/src/themes/rose-pine/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2021 Emilia Dunfelt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/rose-pine/common.ts b/styles/src/themes/rose-pine/common.ts deleted file mode 100644 index 5c5482a754a634bd2338af2613327554ec36d13c..0000000000000000000000000000000000000000 --- a/styles/src/themes/rose-pine/common.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { ThemeSyntax } from "../../common" - -export const color = { - default: { - base: "#191724", - surface: "#1f1d2e", - overlay: "#26233a", - muted: "#6e6a86", - subtle: "#908caa", - text: "#e0def4", - love: "#eb6f92", - gold: "#f6c177", - rose: "#ebbcba", - pine: "#31748f", - foam: "#9ccfd8", - iris: "#c4a7e7", - highlight_low: "#21202e", - highlight_med: "#403d52", - highlight_high: "#524f67", - }, - moon: { - base: "#232136", - surface: "#2a273f", - overlay: "#393552", - muted: "#6e6a86", - subtle: "#908caa", - text: "#e0def4", - love: "#eb6f92", - gold: "#f6c177", - rose: "#ea9a97", - pine: "#3e8fb0", - foam: "#9ccfd8", - iris: "#c4a7e7", - highlight_low: "#2a283e", - highlight_med: "#44415a", - highlight_high: "#56526e", - }, - dawn: { - base: "#faf4ed", - surface: "#fffaf3", - overlay: "#f2e9e1", - muted: "#9893a5", - subtle: "#797593", - text: "#575279", - love: "#b4637a", - gold: "#ea9d34", - rose: "#d7827e", - pine: "#286983", - foam: "#56949f", - iris: "#907aa9", - highlight_low: "#f4ede8", - highlight_med: "#dfdad9", - highlight_high: "#cecacd", - }, -} - -export const syntax = (c: typeof color.default): Partial => { - return { - comment: { color: c.muted }, - operator: { color: c.pine }, - punctuation: { color: c.subtle }, - variable: { color: c.text }, - string: { color: c.gold }, - type: { color: c.foam }, - "type.builtin": { color: c.foam }, - boolean: { color: c.rose }, - function: { color: c.rose }, - keyword: { color: c.pine }, - tag: { color: c.foam }, - "function.method": { color: c.rose }, - title: { color: c.gold }, - link_text: { color: c.foam, italic: false }, - link_uri: { color: c.rose }, - } -} diff --git a/styles/src/themes/rose-pine/rose-pine-dawn.ts b/styles/src/themes/rose-pine/rose-pine-dawn.ts deleted file mode 100644 index 9642107bdb1beeda7af18b6300b3ae498553d864..0000000000000000000000000000000000000000 --- a/styles/src/themes/rose-pine/rose-pine-dawn.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -import { color as c, syntax } from "./common" - -const color = c.dawn - -const green = chroma.mix(color.foam, "#10b981", 0.6, "lab") -const magenta = chroma.mix(color.love, color.pine, 0.5, "lab") - -export const theme: ThemeConfig = { - name: "Rosé Pine Dawn", - author: "edunfelt", - appearance: ThemeAppearance.Light, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/edunfelt/base16-rose-pine-scheme", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale( - [ - color.base, - color.surface, - color.highlight_high, - color.overlay, - color.muted, - color.subtle, - color.text, - ].reverse(), - ) - .domain([0, 0.35, 0.45, 0.65, 0.7, 0.8, 0.9, 1]), - red: color_ramp(chroma(color.love)), - orange: color_ramp(chroma(color.iris)), - yellow: color_ramp(chroma(color.gold)), - green: color_ramp(chroma(green)), - cyan: color_ramp(chroma(color.pine)), - blue: color_ramp(chroma(color.foam)), - violet: color_ramp(chroma(color.iris)), - magenta: color_ramp(chroma(magenta)), - }, - override: { - syntax: syntax(color), - }, -} diff --git a/styles/src/themes/rose-pine/rose-pine-moon.ts b/styles/src/themes/rose-pine/rose-pine-moon.ts deleted file mode 100644 index 450d6865e7e8ddb193cb97efaae504ea157ade97..0000000000000000000000000000000000000000 --- a/styles/src/themes/rose-pine/rose-pine-moon.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -import { color as c, syntax } from "./common" - -const color = c.moon - -const green = chroma.mix(color.foam, "#10b981", 0.6, "lab") -const magenta = chroma.mix(color.love, color.pine, 0.5, "lab") - -export const theme: ThemeConfig = { - name: "Rosé Pine Moon", - author: "edunfelt", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/edunfelt/base16-rose-pine-scheme", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale([ - color.base, - color.surface, - color.highlight_high, - color.overlay, - color.muted, - color.subtle, - color.text, - ]) - .domain([0, 0.3, 0.55, 1]), - red: color_ramp(chroma(color.love)), - orange: color_ramp(chroma(color.iris)), - yellow: color_ramp(chroma(color.gold)), - green: color_ramp(chroma(green)), - cyan: color_ramp(chroma(color.pine)), - blue: color_ramp(chroma(color.foam)), - violet: color_ramp(chroma(color.iris)), - magenta: color_ramp(chroma(magenta)), - }, - override: { - syntax: syntax(color), - }, -} diff --git a/styles/src/themes/rose-pine/rose-pine.ts b/styles/src/themes/rose-pine/rose-pine.ts deleted file mode 100644 index b305b5b5775fa3a58fb3fabdb8f7add00ab3de83..0000000000000000000000000000000000000000 --- a/styles/src/themes/rose-pine/rose-pine.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" -import { color as c, syntax } from "./common" - -const color = c.default - -const green = chroma.mix(color.foam, "#10b981", 0.6, "lab") -const magenta = chroma.mix(color.love, color.pine, 0.5, "lab") - -export const theme: ThemeConfig = { - name: "Rosé Pine", - author: "edunfelt", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/edunfelt/base16-rose-pine-scheme", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - color.base, - color.surface, - color.highlight_high, - color.overlay, - color.muted, - color.subtle, - color.text, - ]), - red: color_ramp(chroma(color.love)), - orange: color_ramp(chroma(color.iris)), - yellow: color_ramp(chroma(color.gold)), - green: color_ramp(chroma(green)), - cyan: color_ramp(chroma(color.pine)), - blue: color_ramp(chroma(color.foam)), - violet: color_ramp(chroma(color.iris)), - magenta: color_ramp(chroma(magenta)), - }, - override: { - syntax: syntax(color), - }, -} diff --git a/styles/src/themes/sandcastle/LICENSE b/styles/src/themes/sandcastle/LICENSE deleted file mode 100644 index ba6559d8106fb5f9dfefc2cd0da8540c86ffdd68..0000000000000000000000000000000000000000 --- a/styles/src/themes/sandcastle/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2019 George Essig - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/sandcastle/sandcastle.ts b/styles/src/themes/sandcastle/sandcastle.ts deleted file mode 100644 index b54c402e475aba8190b48425e1fac370dde2ce45..0000000000000000000000000000000000000000 --- a/styles/src/themes/sandcastle/sandcastle.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -export const theme: ThemeConfig = { - name: "Sandcastle", - author: "gessig", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/gessig/base16-sandcastle-scheme", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma.scale([ - "#282c34", - "#2c323b", - "#3e4451", - "#665c54", - "#928374", - "#a89984", - "#d5c4a1", - "#fdf4c1", - ]), - red: color_ramp(chroma("#B4637A")), - orange: color_ramp(chroma("#a07e3b")), - yellow: color_ramp(chroma("#a07e3b")), - green: color_ramp(chroma("#83a598")), - cyan: color_ramp(chroma("#83a598")), - blue: color_ramp(chroma("#528b8b")), - violet: color_ramp(chroma("#d75f5f")), - magenta: color_ramp(chroma("#a87322")), - }, - override: { syntax: {} }, -} diff --git a/styles/src/themes/solarized/LICENSE b/styles/src/themes/solarized/LICENSE deleted file mode 100644 index 2b5ddc4158b51df484a9df6e1724b9ef387860b6..0000000000000000000000000000000000000000 --- a/styles/src/themes/solarized/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2011 Ethan Schoonover - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/solarized/solarized.ts b/styles/src/themes/solarized/solarized.ts deleted file mode 100644 index 05e6f018ab7ac66da4e3eb114d26d82238001488..0000000000000000000000000000000000000000 --- a/styles/src/themes/solarized/solarized.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -const ramps = { - neutral: chroma - .scale([ - "#002b36", - "#073642", - "#586e75", - "#657b83", - "#839496", - "#93a1a1", - "#eee8d5", - "#fdf6e3", - ]) - .domain([0, 0.2, 0.38, 0.45, 0.65, 0.7, 0.85, 1]), - red: color_ramp(chroma("#dc322f")), - orange: color_ramp(chroma("#cb4b16")), - yellow: color_ramp(chroma("#b58900")), - green: color_ramp(chroma("#859900")), - cyan: color_ramp(chroma("#2aa198")), - blue: color_ramp(chroma("#268bd2")), - violet: color_ramp(chroma("#6c71c4")), - magenta: color_ramp(chroma("#d33682")), -} - -export const dark: ThemeConfig = { - name: "Solarized Dark", - author: "Ethan Schoonover", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/altercation/solarized", - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax: {} }, -} - -export const light: ThemeConfig = { - name: "Solarized Light", - author: "Ethan Schoonover", - appearance: ThemeAppearance.Light, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/altercation/solarized", - license_file: `${__dirname}/LICENSE`, - input_color: ramps, - override: { syntax: {} }, -} diff --git a/styles/src/themes/staff/.gitkeep b/styles/src/themes/staff/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/styles/src/themes/summercamp/LICENSE b/styles/src/themes/summercamp/LICENSE deleted file mode 100644 index dd49a64536aea1cecc98e709c923e1d7d69e23f6..0000000000000000000000000000000000000000 --- a/styles/src/themes/summercamp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2019 Zoe FiriH - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/styles/src/themes/summercamp/summercamp.ts b/styles/src/themes/summercamp/summercamp.ts deleted file mode 100644 index f9037feae49aaee1007f2694ea8620139d414a59..0000000000000000000000000000000000000000 --- a/styles/src/themes/summercamp/summercamp.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - chroma, - color_ramp, - ThemeAppearance, - ThemeLicenseType, - ThemeConfig, -} from "../../common" - -export const theme: ThemeConfig = { - name: "Summercamp", - author: "zoefiri", - appearance: ThemeAppearance.Dark, - license_type: ThemeLicenseType.MIT, - license_url: "https://github.com/zoefiri/base16-sc", - license_file: `${__dirname}/LICENSE`, - input_color: { - neutral: chroma - .scale([ - "#1c1810", - "#2a261c", - "#3a3527", - "#3a3527", - "#5f5b45", - "#736e55", - "#bab696", - "#f8f5de", - ]) - .domain([0, 0.2, 0.38, 0.4, 0.65, 0.7, 0.85, 1]), - red: color_ramp(chroma("#e35142")), - orange: color_ramp(chroma("#fba11b")), - yellow: color_ramp(chroma("#f2ff27")), - green: color_ramp(chroma("#5ceb5a")), - cyan: color_ramp(chroma("#5aebbc")), - blue: color_ramp(chroma("#489bf0")), - violet: color_ramp(chroma("#FF8080")), - magenta: color_ramp(chroma("#F69BE7")), - }, - override: { syntax: {} }, -} diff --git a/styles/src/utils/slugify.ts b/styles/src/utils/slugify.ts deleted file mode 100644 index 04fd4d53bba14be9b7c5e7d2c89231a0066aaf49..0000000000000000000000000000000000000000 --- a/styles/src/utils/slugify.ts +++ /dev/null @@ -1,10 +0,0 @@ -export function slugify(t: string): string { - return t - .toString() - .toLowerCase() - .replace(/\s+/g, "-") - .replace(/[^\w-]+/g, "") - .replace(/--+/g, "-") - .replace(/^-+/, "") - .replace(/-+$/, "") -} diff --git a/styles/tsconfig.json b/styles/tsconfig.json deleted file mode 100644 index 940442e1b74a40f953bdde0ce00e5cf225f38480..0000000000000000000000000000000000000000 --- a/styles/tsconfig.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "compilerOptions": { - "target": "es2015", - "module": "commonjs", - "esModuleInterop": true, - "noImplicitAny": true, - "removeComments": true, - "preserveConstEnums": true, - "sourceMap": true, - "noEmit": true, - "forceConsistentCasingInFileNames": true, - "declaration": true, - "strict": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "experimentalDecorators": true, - "strictPropertyInitialization": false, - "skipLibCheck": true, - "useUnknownInCatchVariables": false - }, - "exclude": ["node_modules"] -} diff --git a/styles/vitest.config.ts b/styles/vitest.config.ts deleted file mode 100644 index 00f3a9852db6b9a98a836e1c0abb78a4a08f354a..0000000000000000000000000000000000000000 --- a/styles/vitest.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { configDefaults, defineConfig } from "vitest/config" - -export default defineConfig({ - test: { - exclude: [...configDefaults.exclude, "target/*"], - include: ["src/**/*.{spec,test}.ts"], - }, -}) From c106d3ea6b65fd971469db953de77c83e5cc7de8 Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Thu, 4 Jan 2024 09:58:26 -0500 Subject: [PATCH 2/3] Remove old theme license code --- script/generate-licenses | 8 -------- 1 file changed, 8 deletions(-) diff --git a/script/generate-licenses b/script/generate-licenses index 9a2fe8921a8fe06e4716b98bcec9b2b28af4a994..3fa9152c6c0cd2652781e851512bfeabc679f694 100755 --- a/script/generate-licenses +++ b/script/generate-licenses @@ -6,14 +6,6 @@ OUTPUT_FILE=$(pwd)/assets/licenses.md > $OUTPUT_FILE -echo -e "# ###### THEME LICENSES ######\n" >> $OUTPUT_FILE - -echo "Generating theme licenses" -cd styles -npm --silent ci -npm run --silent build-licenses >> $OUTPUT_FILE -cd .. - echo -e "# ###### CODE LICENSES ######\n" >> $OUTPUT_FILE [[ "$(cargo about --version)" == "cargo-about 0.5.2" ]] || cargo install cargo-about --locked --git https://github.com/zed-industries/cargo-about --branch error-code-on-warn From 5da057288dd06fee2a7a44b793464aea66ee4d20 Mon Sep 17 00:00:00 2001 From: Nate Butler Date: Thu, 4 Jan 2024 10:14:58 -0500 Subject: [PATCH 3/3] Delete generating-theme-types.md --- docs/old/theme/generating-theme-types.md | 29 ------------------------ 1 file changed, 29 deletions(-) delete mode 100644 docs/old/theme/generating-theme-types.md diff --git a/docs/old/theme/generating-theme-types.md b/docs/old/theme/generating-theme-types.md deleted file mode 100644 index efebc8d21df7e52dcc2c64b9a78602251b4847c5..0000000000000000000000000000000000000000 --- a/docs/old/theme/generating-theme-types.md +++ /dev/null @@ -1,29 +0,0 @@ -[⬅ Back to Index](../index.md) - -# Generating Theme Types - - -## How to generate theme types: - -Run a script - -```bash -./script/build-theme-types -``` - -Types are generated in `styles/src/types/zed.ts` - - -## How it works: - -1. Rust types - - The `crates/theme` contains theme types. - Crate `schemars` used to generate a JSON schema from the theme structs. - Every struct that represent theme type has a `#[derive(JsonSchema)]` attribute. - - Task lotaked at `crates/xtask/src/main.rs` generates a JSON schema from the theme structs. - -2. TypeScript types - - Script `npm run build-types` from `styles` package generates TypeScript types from the JSON schema and saves them to `styles/src/types/zed.ts`.