diff --git a/site/src/api/queries/templates.ts b/site/src/api/queries/templates.ts index da27333b0f..6cf943007f 100644 --- a/site/src/api/queries/templates.ts +++ b/site/src/api/queries/templates.ts @@ -304,9 +304,15 @@ export const previousTemplateVersion = ( }; }; +export const templateVersionPresetsKey = (versionId: string) => [ + templateVersionRoot, + versionId, + "presets", +]; + export const templateVersionPresets = (versionId: string) => { return { - queryKey: [templateVersionRoot, versionId, "presets"], + queryKey: templateVersionPresetsKey(versionId), queryFn: () => API.getTemplateVersionPresets(versionId), }; }; diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx index e60d298965..84c25ff53b 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.stories.tsx @@ -13,6 +13,7 @@ import { import { withAuthProvider, withToaster } from "testHelpers/storybook"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { API } from "api/api"; +import { templateVersionPresetsKey } from "api/queries/templates"; import type { Task } from "api/typesGenerated"; import { expect, spyOn, userEvent, waitFor, within } from "storybook/test"; import type TasksPage from "../../../pages/TasksPage/TasksPage"; @@ -498,6 +499,50 @@ export const PresetSelectorFocused: Story = { }, }; +// Regression test for https://github.com/coder/coder/issues/22245 +// Dark monochrome icons (like GitHub or Tasks) were invisible on dark +// backgrounds because icons used a plain instead of +// ExternalImage, which applies theme-aware CSS filters. +export const IconContrast: Story = { + args: { + templates: [ + { + ...MockTemplate, + id: "github-template", + name: "github-template", + display_name: "GitHub", + icon: "/icon/github.svg", + active_version_id: MockTemplateVersion.id, + }, + { + ...MockTemplate, + id: "tasks-template", + name: "tasks-template", + display_name: "Tasks", + icon: "/icon/tasks.svg", + active_version_id: MockTemplateVersion.id, + }, + ], + }, + parameters: { + queries: [ + { + key: templateVersionPresetsKey(MockTemplateVersion.id), + data: [ + { + ...MockPresets[0], + Icon: "/icon/github.svg", + }, + { + ...MockPresets[1], + Icon: "/icon/tasks.svg", + }, + ], + }, + ], + }, +}; + export const CheckPresetsWhenChangingTemplate: Story = { args: { templates: [ diff --git a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx index 850c938735..d54eb757a6 100644 --- a/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx +++ b/site/src/modules/tasks/TaskPrompt/TaskPrompt.tsx @@ -284,7 +284,7 @@ const CreateTaskForm: FC = ({ templates, onSuccess }) => {
{template.icon && ( - {template.name} = ({ templates, onSuccess }) => {
{preset.Icon && ( -