diff --git a/.gitignore b/.gitignore index f85999f1..bc3f5b7a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ pnpm-debug.log # Workspace packages packages/*/node_modules/ + +# Storybook +storybook-static/ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 280fe92f..8ab111db 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,3 +9,4 @@ flake.lock pnpm-debug.log pnpm-lock.yaml +/storybook-static/ \ No newline at end of file diff --git a/.storybook/css.d.ts b/.storybook/css.d.ts new file mode 100644 index 00000000..7304a422 --- /dev/null +++ b/.storybook/css.d.ts @@ -0,0 +1,5 @@ +declare module "*.css"; +declare module "*.css?url" { + const url: string; + export default url; +} diff --git a/.storybook/global.css b/.storybook/global.css new file mode 100644 index 00000000..0ca6719f --- /dev/null +++ b/.storybook/global.css @@ -0,0 +1,108 @@ +html { + background: var(--vscode-sideBar-background); +} + +body { + margin: 0; + padding: 0; + overflow: hidden; +} + +#storybook-preview-wrapper { + background-color: var(--vscode-sideBar-background); +} + +#root { + overscroll-behavior-x: none; + background-color: var(--vscode-sideBar-background); + color: var(--vscode-editor-foreground); + font-family: var(--vscode-font-family); + font-weight: var(--vscode-font-weight); + font-size: var(--vscode-font-size); + margin: 0; + max-width: 100%; + /* arbitrary size choice for the rough VSCode sidebar size */ + width: 300px; +} + +img, +video { + max-width: 100%; + max-height: 100%; +} + +a, +a code { + color: var(--vscode-textLink-foreground); +} + +p > a { + text-decoration: var(--text-link-decoration); +} + +a:hover { + color: var(--vscode-textLink-activeForeground); +} + +a:focus, +input:focus, +select:focus, +textarea:focus { + outline: 1px solid -webkit-focus-ring-color; + outline-offset: -1px; +} + +code { + font-family: var(--monaco-monospace-font); + color: var(--vscode-textPreformat-foreground); + background-color: var(--vscode-textPreformat-background); + padding: 1px 3px; + border-radius: 4px; +} + +pre code { + padding: 0; +} + +blockquote { + background: var(--vscode-textBlockQuote-background); + border-color: var(--vscode-textBlockQuote-border); +} + +kbd { + background-color: var(--vscode-keybindingLabel-background); + color: var(--vscode-keybindingLabel-foreground); + border-style: solid; + border-width: 1px; + border-radius: 3px; + border-color: var(--vscode-keybindingLabel-border); + border-bottom-color: var(--vscode-keybindingLabel-bottomBorder); + box-shadow: inset 0 -1px 0 var(--vscode-widget-shadow); + vertical-align: middle; + padding: 1px 3px; +} + +::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +::-webkit-scrollbar-corner { + background-color: var(--vscode-editor-background); +} + +::-webkit-scrollbar-thumb { + background-color: var(--vscode-scrollbarSlider-background); +} +::-webkit-scrollbar-thumb:hover { + background-color: var(--vscode-scrollbarSlider-hoverBackground); +} +::-webkit-scrollbar-thumb:active { + background-color: var(--vscode-scrollbarSlider-activeBackground); +} +::highlight(find-highlight) { + background-color: var(--vscode-editor-findMatchHighlightBackground); +} +::highlight(current-find-highlight) { + background-color: var(--vscode-editor-findMatchBackground); +} diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 00000000..dfc6f1d6 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,19 @@ +import { mergeConfig } from "vite"; + +import type { StorybookConfig } from "@storybook/react-vite"; + +const config: StorybookConfig = { + stories: ["../packages/*/src/**/*.stories.@(ts|tsx)"], + addons: ["@storybook/addon-essentials", "@storybook/addon-a11y"], + framework: { + name: "@storybook/react-vite", + options: {}, + }, + viteFinal(baseConfig) { + return mergeConfig(baseConfig, { + assetsInclude: ["**/*.ttf", "**/*.woff", "**/*.woff2"], + }); + }, +}; + +export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts new file mode 100644 index 00000000..06bd2e2f --- /dev/null +++ b/.storybook/preview.ts @@ -0,0 +1,104 @@ +import codiconCssUrl from "@vscode/codicons/dist/codicon.css?url"; +import { createElement, useEffect } from "react"; + +import "./global.css"; +import { darkTheme } from "./themes/dark-v2"; +import { lightTheme } from "./themes/light-v2"; + +import type { Preview } from "@storybook/react"; +import type { WebviewApi } from "vscode-webview"; + +// Mock the acquireVsCodeApi function for Storybook, so that components +// that rely on it can function without errors. +if ( + typeof window !== "undefined" && + !(window as { acquireVsCodeApi?: () => WebviewApi }).acquireVsCodeApi +) { + (window as { acquireVsCodeApi: () => WebviewApi }).acquireVsCodeApi = + () => ({ + postMessage: () => undefined, + getState: () => undefined, + setState: (state) => state, + }); +} + +// Inject codicon stylesheet immediately (before any components render) +// Must be a element with id "vscode-codicon-stylesheet" for vscode-elements +if ( + typeof document !== "undefined" && + !document.getElementById("vscode-codicon-stylesheet") +) { + const link = document.createElement("link"); + link.id = "vscode-codicon-stylesheet"; + link.rel = "stylesheet"; + link.href = codiconCssUrl; + document.head.appendChild(link); +} + +// This allows the system viewing the storybook to use the same font +// stack as vscode, which is important for accurate rendering of text. +const getDefaultFontStack = () => { + if (navigator.userAgent.includes("Linux")) { + return 'system-ui, "Ubuntu", "Droid Sans", sans-serif'; + } else if (navigator.userAgent.includes("Mac")) { + return "-apple-system, BlinkMacSystemFont, sans-serif"; + } else if (navigator.userAgent.includes("Windows")) { + return '"Segoe WPC", "Segoe UI", sans-serif'; + } else { + return "sans-serif"; + } +}; + +const preview: Preview = { + parameters: { + layout: "centered", + }, + globalTypes: { + theme: { + description: "Global theme for components", + defaultValue: "dark", + toolbar: { + title: "Theme", + icon: "circlehollow", + items: [ + { value: "light", icon: "circlehollow", title: "Light" }, + { value: "dark", icon: "circle", title: "Dark" }, + ], + dynamicTitle: true, + }, + }, + }, + decorators: [ + (Story, context) => { + const selectedTheme = + context.globals.theme === "light" ? lightTheme : darkTheme; + + useEffect(() => { + // Apply CSS custom properties to the document root + selectedTheme.forEach(([property, value]) => { + document.documentElement.style.setProperty(property, value); + }); + + // Cleanup function to remove properties when unmounting + return () => { + selectedTheme.forEach(([property]) => { + document.documentElement.style.removeProperty(property); + }); + }; + }, [selectedTheme]); + + return createElement( + "div", + { + id: "root", + style: { + fontFamily: getDefaultFontStack(), + }, + }, + createElement(Story), + ); + }, + ], +}; + +export default preview; diff --git a/.storybook/themes/dark-v2.ts b/.storybook/themes/dark-v2.ts new file mode 100644 index 00000000..a6d3c682 --- /dev/null +++ b/.storybook/themes/dark-v2.ts @@ -0,0 +1,959 @@ +// Sourced from `vscode-elements/webview-playground`. +// https://github.com/vscode-elements/webview-playground/blob/f9a6f90413d0cc535839fb92445b7a5eebc540d7/dist/themes/dark-v2.js + +export const darkTheme: Array<[string, string]> = [ + ["--vscode-actionBar-toggledBackground", "#383a49"], + ["--vscode-activityBar-activeBorder", "#0078d4"], + ["--vscode-activityBar-background", "#181818"], + ["--vscode-activityBar-border", "#2b2b2b"], + ["--vscode-activityBar-dropBorder", "#d7d7d7"], + ["--vscode-activityBar-foreground", "#d7d7d7"], + ["--vscode-activityBar-inactiveForeground", "#868686"], + ["--vscode-activityBarBadge-background", "#0078d4"], + ["--vscode-activityBarBadge-foreground", "#ffffff"], + ["--vscode-activityBarTop-activeBorder", "#e7e7e7"], + ["--vscode-activityBarTop-dropBorder", "#e7e7e7"], + ["--vscode-activityBarTop-foreground", "#e7e7e7"], + ["--vscode-activityBarTop-inactiveForeground", "rgba(231, 231, 231, 0.6)"], + ["--vscode-activityErrorBadge-background", "#f14c4c"], + ["--vscode-activityErrorBadge-foreground", "#000000"], + ["--vscode-activityWarningBadge-background", "#b27c00"], + ["--vscode-activityWarningBadge-foreground", "#ffffff"], + ["--vscode-agentSessionReadIndicator-foreground", "rgba(204, 204, 204, 0.2)"], + ["--vscode-agentSessionSelectedBadge-border", "rgba(255, 255, 255, 0.3)"], + [ + "--vscode-agentSessionSelectedUnfocusedBadge-border", + "rgba(204, 204, 204, 0.3)", + ], + ["--vscode-agentStatusIndicator-background", "rgba(255, 255, 255, 0.05)"], + ["--vscode-aiCustomizationManagement-sashBorder", "#2b2b2b"], + ["--vscode-badge-background", "#616161"], + ["--vscode-badge-foreground", "#f8f8f8"], + ["--vscode-banner-background", "#04395e"], + ["--vscode-banner-foreground", "#ffffff"], + ["--vscode-banner-iconForeground", "#59a4f9"], + ["--vscode-bodyFontSize", "13px"], + ["--vscode-bodyFontSize-small", "12px"], + ["--vscode-bodyFontSize-xSmall", "11px"], + ["--vscode-breadcrumb-activeSelectionForeground", "#e0e0e0"], + ["--vscode-breadcrumb-background", "#1f1f1f"], + ["--vscode-breadcrumb-focusForeground", "#e0e0e0"], + ["--vscode-breadcrumb-foreground", "rgba(204, 204, 204, 0.8)"], + ["--vscode-breadcrumbPicker-background", "#202020"], + ["--vscode-browser-border", "#2b2b2b"], + ["--vscode-button-background", "#0078d4"], + ["--vscode-button-border", "rgba(255, 255, 255, 0.1)"], + ["--vscode-button-foreground", "#ffffff"], + ["--vscode-button-hoverBackground", "#026ec1"], + ["--vscode-button-secondaryBackground", "rgba(0, 0, 0, 0)"], + ["--vscode-button-secondaryForeground", "#cccccc"], + ["--vscode-button-secondaryHoverBackground", "#2b2b2b"], + ["--vscode-button-separator", "rgba(255, 255, 255, 0.4)"], + ["--vscode-chart-axis", "rgba(191, 191, 191, 0.4)"], + ["--vscode-chart-guide", "rgba(191, 191, 191, 0.2)"], + ["--vscode-chart-line", "#236b8e"], + ["--vscode-charts-blue", "#59a4f9"], + ["--vscode-charts-foreground", "#cccccc"], + ["--vscode-charts-green", "#89d185"], + ["--vscode-charts-lines", "rgba(204, 204, 204, 0.5)"], + ["--vscode-charts-orange", "rgba(234, 92, 0, 0.33)"], + ["--vscode-charts-purple", "#b180d7"], + ["--vscode-charts-red", "#f14c4c"], + ["--vscode-charts-yellow", "#cca700"], + ["--vscode-chat-avatarBackground", "#1f1f1f"], + ["--vscode-chat-avatarForeground", "#cccccc"], + ["--vscode-chat-checkpointSeparator", "#585858"], + ["--vscode-chat-editedFileForeground", "#e2c08d"], + ["--vscode-chat-linesAddedForeground", "#54b054"], + ["--vscode-chat-linesRemovedForeground", "#fc6a6a"], + ["--vscode-chat-requestBackground", "rgba(31, 31, 31, 0.62)"], + ["--vscode-chat-requestBorder", "rgba(255, 255, 255, 0.1)"], + ["--vscode-chat-requestBubbleBackground", "rgba(38, 79, 120, 0.3)"], + ["--vscode-chat-requestBubbleHoverBackground", "rgba(38, 79, 120, 0.6)"], + ["--vscode-chat-requestCodeBorder", "rgba(0, 73, 114, 0.72)"], + ["--vscode-chat-slashCommandBackground", "rgba(38, 71, 120, 0.4)"], + ["--vscode-chat-slashCommandForeground", "#85b6ff"], + ["--vscode-chat-thinkingShimmer", "#ffffff"], + ["--vscode-chatManagement-sashBorder", "#2b2b2b"], + ["--vscode-checkbox-background", "#313131"], + ["--vscode-checkbox-border", "#3c3c3c"], + ["--vscode-checkbox-disabled.background", "#646464"], + ["--vscode-checkbox-disabled.foreground", "#989898"], + ["--vscode-checkbox-foreground", "#cccccc"], + ["--vscode-checkbox-selectBackground", "#202020"], + ["--vscode-checkbox-selectBorder", "#cccccc"], + ["--vscode-codiconFontSize", "16px"], + ["--vscode-commandCenter-activeBackground", "rgba(255, 255, 255, 0.08)"], + ["--vscode-commandCenter-activeBorder", "rgba(204, 204, 204, 0.3)"], + ["--vscode-commandCenter-activeForeground", "#cccccc"], + ["--vscode-commandCenter-background", "rgba(255, 255, 255, 0.05)"], + ["--vscode-commandCenter-border", "rgba(204, 204, 204, 0.2)"], + ["--vscode-commandCenter-debuggingBackground", "rgba(0, 120, 212, 0.26)"], + ["--vscode-commandCenter-foreground", "#cccccc"], + ["--vscode-commandCenter-inactiveBorder", "rgba(157, 157, 157, 0.25)"], + ["--vscode-commandCenter-inactiveForeground", "#9d9d9d"], + ["--vscode-commentsView-resolvedIcon", "rgba(204, 204, 204, 0.5)"], + ["--vscode-commentsView-unresolvedIcon", "#0078d4"], + ["--vscode-cornerRadius-circle", "9999px"], + ["--vscode-cornerRadius-large", "8px"], + ["--vscode-cornerRadius-medium", "6px"], + ["--vscode-cornerRadius-small", "4px"], + ["--vscode-cornerRadius-xLarge", "12px"], + ["--vscode-cornerRadius-xSmall", "2px"], + ["--vscode-debugConsole-errorForeground", "#f85149"], + ["--vscode-debugConsole-infoForeground", "#59a4f9"], + ["--vscode-debugConsole-sourceForeground", "#cccccc"], + ["--vscode-debugConsole-warningForeground", "#cca700"], + ["--vscode-debugConsoleInputIcon-foreground", "#cccccc"], + ["--vscode-debugExceptionWidget-background", "#420b0d"], + ["--vscode-debugExceptionWidget-border", "#a31515"], + ["--vscode-debugIcon-breakpointCurrentStackframeForeground", "#ffcc00"], + ["--vscode-debugIcon-breakpointDisabledForeground", "#848484"], + ["--vscode-debugIcon-breakpointForeground", "#e51400"], + ["--vscode-debugIcon-breakpointStackframeForeground", "#89d185"], + ["--vscode-debugIcon-breakpointUnverifiedForeground", "#848484"], + ["--vscode-debugIcon-continueForeground", "#75beff"], + ["--vscode-debugIcon-disconnectForeground", "#f48771"], + ["--vscode-debugIcon-pauseForeground", "#75beff"], + ["--vscode-debugIcon-restartForeground", "#89d185"], + ["--vscode-debugIcon-startForeground", "#89d185"], + ["--vscode-debugIcon-stepBackForeground", "#75beff"], + ["--vscode-debugIcon-stepIntoForeground", "#75beff"], + ["--vscode-debugIcon-stepOutForeground", "#75beff"], + ["--vscode-debugIcon-stepOverForeground", "#75beff"], + ["--vscode-debugIcon-stopForeground", "#f48771"], + ["--vscode-debugTokenExpression-boolean", "#4e94ce"], + ["--vscode-debugTokenExpression-error", "#f48771"], + ["--vscode-debugTokenExpression-name", "#c586c0"], + ["--vscode-debugTokenExpression-number", "#b5cea8"], + ["--vscode-debugTokenExpression-string", "#ce9178"], + ["--vscode-debugTokenExpression-type", "#4a90e2"], + ["--vscode-debugTokenExpression-value", "rgba(204, 204, 204, 0.6)"], + ["--vscode-debugToolBar-background", "#181818"], + ["--vscode-debugView-exceptionLabelBackground", "#6c2022"], + ["--vscode-debugView-exceptionLabelForeground", "#cccccc"], + ["--vscode-debugView-stateLabelBackground", "rgba(136, 136, 136, 0.27)"], + ["--vscode-debugView-stateLabelForeground", "#cccccc"], + ["--vscode-debugView-valueChangedHighlight", "#569cd6"], + ["--vscode-descriptionForeground", "#9d9d9d"], + ["--vscode-diffEditor-diagonalFill", "rgba(204, 204, 204, 0.2)"], + ["--vscode-diffEditor-insertedLineBackground", "rgba(155, 185, 85, 0.2)"], + ["--vscode-diffEditor-insertedTextBackground", "rgba(156, 204, 44, 0.2)"], + ["--vscode-diffEditor-move.border", "rgba(139, 139, 139, 0.61)"], + ["--vscode-diffEditor-moveActive.border", "#ffa500"], + ["--vscode-diffEditor-removedLineBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-diffEditor-removedTextBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-diffEditor-unchangedCodeBackground", "rgba(116, 116, 116, 0.16)"], + ["--vscode-diffEditor-unchangedRegionBackground", "#181818"], + ["--vscode-diffEditor-unchangedRegionForeground", "#cccccc"], + ["--vscode-diffEditor-unchangedRegionShadow", "#000000"], + ["--vscode-disabledForeground", "rgba(204, 204, 204, 0.5)"], + ["--vscode-dropdown-background", "#313131"], + ["--vscode-dropdown-border", "#3c3c3c"], + ["--vscode-dropdown-foreground", "#cccccc"], + ["--vscode-dropdown-listBackground", "#1f1f1f"], + ["--vscode-editor-background", "#1f1f1f"], + ["--vscode-editor-compositionBorder", "#ffffff"], + ["--vscode-editor-findMatchBackground", "#9e6a03"], + ["--vscode-editor-findMatchHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-editor-findRangeHighlightBackground", "rgba(58, 61, 65, 0.4)"], + [ + "--vscode-editor-focusedStackFrameHighlightBackground", + "rgba(122, 189, 122, 0.3)", + ], + ["--vscode-editor-foldBackground", "rgba(38, 79, 120, 0.3)"], + ["--vscode-editor-foldPlaceholderForeground", "#808080"], + ["--vscode-editor-font-feature-settings", '"liga" off, "calt" off'], + ["--vscode-editor-font-size", "14px"], + ["--vscode-editor-font-weight", "normal"], + ["--vscode-editor-foreground", "#cccccc"], + ["--vscode-editor-hoverHighlightBackground", "rgba(38, 79, 120, 0.25)"], + ["--vscode-editor-inactiveSelectionBackground", "#3a3d41"], + ["--vscode-editor-inlineValuesBackground", "rgba(255, 200, 0, 0.2)"], + ["--vscode-editor-inlineValuesForeground", "rgba(255, 255, 255, 0.5)"], + ["--vscode-editor-lineHighlightBorder", "#282828"], + ["--vscode-editor-linkedEditingBackground", "rgba(255, 0, 0, 0.3)"], + ["--vscode-editor-placeholder.foreground", "rgba(255, 255, 255, 0.34)"], + ["--vscode-editor-rangeHighlightBackground", "rgba(255, 255, 255, 0.04)"], + ["--vscode-editor-selectionBackground", "#264f78"], + ["--vscode-editor-selectionHighlightBackground", "rgba(173, 214, 255, 0.15)"], + ["--vscode-editor-snippetFinalTabstopHighlightBorder", "#525252"], + [ + "--vscode-editor-snippetTabstopHighlightBackground", + "rgba(124, 124, 124, 0.3)", + ], + ["--vscode-editor-stackFrameHighlightBackground", "rgba(255, 255, 0, 0.2)"], + ["--vscode-editor-symbolHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-editor-wordHighlightBackground", "rgba(87, 87, 87, 0.72)"], + ["--vscode-editor-wordHighlightStrongBackground", "rgba(0, 73, 114, 0.72)"], + ["--vscode-editor-wordHighlightTextBackground", "rgba(87, 87, 87, 0.72)"], + ["--vscode-editorActionList-background", "#202020"], + ["--vscode-editorActionList-focusBackground", "#04395e"], + ["--vscode-editorActionList-focusForeground", "#ffffff"], + ["--vscode-editorActionList-foreground", "#cccccc"], + ["--vscode-editorActiveLineNumber-foreground", "#c6c6c6"], + ["--vscode-editorBracketHighlight-foreground1", "#ffd700"], + ["--vscode-editorBracketHighlight-foreground2", "#da70d6"], + ["--vscode-editorBracketHighlight-foreground3", "#179fff"], + ["--vscode-editorBracketHighlight-foreground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketHighlight-foreground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketHighlight-foreground6", "rgba(0, 0, 0, 0)"], + [ + "--vscode-editorBracketHighlight-unexpectedBracket.foreground", + "rgba(255, 18, 18, 0.8)", + ], + ["--vscode-editorBracketMatch-background", "rgba(0, 100, 0, 0.1)"], + ["--vscode-editorBracketMatch-border", "#888888"], + ["--vscode-editorBracketPairGuide-activeBackground1", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background1", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorCodeLens-foreground", "#999999"], + [ + "--vscode-editorCommentsWidget-rangeActiveBackground", + "rgba(0, 120, 212, 0.1)", + ], + ["--vscode-editorCommentsWidget-rangeBackground", "rgba(0, 120, 212, 0.1)"], + ["--vscode-editorCommentsWidget-replyInputBackground", "#252526"], + ["--vscode-editorCommentsWidget-resolvedBorder", "rgba(204, 204, 204, 0.5)"], + ["--vscode-editorCommentsWidget-unresolvedBorder", "#0078d4"], + ["--vscode-editorCursor-foreground", "#aeafad"], + ["--vscode-editorError-foreground", "#f14c4c"], + ["--vscode-editorGhostText-foreground", "rgba(255, 255, 255, 0.34)"], + ["--vscode-editorGroup-border", "rgba(255, 255, 255, 0.09)"], + ["--vscode-editorGroup-dropBackground", "rgba(83, 89, 93, 0.5)"], + ["--vscode-editorGroup-dropIntoPromptBackground", "#202020"], + ["--vscode-editorGroup-dropIntoPromptForeground", "#cccccc"], + ["--vscode-editorGroupHeader-noTabsBackground", "#1f1f1f"], + ["--vscode-editorGroupHeader-tabsBackground", "#181818"], + ["--vscode-editorGroupHeader-tabsBorder", "#2b2b2b"], + ["--vscode-editorGutter-addedBackground", "#2ea043"], + ["--vscode-editorGutter-addedSecondaryBackground", "#175021"], + ["--vscode-editorGutter-background", "#1f1f1f"], + ["--vscode-editorGutter-commentDraftGlyphForeground", "#cccccc"], + ["--vscode-editorGutter-commentGlyphForeground", "#cccccc"], + ["--vscode-editorGutter-commentRangeForeground", "#37373d"], + ["--vscode-editorGutter-commentUnresolvedGlyphForeground", "#cccccc"], + ["--vscode-editorGutter-deletedBackground", "#f85149"], + ["--vscode-editorGutter-deletedSecondaryBackground", "#b91007"], + ["--vscode-editorGutter-foldingControlForeground", "#cccccc"], + ["--vscode-editorGutter-itemBackground", "#37373d"], + ["--vscode-editorGutter-itemGlyphForeground", "#cccccc"], + ["--vscode-editorGutter-modifiedBackground", "#0078d4"], + ["--vscode-editorGutter-modifiedSecondaryBackground", "#003c6a"], + ["--vscode-editorHint-foreground", "rgba(238, 238, 238, 0.7)"], + ["--vscode-editorHoverWidget-background", "#202020"], + ["--vscode-editorHoverWidget-border", "#454545"], + ["--vscode-editorHoverWidget-foreground", "#cccccc"], + ["--vscode-editorHoverWidget-highlightForeground", "#2aaaff"], + ["--vscode-editorHoverWidget-statusBarBackground", "#262626"], + ["--vscode-editorIndentGuide-activeBackground", "rgba(227, 228, 226, 0.16)"], + ["--vscode-editorIndentGuide-activeBackground1", "#707070"], + ["--vscode-editorIndentGuide-activeBackground2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background", "rgba(227, 228, 226, 0.16)"], + ["--vscode-editorIndentGuide-background1", "#404040"], + ["--vscode-editorIndentGuide-background2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorInfo-foreground", "#59a4f9"], + ["--vscode-editorInlayHint-background", "rgba(97, 97, 97, 0.1)"], + ["--vscode-editorInlayHint-foreground", "#969696"], + ["--vscode-editorInlayHint-parameterBackground", "rgba(97, 97, 97, 0.1)"], + ["--vscode-editorInlayHint-parameterForeground", "#969696"], + ["--vscode-editorInlayHint-typeBackground", "rgba(97, 97, 97, 0.1)"], + ["--vscode-editorInlayHint-typeForeground", "#969696"], + ["--vscode-editorLightBulb-foreground", "#ffcc00"], + ["--vscode-editorLightBulbAi-foreground", "#ffcc00"], + ["--vscode-editorLightBulbAutoFix-foreground", "#75beff"], + ["--vscode-editorLineNumber-activeForeground", "#cccccc"], + ["--vscode-editorLineNumber-foreground", "#6e7681"], + ["--vscode-editorLink-activeForeground", "#4e94ce"], + ["--vscode-editorMarkerNavigation-background", "#1f1f1f"], + ["--vscode-editorMarkerNavigationError-background", "#f14c4c"], + [ + "--vscode-editorMarkerNavigationError-headerBackground", + "rgba(241, 76, 76, 0.1)", + ], + ["--vscode-editorMarkerNavigationInfo-background", "#59a4f9"], + [ + "--vscode-editorMarkerNavigationInfo-headerBackground", + "rgba(89, 164, 249, 0.1)", + ], + ["--vscode-editorMarkerNavigationWarning-background", "#cca700"], + [ + "--vscode-editorMarkerNavigationWarning-headerBackground", + "rgba(204, 167, 0, 0.1)", + ], + ["--vscode-editorMinimap-inlineChatInserted", "rgba(156, 204, 44, 0.12)"], + ["--vscode-editorMultiCursor-primary.foreground", "#aeafad"], + ["--vscode-editorMultiCursor-secondary.foreground", "#aeafad"], + ["--vscode-editorOverviewRuler-addedForeground", "rgba(46, 160, 67, 0.6)"], + ["--vscode-editorOverviewRuler-border", "#010409"], + ["--vscode-editorOverviewRuler-bracketMatchForeground", "#a0a0a0"], + ["--vscode-editorOverviewRuler-commentDraftForeground", "#37373d"], + ["--vscode-editorOverviewRuler-commentForeground", "#37373d"], + ["--vscode-editorOverviewRuler-commentUnresolvedForeground", "#37373d"], + [ + "--vscode-editorOverviewRuler-commonContentForeground", + "rgba(96, 96, 96, 0.4)", + ], + [ + "--vscode-editorOverviewRuler-currentContentForeground", + "rgba(64, 200, 174, 0.5)", + ], + ["--vscode-editorOverviewRuler-deletedForeground", "rgba(248, 81, 73, 0.6)"], + ["--vscode-editorOverviewRuler-errorForeground", "rgba(255, 18, 18, 0.7)"], + [ + "--vscode-editorOverviewRuler-findMatchForeground", + "rgba(209, 134, 22, 0.49)", + ], + [ + "--vscode-editorOverviewRuler-incomingContentForeground", + "rgba(64, 166, 255, 0.5)", + ], + ["--vscode-editorOverviewRuler-infoForeground", "#59a4f9"], + [ + "--vscode-editorOverviewRuler-inlineChatInserted", + "rgba(156, 204, 44, 0.12)", + ], + ["--vscode-editorOverviewRuler-inlineChatRemoved", "rgba(255, 0, 0, 0.12)"], + ["--vscode-editorOverviewRuler-modifiedForeground", "rgba(0, 120, 212, 0.6)"], + [ + "--vscode-editorOverviewRuler-rangeHighlightForeground", + "rgba(0, 122, 204, 0.6)", + ], + [ + "--vscode-editorOverviewRuler-selectionHighlightForeground", + "rgba(160, 160, 160, 0.8)", + ], + ["--vscode-editorOverviewRuler-warningForeground", "#cca700"], + [ + "--vscode-editorOverviewRuler-wordHighlightForeground", + "rgba(160, 160, 160, 0.8)", + ], + [ + "--vscode-editorOverviewRuler-wordHighlightStrongForeground", + "rgba(192, 160, 192, 0.8)", + ], + [ + "--vscode-editorOverviewRuler-wordHighlightTextForeground", + "rgba(160, 160, 160, 0.8)", + ], + ["--vscode-editorPane-background", "#1f1f1f"], + ["--vscode-editorRuler-foreground", "#5a5a5a"], + ["--vscode-editorStickyScroll-background", "#1f1f1f"], + ["--vscode-editorStickyScroll-shadow", "#000000"], + ["--vscode-editorStickyScrollGutter-background", "#1f1f1f"], + ["--vscode-editorStickyScrollHover-background", "#2a2d2e"], + ["--vscode-editorSuggestWidget-background", "#202020"], + ["--vscode-editorSuggestWidget-border", "#454545"], + ["--vscode-editorSuggestWidget-focusHighlightForeground", "#2aaaff"], + ["--vscode-editorSuggestWidget-foreground", "#cccccc"], + ["--vscode-editorSuggestWidget-highlightForeground", "#2aaaff"], + ["--vscode-editorSuggestWidget-selectedBackground", "#04395e"], + ["--vscode-editorSuggestWidget-selectedForeground", "#ffffff"], + ["--vscode-editorSuggestWidget-selectedIconForeground", "#ffffff"], + ["--vscode-editorSuggestWidgetStatus-foreground", "rgba(204, 204, 204, 0.5)"], + ["--vscode-editorUnicodeHighlight-border", "#cca700"], + ["--vscode-editorUnnecessaryCode-opacity", "rgba(0, 0, 0, 0.67)"], + ["--vscode-editorWarning-foreground", "#cca700"], + ["--vscode-editorWhitespace-foreground", "rgba(227, 228, 226, 0.16)"], + ["--vscode-editorWidget-background", "#202020"], + ["--vscode-editorWidget-border", "#454545"], + ["--vscode-editorWidget-foreground", "#cccccc"], + ["--vscode-errorForeground", "#f85149"], + ["--vscode-extensionBadge-remoteBackground", "#0078d4"], + ["--vscode-extensionBadge-remoteForeground", "#ffffff"], + ["--vscode-extensionButton-background", "rgba(0, 0, 0, 0)"], + ["--vscode-extensionButton-border", "rgba(255, 255, 255, 0.1)"], + ["--vscode-extensionButton-foreground", "#cccccc"], + ["--vscode-extensionButton-hoverBackground", "#2b2b2b"], + ["--vscode-extensionButton-prominentBackground", "#0078d4"], + ["--vscode-extensionButton-prominentForeground", "#ffffff"], + ["--vscode-extensionButton-prominentHoverBackground", "#026ec1"], + ["--vscode-extensionButton-separator", "rgba(255, 255, 255, 0.4)"], + ["--vscode-extensionIcon-preReleaseForeground", "#1d9271"], + ["--vscode-extensionIcon-privateForeground", "rgba(255, 255, 255, 0.38)"], + ["--vscode-extensionIcon-sponsorForeground", "#d758b3"], + ["--vscode-extensionIcon-starForeground", "#ff8e00"], + ["--vscode-extensionIcon-verifiedForeground", "#4daafc"], + ["--vscode-focusBorder", "#0078d4"], + ["--vscode-font-size", "13px"], + ["--vscode-font-weight", "normal"], + ["--vscode-foreground", "#cccccc"], + ["--vscode-gauge-background", "rgba(0, 122, 204, 0.3)"], + ["--vscode-gauge-errorBackground", "rgba(190, 17, 0, 0.3)"], + ["--vscode-gauge-errorForeground", "#be1100"], + ["--vscode-gauge-foreground", "#007acc"], + ["--vscode-gauge-warningBackground", "rgba(184, 149, 0, 0.3)"], + ["--vscode-gauge-warningForeground", "#b89500"], + ["--vscode-icon-foreground", "#cccccc"], + ["--vscode-inlineChat-background", "#202020"], + ["--vscode-inlineChat-border", "#454545"], + ["--vscode-inlineChat-foreground", "#cccccc"], + ["--vscode-inlineChat-shadow", "rgba(0, 0, 0, 0.36)"], + ["--vscode-inlineChatDiff-inserted", "rgba(156, 204, 44, 0.1)"], + ["--vscode-inlineChatDiff-removed", "rgba(255, 0, 0, 0.1)"], + ["--vscode-inlineChatInput-background", "#313131"], + ["--vscode-inlineChatInput-border", "#454545"], + ["--vscode-inlineChatInput-focusBorder", "#0078d4"], + ["--vscode-inlineChatInput-placeholderForeground", "#989898"], + ["--vscode-inlineEdit-gutterIndicator.background", "rgba(24, 24, 24, 0.5)"], + [ + "--vscode-inlineEdit-gutterIndicator.primaryBackground", + "rgba(0, 120, 212, 0.4)", + ], + ["--vscode-inlineEdit-gutterIndicator.primaryBorder", "#0078d4"], + ["--vscode-inlineEdit-gutterIndicator.primaryForeground", "#ffffff"], + ["--vscode-inlineEdit-gutterIndicator.secondaryBackground", "#202020"], + ["--vscode-inlineEdit-gutterIndicator.secondaryBorder", "#454545"], + ["--vscode-inlineEdit-gutterIndicator.secondaryForeground", "#cccccc"], + ["--vscode-inlineEdit-gutterIndicator.successfulBackground", "#0078d4"], + ["--vscode-inlineEdit-gutterIndicator.successfulBorder", "#0078d4"], + ["--vscode-inlineEdit-gutterIndicator.successfulForeground", "#ffffff"], + ["--vscode-inlineEdit-modifiedBackground", "rgba(156, 204, 44, 0.06)"], + ["--vscode-inlineEdit-modifiedBorder", "rgba(156, 204, 44, 0.2)"], + [ + "--vscode-inlineEdit-modifiedChangedLineBackground", + "rgba(155, 185, 85, 0.14)", + ], + [ + "--vscode-inlineEdit-modifiedChangedTextBackground", + "rgba(156, 204, 44, 0.14)", + ], + ["--vscode-inlineEdit-originalBackground", "rgba(255, 0, 0, 0.04)"], + ["--vscode-inlineEdit-originalBorder", "rgba(255, 0, 0, 0.2)"], + [ + "--vscode-inlineEdit-originalChangedLineBackground", + "rgba(255, 0, 0, 0.16)", + ], + [ + "--vscode-inlineEdit-originalChangedTextBackground", + "rgba(255, 0, 0, 0.16)", + ], + [ + "--vscode-inlineEdit-tabWillAcceptModifiedBorder", + "rgba(156, 204, 44, 0.2)", + ], + ["--vscode-inlineEdit-tabWillAcceptOriginalBorder", "rgba(255, 0, 0, 0.2)"], + ["--vscode-input-background", "#313131"], + ["--vscode-input-border", "#3c3c3c"], + ["--vscode-input-foreground", "#cccccc"], + ["--vscode-input-placeholderForeground", "#989898"], + ["--vscode-inputOption-activeBackground", "rgba(36, 137, 219, 0.51)"], + ["--vscode-inputOption-activeBorder", "#2488db"], + ["--vscode-inputOption-activeForeground", "#ffffff"], + ["--vscode-inputOption-hoverBackground", "rgba(90, 93, 94, 0.5)"], + ["--vscode-inputValidation-errorBackground", "#5a1d1d"], + ["--vscode-inputValidation-errorBorder", "#be1100"], + ["--vscode-inputValidation-infoBackground", "#063b49"], + ["--vscode-inputValidation-infoBorder", "#007acc"], + ["--vscode-inputValidation-warningBackground", "#352a05"], + ["--vscode-inputValidation-warningBorder", "#b89500"], + ["--vscode-interactive-activeCodeBorder", "#007acc"], + ["--vscode-interactive-inactiveCodeBorder", "#37373d"], + ["--vscode-keybindingLabel-background", "rgba(128, 128, 128, 0.17)"], + ["--vscode-keybindingLabel-border", "rgba(51, 51, 51, 0.6)"], + ["--vscode-keybindingLabel-bottomBorder", "rgba(68, 68, 68, 0.6)"], + ["--vscode-keybindingLabel-foreground", "#cccccc"], + ["--vscode-keybindingTable-headerBackground", "rgba(204, 204, 204, 0.04)"], + ["--vscode-keybindingTable-rowsBackground", "rgba(204, 204, 204, 0.04)"], + ["--vscode-list-activeSelectionBackground", "#04395e"], + ["--vscode-list-activeSelectionForeground", "#ffffff"], + ["--vscode-list-activeSelectionIconForeground", "#ffffff"], + ["--vscode-list-deemphasizedForeground", "#8c8c8c"], + ["--vscode-list-dropBackground", "#383b3d"], + ["--vscode-list-dropBetweenBackground", "#cccccc"], + ["--vscode-list-errorForeground", "#f88070"], + ["--vscode-list-filterMatchBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-list-focusHighlightForeground", "#2aaaff"], + ["--vscode-list-focusOutline", "#0078d4"], + ["--vscode-list-highlightForeground", "#2aaaff"], + ["--vscode-list-hoverBackground", "#2a2d2e"], + ["--vscode-list-inactiveSelectionBackground", "#37373d"], + ["--vscode-list-invalidItemForeground", "#b89500"], + ["--vscode-list-warningForeground", "#cca700"], + ["--vscode-listFilterWidget-background", "#202020"], + ["--vscode-listFilterWidget-noMatchesOutline", "#be1100"], + ["--vscode-listFilterWidget-outline", "rgba(0, 0, 0, 0)"], + ["--vscode-listFilterWidget-shadow", "rgba(0, 0, 0, 0.36)"], + ["--vscode-markdownAlert-caution.foreground", "#f14c4c"], + ["--vscode-markdownAlert-important.foreground", "#b180d7"], + ["--vscode-markdownAlert-note.foreground", "#59a4f9"], + ["--vscode-markdownAlert-tip.foreground", "#89d185"], + ["--vscode-markdownAlert-warning.foreground", "#cca700"], + ["--vscode-mcpIcon-starForeground", "#ff8e00"], + ["--vscode-menu-background", "#1f1f1f"], + ["--vscode-menu-border", "#454545"], + ["--vscode-menu-foreground", "#cccccc"], + ["--vscode-menu-selectionBackground", "#0078d4"], + ["--vscode-menu-selectionForeground", "#ffffff"], + ["--vscode-menu-separatorBackground", "#454545"], + ["--vscode-menubar-selectionBackground", "rgba(90, 93, 94, 0.31)"], + ["--vscode-menubar-selectionForeground", "#cccccc"], + ["--vscode-merge-commonContentBackground", "rgba(96, 96, 96, 0.16)"], + ["--vscode-merge-commonHeaderBackground", "rgba(96, 96, 96, 0.4)"], + ["--vscode-merge-currentContentBackground", "rgba(64, 200, 174, 0.2)"], + ["--vscode-merge-currentHeaderBackground", "rgba(64, 200, 174, 0.5)"], + ["--vscode-merge-incomingContentBackground", "rgba(64, 166, 255, 0.2)"], + ["--vscode-merge-incomingHeaderBackground", "rgba(64, 166, 255, 0.5)"], + ["--vscode-mergeEditor-change.background", "rgba(155, 185, 85, 0.2)"], + ["--vscode-mergeEditor-change.word.background", "rgba(156, 204, 44, 0.2)"], + ["--vscode-mergeEditor-changeBase.background", "#4b1818"], + ["--vscode-mergeEditor-changeBase.word.background", "#6f1313"], + [ + "--vscode-mergeEditor-conflict.handled.minimapOverViewRuler", + "rgba(173, 172, 168, 0.93)", + ], + [ + "--vscode-mergeEditor-conflict.handledFocused.border", + "rgba(193, 193, 193, 0.8)", + ], + [ + "--vscode-mergeEditor-conflict.handledUnfocused.border", + "rgba(134, 134, 134, 0.29)", + ], + [ + "--vscode-mergeEditor-conflict.input1.background", + "rgba(64, 200, 174, 0.2)", + ], + [ + "--vscode-mergeEditor-conflict.input2.background", + "rgba(64, 166, 255, 0.2)", + ], + ["--vscode-mergeEditor-conflict.unhandled.minimapOverViewRuler", "#fcba03"], + ["--vscode-mergeEditor-conflict.unhandledFocused.border", "#ffa600"], + [ + "--vscode-mergeEditor-conflict.unhandledUnfocused.border", + "rgba(255, 166, 0, 0.48)", + ], + [ + "--vscode-mergeEditor-conflictingLines.background", + "rgba(255, 234, 0, 0.28)", + ], + ["--vscode-minimap-chatEditHighlight", "rgba(31, 31, 31, 0.6)"], + ["--vscode-minimap-errorHighlight", "rgba(255, 18, 18, 0.7)"], + ["--vscode-minimap-findMatchHighlight", "rgba(234, 92, 0, 0.33)"], + ["--vscode-minimap-foregroundOpacity", "#000000"], + ["--vscode-minimap-infoHighlight", "#59a4f9"], + ["--vscode-minimap-selectionHighlight", "#264f78"], + [ + "--vscode-minimap-selectionOccurrenceHighlight", + "rgba(173, 214, 255, 0.15)", + ], + ["--vscode-minimap-warningHighlight", "#cca700"], + ["--vscode-minimapGutter-addedBackground", "#2ea043"], + ["--vscode-minimapGutter-deletedBackground", "#f85149"], + ["--vscode-minimapGutter-modifiedBackground", "#0078d4"], + ["--vscode-minimapSlider-activeBackground", "rgba(191, 191, 191, 0.2)"], + ["--vscode-minimapSlider-background", "rgba(121, 121, 121, 0.2)"], + ["--vscode-minimapSlider-hoverBackground", "rgba(100, 100, 100, 0.35)"], + ["--vscode-multiDiffEditor-background", "#1f1f1f"], + ["--vscode-multiDiffEditor-border", "#2b2b2b"], + ["--vscode-multiDiffEditor-headerBackground", "#262626"], + ["--vscode-notebook-cellBorderColor", "#37373d"], + ["--vscode-notebook-cellEditorBackground", "#181818"], + ["--vscode-notebook-cellInsertionIndicator", "#0078d4"], + [ + "--vscode-notebook-cellStatusBarItemHoverBackground", + "rgba(255, 255, 255, 0.15)", + ], + ["--vscode-notebook-cellToolbarSeparator", "rgba(128, 128, 128, 0.35)"], + ["--vscode-notebook-editorBackground", "#1f1f1f"], + ["--vscode-notebook-focusedCellBorder", "#0078d4"], + ["--vscode-notebook-focusedEditorBorder", "#0078d4"], + ["--vscode-notebook-inactiveFocusedCellBorder", "#37373d"], + ["--vscode-notebook-selectedCellBackground", "#37373d"], + ["--vscode-notebook-selectedCellBorder", "#37373d"], + ["--vscode-notebook-symbolHighlightBackground", "rgba(255, 255, 255, 0.04)"], + ["--vscode-notebookEditorOverviewRuler-runningCellForeground", "#89d185"], + [ + "--vscode-notebookScrollbarSlider-activeBackground", + "rgba(191, 191, 191, 0.4)", + ], + ["--vscode-notebookScrollbarSlider-background", "rgba(121, 121, 121, 0.4)"], + [ + "--vscode-notebookScrollbarSlider-hoverBackground", + "rgba(100, 100, 100, 0.7)", + ], + ["--vscode-notebookStatusErrorIcon-foreground", "#f85149"], + ["--vscode-notebookStatusRunningIcon-foreground", "#cccccc"], + ["--vscode-notebookStatusSuccessIcon-foreground", "#89d185"], + ["--vscode-notificationCenter-border", "#313131"], + ["--vscode-notificationCenterHeader-background", "#1f1f1f"], + ["--vscode-notificationCenterHeader-foreground", "#cccccc"], + ["--vscode-notificationLink-foreground", "#4daafc"], + ["--vscode-notifications-background", "#1f1f1f"], + ["--vscode-notifications-border", "#2b2b2b"], + ["--vscode-notifications-foreground", "#cccccc"], + ["--vscode-notificationsErrorIcon-foreground", "#f14c4c"], + ["--vscode-notificationsInfoIcon-foreground", "#59a4f9"], + ["--vscode-notificationsWarningIcon-foreground", "#cca700"], + ["--vscode-notificationToast-border", "#313131"], + ["--vscode-panel-background", "#181818"], + ["--vscode-panel-border", "#2b2b2b"], + ["--vscode-panel-dropBorder", "#cccccc"], + ["--vscode-panelInput-border", "#2b2b2b"], + ["--vscode-panelSection-border", "#2b2b2b"], + ["--vscode-panelSection-dropBackground", "rgba(83, 89, 93, 0.5)"], + ["--vscode-panelSectionHeader-background", "rgba(128, 128, 128, 0.2)"], + ["--vscode-panelStickyScroll-background", "#181818"], + ["--vscode-panelStickyScroll-shadow", "#000000"], + ["--vscode-panelTitle-activeBorder", "#0078d4"], + ["--vscode-panelTitle-activeForeground", "#cccccc"], + ["--vscode-panelTitle-inactiveForeground", "#9d9d9d"], + ["--vscode-panelTitleBadge-background", "#0078d4"], + ["--vscode-panelTitleBadge-foreground", "#ffffff"], + ["--vscode-peekView-border", "#59a4f9"], + ["--vscode-peekViewEditor-background", "#1f1f1f"], + [ + "--vscode-peekViewEditor-matchHighlightBackground", + "rgba(187, 128, 9, 0.4)", + ], + ["--vscode-peekViewEditorGutter-background", "#1f1f1f"], + ["--vscode-peekViewEditorStickyScroll-background", "#1f1f1f"], + ["--vscode-peekViewEditorStickyScrollGutter-background", "#1f1f1f"], + ["--vscode-peekViewResult-background", "#1f1f1f"], + ["--vscode-peekViewResult-fileForeground", "#ffffff"], + ["--vscode-peekViewResult-lineForeground", "#bbbbbb"], + [ + "--vscode-peekViewResult-matchHighlightBackground", + "rgba(187, 128, 9, 0.4)", + ], + ["--vscode-peekViewResult-selectionBackground", "rgba(51, 153, 255, 0.2)"], + ["--vscode-peekViewResult-selectionForeground", "#ffffff"], + ["--vscode-peekViewTitle-background", "#252526"], + ["--vscode-peekViewTitleDescription-foreground", "rgba(204, 204, 204, 0.7)"], + ["--vscode-peekViewTitleLabel-foreground", "#ffffff"], + ["--vscode-pickerGroup-border", "#3c3c3c"], + ["--vscode-pickerGroup-foreground", "#3794ff"], + ["--vscode-ports-iconRunningProcessForeground", "#369432"], + ["--vscode-problemsErrorIcon-foreground", "#f14c4c"], + ["--vscode-problemsInfoIcon-foreground", "#59a4f9"], + ["--vscode-problemsWarningIcon-foreground", "#cca700"], + ["--vscode-profileBadge-background", "#4d4d4d"], + ["--vscode-profileBadge-foreground", "#ffffff"], + ["--vscode-profiles-sashBorder", "#2b2b2b"], + ["--vscode-progressBar-background", "#0078d4"], + ["--vscode-quickInput-background", "#222222"], + ["--vscode-quickInput-foreground", "#cccccc"], + ["--vscode-quickInputList-focusBackground", "#04395e"], + ["--vscode-quickInputList-focusForeground", "#ffffff"], + ["--vscode-quickInputList-focusIconForeground", "#ffffff"], + ["--vscode-quickInputTitle-background", "rgba(255, 255, 255, 0.1)"], + ["--vscode-radio-activeBackground", "rgba(36, 137, 219, 0.51)"], + ["--vscode-radio-activeBorder", "#2488db"], + ["--vscode-radio-activeForeground", "#ffffff"], + ["--vscode-radio-inactiveBorder", "rgba(255, 255, 255, 0.2)"], + ["--vscode-radio-inactiveHoverBackground", "rgba(90, 93, 94, 0.5)"], + ["--vscode-remoteHub-decorations.addedForegroundColor", "#81b88b"], + ["--vscode-remoteHub-decorations.conflictForegroundColor", "#e4676b"], + ["--vscode-remoteHub-decorations.deletedForegroundColor", "#c74e39"], + ["--vscode-remoteHub-decorations.ignoredResourceForeground", "#8c8c8c"], + ["--vscode-remoteHub-decorations.incomingAddedForegroundColor", "#81b88b"], + ["--vscode-remoteHub-decorations.incomingDeletedForegroundColor", "#c74e39"], + ["--vscode-remoteHub-decorations.incomingModifiedForegroundColor", "#e2c08d"], + ["--vscode-remoteHub-decorations.incomingRenamedForegroundColor", "#73c991"], + ["--vscode-remoteHub-decorations.modifiedForegroundColor", "#e2c08d"], + ["--vscode-remoteHub-decorations.possibleConflictForegroundColor", "#cca700"], + ["--vscode-remoteHub-decorations.submoduleForegroundColor", "#8db9e2"], + [ + "--vscode-remoteHub-decorations.workspaceRepositoriesView.hasUncommittedChangesForegroundColor", + "#e2c08d", + ], + ["--vscode-sash-hoverBorder", "#0078d4"], + ["--vscode-scmGraph-foreground1", "#ffb000"], + ["--vscode-scmGraph-foreground2", "#dc267f"], + ["--vscode-scmGraph-foreground3", "#994f00"], + ["--vscode-scmGraph-foreground4", "#40b0a6"], + ["--vscode-scmGraph-foreground5", "#b66dff"], + ["--vscode-scmGraph-historyItemBaseRefColor", "#ea5c00"], + ["--vscode-scmGraph-historyItemHoverAdditionsForeground", "#81b88b"], + ["--vscode-scmGraph-historyItemHoverDefaultLabelBackground", "#616161"], + ["--vscode-scmGraph-historyItemHoverDefaultLabelForeground", "#cccccc"], + ["--vscode-scmGraph-historyItemHoverDeletionsForeground", "#c74e39"], + ["--vscode-scmGraph-historyItemHoverLabelForeground", "#181818"], + ["--vscode-scmGraph-historyItemRefColor", "#59a4f9"], + ["--vscode-scmGraph-historyItemRemoteRefColor", "#b180d7"], + ["--vscode-scrollbar-shadow", "#000000"], + ["--vscode-scrollbarSlider-activeBackground", "rgba(191, 191, 191, 0.4)"], + ["--vscode-scrollbarSlider-background", "rgba(121, 121, 121, 0.4)"], + ["--vscode-scrollbarSlider-hoverBackground", "rgba(100, 100, 100, 0.7)"], + ["--vscode-search-resultsInfoForeground", "rgba(204, 204, 204, 0.65)"], + ["--vscode-searchEditor-findMatchBackground", "rgba(234, 92, 0, 0.22)"], + ["--vscode-searchEditor-textInputBorder", "#3c3c3c"], + ["--vscode-settings-checkboxBackground", "#313131"], + ["--vscode-settings-checkboxBorder", "#3c3c3c"], + ["--vscode-settings-checkboxForeground", "#cccccc"], + ["--vscode-settings-dropdownBackground", "#313131"], + ["--vscode-settings-dropdownBorder", "#3c3c3c"], + ["--vscode-settings-dropdownForeground", "#cccccc"], + ["--vscode-settings-dropdownListBorder", "#454545"], + ["--vscode-settings-focusedRowBackground", "rgba(42, 45, 46, 0.6)"], + ["--vscode-settings-focusedRowBorder", "#0078d4"], + ["--vscode-settings-headerBorder", "#2b2b2b"], + ["--vscode-settings-headerForeground", "#ffffff"], + ["--vscode-settings-modifiedItemIndicator", "rgba(187, 128, 9, 0.4)"], + ["--vscode-settings-numberInputBackground", "#313131"], + ["--vscode-settings-numberInputBorder", "#3c3c3c"], + ["--vscode-settings-numberInputForeground", "#cccccc"], + ["--vscode-settings-rowHoverBackground", "rgba(42, 45, 46, 0.3)"], + ["--vscode-settings-sashBorder", "#2b2b2b"], + [ + "--vscode-settings-settingsHeaderHoverForeground", + "rgba(255, 255, 255, 0.7)", + ], + ["--vscode-settings-textInputBackground", "#313131"], + ["--vscode-settings-textInputBorder", "#3c3c3c"], + ["--vscode-settings-textInputForeground", "#cccccc"], + ["--vscode-sideBar-background", "#181818"], + ["--vscode-sideBar-border", "#2b2b2b"], + ["--vscode-sideBar-dropBackground", "rgba(83, 89, 93, 0.5)"], + ["--vscode-sideBar-foreground", "#cccccc"], + ["--vscode-sideBarActivityBarTop-border", "#2b2b2b"], + ["--vscode-sideBarSectionHeader-background", "#181818"], + ["--vscode-sideBarSectionHeader-border", "#2b2b2b"], + ["--vscode-sideBarSectionHeader-foreground", "#cccccc"], + ["--vscode-sideBarStickyScroll-background", "#181818"], + ["--vscode-sideBarStickyScroll-shadow", "#000000"], + ["--vscode-sideBarTitle-background", "#181818"], + ["--vscode-sideBarTitle-foreground", "#cccccc"], + ["--vscode-sideBySideEditor-horizontalBorder", "rgba(255, 255, 255, 0.09)"], + ["--vscode-sideBySideEditor-verticalBorder", "rgba(255, 255, 255, 0.09)"], + ["--vscode-simpleFindWidget-sashBorder", "#454545"], + ["--vscode-statusBar-background", "#181818"], + ["--vscode-statusBar-border", "#2b2b2b"], + ["--vscode-statusBar-debuggingBackground", "#0078d4"], + ["--vscode-statusBar-debuggingBorder", "#2b2b2b"], + ["--vscode-statusBar-debuggingForeground", "#ffffff"], + ["--vscode-statusBar-focusBorder", "#0078d4"], + ["--vscode-statusBar-foreground", "#cccccc"], + ["--vscode-statusBar-noFolderBackground", "#1f1f1f"], + ["--vscode-statusBar-noFolderBorder", "#2b2b2b"], + ["--vscode-statusBar-noFolderForeground", "#cccccc"], + ["--vscode-statusBarItem-activeBackground", "rgba(255, 255, 255, 0.18)"], + [ + "--vscode-statusBarItem-compactHoverBackground", + "rgba(255, 255, 255, 0.12)", + ], + ["--vscode-statusBarItem-errorBackground", "#b91007"], + ["--vscode-statusBarItem-errorForeground", "#ffffff"], + ["--vscode-statusBarItem-errorHoverBackground", "rgba(241, 241, 241, 0.2)"], + ["--vscode-statusBarItem-errorHoverForeground", "#ffffff"], + ["--vscode-statusBarItem-focusBorder", "#0078d4"], + ["--vscode-statusBarItem-hoverBackground", "rgba(241, 241, 241, 0.2)"], + ["--vscode-statusBarItem-hoverForeground", "#ffffff"], + ["--vscode-statusBarItem-offlineBackground", "#6c1717"], + ["--vscode-statusBarItem-offlineForeground", "#ffffff"], + ["--vscode-statusBarItem-offlineHoverBackground", "rgba(241, 241, 241, 0.2)"], + ["--vscode-statusBarItem-offlineHoverForeground", "#ffffff"], + ["--vscode-statusBarItem-prominentBackground", "rgba(110, 118, 129, 0.4)"], + ["--vscode-statusBarItem-prominentForeground", "#cccccc"], + [ + "--vscode-statusBarItem-prominentHoverBackground", + "rgba(241, 241, 241, 0.2)", + ], + ["--vscode-statusBarItem-prominentHoverForeground", "#ffffff"], + ["--vscode-statusBarItem-remoteBackground", "#0078d4"], + ["--vscode-statusBarItem-remoteForeground", "#ffffff"], + ["--vscode-statusBarItem-remoteHoverBackground", "rgba(241, 241, 241, 0.2)"], + ["--vscode-statusBarItem-remoteHoverForeground", "#ffffff"], + ["--vscode-statusBarItem-warningBackground", "#7a6400"], + ["--vscode-statusBarItem-warningForeground", "#ffffff"], + ["--vscode-statusBarItem-warningHoverBackground", "rgba(241, 241, 241, 0.2)"], + ["--vscode-statusBarItem-warningHoverForeground", "#ffffff"], + ["--vscode-strokeThickness", "1px"], + ["--vscode-symbolIcon-arrayForeground", "#cccccc"], + ["--vscode-symbolIcon-booleanForeground", "#cccccc"], + ["--vscode-symbolIcon-classForeground", "#ee9d28"], + ["--vscode-symbolIcon-colorForeground", "#cccccc"], + ["--vscode-symbolIcon-constantForeground", "#cccccc"], + ["--vscode-symbolIcon-constructorForeground", "#b180d7"], + ["--vscode-symbolIcon-enumeratorForeground", "#ee9d28"], + ["--vscode-symbolIcon-enumeratorMemberForeground", "#75beff"], + ["--vscode-symbolIcon-eventForeground", "#ee9d28"], + ["--vscode-symbolIcon-fieldForeground", "#75beff"], + ["--vscode-symbolIcon-fileForeground", "#cccccc"], + ["--vscode-symbolIcon-folderForeground", "#cccccc"], + ["--vscode-symbolIcon-functionForeground", "#b180d7"], + ["--vscode-symbolIcon-interfaceForeground", "#75beff"], + ["--vscode-symbolIcon-keyForeground", "#cccccc"], + ["--vscode-symbolIcon-keywordForeground", "#cccccc"], + ["--vscode-symbolIcon-methodForeground", "#b180d7"], + ["--vscode-symbolIcon-moduleForeground", "#cccccc"], + ["--vscode-symbolIcon-namespaceForeground", "#cccccc"], + ["--vscode-symbolIcon-nullForeground", "#cccccc"], + ["--vscode-symbolIcon-numberForeground", "#cccccc"], + ["--vscode-symbolIcon-objectForeground", "#cccccc"], + ["--vscode-symbolIcon-operatorForeground", "#cccccc"], + ["--vscode-symbolIcon-packageForeground", "#cccccc"], + ["--vscode-symbolIcon-propertyForeground", "#cccccc"], + ["--vscode-symbolIcon-referenceForeground", "#cccccc"], + ["--vscode-symbolIcon-snippetForeground", "#cccccc"], + ["--vscode-symbolIcon-stringForeground", "#cccccc"], + ["--vscode-symbolIcon-structForeground", "#cccccc"], + ["--vscode-symbolIcon-textForeground", "#cccccc"], + ["--vscode-symbolIcon-typeParameterForeground", "#cccccc"], + ["--vscode-symbolIcon-unitForeground", "#cccccc"], + ["--vscode-symbolIcon-variableForeground", "#75beff"], + ["--vscode-tab-activeBackground", "#1f1f1f"], + ["--vscode-tab-activeBorder", "#1f1f1f"], + ["--vscode-tab-activeBorderTop", "#0078d4"], + ["--vscode-tab-activeForeground", "#ffffff"], + ["--vscode-tab-activeModifiedBorder", "#3399cc"], + ["--vscode-tab-border", "#2b2b2b"], + ["--vscode-tab-dragAndDropBorder", "#ffffff"], + ["--vscode-tab-hoverBackground", "#1f1f1f"], + ["--vscode-tab-inactiveBackground", "#181818"], + ["--vscode-tab-inactiveForeground", "#9d9d9d"], + ["--vscode-tab-inactiveModifiedBorder", "rgba(51, 153, 204, 0.5)"], + ["--vscode-tab-lastPinnedBorder", "rgba(204, 204, 204, 0.2)"], + ["--vscode-tab-selectedBackground", "#222222"], + ["--vscode-tab-selectedBorderTop", "#6caddf"], + ["--vscode-tab-selectedForeground", "rgba(255, 255, 255, 0.63)"], + ["--vscode-tab-unfocusedActiveBackground", "#1f1f1f"], + ["--vscode-tab-unfocusedActiveBorder", "#1f1f1f"], + ["--vscode-tab-unfocusedActiveBorderTop", "#2b2b2b"], + ["--vscode-tab-unfocusedActiveForeground", "rgba(255, 255, 255, 0.5)"], + ["--vscode-tab-unfocusedActiveModifiedBorder", "rgba(51, 153, 204, 0.5)"], + ["--vscode-tab-unfocusedHoverBackground", "#1f1f1f"], + ["--vscode-tab-unfocusedInactiveBackground", "#181818"], + ["--vscode-tab-unfocusedInactiveForeground", "rgba(157, 157, 157, 0.5)"], + ["--vscode-tab-unfocusedInactiveModifiedBorder", "rgba(51, 153, 204, 0.25)"], + ["--vscode-terminal-ansiBlack", "#000000"], + ["--vscode-terminal-ansiBlue", "#2472c8"], + ["--vscode-terminal-ansiBrightBlack", "#666666"], + ["--vscode-terminal-ansiBrightBlue", "#3b8eea"], + ["--vscode-terminal-ansiBrightCyan", "#29b8db"], + ["--vscode-terminal-ansiBrightGreen", "#23d18b"], + ["--vscode-terminal-ansiBrightMagenta", "#d670d6"], + ["--vscode-terminal-ansiBrightRed", "#f14c4c"], + ["--vscode-terminal-ansiBrightWhite", "#e5e5e5"], + ["--vscode-terminal-ansiBrightYellow", "#f5f543"], + ["--vscode-terminal-ansiCyan", "#11a8cd"], + ["--vscode-terminal-ansiGreen", "#0dbc79"], + ["--vscode-terminal-ansiMagenta", "#bc3fbc"], + ["--vscode-terminal-ansiRed", "#cd3131"], + ["--vscode-terminal-ansiWhite", "#e5e5e5"], + ["--vscode-terminal-ansiYellow", "#e5e510"], + ["--vscode-terminal-border", "#2b2b2b"], + ["--vscode-terminal-dropBackground", "rgba(83, 89, 93, 0.5)"], + ["--vscode-terminal-findMatchBackground", "#9e6a03"], + ["--vscode-terminal-findMatchHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-terminal-foreground", "#cccccc"], + ["--vscode-terminal-hoverHighlightBackground", "rgba(38, 79, 120, 0.13)"], + ["--vscode-terminal-inactiveSelectionBackground", "#3a3d41"], + ["--vscode-terminal-initialHintForeground", "rgba(255, 255, 255, 0.34)"], + ["--vscode-terminal-selectionBackground", "#264f78"], + ["--vscode-terminal-tab.activeBorder", "#0078d4"], + [ + "--vscode-terminalCommandDecoration-defaultBackground", + "rgba(255, 255, 255, 0.25)", + ], + ["--vscode-terminalCommandDecoration-errorBackground", "#f14c4c"], + ["--vscode-terminalCommandDecoration-successBackground", "#1b81a8"], + ["--vscode-terminalCommandGuide-foreground", "#37373d"], + ["--vscode-terminalOverviewRuler-border", "#010409"], + [ + "--vscode-terminalOverviewRuler-cursorForeground", + "rgba(160, 160, 160, 0.8)", + ], + [ + "--vscode-terminalOverviewRuler-findMatchForeground", + "rgba(209, 134, 22, 0.49)", + ], + ["--vscode-terminalStickyScrollHover-background", "#2a2d2e"], + ["--vscode-terminalSymbolIcon-aliasForeground", "#b180d7"], + ["--vscode-terminalSymbolIcon-argumentForeground", "#75beff"], + ["--vscode-terminalSymbolIcon-branchForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-commitForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-fileForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-flagForeground", "#ee9d28"], + ["--vscode-terminalSymbolIcon-folderForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-methodForeground", "#b180d7"], + ["--vscode-terminalSymbolIcon-optionForeground", "#ee9d28"], + ["--vscode-terminalSymbolIcon-optionValueForeground", "#75beff"], + ["--vscode-terminalSymbolIcon-pullRequestDoneForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-pullRequestForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-remoteForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-stashForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-symbolicLinkFileForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-symbolicLinkFolderForeground", "#cccccc"], + ["--vscode-terminalSymbolIcon-symbolText", "#cccccc"], + ["--vscode-terminalSymbolIcon-tagForeground", "#cccccc"], + ["--vscode-testing-coverCountBadgeBackground", "#616161"], + ["--vscode-testing-coverCountBadgeForeground", "#f8f8f8"], + ["--vscode-testing-coveredBackground", "rgba(156, 204, 44, 0.2)"], + ["--vscode-testing-coveredBorder", "rgba(156, 204, 44, 0.15)"], + ["--vscode-testing-coveredGutterBackground", "rgba(156, 204, 44, 0.12)"], + ["--vscode-testing-iconErrored", "#f14c4c"], + ["--vscode-testing-iconErrored.retired", "rgba(241, 76, 76, 0.7)"], + ["--vscode-testing-iconFailed", "#f14c4c"], + ["--vscode-testing-iconFailed.retired", "rgba(241, 76, 76, 0.7)"], + ["--vscode-testing-iconPassed", "#73c991"], + ["--vscode-testing-iconPassed.retired", "rgba(115, 201, 145, 0.7)"], + ["--vscode-testing-iconQueued", "#cca700"], + ["--vscode-testing-iconQueued.retired", "rgba(204, 167, 0, 0.7)"], + ["--vscode-testing-iconSkipped", "#848484"], + ["--vscode-testing-iconSkipped.retired", "rgba(132, 132, 132, 0.7)"], + ["--vscode-testing-iconUnset", "#848484"], + ["--vscode-testing-iconUnset.retired", "rgba(132, 132, 132, 0.7)"], + ["--vscode-testing-message.error.badgeBackground", "#f14c4c"], + ["--vscode-testing-message.error.badgeBorder", "#f14c4c"], + ["--vscode-testing-message.error.badgeForeground", "#000000"], + [ + "--vscode-testing-message.info.decorationForeground", + "rgba(204, 204, 204, 0.5)", + ], + ["--vscode-testing-messagePeekBorder", "#59a4f9"], + ["--vscode-testing-messagePeekHeaderBackground", "rgba(89, 164, 249, 0.1)"], + ["--vscode-testing-peekBorder", "#f14c4c"], + ["--vscode-testing-peekHeaderBackground", "rgba(241, 76, 76, 0.1)"], + ["--vscode-testing-runAction", "#73c991"], + ["--vscode-testing-uncoveredBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-testing-uncoveredBorder", "rgba(255, 0, 0, 0.15)"], + ["--vscode-testing-uncoveredBranchBackground", "#781212"], + ["--vscode-testing-uncoveredGutterBackground", "rgba(255, 0, 0, 0.3)"], + ["--vscode-textBlockQuote-background", "#2b2b2b"], + ["--vscode-textBlockQuote-border", "#616161"], + ["--vscode-textCodeBlock-background", "#2b2b2b"], + ["--vscode-textLink-activeForeground", "#4daafc"], + ["--vscode-textLink-foreground", "#4daafc"], + ["--vscode-textPreformat-background", "#3c3c3c"], + ["--vscode-textPreformat-foreground", "#d0d0d0"], + ["--vscode-textSeparator-foreground", "#21262d"], + ["--vscode-titleBar-activeBackground", "#181818"], + ["--vscode-titleBar-activeForeground", "#cccccc"], + ["--vscode-titleBar-border", "#2b2b2b"], + ["--vscode-titleBar-inactiveBackground", "#1f1f1f"], + ["--vscode-titleBar-inactiveForeground", "#9d9d9d"], + ["--vscode-toolbar-activeBackground", "rgba(99, 102, 103, 0.31)"], + ["--vscode-toolbar-hoverBackground", "rgba(90, 93, 94, 0.31)"], + ["--vscode-tree-inactiveIndentGuidesStroke", "rgba(88, 88, 88, 0.4)"], + ["--vscode-tree-indentGuidesStroke", "#585858"], + ["--vscode-tree-tableColumnsBorder", "rgba(204, 204, 204, 0.13)"], + ["--vscode-tree-tableOddRowsBackground", "rgba(204, 204, 204, 0.04)"], + ["--vscode-walkThrough-embeddedEditorBackground", "rgba(0, 0, 0, 0.4)"], + ["--vscode-walkthrough-stepTitle.foreground", "#ffffff"], + ["--vscode-welcomePage-progress.background", "#313131"], + ["--vscode-welcomePage-progress.foreground", "#0078d4"], + ["--vscode-welcomePage-tileBackground", "#2b2b2b"], + ["--vscode-welcomePage-tileBorder", "rgba(255, 255, 255, 0.1)"], + ["--vscode-welcomePage-tileHoverBackground", "#262626"], + ["--vscode-widget-border", "#313131"], + ["--vscode-widget-shadow", "rgba(0, 0, 0, 0.36)"], +]; diff --git a/.storybook/themes/light-v2.ts b/.storybook/themes/light-v2.ts new file mode 100644 index 00000000..81bbc804 --- /dev/null +++ b/.storybook/themes/light-v2.ts @@ -0,0 +1,943 @@ +// Sourced from `vscode-elements/webview-playground`. +// https://github.com/vscode-elements/webview-playground/blob/f9a6f90413d0cc535839fb92445b7a5eebc540d7/dist/themes/light-v2.js + +export const lightTheme: Array<[string, string]> = [ + ["--vscode-actionBar-toggledBackground", "#dddddd"], + ["--vscode-activityBar-activeBorder", "#005fb8"], + ["--vscode-activityBar-background", "#f8f8f8"], + ["--vscode-activityBar-border", "#e5e5e5"], + ["--vscode-activityBar-dropBorder", "#1f1f1f"], + ["--vscode-activityBar-foreground", "#1f1f1f"], + ["--vscode-activityBar-inactiveForeground", "#616161"], + ["--vscode-activityBarBadge-background", "#005fb8"], + ["--vscode-activityBarBadge-foreground", "#ffffff"], + ["--vscode-activityBarTop-activeBorder", "#424242"], + ["--vscode-activityBarTop-dropBorder", "#424242"], + ["--vscode-activityBarTop-foreground", "#424242"], + ["--vscode-activityBarTop-inactiveForeground", "rgba(66, 66, 66, 0.75)"], + ["--vscode-activityErrorBadge-background", "#e51400"], + ["--vscode-activityErrorBadge-foreground", "#ffffff"], + ["--vscode-activityWarningBadge-background", "#b27c00"], + ["--vscode-activityWarningBadge-foreground", "#ffffff"], + ["--vscode-agentSessionReadIndicator-foreground", "rgba(59, 59, 59, 0.2)"], + ["--vscode-agentSessionSelectedBadge-border", "rgba(0, 0, 0, 0.3)"], + [ + "--vscode-agentSessionSelectedUnfocusedBadge-border", + "rgba(59, 59, 59, 0.3)", + ], + ["--vscode-agentStatusIndicator-background", "rgba(0, 0, 0, 0.05)"], + ["--vscode-aiCustomizationManagement-sashBorder", "#e5e5e5"], + ["--vscode-badge-background", "#cccccc"], + ["--vscode-badge-foreground", "#3b3b3b"], + ["--vscode-banner-background", "#a2a2a2"], + ["--vscode-banner-foreground", "#000000"], + ["--vscode-banner-iconForeground", "#0063d3"], + ["--vscode-bodyFontSize", "13px"], + ["--vscode-bodyFontSize-small", "12px"], + ["--vscode-bodyFontSize-xSmall", "11px"], + ["--vscode-breadcrumb-activeSelectionForeground", "#2f2f2f"], + ["--vscode-breadcrumb-background", "#ffffff"], + ["--vscode-breadcrumb-focusForeground", "#2f2f2f"], + ["--vscode-breadcrumb-foreground", "rgba(59, 59, 59, 0.8)"], + ["--vscode-breadcrumbPicker-background", "#f8f8f8"], + ["--vscode-browser-border", "#e5e5e5"], + ["--vscode-button-background", "#005fb8"], + ["--vscode-button-border", "rgba(0, 0, 0, 0.1)"], + ["--vscode-button-foreground", "#ffffff"], + ["--vscode-button-hoverBackground", "#0258a8"], + ["--vscode-button-secondaryBackground", "#e5e5e5"], + ["--vscode-button-secondaryForeground", "#3b3b3b"], + ["--vscode-button-secondaryHoverBackground", "#cccccc"], + ["--vscode-button-separator", "rgba(255, 255, 255, 0.4)"], + ["--vscode-chart-axis", "rgba(0, 0, 0, 0.6)"], + ["--vscode-chart-guide", "rgba(0, 0, 0, 0.2)"], + ["--vscode-chart-line", "#236b8e"], + ["--vscode-charts-blue", "#0063d3"], + ["--vscode-charts-foreground", "#3b3b3b"], + ["--vscode-charts-green", "#388a34"], + ["--vscode-charts-lines", "rgba(59, 59, 59, 0.5)"], + ["--vscode-charts-orange", "rgba(234, 92, 0, 0.33)"], + ["--vscode-charts-purple", "#652d90"], + ["--vscode-charts-red", "#e51400"], + ["--vscode-charts-yellow", "#bf8803"], + ["--vscode-chat-avatarBackground", "#f2f2f2"], + ["--vscode-chat-avatarForeground", "#3b3b3b"], + ["--vscode-chat-checkpointSeparator", "#a9a9a9"], + ["--vscode-chat-editedFileForeground", "#895503"], + ["--vscode-chat-linesAddedForeground", "#107c10"], + ["--vscode-chat-linesRemovedForeground", "#bc2f32"], + ["--vscode-chat-requestBackground", "rgba(255, 255, 255, 0.62)"], + ["--vscode-chat-requestBorder", "rgba(0, 0, 0, 0.1)"], + ["--vscode-chat-requestBubbleBackground", "rgba(173, 214, 255, 0.3)"], + ["--vscode-chat-requestBubbleHoverBackground", "rgba(173, 214, 255, 0.6)"], + ["--vscode-chat-requestCodeBorder", "rgba(14, 99, 156, 0.25)"], + ["--vscode-chat-slashCommandBackground", "rgba(173, 206, 255, 0.48)"], + ["--vscode-chat-slashCommandForeground", "#26569e"], + ["--vscode-chat-thinkingShimmer", "#000000"], + ["--vscode-chatManagement-sashBorder", "#e5e5e5"], + ["--vscode-checkbox-background", "#f8f8f8"], + ["--vscode-checkbox-border", "#cecece"], + ["--vscode-checkbox-disabled.background", "#b9b9b9"], + ["--vscode-checkbox-disabled.foreground", "#797979"], + ["--vscode-checkbox-foreground", "#3b3b3b"], + ["--vscode-checkbox-selectBackground", "#f8f8f8"], + ["--vscode-checkbox-selectBorder", "#3b3b3b"], + ["--vscode-codiconFontSize", "16px"], + ["--vscode-commandCenter-activeBackground", "rgba(0, 0, 0, 0.08)"], + ["--vscode-commandCenter-activeBorder", "rgba(30, 30, 30, 0.3)"], + ["--vscode-commandCenter-activeForeground", "#1e1e1e"], + ["--vscode-commandCenter-background", "rgba(0, 0, 0, 0.05)"], + ["--vscode-commandCenter-border", "rgba(30, 30, 30, 0.2)"], + ["--vscode-commandCenter-debuggingBackground", "rgba(253, 113, 108, 0.26)"], + ["--vscode-commandCenter-foreground", "#1e1e1e"], + ["--vscode-commandCenter-inactiveBorder", "rgba(139, 148, 158, 0.25)"], + ["--vscode-commandCenter-inactiveForeground", "#8b949e"], + ["--vscode-commentsView-resolvedIcon", "rgba(97, 97, 97, 0.5)"], + ["--vscode-commentsView-unresolvedIcon", "#005fb8"], + ["--vscode-cornerRadius-circle", "9999px"], + ["--vscode-cornerRadius-large", "8px"], + ["--vscode-cornerRadius-medium", "6px"], + ["--vscode-cornerRadius-small", "4px"], + ["--vscode-cornerRadius-xLarge", "12px"], + ["--vscode-cornerRadius-xSmall", "2px"], + ["--vscode-debugConsole-errorForeground", "#f85149"], + ["--vscode-debugConsole-infoForeground", "#0063d3"], + ["--vscode-debugConsole-sourceForeground", "#3b3b3b"], + ["--vscode-debugConsole-warningForeground", "#bf8803"], + ["--vscode-debugConsoleInputIcon-foreground", "#3b3b3b"], + ["--vscode-debugExceptionWidget-background", "#f1dfde"], + ["--vscode-debugExceptionWidget-border", "#a31515"], + ["--vscode-debugIcon-breakpointCurrentStackframeForeground", "#be8700"], + ["--vscode-debugIcon-breakpointDisabledForeground", "#848484"], + ["--vscode-debugIcon-breakpointForeground", "#e51400"], + ["--vscode-debugIcon-breakpointStackframeForeground", "#89d185"], + ["--vscode-debugIcon-breakpointUnverifiedForeground", "#848484"], + ["--vscode-debugIcon-continueForeground", "#007acc"], + ["--vscode-debugIcon-disconnectForeground", "#a1260d"], + ["--vscode-debugIcon-pauseForeground", "#007acc"], + ["--vscode-debugIcon-restartForeground", "#388a34"], + ["--vscode-debugIcon-startForeground", "#388a34"], + ["--vscode-debugIcon-stepBackForeground", "#007acc"], + ["--vscode-debugIcon-stepIntoForeground", "#007acc"], + ["--vscode-debugIcon-stepOutForeground", "#007acc"], + ["--vscode-debugIcon-stepOverForeground", "#007acc"], + ["--vscode-debugIcon-stopForeground", "#a1260d"], + ["--vscode-debugTokenExpression-boolean", "#0000ff"], + ["--vscode-debugTokenExpression-error", "#e51400"], + ["--vscode-debugTokenExpression-name", "#9b46b0"], + ["--vscode-debugTokenExpression-number", "#098658"], + ["--vscode-debugTokenExpression-string", "#a31515"], + ["--vscode-debugTokenExpression-type", "#4a90e2"], + ["--vscode-debugTokenExpression-value", "rgba(108, 108, 108, 0.8)"], + ["--vscode-debugToolBar-background", "#f3f3f3"], + ["--vscode-debugView-exceptionLabelBackground", "#a31515"], + ["--vscode-debugView-exceptionLabelForeground", "#ffffff"], + ["--vscode-debugView-stateLabelBackground", "rgba(136, 136, 136, 0.27)"], + ["--vscode-debugView-stateLabelForeground", "#3b3b3b"], + ["--vscode-debugView-valueChangedHighlight", "#569cd6"], + ["--vscode-descriptionForeground", "#3b3b3b"], + ["--vscode-diffEditor-diagonalFill", "rgba(34, 34, 34, 0.2)"], + ["--vscode-diffEditor-insertedLineBackground", "rgba(155, 185, 85, 0.2)"], + ["--vscode-diffEditor-insertedTextBackground", "rgba(156, 204, 44, 0.25)"], + ["--vscode-diffEditor-move.border", "rgba(139, 139, 139, 0.61)"], + ["--vscode-diffEditor-moveActive.border", "#ffa500"], + ["--vscode-diffEditor-removedLineBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-diffEditor-removedTextBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-diffEditor-unchangedCodeBackground", "rgba(184, 184, 184, 0.16)"], + ["--vscode-diffEditor-unchangedRegionBackground", "#f8f8f8"], + ["--vscode-diffEditor-unchangedRegionForeground", "#3b3b3b"], + ["--vscode-diffEditor-unchangedRegionShadow", "rgba(115, 115, 115, 0.75)"], + ["--vscode-disabledForeground", "rgba(97, 97, 97, 0.5)"], + ["--vscode-dropdown-background", "#ffffff"], + ["--vscode-dropdown-border", "#cecece"], + ["--vscode-dropdown-foreground", "#3b3b3b"], + ["--vscode-dropdown-listBackground", "#ffffff"], + ["--vscode-editor-background", "#ffffff"], + ["--vscode-editor-compositionBorder", "#000000"], + ["--vscode-editor-findMatchBackground", "#a8ac94"], + ["--vscode-editor-findMatchHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-editor-findRangeHighlightBackground", "rgba(180, 180, 180, 0.3)"], + [ + "--vscode-editor-focusedStackFrameHighlightBackground", + "rgba(206, 231, 206, 0.45)", + ], + ["--vscode-editor-foldBackground", "rgba(173, 214, 255, 0.3)"], + ["--vscode-editor-foldPlaceholderForeground", "#808080"], + ["--vscode-editor-font-feature-settings", '"liga" off, "calt" off'], + ["--vscode-editor-font-size", "14px"], + ["--vscode-editor-font-weight", "normal"], + ["--vscode-editor-foreground", "#3b3b3b"], + ["--vscode-editor-hoverHighlightBackground", "rgba(173, 214, 255, 0.15)"], + ["--vscode-editor-inactiveSelectionBackground", "#e5ebf1"], + ["--vscode-editor-inlineValuesBackground", "rgba(255, 200, 0, 0.2)"], + ["--vscode-editor-inlineValuesForeground", "rgba(0, 0, 0, 0.5)"], + ["--vscode-editor-lineHighlightBorder", "#eeeeee"], + ["--vscode-editor-linkedEditingBackground", "rgba(255, 0, 0, 0.3)"], + ["--vscode-editor-placeholder.foreground", "rgba(0, 0, 0, 0.47)"], + ["--vscode-editor-rangeHighlightBackground", "rgba(253, 255, 0, 0.2)"], + ["--vscode-editor-selectionBackground", "#add6ff"], + ["--vscode-editor-selectionHighlightBackground", "rgba(173, 214, 255, 0.5)"], + [ + "--vscode-editor-snippetFinalTabstopHighlightBorder", + "rgba(10, 50, 100, 0.5)", + ], + [ + "--vscode-editor-snippetTabstopHighlightBackground", + "rgba(10, 50, 100, 0.2)", + ], + [ + "--vscode-editor-stackFrameHighlightBackground", + "rgba(255, 255, 102, 0.45)", + ], + ["--vscode-editor-symbolHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-editor-wordHighlightBackground", "rgba(87, 87, 87, 0.25)"], + ["--vscode-editor-wordHighlightStrongBackground", "rgba(14, 99, 156, 0.25)"], + ["--vscode-editor-wordHighlightTextBackground", "rgba(87, 87, 87, 0.25)"], + ["--vscode-editorActionList-background", "#f8f8f8"], + ["--vscode-editorActionList-focusBackground", "#e8e8e8"], + ["--vscode-editorActionList-focusForeground", "#000000"], + ["--vscode-editorActionList-foreground", "#3b3b3b"], + ["--vscode-editorActiveLineNumber-foreground", "#0b216f"], + ["--vscode-editorBracketHighlight-foreground1", "#0431fa"], + ["--vscode-editorBracketHighlight-foreground2", "#319331"], + ["--vscode-editorBracketHighlight-foreground3", "#7b3814"], + ["--vscode-editorBracketHighlight-foreground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketHighlight-foreground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketHighlight-foreground6", "rgba(0, 0, 0, 0)"], + [ + "--vscode-editorBracketHighlight-unexpectedBracket.foreground", + "rgba(255, 18, 18, 0.8)", + ], + ["--vscode-editorBracketMatch-background", "rgba(0, 100, 0, 0.1)"], + ["--vscode-editorBracketMatch-border", "#b9b9b9"], + ["--vscode-editorBracketPairGuide-activeBackground1", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-activeBackground6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background1", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorBracketPairGuide-background6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorCodeLens-foreground", "#919191"], + [ + "--vscode-editorCommentsWidget-rangeActiveBackground", + "rgba(0, 95, 184, 0.1)", + ], + ["--vscode-editorCommentsWidget-rangeBackground", "rgba(0, 95, 184, 0.1)"], + ["--vscode-editorCommentsWidget-replyInputBackground", "#f3f3f3"], + ["--vscode-editorCommentsWidget-resolvedBorder", "rgba(97, 97, 97, 0.5)"], + ["--vscode-editorCommentsWidget-unresolvedBorder", "#005fb8"], + ["--vscode-editorCursor-foreground", "#000000"], + ["--vscode-editorError-foreground", "#e51400"], + ["--vscode-editorGhostText-foreground", "rgba(0, 0, 0, 0.47)"], + ["--vscode-editorGroup-border", "#e5e5e5"], + ["--vscode-editorGroup-dropBackground", "rgba(38, 119, 203, 0.18)"], + ["--vscode-editorGroup-dropIntoPromptBackground", "#f8f8f8"], + ["--vscode-editorGroup-dropIntoPromptForeground", "#3b3b3b"], + ["--vscode-editorGroupHeader-noTabsBackground", "#ffffff"], + ["--vscode-editorGroupHeader-tabsBackground", "#f8f8f8"], + ["--vscode-editorGroupHeader-tabsBorder", "#e5e5e5"], + ["--vscode-editorGutter-addedBackground", "#2ea043"], + ["--vscode-editorGutter-addedSecondaryBackground", "#83db93"], + ["--vscode-editorGutter-background", "#ffffff"], + ["--vscode-editorGutter-commentDraftGlyphForeground", "#3b3b3b"], + ["--vscode-editorGutter-commentGlyphForeground", "#3b3b3b"], + ["--vscode-editorGutter-commentRangeForeground", "#d5d8e9"], + ["--vscode-editorGutter-commentUnresolvedGlyphForeground", "#3b3b3b"], + ["--vscode-editorGutter-deletedBackground", "#f85149"], + ["--vscode-editorGutter-deletedSecondaryBackground", "#fcaaa6"], + ["--vscode-editorGutter-foldingControlForeground", "#3b3b3b"], + ["--vscode-editorGutter-itemBackground", "#d5d8e9"], + ["--vscode-editorGutter-itemGlyphForeground", "#3b3b3b"], + ["--vscode-editorGutter-modifiedBackground", "#005fb8"], + ["--vscode-editorGutter-modifiedSecondaryBackground", "#3aa0ff"], + ["--vscode-editorHint-foreground", "#6c6c6c"], + ["--vscode-editorHoverWidget-background", "#f8f8f8"], + ["--vscode-editorHoverWidget-border", "#c8c8c8"], + ["--vscode-editorHoverWidget-foreground", "#3b3b3b"], + ["--vscode-editorHoverWidget-highlightForeground", "#0066bf"], + ["--vscode-editorHoverWidget-statusBarBackground", "#ececec"], + ["--vscode-editorIndentGuide-activeBackground", "rgba(51, 51, 51, 0.2)"], + ["--vscode-editorIndentGuide-activeBackground1", "#939393"], + ["--vscode-editorIndentGuide-activeBackground2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-activeBackground6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background", "rgba(51, 51, 51, 0.2)"], + ["--vscode-editorIndentGuide-background1", "#d3d3d3"], + ["--vscode-editorIndentGuide-background2", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background3", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background4", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background5", "rgba(0, 0, 0, 0)"], + ["--vscode-editorIndentGuide-background6", "rgba(0, 0, 0, 0)"], + ["--vscode-editorInfo-foreground", "#0063d3"], + ["--vscode-editorInlayHint-background", "rgba(204, 204, 204, 0.1)"], + ["--vscode-editorInlayHint-foreground", "#969696"], + ["--vscode-editorInlayHint-parameterBackground", "rgba(204, 204, 204, 0.1)"], + ["--vscode-editorInlayHint-parameterForeground", "#969696"], + ["--vscode-editorInlayHint-typeBackground", "rgba(204, 204, 204, 0.1)"], + ["--vscode-editorInlayHint-typeForeground", "#969696"], + ["--vscode-editorLightBulb-foreground", "#ddb100"], + ["--vscode-editorLightBulbAi-foreground", "#ddb100"], + ["--vscode-editorLightBulbAutoFix-foreground", "#007acc"], + ["--vscode-editorLineNumber-activeForeground", "#171184"], + ["--vscode-editorLineNumber-foreground", "#6e7681"], + ["--vscode-editorLink-activeForeground", "#0000ff"], + ["--vscode-editorMarkerNavigation-background", "#ffffff"], + ["--vscode-editorMarkerNavigationError-background", "#e51400"], + [ + "--vscode-editorMarkerNavigationError-headerBackground", + "rgba(229, 20, 0, 0.1)", + ], + ["--vscode-editorMarkerNavigationInfo-background", "#0063d3"], + [ + "--vscode-editorMarkerNavigationInfo-headerBackground", + "rgba(0, 99, 211, 0.1)", + ], + ["--vscode-editorMarkerNavigationWarning-background", "#bf8803"], + [ + "--vscode-editorMarkerNavigationWarning-headerBackground", + "rgba(191, 136, 3, 0.1)", + ], + ["--vscode-editorMinimap-inlineChatInserted", "rgba(156, 204, 44, 0.2)"], + ["--vscode-editorMultiCursor-primary.foreground", "#000000"], + ["--vscode-editorMultiCursor-secondary.foreground", "#000000"], + ["--vscode-editorOverviewRuler-addedForeground", "rgba(46, 160, 67, 0.6)"], + ["--vscode-editorOverviewRuler-border", "#e5e5e5"], + ["--vscode-editorOverviewRuler-bracketMatchForeground", "#a0a0a0"], + ["--vscode-editorOverviewRuler-commentDraftForeground", "#d5d8e9"], + ["--vscode-editorOverviewRuler-commentForeground", "#d5d8e9"], + ["--vscode-editorOverviewRuler-commentUnresolvedForeground", "#d5d8e9"], + [ + "--vscode-editorOverviewRuler-commonContentForeground", + "rgba(96, 96, 96, 0.4)", + ], + [ + "--vscode-editorOverviewRuler-currentContentForeground", + "rgba(64, 200, 174, 0.5)", + ], + ["--vscode-editorOverviewRuler-deletedForeground", "rgba(248, 81, 73, 0.6)"], + ["--vscode-editorOverviewRuler-errorForeground", "rgba(255, 18, 18, 0.7)"], + [ + "--vscode-editorOverviewRuler-findMatchForeground", + "rgba(209, 134, 22, 0.49)", + ], + [ + "--vscode-editorOverviewRuler-incomingContentForeground", + "rgba(64, 166, 255, 0.5)", + ], + ["--vscode-editorOverviewRuler-infoForeground", "#0063d3"], + [ + "--vscode-editorOverviewRuler-inlineChatInserted", + "rgba(156, 204, 44, 0.2)", + ], + ["--vscode-editorOverviewRuler-inlineChatRemoved", "rgba(255, 0, 0, 0.16)"], + ["--vscode-editorOverviewRuler-modifiedForeground", "rgba(0, 95, 184, 0.6)"], + [ + "--vscode-editorOverviewRuler-rangeHighlightForeground", + "rgba(0, 122, 204, 0.6)", + ], + [ + "--vscode-editorOverviewRuler-selectionHighlightForeground", + "rgba(160, 160, 160, 0.8)", + ], + ["--vscode-editorOverviewRuler-warningForeground", "#bf8803"], + [ + "--vscode-editorOverviewRuler-wordHighlightForeground", + "rgba(160, 160, 160, 0.8)", + ], + [ + "--vscode-editorOverviewRuler-wordHighlightStrongForeground", + "rgba(192, 160, 192, 0.8)", + ], + [ + "--vscode-editorOverviewRuler-wordHighlightTextForeground", + "rgba(160, 160, 160, 0.8)", + ], + ["--vscode-editorPane-background", "#ffffff"], + ["--vscode-editorRuler-foreground", "#d3d3d3"], + ["--vscode-editorStickyScroll-background", "#ffffff"], + ["--vscode-editorStickyScroll-shadow", "#dddddd"], + ["--vscode-editorStickyScrollGutter-background", "#ffffff"], + ["--vscode-editorStickyScrollHover-background", "#f0f0f0"], + ["--vscode-editorSuggestWidget-background", "#f8f8f8"], + ["--vscode-editorSuggestWidget-border", "#c8c8c8"], + ["--vscode-editorSuggestWidget-focusHighlightForeground", "#0066bf"], + ["--vscode-editorSuggestWidget-foreground", "#3b3b3b"], + ["--vscode-editorSuggestWidget-highlightForeground", "#0066bf"], + ["--vscode-editorSuggestWidget-selectedBackground", "#e8e8e8"], + ["--vscode-editorSuggestWidget-selectedForeground", "#000000"], + ["--vscode-editorSuggestWidget-selectedIconForeground", "#000000"], + ["--vscode-editorSuggestWidgetStatus-foreground", "rgba(59, 59, 59, 0.5)"], + ["--vscode-editorUnicodeHighlight-border", "#bf8803"], + ["--vscode-editorUnnecessaryCode-opacity", "rgba(0, 0, 0, 0.47)"], + ["--vscode-editorWarning-foreground", "#bf8803"], + ["--vscode-editorWhitespace-foreground", "rgba(51, 51, 51, 0.2)"], + ["--vscode-editorWidget-background", "#f8f8f8"], + ["--vscode-editorWidget-border", "#c8c8c8"], + ["--vscode-editorWidget-foreground", "#3b3b3b"], + ["--vscode-errorForeground", "#f85149"], + ["--vscode-extensionBadge-remoteBackground", "#005fb8"], + ["--vscode-extensionBadge-remoteForeground", "#ffffff"], + ["--vscode-extensionButton-background", "#e5e5e5"], + ["--vscode-extensionButton-border", "rgba(0, 0, 0, 0.1)"], + ["--vscode-extensionButton-foreground", "#3b3b3b"], + ["--vscode-extensionButton-hoverBackground", "#cccccc"], + ["--vscode-extensionButton-prominentBackground", "#005fb8"], + ["--vscode-extensionButton-prominentForeground", "#ffffff"], + ["--vscode-extensionButton-prominentHoverBackground", "#0258a8"], + ["--vscode-extensionButton-separator", "rgba(255, 255, 255, 0.4)"], + ["--vscode-extensionIcon-preReleaseForeground", "#1d9271"], + ["--vscode-extensionIcon-privateForeground", "rgba(0, 0, 0, 0.38)"], + ["--vscode-extensionIcon-sponsorForeground", "#b51e78"], + ["--vscode-extensionIcon-starForeground", "#df6100"], + ["--vscode-extensionIcon-verifiedForeground", "#005fb8"], + ["--vscode-focusBorder", "#005fb8"], + ["--vscode-font-size", "13px"], + ["--vscode-font-weight", "normal"], + ["--vscode-foreground", "#3b3b3b"], + ["--vscode-gauge-background", "rgba(0, 122, 204, 0.3)"], + ["--vscode-gauge-errorBackground", "rgba(190, 17, 0, 0.3)"], + ["--vscode-gauge-errorForeground", "#be1100"], + ["--vscode-gauge-foreground", "#007acc"], + ["--vscode-gauge-warningBackground", "rgba(184, 149, 0, 0.3)"], + ["--vscode-gauge-warningForeground", "#b89500"], + ["--vscode-icon-foreground", "#3b3b3b"], + ["--vscode-inlineChat-background", "#f8f8f8"], + ["--vscode-inlineChat-border", "#c8c8c8"], + ["--vscode-inlineChat-foreground", "#3b3b3b"], + ["--vscode-inlineChat-shadow", "rgba(0, 0, 0, 0.16)"], + ["--vscode-inlineChatDiff-inserted", "rgba(156, 204, 44, 0.13)"], + ["--vscode-inlineChatDiff-removed", "rgba(255, 0, 0, 0.1)"], + ["--vscode-inlineChatInput-background", "#ffffff"], + ["--vscode-inlineChatInput-border", "#c8c8c8"], + ["--vscode-inlineChatInput-focusBorder", "#005fb8"], + ["--vscode-inlineChatInput-placeholderForeground", "#767676"], + ["--vscode-inlineEdit-gutterIndicator.background", "rgba(95, 95, 95, 0.09)"], + [ + "--vscode-inlineEdit-gutterIndicator.primaryBackground", + "rgba(0, 95, 184, 0.5)", + ], + ["--vscode-inlineEdit-gutterIndicator.primaryBorder", "#005fb8"], + ["--vscode-inlineEdit-gutterIndicator.primaryForeground", "#ffffff"], + ["--vscode-inlineEdit-gutterIndicator.secondaryBackground", "#f8f8f8"], + ["--vscode-inlineEdit-gutterIndicator.secondaryBorder", "#c8c8c8"], + ["--vscode-inlineEdit-gutterIndicator.secondaryForeground", "#3b3b3b"], + ["--vscode-inlineEdit-gutterIndicator.successfulBackground", "#005fb8"], + ["--vscode-inlineEdit-gutterIndicator.successfulBorder", "#005fb8"], + ["--vscode-inlineEdit-gutterIndicator.successfulForeground", "#ffffff"], + ["--vscode-inlineEdit-modifiedBackground", "rgba(156, 204, 44, 0.07)"], + ["--vscode-inlineEdit-modifiedBorder", "rgba(62, 81, 18, 0.25)"], + [ + "--vscode-inlineEdit-modifiedChangedLineBackground", + "rgba(155, 185, 85, 0.14)", + ], + [ + "--vscode-inlineEdit-modifiedChangedTextBackground", + "rgba(156, 204, 44, 0.18)", + ], + ["--vscode-inlineEdit-originalBackground", "rgba(255, 0, 0, 0.04)"], + ["--vscode-inlineEdit-originalBorder", "rgba(255, 0, 0, 0.2)"], + [ + "--vscode-inlineEdit-originalChangedLineBackground", + "rgba(255, 0, 0, 0.16)", + ], + [ + "--vscode-inlineEdit-originalChangedTextBackground", + "rgba(255, 0, 0, 0.16)", + ], + ["--vscode-inlineEdit-tabWillAcceptModifiedBorder", "rgba(62, 81, 18, 0.25)"], + ["--vscode-inlineEdit-tabWillAcceptOriginalBorder", "rgba(255, 0, 0, 0.2)"], + ["--vscode-input-background", "#ffffff"], + ["--vscode-input-border", "#cecece"], + ["--vscode-input-foreground", "#3b3b3b"], + ["--vscode-input-placeholderForeground", "#767676"], + ["--vscode-inputOption-activeBackground", "#bed6ed"], + ["--vscode-inputOption-activeBorder", "#005fb8"], + ["--vscode-inputOption-activeForeground", "#000000"], + ["--vscode-inputOption-hoverBackground", "rgba(184, 184, 184, 0.31)"], + ["--vscode-inputValidation-errorBackground", "#f2dede"], + ["--vscode-inputValidation-errorBorder", "#be1100"], + ["--vscode-inputValidation-infoBackground", "#d6ecf2"], + ["--vscode-inputValidation-infoBorder", "#007acc"], + ["--vscode-inputValidation-warningBackground", "#f6f5d2"], + ["--vscode-inputValidation-warningBorder", "#b89500"], + ["--vscode-interactive-activeCodeBorder", "#007acc"], + ["--vscode-interactive-inactiveCodeBorder", "#e4e6f1"], + ["--vscode-keybindingLabel-background", "rgba(221, 221, 221, 0.4)"], + ["--vscode-keybindingLabel-border", "rgba(204, 204, 204, 0.4)"], + ["--vscode-keybindingLabel-bottomBorder", "rgba(187, 187, 187, 0.4)"], + ["--vscode-keybindingLabel-foreground", "#3b3b3b"], + ["--vscode-keybindingTable-headerBackground", "rgba(59, 59, 59, 0.04)"], + ["--vscode-keybindingTable-rowsBackground", "rgba(59, 59, 59, 0.04)"], + ["--vscode-list-activeSelectionBackground", "#e8e8e8"], + ["--vscode-list-activeSelectionForeground", "#000000"], + ["--vscode-list-activeSelectionIconForeground", "#000000"], + ["--vscode-list-deemphasizedForeground", "#8e8e90"], + ["--vscode-list-dropBackground", "#d6ebff"], + ["--vscode-list-dropBetweenBackground", "#3b3b3b"], + ["--vscode-list-errorForeground", "#b01011"], + ["--vscode-list-filterMatchBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-list-focusAndSelectionOutline", "#005fb8"], + ["--vscode-list-focusHighlightForeground", "#0066bf"], + ["--vscode-list-focusOutline", "#005fb8"], + ["--vscode-list-highlightForeground", "#0066bf"], + ["--vscode-list-hoverBackground", "#f2f2f2"], + ["--vscode-list-inactiveSelectionBackground", "#e4e6f1"], + ["--vscode-list-invalidItemForeground", "#b89500"], + ["--vscode-list-warningForeground", "#855f00"], + ["--vscode-listFilterWidget-background", "#f8f8f8"], + ["--vscode-listFilterWidget-noMatchesOutline", "#be1100"], + ["--vscode-listFilterWidget-outline", "rgba(0, 0, 0, 0)"], + ["--vscode-listFilterWidget-shadow", "rgba(0, 0, 0, 0.16)"], + ["--vscode-markdownAlert-caution.foreground", "#e51400"], + ["--vscode-markdownAlert-important.foreground", "#652d90"], + ["--vscode-markdownAlert-note.foreground", "#0063d3"], + ["--vscode-markdownAlert-tip.foreground", "#388a34"], + ["--vscode-markdownAlert-warning.foreground", "#bf8803"], + ["--vscode-mcpIcon-starForeground", "#df6100"], + ["--vscode-menu-background", "#ffffff"], + ["--vscode-menu-border", "#cecece"], + ["--vscode-menu-foreground", "#3b3b3b"], + ["--vscode-menu-selectionBackground", "#005fb8"], + ["--vscode-menu-selectionForeground", "#ffffff"], + ["--vscode-menu-separatorBackground", "#d4d4d4"], + ["--vscode-menubar-selectionBackground", "rgba(184, 184, 184, 0.31)"], + ["--vscode-menubar-selectionForeground", "#1e1e1e"], + ["--vscode-merge-commonContentBackground", "rgba(96, 96, 96, 0.16)"], + ["--vscode-merge-commonHeaderBackground", "rgba(96, 96, 96, 0.4)"], + ["--vscode-merge-currentContentBackground", "rgba(64, 200, 174, 0.2)"], + ["--vscode-merge-currentHeaderBackground", "rgba(64, 200, 174, 0.5)"], + ["--vscode-merge-incomingContentBackground", "rgba(64, 166, 255, 0.2)"], + ["--vscode-merge-incomingHeaderBackground", "rgba(64, 166, 255, 0.5)"], + ["--vscode-mergeEditor-change.background", "rgba(155, 185, 85, 0.2)"], + ["--vscode-mergeEditor-change.word.background", "rgba(156, 204, 44, 0.4)"], + ["--vscode-mergeEditor-changeBase.background", "#ffcccc"], + ["--vscode-mergeEditor-changeBase.word.background", "#ffa3a3"], + [ + "--vscode-mergeEditor-conflict.handled.minimapOverViewRuler", + "rgba(173, 172, 168, 0.93)", + ], + [ + "--vscode-mergeEditor-conflict.handledFocused.border", + "rgba(193, 193, 193, 0.8)", + ], + [ + "--vscode-mergeEditor-conflict.handledUnfocused.border", + "rgba(134, 134, 134, 0.29)", + ], + [ + "--vscode-mergeEditor-conflict.input1.background", + "rgba(64, 200, 174, 0.2)", + ], + [ + "--vscode-mergeEditor-conflict.input2.background", + "rgba(64, 166, 255, 0.2)", + ], + ["--vscode-mergeEditor-conflict.unhandled.minimapOverViewRuler", "#fcba03"], + ["--vscode-mergeEditor-conflict.unhandledFocused.border", "#ffa600"], + ["--vscode-mergeEditor-conflict.unhandledUnfocused.border", "#ffa600"], + [ + "--vscode-mergeEditor-conflictingLines.background", + "rgba(255, 234, 0, 0.28)", + ], + ["--vscode-minimap-chatEditHighlight", "rgba(255, 255, 255, 0.6)"], + ["--vscode-minimap-errorHighlight", "rgba(255, 18, 18, 0.7)"], + ["--vscode-minimap-findMatchHighlight", "rgba(234, 92, 0, 0.33)"], + ["--vscode-minimap-foregroundOpacity", "#000000"], + ["--vscode-minimap-infoHighlight", "#0063d3"], + ["--vscode-minimap-selectionHighlight", "#add6ff"], + ["--vscode-minimap-selectionOccurrenceHighlight", "rgba(173, 214, 255, 0.5)"], + ["--vscode-minimap-warningHighlight", "#bf8803"], + ["--vscode-minimapGutter-addedBackground", "#2ea043"], + ["--vscode-minimapGutter-deletedBackground", "#f85149"], + ["--vscode-minimapGutter-modifiedBackground", "#005fb8"], + ["--vscode-minimapSlider-activeBackground", "rgba(0, 0, 0, 0.3)"], + ["--vscode-minimapSlider-background", "rgba(100, 100, 100, 0.2)"], + ["--vscode-minimapSlider-hoverBackground", "rgba(100, 100, 100, 0.35)"], + ["--vscode-multiDiffEditor-background", "#ffffff"], + ["--vscode-multiDiffEditor-border", "#cccccc"], + ["--vscode-multiDiffEditor-headerBackground", "#f8f8f8"], + ["--vscode-notebook-cellBorderColor", "#e5e5e5"], + ["--vscode-notebook-cellEditorBackground", "#f8f8f8"], + ["--vscode-notebook-cellInsertionIndicator", "#005fb8"], + ["--vscode-notebook-cellStatusBarItemHoverBackground", "rgba(0, 0, 0, 0.08)"], + ["--vscode-notebook-cellToolbarSeparator", "rgba(128, 128, 128, 0.35)"], + ["--vscode-notebook-editorBackground", "#ffffff"], + ["--vscode-notebook-focusedCellBorder", "#005fb8"], + ["--vscode-notebook-focusedEditorBorder", "#005fb8"], + ["--vscode-notebook-inactiveFocusedCellBorder", "#e5e5e5"], + ["--vscode-notebook-selectedCellBackground", "rgba(200, 221, 241, 0.31)"], + ["--vscode-notebook-selectedCellBorder", "#e5e5e5"], + ["--vscode-notebook-symbolHighlightBackground", "rgba(253, 255, 0, 0.2)"], + ["--vscode-notebookEditorOverviewRuler-runningCellForeground", "#388a34"], + ["--vscode-notebookScrollbarSlider-activeBackground", "rgba(0, 0, 0, 0.6)"], + ["--vscode-notebookScrollbarSlider-background", "rgba(100, 100, 100, 0.4)"], + [ + "--vscode-notebookScrollbarSlider-hoverBackground", + "rgba(100, 100, 100, 0.7)", + ], + ["--vscode-notebookStatusErrorIcon-foreground", "#f85149"], + ["--vscode-notebookStatusRunningIcon-foreground", "#3b3b3b"], + ["--vscode-notebookStatusSuccessIcon-foreground", "#388a34"], + ["--vscode-notificationCenter-border", "#e5e5e5"], + ["--vscode-notificationCenterHeader-background", "#ffffff"], + ["--vscode-notificationCenterHeader-foreground", "#3b3b3b"], + ["--vscode-notificationLink-foreground", "#005fb8"], + ["--vscode-notifications-background", "#ffffff"], + ["--vscode-notifications-border", "#e5e5e5"], + ["--vscode-notifications-foreground", "#3b3b3b"], + ["--vscode-notificationsErrorIcon-foreground", "#e51400"], + ["--vscode-notificationsInfoIcon-foreground", "#0063d3"], + ["--vscode-notificationsWarningIcon-foreground", "#bf8803"], + ["--vscode-notificationToast-border", "#e5e5e5"], + ["--vscode-panel-background", "#f8f8f8"], + ["--vscode-panel-border", "#e5e5e5"], + ["--vscode-panel-dropBorder", "#3b3b3b"], + ["--vscode-panelInput-border", "#e5e5e5"], + ["--vscode-panelSection-border", "#e5e5e5"], + ["--vscode-panelSection-dropBackground", "rgba(38, 119, 203, 0.18)"], + ["--vscode-panelSectionHeader-background", "rgba(128, 128, 128, 0.2)"], + ["--vscode-panelStickyScroll-background", "#f8f8f8"], + ["--vscode-panelStickyScroll-shadow", "#dddddd"], + ["--vscode-panelTitle-activeBorder", "#005fb8"], + ["--vscode-panelTitle-activeForeground", "#3b3b3b"], + ["--vscode-panelTitle-inactiveForeground", "#3b3b3b"], + ["--vscode-panelTitleBadge-background", "#005fb8"], + ["--vscode-panelTitleBadge-foreground", "#ffffff"], + ["--vscode-peekView-border", "#0063d3"], + ["--vscode-peekViewEditor-background", "#f2f8fc"], + [ + "--vscode-peekViewEditor-matchHighlightBackground", + "rgba(187, 128, 9, 0.4)", + ], + ["--vscode-peekViewEditorGutter-background", "#f2f8fc"], + ["--vscode-peekViewEditorStickyScroll-background", "#f2f8fc"], + ["--vscode-peekViewEditorStickyScrollGutter-background", "#f2f8fc"], + ["--vscode-peekViewResult-background", "#ffffff"], + ["--vscode-peekViewResult-fileForeground", "#1e1e1e"], + ["--vscode-peekViewResult-lineForeground", "#646465"], + [ + "--vscode-peekViewResult-matchHighlightBackground", + "rgba(187, 128, 9, 0.4)", + ], + ["--vscode-peekViewResult-selectionBackground", "rgba(51, 153, 255, 0.2)"], + ["--vscode-peekViewResult-selectionForeground", "#6c6c6c"], + ["--vscode-peekViewTitle-background", "#f3f3f3"], + ["--vscode-peekViewTitleDescription-foreground", "#616161"], + ["--vscode-peekViewTitleLabel-foreground", "#000000"], + ["--vscode-pickerGroup-border", "#e5e5e5"], + ["--vscode-pickerGroup-foreground", "#8b949e"], + ["--vscode-ports-iconRunningProcessForeground", "#369432"], + ["--vscode-problemsErrorIcon-foreground", "#e51400"], + ["--vscode-problemsInfoIcon-foreground", "#0063d3"], + ["--vscode-problemsWarningIcon-foreground", "#bf8803"], + ["--vscode-profileBadge-background", "#c4c4c4"], + ["--vscode-profileBadge-foreground", "#333333"], + ["--vscode-profiles-sashBorder", "#e5e5e5"], + ["--vscode-progressBar-background", "#005fb8"], + ["--vscode-quickInput-background", "#f8f8f8"], + ["--vscode-quickInput-foreground", "#3b3b3b"], + ["--vscode-quickInputList-focusBackground", "#e8e8e8"], + ["--vscode-quickInputList-focusForeground", "#000000"], + ["--vscode-quickInputList-focusIconForeground", "#000000"], + ["--vscode-quickInputTitle-background", "rgba(0, 0, 0, 0.06)"], + ["--vscode-radio-activeBackground", "#bed6ed"], + ["--vscode-radio-activeBorder", "#005fb8"], + ["--vscode-radio-activeForeground", "#000000"], + ["--vscode-radio-inactiveBorder", "rgba(0, 0, 0, 0.2)"], + ["--vscode-radio-inactiveHoverBackground", "rgba(184, 184, 184, 0.31)"], + ["--vscode-remoteHub-decorations.addedForegroundColor", "#587c0c"], + ["--vscode-remoteHub-decorations.conflictForegroundColor", "#ad0707"], + ["--vscode-remoteHub-decorations.deletedForegroundColor", "#ad0707"], + ["--vscode-remoteHub-decorations.ignoredResourceForeground", "#8e8e90"], + ["--vscode-remoteHub-decorations.incomingAddedForegroundColor", "#587c0c"], + ["--vscode-remoteHub-decorations.incomingDeletedForegroundColor", "#ad0707"], + ["--vscode-remoteHub-decorations.incomingModifiedForegroundColor", "#895503"], + ["--vscode-remoteHub-decorations.incomingRenamedForegroundColor", "#007100"], + ["--vscode-remoteHub-decorations.modifiedForegroundColor", "#895503"], + ["--vscode-remoteHub-decorations.possibleConflictForegroundColor", "#855f00"], + ["--vscode-remoteHub-decorations.submoduleForegroundColor", "#1258a7"], + [ + "--vscode-remoteHub-decorations.workspaceRepositoriesView.hasUncommittedChangesForegroundColor", + "#895503", + ], + ["--vscode-sash-hoverBorder", "#005fb8"], + ["--vscode-scmGraph-foreground1", "#ffb000"], + ["--vscode-scmGraph-foreground2", "#dc267f"], + ["--vscode-scmGraph-foreground3", "#994f00"], + ["--vscode-scmGraph-foreground4", "#40b0a6"], + ["--vscode-scmGraph-foreground5", "#b66dff"], + ["--vscode-scmGraph-historyItemBaseRefColor", "#ea5c00"], + ["--vscode-scmGraph-historyItemHoverAdditionsForeground", "#587c0c"], + ["--vscode-scmGraph-historyItemHoverDefaultLabelBackground", "#cccccc"], + ["--vscode-scmGraph-historyItemHoverDefaultLabelForeground", "#3b3b3b"], + ["--vscode-scmGraph-historyItemHoverDeletionsForeground", "#ad0707"], + ["--vscode-scmGraph-historyItemHoverLabelForeground", "#f8f8f8"], + ["--vscode-scmGraph-historyItemRefColor", "#0063d3"], + ["--vscode-scmGraph-historyItemRemoteRefColor", "#652d90"], + ["--vscode-scrollbar-shadow", "#dddddd"], + ["--vscode-scrollbarSlider-activeBackground", "rgba(0, 0, 0, 0.6)"], + ["--vscode-scrollbarSlider-background", "rgba(100, 100, 100, 0.4)"], + ["--vscode-scrollbarSlider-hoverBackground", "rgba(100, 100, 100, 0.7)"], + ["--vscode-search-resultsInfoForeground", "#3b3b3b"], + ["--vscode-searchEditor-findMatchBackground", "rgba(234, 92, 0, 0.22)"], + ["--vscode-searchEditor-textInputBorder", "#cecece"], + ["--vscode-settings-checkboxBackground", "#f8f8f8"], + ["--vscode-settings-checkboxBorder", "#cecece"], + ["--vscode-settings-checkboxForeground", "#3b3b3b"], + ["--vscode-settings-dropdownBackground", "#ffffff"], + ["--vscode-settings-dropdownBorder", "#cecece"], + ["--vscode-settings-dropdownForeground", "#3b3b3b"], + ["--vscode-settings-dropdownListBorder", "#c8c8c8"], + ["--vscode-settings-focusedRowBackground", "rgba(242, 242, 242, 0.6)"], + ["--vscode-settings-focusedRowBorder", "#005fb8"], + ["--vscode-settings-headerBorder", "#e5e5e5"], + ["--vscode-settings-headerForeground", "#1f1f1f"], + ["--vscode-settings-modifiedItemIndicator", "rgba(187, 128, 9, 0.4)"], + ["--vscode-settings-numberInputBackground", "#ffffff"], + ["--vscode-settings-numberInputBorder", "#cecece"], + ["--vscode-settings-numberInputForeground", "#3b3b3b"], + ["--vscode-settings-rowHoverBackground", "rgba(242, 242, 242, 0.3)"], + ["--vscode-settings-sashBorder", "#e5e5e5"], + ["--vscode-settings-settingsHeaderHoverForeground", "rgba(31, 31, 31, 0.7)"], + ["--vscode-settings-textInputBackground", "#ffffff"], + ["--vscode-settings-textInputBorder", "#cecece"], + ["--vscode-settings-textInputForeground", "#3b3b3b"], + ["--vscode-sideBar-background", "#f8f8f8"], + ["--vscode-sideBar-border", "#e5e5e5"], + ["--vscode-sideBar-dropBackground", "rgba(38, 119, 203, 0.18)"], + ["--vscode-sideBar-foreground", "#3b3b3b"], + ["--vscode-sideBarActivityBarTop-border", "#e5e5e5"], + ["--vscode-sideBarSectionHeader-background", "#f8f8f8"], + ["--vscode-sideBarSectionHeader-border", "#e5e5e5"], + ["--vscode-sideBarSectionHeader-foreground", "#3b3b3b"], + ["--vscode-sideBarStickyScroll-background", "#f8f8f8"], + ["--vscode-sideBarStickyScroll-shadow", "#dddddd"], + ["--vscode-sideBarTitle-background", "#f8f8f8"], + ["--vscode-sideBarTitle-foreground", "#3b3b3b"], + ["--vscode-sideBySideEditor-horizontalBorder", "#e5e5e5"], + ["--vscode-sideBySideEditor-verticalBorder", "#e5e5e5"], + ["--vscode-simpleFindWidget-sashBorder", "#c8c8c8"], + ["--vscode-statusBar-background", "#f8f8f8"], + ["--vscode-statusBar-border", "#e5e5e5"], + ["--vscode-statusBar-debuggingBackground", "#fd716c"], + ["--vscode-statusBar-debuggingBorder", "#e5e5e5"], + ["--vscode-statusBar-debuggingForeground", "#000000"], + ["--vscode-statusBar-focusBorder", "#005fb8"], + ["--vscode-statusBar-foreground", "#3b3b3b"], + ["--vscode-statusBar-noFolderBackground", "#f8f8f8"], + ["--vscode-statusBar-noFolderBorder", "#e5e5e5"], + ["--vscode-statusBar-noFolderForeground", "#3b3b3b"], + ["--vscode-statusBarItem-activeBackground", "rgba(255, 255, 255, 0.18)"], + ["--vscode-statusBarItem-compactHoverBackground", "#cccccc"], + ["--vscode-statusBarItem-errorBackground", "#c72e0f"], + ["--vscode-statusBarItem-errorForeground", "#ffffff"], + ["--vscode-statusBarItem-errorHoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-errorHoverForeground", "#000000"], + ["--vscode-statusBarItem-focusBorder", "#005fb8"], + ["--vscode-statusBarItem-hoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-hoverForeground", "#000000"], + ["--vscode-statusBarItem-offlineBackground", "#6c1717"], + ["--vscode-statusBarItem-offlineForeground", "#ffffff"], + ["--vscode-statusBarItem-offlineHoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-offlineHoverForeground", "#000000"], + ["--vscode-statusBarItem-prominentBackground", "rgba(110, 118, 129, 0.4)"], + ["--vscode-statusBarItem-prominentForeground", "#3b3b3b"], + ["--vscode-statusBarItem-prominentHoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-prominentHoverForeground", "#000000"], + ["--vscode-statusBarItem-remoteBackground", "#005fb8"], + ["--vscode-statusBarItem-remoteForeground", "#ffffff"], + ["--vscode-statusBarItem-remoteHoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-remoteHoverForeground", "#000000"], + ["--vscode-statusBarItem-warningBackground", "#725102"], + ["--vscode-statusBarItem-warningForeground", "#ffffff"], + ["--vscode-statusBarItem-warningHoverBackground", "rgba(31, 31, 31, 0.07)"], + ["--vscode-statusBarItem-warningHoverForeground", "#000000"], + ["--vscode-strokeThickness", "1px"], + ["--vscode-symbolIcon-arrayForeground", "#3b3b3b"], + ["--vscode-symbolIcon-booleanForeground", "#3b3b3b"], + ["--vscode-symbolIcon-classForeground", "#d67e00"], + ["--vscode-symbolIcon-colorForeground", "#3b3b3b"], + ["--vscode-symbolIcon-constantForeground", "#3b3b3b"], + ["--vscode-symbolIcon-constructorForeground", "#652d90"], + ["--vscode-symbolIcon-enumeratorForeground", "#d67e00"], + ["--vscode-symbolIcon-enumeratorMemberForeground", "#007acc"], + ["--vscode-symbolIcon-eventForeground", "#d67e00"], + ["--vscode-symbolIcon-fieldForeground", "#007acc"], + ["--vscode-symbolIcon-fileForeground", "#3b3b3b"], + ["--vscode-symbolIcon-folderForeground", "#3b3b3b"], + ["--vscode-symbolIcon-functionForeground", "#652d90"], + ["--vscode-symbolIcon-interfaceForeground", "#007acc"], + ["--vscode-symbolIcon-keyForeground", "#3b3b3b"], + ["--vscode-symbolIcon-keywordForeground", "#3b3b3b"], + ["--vscode-symbolIcon-methodForeground", "#652d90"], + ["--vscode-symbolIcon-moduleForeground", "#3b3b3b"], + ["--vscode-symbolIcon-namespaceForeground", "#3b3b3b"], + ["--vscode-symbolIcon-nullForeground", "#3b3b3b"], + ["--vscode-symbolIcon-numberForeground", "#3b3b3b"], + ["--vscode-symbolIcon-objectForeground", "#3b3b3b"], + ["--vscode-symbolIcon-operatorForeground", "#3b3b3b"], + ["--vscode-symbolIcon-packageForeground", "#3b3b3b"], + ["--vscode-symbolIcon-propertyForeground", "#3b3b3b"], + ["--vscode-symbolIcon-referenceForeground", "#3b3b3b"], + ["--vscode-symbolIcon-snippetForeground", "#3b3b3b"], + ["--vscode-symbolIcon-stringForeground", "#3b3b3b"], + ["--vscode-symbolIcon-structForeground", "#3b3b3b"], + ["--vscode-symbolIcon-textForeground", "#3b3b3b"], + ["--vscode-symbolIcon-typeParameterForeground", "#3b3b3b"], + ["--vscode-symbolIcon-unitForeground", "#3b3b3b"], + ["--vscode-symbolIcon-variableForeground", "#007acc"], + ["--vscode-tab-activeBackground", "#ffffff"], + ["--vscode-tab-activeBorder", "#f8f8f8"], + ["--vscode-tab-activeBorderTop", "#005fb8"], + ["--vscode-tab-activeForeground", "#3b3b3b"], + ["--vscode-tab-activeModifiedBorder", "#33aaee"], + ["--vscode-tab-border", "#e5e5e5"], + ["--vscode-tab-dragAndDropBorder", "#3b3b3b"], + ["--vscode-tab-hoverBackground", "#ffffff"], + ["--vscode-tab-inactiveBackground", "#f8f8f8"], + ["--vscode-tab-inactiveForeground", "#868686"], + ["--vscode-tab-inactiveModifiedBorder", "rgba(51, 170, 238, 0.5)"], + ["--vscode-tab-lastPinnedBorder", "#d4d4d4"], + ["--vscode-tab-selectedBackground", "rgba(255, 255, 255, 0.65)"], + ["--vscode-tab-selectedBorderTop", "#68a3da"], + ["--vscode-tab-selectedForeground", "rgba(51, 51, 51, 0.7)"], + ["--vscode-tab-unfocusedActiveBackground", "#ffffff"], + ["--vscode-tab-unfocusedActiveBorder", "#f8f8f8"], + ["--vscode-tab-unfocusedActiveBorderTop", "#e5e5e5"], + ["--vscode-tab-unfocusedActiveForeground", "rgba(59, 59, 59, 0.7)"], + ["--vscode-tab-unfocusedActiveModifiedBorder", "rgba(51, 170, 238, 0.7)"], + ["--vscode-tab-unfocusedHoverBackground", "#f8f8f8"], + ["--vscode-tab-unfocusedInactiveBackground", "#f8f8f8"], + ["--vscode-tab-unfocusedInactiveForeground", "rgba(134, 134, 134, 0.5)"], + ["--vscode-tab-unfocusedInactiveModifiedBorder", "rgba(51, 170, 238, 0.25)"], + ["--vscode-terminal-ansiBlack", "#000000"], + ["--vscode-terminal-ansiBlue", "#0451a5"], + ["--vscode-terminal-ansiBrightBlack", "#666666"], + ["--vscode-terminal-ansiBrightBlue", "#0451a5"], + ["--vscode-terminal-ansiBrightCyan", "#0598bc"], + ["--vscode-terminal-ansiBrightGreen", "#14ce14"], + ["--vscode-terminal-ansiBrightMagenta", "#bc05bc"], + ["--vscode-terminal-ansiBrightRed", "#cd3131"], + ["--vscode-terminal-ansiBrightWhite", "#a5a5a5"], + ["--vscode-terminal-ansiBrightYellow", "#b5ba00"], + ["--vscode-terminal-ansiCyan", "#0598bc"], + ["--vscode-terminal-ansiGreen", "#107c10"], + ["--vscode-terminal-ansiMagenta", "#bc05bc"], + ["--vscode-terminal-ansiRed", "#cd3131"], + ["--vscode-terminal-ansiWhite", "#555555"], + ["--vscode-terminal-ansiYellow", "#949800"], + ["--vscode-terminal-border", "#e5e5e5"], + ["--vscode-terminal-dropBackground", "rgba(38, 119, 203, 0.18)"], + ["--vscode-terminal-findMatchBackground", "#a8ac94"], + ["--vscode-terminal-findMatchHighlightBackground", "rgba(234, 92, 0, 0.33)"], + ["--vscode-terminal-foreground", "#3b3b3b"], + ["--vscode-terminal-hoverHighlightBackground", "rgba(173, 214, 255, 0.07)"], + ["--vscode-terminal-inactiveSelectionBackground", "#e5ebf1"], + ["--vscode-terminal-initialHintForeground", "rgba(0, 0, 0, 0.47)"], + ["--vscode-terminal-selectionBackground", "#add6ff"], + ["--vscode-terminal-tab.activeBorder", "#005fb8"], + [ + "--vscode-terminalCommandDecoration-defaultBackground", + "rgba(0, 0, 0, 0.25)", + ], + ["--vscode-terminalCommandDecoration-errorBackground", "#e51400"], + ["--vscode-terminalCommandDecoration-successBackground", "#2090d3"], + ["--vscode-terminalCommandGuide-foreground", "#e4e6f1"], + ["--vscode-terminalCursor-foreground", "#005fb8"], + ["--vscode-terminalOverviewRuler-border", "#e5e5e5"], + [ + "--vscode-terminalOverviewRuler-cursorForeground", + "rgba(160, 160, 160, 0.8)", + ], + [ + "--vscode-terminalOverviewRuler-findMatchForeground", + "rgba(209, 134, 22, 0.49)", + ], + ["--vscode-terminalStickyScrollHover-background", "#f0f0f0"], + ["--vscode-terminalSymbolIcon-aliasForeground", "#652d90"], + ["--vscode-terminalSymbolIcon-argumentForeground", "#007acc"], + ["--vscode-terminalSymbolIcon-branchForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-commitForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-fileForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-flagForeground", "#d67e00"], + ["--vscode-terminalSymbolIcon-folderForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-methodForeground", "#652d90"], + ["--vscode-terminalSymbolIcon-optionForeground", "#d67e00"], + ["--vscode-terminalSymbolIcon-optionValueForeground", "#007acc"], + ["--vscode-terminalSymbolIcon-pullRequestDoneForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-pullRequestForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-remoteForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-stashForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-symbolicLinkFileForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-symbolicLinkFolderForeground", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-symbolText", "#3b3b3b"], + ["--vscode-terminalSymbolIcon-tagForeground", "#3b3b3b"], + ["--vscode-testing-coverCountBadgeBackground", "#cccccc"], + ["--vscode-testing-coverCountBadgeForeground", "#3b3b3b"], + ["--vscode-testing-coveredBackground", "rgba(156, 204, 44, 0.25)"], + ["--vscode-testing-coveredBorder", "rgba(156, 204, 44, 0.19)"], + ["--vscode-testing-coveredGutterBackground", "rgba(156, 204, 44, 0.15)"], + ["--vscode-testing-iconErrored", "#f14c4c"], + ["--vscode-testing-iconErrored.retired", "rgba(241, 76, 76, 0.7)"], + ["--vscode-testing-iconFailed", "#f14c4c"], + ["--vscode-testing-iconFailed.retired", "rgba(241, 76, 76, 0.7)"], + ["--vscode-testing-iconPassed", "#73c991"], + ["--vscode-testing-iconPassed.retired", "rgba(115, 201, 145, 0.7)"], + ["--vscode-testing-iconQueued", "#cca700"], + ["--vscode-testing-iconQueued.retired", "rgba(204, 167, 0, 0.7)"], + ["--vscode-testing-iconSkipped", "#848484"], + ["--vscode-testing-iconSkipped.retired", "rgba(132, 132, 132, 0.7)"], + ["--vscode-testing-iconUnset", "#848484"], + ["--vscode-testing-iconUnset.retired", "rgba(132, 132, 132, 0.7)"], + ["--vscode-testing-message.error.badgeBackground", "#e51400"], + ["--vscode-testing-message.error.badgeBorder", "#e51400"], + ["--vscode-testing-message.error.badgeForeground", "#ffffff"], + [ + "--vscode-testing-message.info.decorationForeground", + "rgba(59, 59, 59, 0.5)", + ], + ["--vscode-testing-messagePeekBorder", "#0063d3"], + ["--vscode-testing-messagePeekHeaderBackground", "rgba(0, 99, 211, 0.1)"], + ["--vscode-testing-peekBorder", "#e51400"], + ["--vscode-testing-peekHeaderBackground", "rgba(229, 20, 0, 0.1)"], + ["--vscode-testing-runAction", "#73c991"], + ["--vscode-testing-uncoveredBackground", "rgba(255, 0, 0, 0.2)"], + ["--vscode-testing-uncoveredBorder", "rgba(255, 0, 0, 0.15)"], + ["--vscode-testing-uncoveredBranchBackground", "#ff9999"], + ["--vscode-testing-uncoveredGutterBackground", "rgba(255, 0, 0, 0.3)"], + ["--vscode-textBlockQuote-background", "#f8f8f8"], + ["--vscode-textBlockQuote-border", "#e5e5e5"], + ["--vscode-textCodeBlock-background", "#f8f8f8"], + ["--vscode-textLink-activeForeground", "#005fb8"], + ["--vscode-textLink-foreground", "#005fb8"], + ["--vscode-textPreformat-background", "rgba(0, 0, 0, 0.12)"], + ["--vscode-textPreformat-foreground", "#3b3b3b"], + ["--vscode-textSeparator-foreground", "#21262d"], + ["--vscode-titleBar-activeBackground", "#f8f8f8"], + ["--vscode-titleBar-activeForeground", "#1e1e1e"], + ["--vscode-titleBar-border", "#e5e5e5"], + ["--vscode-titleBar-inactiveBackground", "#f8f8f8"], + ["--vscode-titleBar-inactiveForeground", "#8b949e"], + ["--vscode-toolbar-activeBackground", "rgba(166, 166, 166, 0.31)"], + ["--vscode-toolbar-hoverBackground", "rgba(184, 184, 184, 0.31)"], + ["--vscode-tree-inactiveIndentGuidesStroke", "rgba(169, 169, 169, 0.4)"], + ["--vscode-tree-indentGuidesStroke", "#a9a9a9"], + ["--vscode-tree-tableColumnsBorder", "rgba(97, 97, 97, 0.13)"], + ["--vscode-tree-tableOddRowsBackground", "rgba(59, 59, 59, 0.04)"], + ["--vscode-walkThrough-embeddedEditorBackground", "#f4f4f4"], + ["--vscode-walkthrough-stepTitle.foreground", "#000000"], + ["--vscode-welcomePage-progress.background", "#ffffff"], + ["--vscode-welcomePage-progress.foreground", "#005fb8"], + ["--vscode-welcomePage-tileBackground", "#f3f3f3"], + ["--vscode-welcomePage-tileBorder", "rgba(0, 0, 0, 0.1)"], + ["--vscode-welcomePage-tileHoverBackground", "#dfdfdf"], + ["--vscode-widget-border", "#e5e5e5"], + ["--vscode-widget-shadow", "rgba(0, 0, 0, 0.16)"], +]; diff --git a/.storybook/tsconfig.json b/.storybook/tsconfig.json new file mode 100644 index 00000000..c29028e8 --- /dev/null +++ b/.storybook/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../packages/tsconfig.packages.json", + "compilerOptions": { + "types": ["node"], + "jsx": "react-jsx", + "noEmit": true, + "rootDir": ".." + }, + "include": ["*.ts", "themes/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/.vscodeignore b/.vscodeignore index a11bbd98..d2dd533c 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -53,3 +53,8 @@ AGENTS.md # Build artifacts *.vsix + +# Storybook +.storybook/** +storybook-static/** +**/*.stories.* \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs index 2c3289c6..ba37624a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -19,6 +19,7 @@ export default defineConfig( "**/vite.config*.ts", ".vscode-test/**", "test/fixtures/scripts/**", + "storybook-static/**", ]), // Base ESLint recommended rules (for JS/TS/TSX files only) @@ -174,6 +175,31 @@ export default defineConfig( }, }, + // Prevent runtime package code from importing test/storybook-only packages + { + files: ["packages/*/src/**/*.ts", "packages/*/src/**/*.tsx"], + ignores: ["**/*.stories.*"], + rules: { + "no-restricted-imports": [ + "error", + { + patterns: [ + { + group: ["@repo/mocks", "@repo/mocks/*"], + message: + "@repo/mocks is for tests and stories only. Do not import it from runtime code.", + }, + { + group: ["@repo/storybook-utils", "@repo/storybook-utils/*"], + message: + "@repo/storybook-utils is for stories only. Do not import it from runtime code.", + }, + ], + }, + ], + }, + }, + // React rules with type-checked analysis (covers hooks, JSX, DOM) { files: ["packages/**/*.{ts,tsx}"], diff --git a/package.json b/package.json index 66e4c87e..9c1e65e2 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,8 @@ "lint:fix": "pnpm lint --fix", "package": "pnpm build:production && vsce package --no-dependencies", "package:prerelease": "pnpm build:production && vsce package --pre-release --no-dependencies", + "storybook": "storybook dev -p 6006 --config-dir .storybook", + "storybook:build": "storybook build --config-dir .storybook", "test": "cross-env CI=true ELECTRON_RUN_AS_NODE=1 electron node_modules/vitest/vitest.mjs", "test:extension": "cross-env ELECTRON_RUN_AS_NODE=1 electron node_modules/vitest/vitest.mjs --project extension", "test:integration": "pnpm compile-tests:integration && node esbuild.mjs && vscode-test", @@ -614,7 +616,13 @@ "@eslint-react/eslint-plugin": "^4.2.3", "@eslint/js": "^10.0.1", "@eslint/markdown": "^8.0.1", + "@repo/mocks": "workspace:*", "@rolldown/plugin-babel": "catalog:", + "@storybook/addon-a11y": "catalog:", + "@storybook/addon-essentials": "catalog:", + "@storybook/react": "catalog:", + "@storybook/react-vite": "catalog:", + "@storybook/test": "catalog:", "@tanstack/react-query": "catalog:", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", @@ -627,11 +635,13 @@ "@types/semver": "^7.7.1", "@types/ua-parser-js": "0.7.39", "@types/vscode": "1.106.0", + "@types/vscode-webview": "catalog:", "@types/ws": "^8.18.1", "@typescript-eslint/eslint-plugin": "^8.59.1", "@typescript-eslint/parser": "^8.59.1", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "^4.1.5", + "@vscode/codicons": "catalog:", "@vscode/test-cli": "^0.0.12", "@vscode/test-electron": "^2.5.2", "@vscode/vsce": "^3.9.1", @@ -655,6 +665,7 @@ "prettier": "^3.8.3", "react": "catalog:", "react-dom": "catalog:", + "storybook": "catalog:", "typescript": "catalog:", "typescript-eslint": "^8.59.1", "utf-8-validate": "^6.0.6", diff --git a/packages/mocks/package.json b/packages/mocks/package.json new file mode 100644 index 00000000..1dfedbd9 --- /dev/null +++ b/packages/mocks/package.json @@ -0,0 +1,22 @@ +{ + "name": "@repo/mocks", + "version": "1.0.0", + "description": "Mocking utilities for storybook and testing", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } + }, + "scripts": { + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@repo/shared": "workspace:*" + }, + "devDependencies": { + "typescript": "catalog:" + } +} diff --git a/packages/mocks/src/index.ts b/packages/mocks/src/index.ts new file mode 100644 index 00000000..bf3d4e3a --- /dev/null +++ b/packages/mocks/src/index.ts @@ -0,0 +1,2 @@ +export * from "./tasks"; +export * from "./workspaces"; diff --git a/test/mocks/tasks.ts b/packages/mocks/src/tasks.ts similarity index 99% rename from test/mocks/tasks.ts rename to packages/mocks/src/tasks.ts index 3231a48e..07421ce9 100644 --- a/test/mocks/tasks.ts +++ b/packages/mocks/src/tasks.ts @@ -3,6 +3,7 @@ * Use these to create test data with sensible defaults. */ +import type { TaskDetails, TaskTemplate } from "@repo/shared"; import type { Task, TaskLogEntry, @@ -11,8 +12,6 @@ import type { TaskState, } from "coder/site/src/api/typesGenerated"; -import type { TaskDetails, TaskTemplate } from "@repo/shared"; - /** * Create a Task with sensible defaults. * The defaults represent a typical active task with a running workspace. diff --git a/test/mocks/workspace.ts b/packages/mocks/src/workspaces.ts similarity index 100% rename from test/mocks/workspace.ts rename to packages/mocks/src/workspaces.ts diff --git a/packages/mocks/tsconfig.json b/packages/mocks/tsconfig.json new file mode 100644 index 00000000..70ff23ea --- /dev/null +++ b/packages/mocks/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.packages.json", + "include": ["src"] +} diff --git a/packages/storybook-utils/package.json b/packages/storybook-utils/package.json new file mode 100644 index 00000000..00441efd --- /dev/null +++ b/packages/storybook-utils/package.json @@ -0,0 +1,24 @@ +{ + "name": "@repo/storybook-utils", + "version": "1.0.0", + "description": "Shared utilities for storybook", + "private": true, + "type": "module", + "exports": { + ".": { + "types": "./src/index.ts", + "default": "./src/index.ts" + } + }, + "scripts": { + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@tanstack/react-query": "catalog:", + "react": "catalog:" + }, + "devDependencies": { + "@storybook/react": "catalog:", + "typescript": "catalog:" + } +} diff --git a/packages/storybook-utils/src/decorators/withQueryClient.tsx b/packages/storybook-utils/src/decorators/withQueryClient.tsx new file mode 100644 index 00000000..c0d263e4 --- /dev/null +++ b/packages/storybook-utils/src/decorators/withQueryClient.tsx @@ -0,0 +1,33 @@ +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { useState } from "react"; + +import type { Decorator } from "@storybook/react"; + +function QueryClientDecorator({ children }: { children: React.ReactNode }) { + const [client] = useState( + () => + new QueryClient({ + defaultOptions: { + queries: { + retry: false, + staleTime: Infinity, + }, + mutations: { + retry: false, + }, + }, + }), + ); + + return {children}; +} + +/** + * Decorator that wraps stories with a QueryClientProvider. + * Use this for components that use React Query hooks (useQuery, useMutation, etc.) + */ +export const withQueryClient: Decorator = (Story) => ( + + + +); diff --git a/packages/storybook-utils/src/index.ts b/packages/storybook-utils/src/index.ts new file mode 100644 index 00000000..4e4fdb78 --- /dev/null +++ b/packages/storybook-utils/src/index.ts @@ -0,0 +1 @@ +export * from "./decorators/withQueryClient"; diff --git a/packages/storybook-utils/tsconfig.json b/packages/storybook-utils/tsconfig.json new file mode 100644 index 00000000..70ff23ea --- /dev/null +++ b/packages/storybook-utils/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../tsconfig.packages.json", + "include": ["src"] +} diff --git a/packages/tasks/package.json b/packages/tasks/package.json index b834a544..7912d55f 100644 --- a/packages/tasks/package.json +++ b/packages/tasks/package.json @@ -20,6 +20,8 @@ "react-dom": "catalog:" }, "devDependencies": { + "@repo/mocks": "workspace:*", + "@repo/storybook-utils": "workspace:*", "@rolldown/plugin-babel": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", diff --git a/packages/tasks/src/components/ActionMenu.stories.tsx b/packages/tasks/src/components/ActionMenu.stories.tsx new file mode 100644 index 00000000..99504337 --- /dev/null +++ b/packages/tasks/src/components/ActionMenu.stories.tsx @@ -0,0 +1,65 @@ +import { expect, fn, userEvent } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { ActionMenu } from "./ActionMenu"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/ActionMenu", + component: ActionMenu, + args: { + items: [ + { + label: "Run Task", + onClick: fn(), + icon: "play", + }, + { + label: "Configure Task", + onClick: fn(), + icon: "settings", + }, + { + label: "Delete Task", + onClick: fn(), + icon: "trash", + danger: true, + }, + { + label: "Disabled Action", + onClick: fn(), + icon: "ban", + disabled: true, + }, + { + separator: true, + }, + { + label: "Loading Action", + onClick: fn(), + icon: "spinner", + loading: true, + }, + ], + }, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; + +export const Opened: Story = { + play: async ({ canvasElement }) => { + const icon = canvasElement.querySelector("vscode-icon[action-icon]"); + await expect(icon).toBeTruthy(); + if (!icon) throw new Error("icon not found"); + await userEvent.click(icon); + + const dropdown = canvasElement.querySelector(".action-menu-dropdown"); + await expect(dropdown).toBeTruthy(); + }, +}; diff --git a/packages/tasks/src/components/AgentChatHistory.stories.tsx b/packages/tasks/src/components/AgentChatHistory.stories.tsx new file mode 100644 index 00000000..652eedb5 --- /dev/null +++ b/packages/tasks/src/components/AgentChatHistory.stories.tsx @@ -0,0 +1,97 @@ +import { logEntry } from "@repo/mocks"; + +import { withTasksStyles } from "../utils/storybook"; + +import { AgentChatHistory } from "./AgentChatHistory"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/AgentChatHistory", + component: AgentChatHistory, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + isThinking: false, + taskLogs: { + status: "ok", + logs: [ + logEntry({ + id: 1, + type: "input", + content: "What is the weather today?", + }), + logEntry({ + id: 2, + type: "output", + content: "The weather today is sunny with a high of 25°C.", + }), + ], + }, + }, +}; + +export const Empty: Story = { + args: { + isThinking: false, + taskLogs: { + status: "ok", + snapshot: false, + logs: [], + }, + }, +}; + +export const Thinking: Story = { + args: { + isThinking: true, + taskLogs: { + status: "ok", + logs: [ + logEntry({ + id: 1, + type: "input", + content: "What is the weather today?", + }), + logEntry({ + id: 2, + type: "output", + content: "The weather today is sunny with a high of 25°C.", + }), + ], + }, + }, +}; + +export const Error: Story = { + args: { + isThinking: false, + taskLogs: { + status: "error", + }, + }, +}; + +export const Snapshot: Story = { + args: { + taskLogs: { + status: "ok", + logs: [], + snapshot: true, + snapshotAt: "2024-01-01T12:00:00Z", + }, + }, +}; + +export const NotAvailable: Story = { + args: { + taskLogs: { + status: "not_available", + }, + }, +}; diff --git a/packages/tasks/src/components/CreateTaskSection.stories.tsx b/packages/tasks/src/components/CreateTaskSection.stories.tsx new file mode 100644 index 00000000..915e905a --- /dev/null +++ b/packages/tasks/src/components/CreateTaskSection.stories.tsx @@ -0,0 +1,23 @@ +import { taskTemplate } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; + +import { withTasksStyles } from "../utils/storybook"; + +import { CreateTaskSection } from "./CreateTaskSection"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/CreateTaskSection", + component: CreateTaskSection, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + templates: [taskTemplate()], + }, +}; diff --git a/packages/tasks/src/components/ErrorBanner.stories.tsx b/packages/tasks/src/components/ErrorBanner.stories.tsx new file mode 100644 index 00000000..804800e5 --- /dev/null +++ b/packages/tasks/src/components/ErrorBanner.stories.tsx @@ -0,0 +1,35 @@ +import { task } from "@repo/mocks"; + +import { withTasksStyles } from "../utils/storybook"; + +import { ErrorBanner } from "./ErrorBanner"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/ErrorBanner", + component: ErrorBanner, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + task: task(), + }, +}; + +export const WithMessage: Story = { + args: { + task: task({ + current_state: { + state: "failed", + message: "Could not calculate the square root of a negative number.", + timestamp: "2024-06-01T12:00:00Z", + uri: "", + }, + }), + }, +}; diff --git a/packages/tasks/src/components/ErrorState.stories.tsx b/packages/tasks/src/components/ErrorState.stories.tsx new file mode 100644 index 00000000..e7cb2efa --- /dev/null +++ b/packages/tasks/src/components/ErrorState.stories.tsx @@ -0,0 +1,23 @@ +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { ErrorState } from "./ErrorState"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/ErrorState", + component: ErrorState, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + message: "Task failed", + onRetry: fn(), + }, +}; diff --git a/packages/tasks/src/components/LogViewer.stories.tsx b/packages/tasks/src/components/LogViewer.stories.tsx new file mode 100644 index 00000000..2fc1d09c --- /dev/null +++ b/packages/tasks/src/components/LogViewer.stories.tsx @@ -0,0 +1,43 @@ +import { withTasksStyles } from "../utils/storybook"; + +import { LogViewer, LogViewerPlaceholder } from "./LogViewer"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/LogViewer", + component: LogViewer, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + header: "Task Logs", + children: ( +
+
Entry 1
+
Entry 2
+
Entry 3
+
+ ), + }, +}; + +export const Loading: Story = { + args: { + header: "Task Logs", + children: Loading logs..., + }, +}; + +export const WithError: Story = { + args: { + header: "Task Logs", + children: ( + Failed to load logs. + ), + }, +}; diff --git a/packages/tasks/src/components/NoTemplateState.stories.tsx b/packages/tasks/src/components/NoTemplateState.stories.tsx new file mode 100644 index 00000000..ce39a443 --- /dev/null +++ b/packages/tasks/src/components/NoTemplateState.stories.tsx @@ -0,0 +1,16 @@ +import { withTasksStyles } from "../utils/storybook"; + +import { NoTemplateState } from "./NoTemplateState"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/NoTemplateState", + component: NoTemplateState, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/packages/tasks/src/components/NotSupportedState.stories.tsx b/packages/tasks/src/components/NotSupportedState.stories.tsx new file mode 100644 index 00000000..56e55594 --- /dev/null +++ b/packages/tasks/src/components/NotSupportedState.stories.tsx @@ -0,0 +1,18 @@ +import { withTasksStyles } from "../utils/storybook"; + +import { NotSupportedState } from "./NotSupportedState"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/NotSupportedState", + component: NotSupportedState, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: {}, +}; diff --git a/packages/tasks/src/components/PromptInput.stories.tsx b/packages/tasks/src/components/PromptInput.stories.tsx new file mode 100644 index 00000000..bc14aa43 --- /dev/null +++ b/packages/tasks/src/components/PromptInput.stories.tsx @@ -0,0 +1,64 @@ +import { expect, fn, userEvent } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { PromptInput } from "./PromptInput"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/PromptInput", + component: PromptInput, + decorators: [withTasksStyles], + args: { + value: "", + onChange: fn(), + onSubmit: fn(), + actionIcon: "send", + actionLabel: "Submit", + actionEnabled: true, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + placeholder: "Enter your prompt here...", + }, + play: async ({ canvasElement, args }) => { + const textarea = + canvasElement.querySelector(".prompt-input"); + if (!textarea) throw new Error("textarea not found"); + + await userEvent.type(textarea, "hello"); + await userEvent.keyboard("{Control>}{Enter}{/Control}"); + await expect(args.onSubmit).toHaveBeenCalledOnce(); + }, +}; + +export const Loading: Story = { + args: { + placeholder: "Loading prompt...", + loading: true, + }, +}; + +export const Disabled: Story = { + args: { + placeholder: "Prompt input disabled", + disabled: true, + }, + play: async ({ canvasElement, args }) => { + const textarea = + canvasElement.querySelector(".prompt-input"); + if (!textarea) throw new Error("textarea not found"); + + // The textarea is disabled so userEvent.type won't work; fire the + // key combo directly and verify onSubmit is never called. + textarea.focus(); + await userEvent.keyboard("{Control>}{Enter}{/Control}"); + await expect(args.onSubmit).not.toHaveBeenCalled(); + }, +}; diff --git a/packages/tasks/src/components/StatePanel.stories.tsx b/packages/tasks/src/components/StatePanel.stories.tsx new file mode 100644 index 00000000..dc4fff11 --- /dev/null +++ b/packages/tasks/src/components/StatePanel.stories.tsx @@ -0,0 +1,37 @@ +import { withTasksStyles } from "../utils/storybook"; + +import { StatePanel } from "./StatePanel"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/StatePanel", + component: StatePanel, + args: { + title: "Tasks not available", + description: "This Coder server does not support tasks.", + action: ( + + Learn more + + ), + }, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; + +export const Error: Story = { + args: { + className: "error-state", + description: "Unable to load tasks right now.", + action: ( + + ), + }, +}; diff --git a/packages/tasks/src/components/StatusIndicator.stories.tsx b/packages/tasks/src/components/StatusIndicator.stories.tsx new file mode 100644 index 00000000..a740b5d3 --- /dev/null +++ b/packages/tasks/src/components/StatusIndicator.stories.tsx @@ -0,0 +1,52 @@ +import { task } from "@repo/mocks"; + +import { withTasksStyles } from "../utils/storybook"; + +import { StatusIndicator } from "./StatusIndicator"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/StatusIndicator", + component: StatusIndicator, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Active: Story = { + args: { + task: task(), + }, +}; + +export const Error: Story = { + args: { + task: task({ status: "error" }), + }, +}; + +export const Initializing: Story = { + args: { + task: task({ status: "initializing" }), + }, +}; + +export const Paused: Story = { + args: { + task: task({ status: "paused" }), + }, +}; + +export const Pending: Story = { + args: { + task: task({ status: "pending" }), + }, +}; + +export const Unknown: Story = { + args: { + task: task({ status: "unknown" }), + }, +}; diff --git a/packages/tasks/src/components/TaskDetailHeader.stories.tsx b/packages/tasks/src/components/TaskDetailHeader.stories.tsx new file mode 100644 index 00000000..ec3fef94 --- /dev/null +++ b/packages/tasks/src/components/TaskDetailHeader.stories.tsx @@ -0,0 +1,25 @@ +import { task } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TaskDetailHeader } from "./TaskDetailHeader"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TaskDetailHeader", + component: TaskDetailHeader, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + task: task(), + onBack: fn(), + }, +}; diff --git a/packages/tasks/src/components/TaskDetailView.stories.tsx b/packages/tasks/src/components/TaskDetailView.stories.tsx new file mode 100644 index 00000000..ec2f67d4 --- /dev/null +++ b/packages/tasks/src/components/TaskDetailView.stories.tsx @@ -0,0 +1,77 @@ +import { taskDetails } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TaskDetailView } from "./TaskDetailView"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TaskDetailView", + component: TaskDetailView, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + details: taskDetails(), + onBack: fn(), + }, +}; + +export const Error: Story = { + args: { + details: taskDetails({ + task: { + status: "error", + current_state: { + timestamp: "2024-01-01T00:00:00Z", + state: "failed", + message: "Task execution failed", + uri: "", + }, + }, + }), + onBack: fn(), + }, +}; + +export const WorkspaceStarting: Story = { + args: { + details: taskDetails({ + task: { + workspace_status: "starting", + current_state: { + timestamp: "2024-01-01T00:00:00Z", + state: "working", + message: "Starting workspace", + uri: "", + }, + }, + }), + onBack: fn(), + }, +}; + +export const AgentStarting: Story = { + args: { + details: taskDetails({ + task: { + workspace_status: "running", + workspace_agent_lifecycle: "starting", + current_state: { + timestamp: "2024-01-01T00:00:00Z", + state: "working", + message: "Agent initializing", + uri: "", + }, + }, + }), + onBack: fn(), + }, +}; diff --git a/packages/tasks/src/components/TaskItem.stories.tsx b/packages/tasks/src/components/TaskItem.stories.tsx new file mode 100644 index 00000000..7c6d41b9 --- /dev/null +++ b/packages/tasks/src/components/TaskItem.stories.tsx @@ -0,0 +1,25 @@ +import { task } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TaskItem } from "./TaskItem"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TaskItem", + component: TaskItem, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + task: task(), + onSelect: fn(), + }, +}; diff --git a/packages/tasks/src/components/TaskList.stories.tsx b/packages/tasks/src/components/TaskList.stories.tsx new file mode 100644 index 00000000..eaa01aa9 --- /dev/null +++ b/packages/tasks/src/components/TaskList.stories.tsx @@ -0,0 +1,29 @@ +import { task } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TaskList } from "./TaskList"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TaskList", + component: TaskList, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + tasks: [ + task({ id: "task-1" }), + task({ id: "task-2" }), + task({ id: "task-3" }), + ], + onSelectTask: fn(), + }, +}; diff --git a/packages/tasks/src/components/TaskMessageInput.stories.tsx b/packages/tasks/src/components/TaskMessageInput.stories.tsx new file mode 100644 index 00000000..8198fa09 --- /dev/null +++ b/packages/tasks/src/components/TaskMessageInput.stories.tsx @@ -0,0 +1,35 @@ +import { task } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TaskMessageInput } from "./TaskMessageInput"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TaskMessageInput", + component: TaskMessageInput, + decorators: [withTasksStyles, withQueryClient], +}; + +export default meta; +type Story = StoryObj; + +export const Active: Story = { + args: { + task: task(), + }, +}; + +export const Paused: Story = { + args: { + task: task({ status: "paused" }), + }, +}; + +export const Error: Story = { + args: { + task: task({ status: "error" }), + }, +}; diff --git a/packages/tasks/src/components/TasksPanel.stories.tsx b/packages/tasks/src/components/TasksPanel.stories.tsx new file mode 100644 index 00000000..a2f01cbf --- /dev/null +++ b/packages/tasks/src/components/TasksPanel.stories.tsx @@ -0,0 +1,69 @@ +import { task } from "@repo/mocks"; +import { withQueryClient } from "@repo/storybook-utils"; +import { fn } from "@storybook/test"; + +import { withTasksStyles } from "../utils/storybook"; + +import { TasksPanel } from "./TasksPanel"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/TasksPanel", + component: TasksPanel, + decorators: [withTasksStyles, withQueryClient], + parameters: { + layout: "fullscreen", + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + tasks: [ + task({ id: "task-1" }), + task({ id: "task-2" }), + task({ id: "task-3" }), + ], + templates: [], + persisted: { + initialCreateExpanded: true, + initialHistoryExpanded: true, + save: fn(), + }, + }, +}; + +export const CollapsibleToggle: Story = { + args: { + tasks: [ + task({ id: "task-1" }), + task({ id: "task-2" }), + task({ id: "task-3" }), + ], + templates: [], + persisted: { + initialCreateExpanded: false, + initialHistoryExpanded: false, + save: fn(), + }, + }, +}; + +export const TaskSelection: Story = { + args: { + tasks: [ + task({ id: "task-1" }), + task({ id: "task-2" }), + task({ id: "task-3" }), + ], + templates: [], + persisted: { + initialCreateExpanded: false, + initialHistoryExpanded: true, + save: fn(), + }, + }, +}; diff --git a/packages/tasks/src/components/WorkspaceLogs.stories.tsx b/packages/tasks/src/components/WorkspaceLogs.stories.tsx new file mode 100644 index 00000000..ab0e7928 --- /dev/null +++ b/packages/tasks/src/components/WorkspaceLogs.stories.tsx @@ -0,0 +1,28 @@ +import { task } from "@repo/mocks"; + +import { withTasksStyles } from "../utils/storybook"; + +import { WorkspaceLogs } from "./WorkspaceLogs"; + +import type { Meta, StoryObj } from "@storybook/react"; + +const meta: Meta = { + title: "Tasks/WorkspaceLogs", + component: WorkspaceLogs, + decorators: [withTasksStyles], +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + task: task(), + }, +}; + +export const BuildingWorkspace: Story = { + args: { + task: task({ workspace_status: "pending" }), + }, +}; diff --git a/packages/tasks/src/utils/storybook.ts b/packages/tasks/src/utils/storybook.ts new file mode 100644 index 00000000..8a2c69db --- /dev/null +++ b/packages/tasks/src/utils/storybook.ts @@ -0,0 +1,9 @@ +import "../index.css"; + +import type { Decorator } from "@storybook/react"; + +/** + * Injects the tasks package CSS into the Storybook preview. + * Add to `decorators` in any story that renders tasks components. + */ +export const withTasksStyles: Decorator = (Story) => Story(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efd06625..d92457a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,21 @@ catalogs: '@rolldown/plugin-babel': specifier: ^0.2.3 version: 0.2.3 + '@storybook/addon-a11y': + specifier: ^8.6.18 + version: 8.6.18 + '@storybook/addon-essentials': + specifier: ^8.6.18 + version: 8.6.18 + '@storybook/react': + specifier: ^8.6.18 + version: 8.6.18 + '@storybook/react-vite': + specifier: ^8.6.18 + version: 8.6.18 + '@storybook/test': + specifier: ^8.6.18 + version: 8.6.18 '@tanstack/react-query': specifier: ^5.100.5 version: 5.100.5 @@ -45,6 +60,9 @@ catalogs: react-dom: specifier: ^19.2.5 version: 19.2.5 + storybook: + specifier: ^8.6.18 + version: 8.6.18 typescript: specifier: ^6.0.3 version: 6.0.3 @@ -123,9 +141,27 @@ importers: '@eslint/markdown': specifier: ^8.0.1 version: 8.0.1 + '@repo/mocks': + specifier: workspace:* + version: link:packages/mocks '@rolldown/plugin-babel': specifier: 'catalog:' version: 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0)) + '@storybook/addon-a11y': + specifier: 'catalog:' + version: 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-essentials': + specifier: 'catalog:' + version: 8.6.18(@types/react@19.2.14)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/react': + specifier: 'catalog:' + version: 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3) + '@storybook/react-vite': + specifier: 'catalog:' + version: 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0)) + '@storybook/test': + specifier: 'catalog:' + version: 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) '@tanstack/react-query': specifier: 'catalog:' version: 5.100.5(react@19.2.5) @@ -162,6 +198,9 @@ importers: '@types/vscode': specifier: 1.106.0 version: 1.106.0 + '@types/vscode-webview': + specifier: 'catalog:' + version: 1.57.5 '@types/ws': specifier: ^8.18.1 version: 8.18.1 @@ -177,6 +216,9 @@ importers: '@vitest/coverage-v8': specifier: ^4.1.5 version: 4.1.5(vitest@4.1.5) + '@vscode/codicons': + specifier: 'catalog:' + version: 0.0.45 '@vscode/test-cli': specifier: ^0.0.12 version: 0.0.12 @@ -246,6 +288,9 @@ importers: react-dom: specifier: 'catalog:' version: 19.2.5(react@19.2.5) + storybook: + specifier: 'catalog:' + version: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) typescript: specifier: 'catalog:' version: 6.0.3 @@ -281,6 +326,16 @@ importers: specifier: 'catalog:' version: 8.0.10(@types/node@24.10.12)(esbuild@0.28.0) + packages/mocks: + dependencies: + '@repo/shared': + specifier: workspace:* + version: link:../shared + devDependencies: + typescript: + specifier: 'catalog:' + version: 6.0.3 + packages/shared: devDependencies: typescript: @@ -306,6 +361,22 @@ importers: specifier: 'catalog:' version: 8.0.10(@types/node@24.10.12)(esbuild@0.28.0) + packages/storybook-utils: + dependencies: + '@tanstack/react-query': + specifier: 'catalog:' + version: 5.100.5(react@19.2.5) + react: + specifier: 'catalog:' + version: 19.2.5 + devDependencies: + '@storybook/react': + specifier: 'catalog:' + version: 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3) + typescript: + specifier: 'catalog:' + version: 6.0.3 + packages/tasks: dependencies: '@repo/shared': @@ -333,6 +404,12 @@ importers: specifier: 'catalog:' version: 19.2.5(react@19.2.5) devDependencies: + '@repo/mocks': + specifier: workspace:* + version: link:../mocks + '@repo/storybook-utils': + specifier: workspace:* + version: link:../storybook-utils '@rolldown/plugin-babel': specifier: 'catalog:' version: 0.2.3(@babel/core@7.29.0)(@babel/runtime@7.29.2)(rolldown@1.0.0-rc.17)(vite@8.0.10(@types/node@24.10.12)(esbuild@0.28.0)) @@ -587,156 +664,312 @@ packages: '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/aix-ppc64@0.28.0': resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm64@0.28.0': resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} engines: {node: '>=18'} cpu: [arm64] os: [android] + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.28.0': resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} engines: {node: '>=18'} cpu: [arm] os: [android] + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/android-x64@0.28.0': resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} engines: {node: '>=18'} cpu: [x64] os: [android] + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-arm64@0.28.0': resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/darwin-x64@0.28.0': resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-arm64@0.28.0': resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/freebsd-x64@0.28.0': resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm64@0.28.0': resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-arm@0.28.0': resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} engines: {node: '>=18'} cpu: [arm] os: [linux] + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-ia32@0.28.0': resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.28.0': resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-mips64el@0.28.0': resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-ppc64@0.28.0': resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-riscv64@0.28.0': resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-s390x@0.28.0': resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/linux-x64@0.28.0': resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-arm64@0.28.0': resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/netbsd-x64@0.28.0': resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-arm64@0.28.0': resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openbsd-x64@0.28.0': resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/openharmony-arm64@0.28.0': resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/sunos-x64@0.28.0': resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-arm64@0.28.0': resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-ia32@0.28.0': resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@esbuild/win32-x64@0.28.0': resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} engines: {node: '>=18'} @@ -873,6 +1106,15 @@ packages: resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0': + resolution: {integrity: sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1023,6 +1265,12 @@ packages: '@lit/reactive-element@2.1.2': resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1206,6 +1454,15 @@ packages: '@rolldown/pluginutils@1.0.0-rc.7': resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@secretlint/config-creator@10.2.2': resolution: {integrity: sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==} engines: {node: '>=20.0.0'} @@ -1262,6 +1519,167 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@storybook/addon-a11y@8.6.18': + resolution: {integrity: sha512-LFvudttdIfDTNWprA8/N1vbiWbJRrNscyt2OP9Qwi85E1d3LKLy+e8AWiqY08gpy2OUYujK7AjxfpKtNeddrxw==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-actions@8.6.18': + resolution: {integrity: sha512-GcYhtE91GjIQTuZlwpTJ8jfMp6NC79nkpe1DGe0eetTpyQqLq1WUt+ACkk0Z5lqq2u8HBc09zCCGw+D8iCLpYQ==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-backgrounds@8.6.18': + resolution: {integrity: sha512-froND3WwvSCYzjEBO8QODStaWNL+aGXqxBEbrMnGYejDFST4qEFkvM2IYWMnLBkRgrgJ0yIqTeDQoyH9b9/8uQ==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-controls@8.6.18': + resolution: {integrity: sha512-K09dHDCfGW3cudsfuyfu0Yi49aZ2h7VYK4IXDGo1sfmtzVh4xd3HrZQQMVUeKLcfDP/NnJowT+fLVwg04CLrxQ==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-docs@8.6.18': + resolution: {integrity: sha512-55ADer0yNmmeR928Y3UAv3r4i7bJSd9LwywsQ+lRol/FNe0ZcwLEz31xL+jVsqQFNnDh/imsDIp8aYapGMtfEQ==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-essentials@8.6.18': + resolution: {integrity: sha512-MmH7gFb8pyfRoAth0w2RW8j7mBaEJbEWGP3juIoH03ZqTGmbMUbJXElCuRgxQhve7pyz39zLsgtE78D7G+76ew==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-highlight@8.6.18': + resolution: {integrity: sha512-wTFJ1DPM0C8gK6nGTJxH75byayQj7BPAz02fME4AOmT6clrBpVl1zSTFTkXaSr+k4xOfeMR/xNUfVskaXz6T9w==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-measure@8.6.18': + resolution: {integrity: sha512-fMEOJXgPrTm6qHlWoRM+WTLE7Mr1QBIf2ei+pujBQFcWkD6Gjc2pV8zKzvh93d+EA13wD8AmwOq1DEw9J+XH+g==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-outline@8.6.18': + resolution: {integrity: sha512-TErFqfCtlV2xt9B6/kskROt69TPjr6AXdHpMselaRrN1X4WEjcMk9GT9PcNP7FXqL88/VYqUb3uNMiAmpDmS/g==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-toolbars@8.6.18': + resolution: {integrity: sha512-x037KXCEcNfPISGX485DtiP+8Bw/cOT45plcQa8eiAQVrVcUwYaDoLubE9YV5b5CsSAjX8sDviGTme6ALfq7+w==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/addon-viewport@8.6.18': + resolution: {integrity: sha512-z9sDJSkuWQb4BP+Z1+H+y/Q0rFbPSDcw+OBBEhMfRcJPPXavdC2pNQ0GdQNVw+tDwhAXj+U7jehKnMDKaP7TyA==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/blocks@8.6.18': + resolution: {integrity: sha512-esZv4msPQ9LxgTb8YUIZhhxVMuI6BPi5bkXtk8c7w7sWuAsqsCe/RnVInn7ooUry2gjnD4hd9+8Eqj0b8oTVoA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^8.6.18 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.6.18': + resolution: {integrity: sha512-XLqnOv4C36jlTd4uC8xpWBxv+7GV4/05zWJ0wAcU4qflorropUTirt4UQPGkwIzi+BVAhs9pJj+m4k0IWJtpHg==} + peerDependencies: + storybook: ^8.6.18 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + + '@storybook/components@8.6.18': + resolution: {integrity: sha512-55yViiZzPS/cPBuOeW4QGxGqrusjXVyxuknmbYCIwDtFyyvI/CgbjXRHdxNBaIjz+IlftxvBmmSaOqFG5+/dkA==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/core@8.6.18': + resolution: {integrity: sha512-dRBP2TnX6fGdS0T2mXBHjkS/3Nlu1ra1huovZVFuM67CYMzrhM/3hX/zru1vWSC5rqY93ZaAhjMciPW4pK5mMQ==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + + '@storybook/csf-plugin@8.6.18': + resolution: {integrity: sha512-x1ioz/L0CwaelCkHci3P31YtvwayN3FBftvwQOPbvRh9qeb4Cpz5IdVDmyvSxxYwXN66uAORNoqgjTi7B4/y5Q==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.6.0': + resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + + '@storybook/instrumenter@8.6.18': + resolution: {integrity: sha512-viEC1BGlYyjAzi1Tv3LZjByh7Y3Oh04u6QKsujxdeUbr5rUOH4pa/wCKmxXmY6yWrD4WjcNtojmUvQZN/66FXQ==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/manager-api@8.6.18': + resolution: {integrity: sha512-BjIp12gEMgzFkEsgKpDIbZdnSWTZpm2dlws8WiPJCpgJtG+HWSxZ0/Ms30Au9yfwzQEKRSbV/5zpsKMGc2SIJw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/preview-api@8.6.18': + resolution: {integrity: sha512-joXRXh3GdVvzhbfIgmix1xs90p8Q/nja7AhEAC2egn5Pl7SKsIYZUCYI6UdrQANb2myg9P552LKXfPect8llKg==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + + '@storybook/react-dom-shim@8.6.18': + resolution: {integrity: sha512-N4xULcAWZQTUv4jy1/d346Tyb4gufuC3UaLCuU/iVSZ1brYF4OW3ANr+096btbMxY8pR/65lmtoqr5CTGwnBvA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.18 + + '@storybook/react-vite@8.6.18': + resolution: {integrity: sha512-qpSYyH2IizlEsI95MJTdIL6xpLSgiNCMoJpHu+IEqLnyvmecRR/YEZvcHalgdtawuXlimH0bAYuwIu3l8Vo6FQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.18 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.18 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + '@storybook/test': + optional: true + + '@storybook/react@8.6.18': + resolution: {integrity: sha512-BuLpzMkKtF+UCQCbi+lYVX9cdcAMG86Lu2dDn7UFkPi5HRNFq/zHPSvlz1XDgL0OYMtcqB1aoVzFzcyzUBhhjw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.6.18 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.18 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.6.18': + resolution: {integrity: sha512-u/RwfWMyHcH0N2hqfMTw2CoZ58IXdeED3b8NmcHc8bmERB3byI5vVAkwYbcD7+WeRHIiym38ZHi0SRn+IpkO3Q==} + peerDependencies: + storybook: ^8.6.18 + + '@storybook/theming@8.6.18': + resolution: {integrity: sha512-n6OEjEtHupa2PdTwWzRepr7cO8NkDd4rgF6BKLitRbujOspLxzMBEqdphs+QLcuiCIgf33SqmEA64QWnbSMhPw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -1274,10 +1692,18 @@ packages: peerDependencies: react: ^18 || ^19 + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + '@testing-library/jest-dom@6.9.1': resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -1297,6 +1723,12 @@ packages: '@types/react-dom': optional: true + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + '@textlint/ast-node-types@15.6.0': resolution: {integrity: sha512-CxZHFbYAU7J0A4izz31wV2ZZfySR6aVj2OSR6/3tppZm7VV6hM7nA7sutsLwIiBL/v4lsB1RM79l4Dc/VrH4qw==} @@ -1345,6 +1777,9 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} @@ -1372,6 +1807,9 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@types/mocha@10.0.10': resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} @@ -1398,6 +1836,9 @@ packages: '@types/react@19.2.14': resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -1419,6 +1860,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@types/vscode-webview@1.57.5': resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==} @@ -1619,6 +2063,9 @@ packages: '@vitest/browser': optional: true + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + '@vitest/expect@4.1.5': resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} @@ -1633,6 +2080,12 @@ packages: vite: optional: true + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.9': + resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} + '@vitest/pretty-format@4.1.5': resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} @@ -1642,9 +2095,18 @@ packages: '@vitest/snapshot@4.1.5': resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + '@vitest/spy@4.1.5': resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.9': + resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} + '@vitest/utils@4.1.5': resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} @@ -1798,6 +2260,10 @@ packages: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + ast-v8-to-istanbul@1.0.0: resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} @@ -1808,6 +2274,14 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.4: + resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==} + engines: {node: '>=4'} + axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -1836,6 +2310,10 @@ packages: resolution: {integrity: sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==} engines: {node: '>=10.0.0'} + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} @@ -1877,6 +2355,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -1924,6 +2405,10 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -1938,10 +2423,18 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1956,6 +2449,10 @@ packages: character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -2104,6 +2601,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2127,6 +2628,10 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -2171,6 +2676,10 @@ packages: resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} engines: {node: '>=0.3.1'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -2277,6 +2786,16 @@ packages: es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + esbuild@0.28.0: resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} engines: {node: '>=18'} @@ -2442,6 +2961,9 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2543,6 +3065,10 @@ packages: debug: optional: true + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -2574,6 +3100,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2778,6 +3308,10 @@ packages: resolution: {integrity: sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw==} engines: {node: '>= 12'} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -2785,6 +3319,19 @@ packages: is-bun-module@2.0.0: resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2798,6 +3345,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2830,6 +3381,14 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -2842,6 +3401,10 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + is-wsl@3.1.1: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} @@ -2885,6 +3448,10 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} + engines: {node: '>=12.0.0'} + jsdom@29.1.0: resolution: {integrity: sha512-YNUc7fB9QuvSSQWfrH0xF+TyABkxUwx8sswgIDaCrw4Hol8BghdZDkITtZheRJeMtzWlnTfsM3bBBusRvpO1wg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} @@ -3098,6 +3665,9 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} @@ -3124,6 +3694,10 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -3134,6 +3708,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + markdown-it@14.1.1: resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} hasBin: true @@ -3199,6 +3776,9 @@ packages: peerDependencies: tslib: '2' + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3437,6 +4017,10 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + openpgp@6.3.0: resolution: {integrity: sha512-pLzCU8IgyKXPSO11eeharQkQ4GzOKNWhXq79pQarIRZEMt1/ssyr+MIuWBv1mNoenJLg04gvPx+fi4gcKZ4bag==} engines: {node: '>= 18.0.0'} @@ -3512,6 +4096,9 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -3527,6 +4114,10 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -3548,6 +4139,14 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss@8.5.12: resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} @@ -3582,6 +4181,10 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -3639,6 +4242,15 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true + react-docgen-typescript@2.4.0: + resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.1: + resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} + engines: {node: '>=16.14.0'} + react-dom@19.2.5: resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: @@ -3674,6 +4286,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -3692,6 +4308,11 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} @@ -3732,6 +4353,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3774,6 +4399,10 @@ packages: serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -3886,6 +4515,15 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + storybook@8.6.18: + resolution: {integrity: sha512-p8seiSI6FiVY6P3V0pG+5v7c8pDMehMAFRWEhG5XqIBSQszzOjDnW2rNvm3odoLKfo3V3P6Cs6Hv9ILzymULyQ==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + string-ts@2.3.1: resolution: {integrity: sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==} @@ -3915,10 +4553,18 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} + engines: {node: '>=12'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -3950,6 +4596,10 @@ packages: resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -3989,6 +4639,9 @@ packages: peerDependencies: tslib: ^2 + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -4000,10 +4653,18 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + tldts-core@7.0.28: resolution: {integrity: sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==} @@ -4043,9 +4704,17 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-pattern@5.9.0: resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -4141,6 +4810,10 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} @@ -4163,10 +4836,18 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + hasBin: true + v8-to-istanbul@9.3.0: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} @@ -4274,6 +4955,9 @@ packages: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -4291,6 +4975,10 @@ packages: resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4673,81 +5361,159 @@ snapshots: '@epic-web/invariant@1.0.0': {} + '@esbuild/aix-ppc64@0.25.12': + optional: true + '@esbuild/aix-ppc64@0.28.0': optional: true + '@esbuild/android-arm64@0.25.12': + optional: true + '@esbuild/android-arm64@0.28.0': optional: true + '@esbuild/android-arm@0.25.12': + optional: true + '@esbuild/android-arm@0.28.0': optional: true + '@esbuild/android-x64@0.25.12': + optional: true + '@esbuild/android-x64@0.28.0': optional: true + '@esbuild/darwin-arm64@0.25.12': + optional: true + '@esbuild/darwin-arm64@0.28.0': optional: true + '@esbuild/darwin-x64@0.25.12': + optional: true + '@esbuild/darwin-x64@0.28.0': optional: true + '@esbuild/freebsd-arm64@0.25.12': + optional: true + '@esbuild/freebsd-arm64@0.28.0': optional: true + '@esbuild/freebsd-x64@0.25.12': + optional: true + '@esbuild/freebsd-x64@0.28.0': optional: true + '@esbuild/linux-arm64@0.25.12': + optional: true + '@esbuild/linux-arm64@0.28.0': optional: true + '@esbuild/linux-arm@0.25.12': + optional: true + '@esbuild/linux-arm@0.28.0': optional: true + '@esbuild/linux-ia32@0.25.12': + optional: true + '@esbuild/linux-ia32@0.28.0': optional: true + '@esbuild/linux-loong64@0.25.12': + optional: true + '@esbuild/linux-loong64@0.28.0': optional: true + '@esbuild/linux-mips64el@0.25.12': + optional: true + '@esbuild/linux-mips64el@0.28.0': optional: true + '@esbuild/linux-ppc64@0.25.12': + optional: true + '@esbuild/linux-ppc64@0.28.0': optional: true + '@esbuild/linux-riscv64@0.25.12': + optional: true + '@esbuild/linux-riscv64@0.28.0': optional: true + '@esbuild/linux-s390x@0.25.12': + optional: true + '@esbuild/linux-s390x@0.28.0': optional: true + '@esbuild/linux-x64@0.25.12': + optional: true + '@esbuild/linux-x64@0.28.0': optional: true + '@esbuild/netbsd-arm64@0.25.12': + optional: true + '@esbuild/netbsd-arm64@0.28.0': optional: true + '@esbuild/netbsd-x64@0.25.12': + optional: true + '@esbuild/netbsd-x64@0.28.0': optional: true + '@esbuild/openbsd-arm64@0.25.12': + optional: true + '@esbuild/openbsd-arm64@0.28.0': optional: true + '@esbuild/openbsd-x64@0.25.12': + optional: true + '@esbuild/openbsd-x64@0.28.0': optional: true + '@esbuild/openharmony-arm64@0.25.12': + optional: true + '@esbuild/openharmony-arm64@0.28.0': optional: true + '@esbuild/sunos-x64@0.25.12': + optional: true + '@esbuild/sunos-x64@0.28.0': optional: true + '@esbuild/win32-arm64@0.25.12': + optional: true + '@esbuild/win32-arm64@0.28.0': optional: true + '@esbuild/win32-ia32@0.25.12': + optional: true + '@esbuild/win32-ia32@0.28.0': optional: true + '@esbuild/win32-x64@0.25.12': + optional: true + '@esbuild/win32-x64@0.28.0': optional: true @@ -4918,6 +5684,15 @@ snapshots: '@istanbuljs/schema@0.1.6': {} + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@6.0.3)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0))': + dependencies: + glob: 10.5.0 + magic-string: 0.27.0 + react-docgen-typescript: 2.4.0(typescript@6.0.3) + vite: 8.0.10(@types/node@22.19.17)(esbuild@0.28.0) + optionalDependencies: + typescript: 6.0.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -5078,6 +5853,12 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.5.1 + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.5)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.14 + react: 19.2.5 + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.10.0 @@ -5271,6 +6052,12 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.7': {} + '@rollup/pluginutils@5.3.0': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.4 + '@secretlint/config-creator@10.2.2': dependencies: '@secretlint/types': 10.2.2 @@ -5286,70 +6073,282 @@ snapshots: transitivePeerDependencies: - supports-color - '@secretlint/core@10.2.2': + '@secretlint/core@10.2.2': + dependencies: + '@secretlint/profiler': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + structured-source: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/formatter@10.2.2': + dependencies: + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + '@textlint/linter-formatter': 15.6.0 + '@textlint/module-interop': 15.6.0 + '@textlint/types': 15.6.0 + chalk: 5.6.2 + debug: 4.4.3(supports-color@8.1.1) + pluralize: 8.0.0 + strip-ansi: 7.2.0 + table: 6.9.0 + terminal-link: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/node@10.2.2': + dependencies: + '@secretlint/config-loader': 10.2.2 + '@secretlint/core': 10.2.2 + '@secretlint/formatter': 10.2.2 + '@secretlint/profiler': 10.2.2 + '@secretlint/source-creator': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + p-map: 7.0.4 + transitivePeerDependencies: + - supports-color + + '@secretlint/profiler@10.2.2': {} + + '@secretlint/resolver@10.2.2': {} + + '@secretlint/secretlint-formatter-sarif@10.2.2': + dependencies: + node-sarif-builder: 3.4.0 + + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + + '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} + + '@secretlint/source-creator@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + istextorbinary: 9.5.0 + + '@secretlint/types@10.2.2': {} + + '@sindresorhus/is@4.6.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@standard-schema/spec@1.1.0': {} + + '@storybook/addon-a11y@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/addon-highlight': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/global': 5.0.0 + '@storybook/test': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + axe-core: 4.11.4 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + + '@storybook/addon-actions@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.6.18(@types/react@19.2.14)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.5) + '@storybook/blocks': 8.6.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/csf-plugin': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/react-dom-shim': 8.6.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-essentials@8.6.18(@types/react@19.2.14)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/addon-actions': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-backgrounds': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-controls': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-docs': 8.6.18(@types/react@19.2.14)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-highlight': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-measure': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-outline': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-toolbars': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/addon-viewport': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-highlight@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + + '@storybook/addon-measure@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + + '@storybook/addon-viewport@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + memoizerific: 1.11.3 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + + '@storybook/blocks@8.6.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/icons': 1.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + + '@storybook/builder-vite@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0))': dependencies: - '@secretlint/profiler': 10.2.2 - '@secretlint/types': 10.2.2 - debug: 4.4.3(supports-color@8.1.1) - structured-source: 4.0.0 - transitivePeerDependencies: - - supports-color + '@storybook/csf-plugin': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + browser-assert: 1.2.1 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + ts-dedent: 2.2.0 + vite: 8.0.10(@types/node@22.19.17)(esbuild@0.28.0) - '@secretlint/formatter@10.2.2': + '@storybook/components@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': dependencies: - '@secretlint/resolver': 10.2.2 - '@secretlint/types': 10.2.2 - '@textlint/linter-formatter': 15.6.0 - '@textlint/module-interop': 15.6.0 - '@textlint/types': 15.6.0 - chalk: 5.6.2 - debug: 4.4.3(supports-color@8.1.1) - pluralize: 8.0.0 - strip-ansi: 7.2.0 - table: 6.9.0 - terminal-link: 4.0.0 - transitivePeerDependencies: - - supports-color + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) - '@secretlint/node@10.2.2': + '@storybook/core@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(utf-8-validate@6.0.6)': dependencies: - '@secretlint/config-loader': 10.2.2 - '@secretlint/core': 10.2.2 - '@secretlint/formatter': 10.2.2 - '@secretlint/profiler': 10.2.2 - '@secretlint/source-creator': 10.2.2 - '@secretlint/types': 10.2.2 - debug: 4.4.3(supports-color@8.1.1) - p-map: 7.0.4 + '@storybook/theming': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) + jsdoc-type-pratt-parser: 4.8.0 + process: 0.11.10 + recast: 0.23.11 + semver: 7.7.4 + util: 0.12.5 + ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + optionalDependencies: + prettier: 3.8.3 transitivePeerDependencies: + - bufferutil + - storybook - supports-color + - utf-8-validate - '@secretlint/profiler@10.2.2': {} + '@storybook/csf-plugin@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + unplugin: 1.16.1 - '@secretlint/resolver@10.2.2': {} + '@storybook/global@5.0.0': {} - '@secretlint/secretlint-formatter-sarif@10.2.2': + '@storybook/icons@1.6.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - node-sarif-builder: 3.4.0 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@secretlint/secretlint-rule-no-dotenv@10.2.2': + '@storybook/instrumenter@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': dependencies: - '@secretlint/types': 10.2.2 + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.9 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) - '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} + '@storybook/manager-api@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) - '@secretlint/source-creator@10.2.2': + '@storybook/preview-api@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': dependencies: - '@secretlint/types': 10.2.2 - istextorbinary: 9.5.0 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) - '@secretlint/types@10.2.2': {} + '@storybook/react-dom-shim@8.6.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) - '@sindresorhus/is@4.6.0': {} + '@storybook/react-vite@8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@6.0.3)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0)) + '@rollup/pluginutils': 5.3.0 + '@storybook/builder-vite': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0)) + '@storybook/react': 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3) + find-up: 5.0.0 + magic-string: 0.30.21 + react: 19.2.5 + react-docgen: 7.1.1 + react-dom: 19.2.5(react@19.2.5) + resolve: 1.22.12 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + tsconfig-paths: 4.2.0 + vite: 8.0.10(@types/node@22.19.17)(esbuild@0.28.0) + optionalDependencies: + '@storybook/test': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + transitivePeerDependencies: + - rollup + - supports-color + - typescript - '@sindresorhus/merge-streams@2.3.0': {} + '@storybook/react@8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(typescript@6.0.3)': + dependencies: + '@storybook/components': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/preview-api': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/react-dom-shim': 8.6.18(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@storybook/theming': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + optionalDependencies: + '@storybook/test': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + typescript: 6.0.3 - '@standard-schema/spec@1.1.0': {} + '@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6)) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) + + '@storybook/theming@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))': + dependencies: + storybook: 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6) '@szmarczak/http-timer@4.0.6': dependencies: @@ -5362,6 +6361,17 @@ snapshots: '@tanstack/query-core': 5.100.5 react: 19.2.5 + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/runtime': 7.29.2 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.29.0 @@ -5373,6 +6383,16 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.4 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.18.1 + redent: 3.0.0 + '@testing-library/jest-dom@6.9.1': dependencies: '@adobe/css-tools': 4.4.4 @@ -5392,6 +6412,10 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + '@textlint/ast-node-types@15.6.0': {} '@textlint/linter-formatter@15.6.0': @@ -5469,6 +6493,8 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/doctrine@0.0.9': {} + '@types/esrecurse@4.3.1': {} '@types/estree@1.0.8': {} @@ -5493,6 +6519,8 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/mdx@2.0.13': {} + '@types/mocha@10.0.10': {} '@types/ms@2.1.0': {} @@ -5520,6 +6548,8 @@ snapshots: dependencies: csstype: 3.2.3 + '@types/resolve@1.20.6': {} + '@types/responselike@1.0.3': dependencies: '@types/node': 22.19.17 @@ -5536,6 +6566,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/uuid@9.0.8': {} + '@types/vscode-webview@1.57.5': {} '@types/vscode@1.106.0': {} @@ -5737,6 +6769,13 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.5(@types/node@22.19.17)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.0)(vite@8.0.10(@types/node@22.19.17)(esbuild@0.28.0)) + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.3.3 + tinyrainbow: 1.2.0 + '@vitest/expect@4.1.5': dependencies: '@standard-schema/spec': 1.1.0 @@ -5754,6 +6793,14 @@ snapshots: optionalDependencies: vite: 8.0.10(@types/node@22.19.17)(esbuild@0.28.0) + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.9': + dependencies: + tinyrainbow: 1.2.0 + '@vitest/pretty-format@4.1.5': dependencies: tinyrainbow: 3.1.0 @@ -5770,8 +6817,25 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + '@vitest/spy@4.1.5': {} + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.2.1 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.9': + dependencies: + '@vitest/pretty-format': 2.1.9 + loupe: 3.2.1 + tinyrainbow: 1.2.0 + '@vitest/utils@4.1.5': dependencies: '@vitest/pretty-format': 4.1.5 @@ -5960,6 +7024,10 @@ snapshots: dependencies: tslib: 2.8.1 + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -5970,6 +7038,12 @@ snapshots: asynckit@0.4.0: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.4: {} + axios@1.15.0: dependencies: follow-redirects: 1.16.0 @@ -5998,6 +7072,10 @@ snapshots: basic-ftp@5.3.1: {} + better-opn@3.0.2: + dependencies: + open: 8.4.2 + bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 @@ -6041,6 +7119,8 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-assert@1.2.1: {} + browser-stdout@1.3.1: {} browserslist@4.28.2: @@ -6100,6 +7180,13 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -6111,8 +7198,21 @@ snapshots: ccount@2.0.1: {} + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.3 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + chai@6.2.2: {} + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -6124,6 +7224,8 @@ snapshots: character-entities@2.0.2: {} + check-error@2.1.3: {} + cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -6282,6 +7384,8 @@ snapshots: dependencies: mimic-response: 3.1.0 + deep-eql@5.0.2: {} + deep-extend@0.6.0: optional: true @@ -6301,7 +7405,8 @@ snapshots: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 - optional: true + + define-lazy-prop@2.0.0: {} define-lazy-prop@3.0.0: {} @@ -6338,6 +7443,10 @@ snapshots: diff@7.0.0: {} + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} @@ -6438,6 +7547,42 @@ snapshots: es6-error@4.1.1: optional: true + esbuild-register@3.6.0(esbuild@0.25.12): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + esbuild: 0.25.12 + transitivePeerDependencies: + - supports-color + + esbuild@0.25.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + esbuild@0.28.0: optionalDependencies: '@esbuild/aix-ppc64': 0.28.0 @@ -6715,6 +7860,8 @@ snapshots: estraverse@5.3.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -6806,6 +7953,10 @@ snapshots: follow-redirects@1.16.0: {} + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -6841,6 +7992,8 @@ snapshots: function-bind@1.1.2: {} + generator-function@2.0.1: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -6968,7 +8121,6 @@ snapshots: has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 - optional: true has-symbols@1.1.0: {} @@ -7072,6 +8224,11 @@ snapshots: ip-address@10.1.1: {} + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -7080,12 +8237,28 @@ snapshots: dependencies: semver: 7.7.4 + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + + is-docker@2.2.1: {} + is-docker@3.0.0: {} is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -7106,12 +8279,27 @@ snapshots: is-potential-custom-element-name@1.0.1: {} + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + is-unicode-supported@0.1.0: {} is-unicode-supported@1.3.0: {} is-unicode-supported@2.1.0: {} + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 @@ -7157,6 +8345,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsdoc-type-pratt-parser@4.8.0: {} + jsdom@29.1.0: dependencies: '@asamuzakjp/css-color': 5.1.11 @@ -7377,6 +8567,8 @@ snapshots: longest-streak@3.1.0: {} + loupe@3.2.1: {} + lowercase-keys@2.0.0: {} lru-cache@10.4.3: {} @@ -7395,6 +8587,10 @@ snapshots: lz-string@1.5.0: {} + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7409,6 +8605,8 @@ snapshots: dependencies: semver: 7.7.4 + map-or-similar@1.5.0: {} + markdown-it@14.1.1: dependencies: argparse: 2.0.1 @@ -7573,6 +8771,10 @@ snapshots: tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + merge2@1.4.1: {} micromark-core-commonmark@2.0.3: @@ -7816,8 +9018,7 @@ snapshots: dependencies: brace-expansion: 2.1.0 - minimist@1.2.8: - optional: true + minimist@1.2.8: {} minipass@7.1.3: {} @@ -7923,6 +9124,12 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + openpgp@6.3.0: {} optionator@0.9.4: @@ -8019,6 +9226,8 @@ snapshots: path-key@3.1.1: {} + path-parse@1.0.7: {} + path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -8033,6 +9242,8 @@ snapshots: pathe@2.0.3: {} + pathval@2.0.1: {} + pend@1.2.0: {} picocolors@1.1.1: {} @@ -8045,6 +9256,12 @@ snapshots: pluralize@8.0.0: {} + polished@4.3.1: + dependencies: + '@babel/runtime': 7.29.2 + + possible-typed-array-names@1.1.0: {} + postcss@8.5.12: dependencies: nanoid: 3.3.11 @@ -8083,6 +9300,8 @@ snapshots: process-nextick-args@2.0.1: {} + process@0.11.10: {} + progress@2.0.3: {} proper-lockfile@4.1.2: @@ -8152,6 +9371,25 @@ snapshots: strip-json-comments: 2.0.1 optional: true + react-docgen-typescript@2.4.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + react-docgen@7.1.1: + dependencies: + '@babel/core': 7.29.0 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.28.0 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.12 + strip-indent: 4.1.1 + transitivePeerDependencies: + - supports-color + react-dom@19.2.5(react@19.2.5): dependencies: react: 19.2.5 @@ -8196,6 +9434,14 @@ snapshots: readdirp@4.1.2: {} + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -8209,6 +9455,13 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + responselike@2.0.1: dependencies: lowercase-keys: 2.0.0 @@ -8267,6 +9520,12 @@ snapshots: safe-buffer@5.2.1: {} + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + safer-buffer@2.1.2: {} sax@1.6.0: {} @@ -8307,6 +9566,15 @@ snapshots: dependencies: randombytes: 2.1.0 + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + setimmediate@1.0.5: {} shebang-command@2.0.0: @@ -8398,8 +9666,7 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.6.1: - optional: true + source-map@0.6.1: {} spdx-correct@3.2.0: dependencies: @@ -8426,6 +9693,16 @@ snapshots: stdin-discarder@0.2.2: {} + storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6): + dependencies: + '@storybook/core': 8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(storybook@8.6.18(bufferutil@4.1.0)(prettier@3.8.3)(utf-8-validate@6.0.6))(utf-8-validate@6.0.6) + optionalDependencies: + prettier: 3.8.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + string-ts@2.3.1: {} string-width@4.2.3: @@ -8463,10 +9740,14 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-bom@3.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 + strip-indent@4.1.1: {} + strip-json-comments@2.0.1: optional: true @@ -8497,6 +9778,8 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} + symbol-tree@3.2.4: {} table@6.9.0: @@ -8547,6 +9830,8 @@ snapshots: dependencies: tslib: 2.8.1 + tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} tinyexec@1.1.1: {} @@ -8556,8 +9841,12 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyrainbow@1.2.0: {} + tinyrainbow@3.1.0: {} + tinyspy@3.0.2: {} + tldts-core@7.0.28: {} tldts@7.0.28: @@ -8588,8 +9877,16 @@ snapshots: dependencies: typescript: 6.0.3 + ts-dedent@2.2.0: {} + ts-pattern@5.9.0: {} + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@1.14.1: {} tslib@2.8.1: {} @@ -8678,6 +9975,11 @@ snapshots: universalify@2.0.1: {} + unplugin@1.16.1: + dependencies: + acorn: 8.16.0 + webpack-virtual-modules: 0.6.2 + unrs-resolver@1.11.1: dependencies: napi-postinstall: 0.3.4 @@ -8720,8 +10022,18 @@ snapshots: util-deprecate@1.0.2: {} + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.20 + uuid@8.3.2: {} + uuid@9.0.1: {} + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -8796,6 +10108,8 @@ snapshots: webidl-conversions@8.0.1: {} + webpack-virtual-modules@0.6.2: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -8812,6 +10126,16 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ed1e77a7..7f243189 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,11 @@ packages: catalog: "@rolldown/plugin-babel": ^0.2.3 + "@storybook/addon-a11y": ^8.6.18 + "@storybook/addon-essentials": ^8.6.18 + "@storybook/react": ^8.6.18 + "@storybook/react-vite": ^8.6.18 + "@storybook/test": ^8.6.18 "@tanstack/react-query": ^5.100.5 "@types/react": ^19.2.14 "@types/react-dom": ^19.2.3 @@ -15,14 +20,12 @@ catalog: date-fns: ^4.1.0 react: ^19.2.5 react-dom: ^19.2.5 + storybook: ^8.6.18 typescript: ^6.0.3 vite: ^8.0.10 catalogMode: strict -overrides: - "@vscode-elements/elements": ^2.5.1 - ignoredBuiltDependencies: - keytar @@ -33,3 +36,6 @@ onlyBuiltDependencies: - esbuild - unrs-resolver - utf-8-validate + +overrides: + "@vscode-elements/elements": ^2.5.1 diff --git a/test/unit/inbox.test.ts b/test/unit/inbox.test.ts index 701bedf6..42ee6858 100644 --- a/test/unit/inbox.test.ts +++ b/test/unit/inbox.test.ts @@ -3,12 +3,13 @@ import * as vscode from "vscode"; import { Inbox } from "@/inbox"; +import { workspace as createWorkspace } from "@repo/mocks"; + import { MockConfigurationProvider, MockEventStream, createMockLogger, } from "../mocks/testHelpers"; -import { workspace as createWorkspace } from "../mocks/workspace"; import type { GetInboxNotificationResponse } from "coder/site/src/api/typesGenerated"; diff --git a/test/unit/remote/workspaceStateMachine.test.ts b/test/unit/remote/workspaceStateMachine.test.ts index 24840124..1b62a217 100644 --- a/test/unit/remote/workspaceStateMachine.test.ts +++ b/test/unit/remote/workspaceStateMachine.test.ts @@ -9,17 +9,18 @@ import { import { maybeAskAgent } from "@/promptUtils"; import { WorkspaceStateMachine } from "@/remote/workspaceStateMachine"; +import { + agent as createAgent, + resource as createResource, + workspace as createWorkspace, +} from "@repo/mocks"; + import { createMockLogger, MockProgress, MockTerminalOutputChannel, MockUserInteraction, } from "../../mocks/testHelpers"; -import { - agent as createAgent, - resource as createResource, - workspace as createWorkspace, -} from "../../mocks/workspace"; import type { Workspace, diff --git a/test/unit/webviews/tasks/tasksPanelProvider.test.ts b/test/unit/webviews/tasks/tasksPanelProvider.test.ts index ec804ba3..99526d2a 100644 --- a/test/unit/webviews/tasks/tasksPanelProvider.test.ts +++ b/test/unit/webviews/tasks/tasksPanelProvider.test.ts @@ -4,6 +4,14 @@ import * as vscode from "vscode"; import { streamAgentLogs, streamBuildLogs } from "@/api/workspace"; import { TasksPanelProvider } from "@/webviews/tasks/tasksPanelProvider"; +import { + logEntry, + preset, + task, + taskState, + template, + workspace, +} from "@repo/mocks"; import { TasksApi, defineRequest, @@ -12,19 +20,11 @@ import { type TaskIdParams, } from "@repo/shared"; -import { - logEntry, - preset, - task, - taskState, - template, -} from "../../../mocks/tasks"; import { createAxiosError, createMockLogger, MockUserInteraction, } from "../../../mocks/testHelpers"; -import { workspace } from "../../../mocks/workspace"; import type { ProvisionerJobLog, diff --git a/test/unit/workspace/workspaceMonitor.test.ts b/test/unit/workspace/workspaceMonitor.test.ts index cdb2b0ce..5ceedcad 100644 --- a/test/unit/workspace/workspaceMonitor.test.ts +++ b/test/unit/workspace/workspaceMonitor.test.ts @@ -3,6 +3,8 @@ import * as vscode from "vscode"; import { WorkspaceMonitor } from "@/workspace/workspaceMonitor"; +import { workspace as createWorkspace } from "@repo/mocks"; + import { MockConfigurationProvider, MockContextManager, @@ -10,7 +12,6 @@ import { MockStatusBarItem, createMockLogger, } from "../../mocks/testHelpers"; -import { workspace as createWorkspace } from "../../mocks/workspace"; import type { ServerSentEvent, diff --git a/test/webview/shared/tasks/utils.test.ts b/test/webview/shared/tasks/utils.test.ts index 32f9bd8b..bd375a09 100644 --- a/test/webview/shared/tasks/utils.test.ts +++ b/test/webview/shared/tasks/utils.test.ts @@ -1,5 +1,10 @@ import { describe, expect, it } from "vitest"; +import { + minimalTask as task, + task as fullTask, + taskState as state, +} from "@repo/mocks"; import { getTaskPermissions, isAgentStarting, @@ -11,12 +16,6 @@ import { type TaskPermissions, } from "@repo/shared"; -import { - minimalTask as task, - task as fullTask, - taskState as state, -} from "../../../mocks/tasks"; - import type { WorkspaceAgentLifecycle, WorkspaceStatus, diff --git a/test/webview/tasks/AgentChatHistory.test.tsx b/test/webview/tasks/AgentChatHistory.test.tsx index cd06511e..1b0f7a0d 100644 --- a/test/webview/tasks/AgentChatHistory.test.tsx +++ b/test/webview/tasks/AgentChatHistory.test.tsx @@ -1,9 +1,9 @@ import { screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; +import { logEntry } from "@repo/mocks"; import { AgentChatHistory } from "@repo/tasks/components/AgentChatHistory"; -import { logEntry } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; import type { TaskLogs } from "@repo/shared"; diff --git a/test/webview/tasks/CreateTaskSection.test.tsx b/test/webview/tasks/CreateTaskSection.test.tsx index 561d79fc..0c6297b5 100644 --- a/test/webview/tasks/CreateTaskSection.test.tsx +++ b/test/webview/tasks/CreateTaskSection.test.tsx @@ -1,10 +1,10 @@ import { fireEvent, screen, waitFor } from "@testing-library/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import { taskTemplate } from "@repo/mocks"; import { CreateTaskSection } from "@repo/tasks/components/CreateTaskSection"; import { logger } from "@repo/webview-shared/logger"; -import { taskTemplate } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; import type { TaskTemplate } from "@repo/shared"; diff --git a/test/webview/tasks/ErrorBanner.test.tsx b/test/webview/tasks/ErrorBanner.test.tsx index 425dd8b5..8ed66937 100644 --- a/test/webview/tasks/ErrorBanner.test.tsx +++ b/test/webview/tasks/ErrorBanner.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen } from "@testing-library/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import { task } from "@repo/mocks"; import { ErrorBanner } from "@repo/tasks/components/ErrorBanner"; -import { task } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; import type { Task } from "@repo/shared"; diff --git a/test/webview/tasks/StatusIndicator.test.tsx b/test/webview/tasks/StatusIndicator.test.tsx index 7d74457f..e077d056 100644 --- a/test/webview/tasks/StatusIndicator.test.tsx +++ b/test/webview/tasks/StatusIndicator.test.tsx @@ -4,10 +4,9 @@ import { readFileSync } from "node:fs"; import { resolve } from "node:path"; import { describe, expect, it } from "vitest"; +import { task } from "@repo/mocks"; import { StatusIndicator } from "@repo/tasks/components/StatusIndicator"; -import { task } from "../../mocks/tasks"; - import type { TaskStatus } from "@repo/shared"; const css = readFileSync(resolve("packages/tasks/src/index.css"), "utf-8"); diff --git a/test/webview/tasks/TaskDetailHeader.test.tsx b/test/webview/tasks/TaskDetailHeader.test.tsx index d45f5a6c..2be328de 100644 --- a/test/webview/tasks/TaskDetailHeader.test.tsx +++ b/test/webview/tasks/TaskDetailHeader.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen, waitFor } from "@testing-library/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import { task, taskState } from "@repo/mocks"; import { TaskDetailHeader } from "@repo/tasks/components/TaskDetailHeader"; -import { task, taskState } from "../../mocks/tasks"; import { qs } from "../helpers"; import { renderWithQuery } from "../render"; diff --git a/test/webview/tasks/TaskDetailView.test.tsx b/test/webview/tasks/TaskDetailView.test.tsx index fcb6a790..7f7f7e49 100644 --- a/test/webview/tasks/TaskDetailView.test.tsx +++ b/test/webview/tasks/TaskDetailView.test.tsx @@ -1,9 +1,9 @@ import { screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; +import { logEntry, taskDetails, taskState } from "@repo/mocks"; import { TaskDetailView } from "@repo/tasks/components/TaskDetailView"; -import { logEntry, taskDetails, taskState } from "../../mocks/tasks"; import { qs } from "../helpers"; import { renderWithQuery } from "../render"; diff --git a/test/webview/tasks/TaskItem.test.tsx b/test/webview/tasks/TaskItem.test.tsx index e8a9b600..3101cb98 100644 --- a/test/webview/tasks/TaskItem.test.tsx +++ b/test/webview/tasks/TaskItem.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; +import { task } from "@repo/mocks"; import { TaskItem } from "@repo/tasks/components/TaskItem"; -import { task } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; import type { Task } from "@repo/shared"; diff --git a/test/webview/tasks/TaskList.test.tsx b/test/webview/tasks/TaskList.test.tsx index b9b01593..9339fe01 100644 --- a/test/webview/tasks/TaskList.test.tsx +++ b/test/webview/tasks/TaskList.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; +import { task } from "@repo/mocks"; import { TaskList } from "@repo/tasks/components/TaskList"; -import { task } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; vi.mock("@repo/tasks/hooks/useTasksApi", () => ({ diff --git a/test/webview/tasks/TaskMessageInput.test.tsx b/test/webview/tasks/TaskMessageInput.test.tsx index ecc23575..5d075d05 100644 --- a/test/webview/tasks/TaskMessageInput.test.tsx +++ b/test/webview/tasks/TaskMessageInput.test.tsx @@ -1,9 +1,9 @@ import { fireEvent, screen, waitFor } from "@testing-library/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import { task, taskState } from "@repo/mocks"; import { TaskMessageInput } from "@repo/tasks/components/TaskMessageInput"; -import { task, taskState } from "../../mocks/tasks"; import { qs } from "../helpers"; import { renderWithQuery } from "../render"; diff --git a/test/webview/tasks/WorkspaceLogs.test.tsx b/test/webview/tasks/WorkspaceLogs.test.tsx index 03dca187..4f2d94e9 100644 --- a/test/webview/tasks/WorkspaceLogs.test.tsx +++ b/test/webview/tasks/WorkspaceLogs.test.tsx @@ -1,10 +1,10 @@ import { screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; +import { task } from "@repo/mocks"; import { WorkspaceLogs } from "@repo/tasks/components/WorkspaceLogs"; import * as hookModule from "@repo/tasks/hooks/useWorkspaceLogs"; -import { task } from "../../mocks/tasks"; import { renderWithQuery } from "../render"; vi.mock("@repo/tasks/hooks/useWorkspaceLogs", () => ({ diff --git a/test/webview/tasks/useTaskMenuItems.test.tsx b/test/webview/tasks/useTaskMenuItems.test.tsx index 0cbf41f6..c0f409ca 100644 --- a/test/webview/tasks/useTaskMenuItems.test.tsx +++ b/test/webview/tasks/useTaskMenuItems.test.tsx @@ -1,10 +1,10 @@ import { act, renderHook, waitFor } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; +import { task } from "@repo/mocks"; import { getTaskLabel, type Task } from "@repo/shared"; import { useTaskMenuItems } from "@repo/tasks/components/useTaskMenuItems"; -import { task } from "../../mocks/tasks"; import { QueryWrapper } from "../render"; import type { ActionMenuItem } from "@repo/tasks/components/ActionMenu";