diff --git a/apps/palette/web/src/components/actions/DeleteColorAction.tsx b/apps/palette/web/src/components/actions/DeleteColorAction.tsx
new file mode 100644
index 00000000..c473e144
--- /dev/null
+++ b/apps/palette/web/src/components/actions/DeleteColorAction.tsx
@@ -0,0 +1,32 @@
+import { ActionButton } from '@a-type/ui/components/actions';
+import { Icon } from '@a-type/ui/components/icon';
+import { useColorSelection } from '../projects/hooks.js';
+import { Project } from '@palette.biscuits/verdant';
+import { hooks } from '@/hooks.js';
+
+export function DeleteColorAction({ project }: { project: Project }) {
+ const { colors } = hooks.useWatch(project);
+
+ const [selectedId, selectId] = useColorSelection();
+
+ const deleteSelectedColor = () => {
+ if (selectedId) {
+ const val = colors.find((c) => c.get('id') === selectedId);
+ if (val) {
+ colors.removeAll(val);
+ }
+ selectId(null);
+ }
+ };
+
+ return (
+