From 6cf3c75275cac377239af852b178e467e384f589 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 06:53:49 +0000
Subject: [PATCH 01/17] Initial plan
From dca73049f04d8b3ff3b7b2d060eb220aa3e77d3c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 06:58:57 +0000
Subject: [PATCH 02/17] Add CSS appearance: base-select styling for
customizable select elements
Co-authored-by: argyleink <1134620+argyleink@users.noreply.github.com>
---
src/components/Gradient.svelte | 104 +++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)
diff --git a/src/components/Gradient.svelte b/src/components/Gradient.svelte
index f68991f..0b63051 100644
--- a/src/components/Gradient.svelte
+++ b/src/components/Gradient.svelte
@@ -997,6 +997,110 @@ let user_gradient = $derived(gensyntax[$gradient_type](
cursor: not-allowed;
}
+ /* -----------------------------------------------
+ * Customizable Select (base-select) Styles
+ * ----------------------------------------------- */
+ @supports (appearance: base-select) {
+ :global(select) {
+ appearance: base-select;
+ background-image: none;
+ padding-inline-end: 1.75ch;
+ }
+
+ :global(select::picker(select)) {
+ --_picker-bg-light: #fff;
+ --_picker-bg-dark: var(--surface-3);
+ --_picker-bg: var(--_picker-bg-light);
+
+ background: var(--_picker-bg);
+ border: 1px solid var(--surface-4);
+ border-radius: var(--radius-2);
+ box-shadow: var(--shadow-4);
+ padding: var(--size-1);
+ margin-block-start: var(--size-1);
+
+ /* Transitions */
+ opacity: 0;
+ transform: translateY(-8px) scale(0.96);
+ transition:
+ opacity 150ms var(--ease-3),
+ transform 150ms var(--ease-3),
+ overlay 150ms var(--ease-3) allow-discrete,
+ display 150ms var(--ease-3) allow-discrete;
+ }
+
+ :global(select:open::picker(select)) {
+ opacity: 1;
+ transform: translateY(0) scale(1);
+ }
+
+ @starting-style {
+ :global(select:open::picker(select)) {
+ opacity: 0;
+ transform: translateY(-8px) scale(0.96);
+ }
+ }
+
+ :global(select option) {
+ padding: var(--size-2) var(--size-3);
+ border-radius: var(--radius-2);
+ cursor: pointer;
+ transition:
+ background-color 100ms var(--ease-2),
+ color 100ms var(--ease-2);
+ }
+
+ :global(select option:hover) {
+ background-color: var(--surface-2);
+ }
+
+ :global(select option:checked),
+ :global(select option:focus) {
+ background-color: var(--link);
+ color: white;
+ }
+
+ :global(select option::checkmark) {
+ display: none;
+ }
+
+ :global(select optgroup) {
+ padding-block: var(--size-1);
+ }
+
+ :global(select optgroup::before) {
+ content: attr(label);
+ display: block;
+ font-size: var(--font-size-0);
+ font-weight: var(--font-weight-6);
+ color: var(--text-2);
+ padding: var(--size-1) var(--size-3);
+ text-transform: uppercase;
+ letter-spacing: var(--font-letterspacing-2);
+ }
+
+ :global(select optgroup:not(:first-of-type)) {
+ border-block-start: 1px solid var(--surface-3);
+ margin-block-start: var(--size-1);
+ padding-block-start: var(--size-2);
+ }
+
+ @media (prefers-color-scheme: dark) {
+ :global(select::picker(select)) {
+ --_picker-bg: var(--_picker-bg-dark);
+ border-color: var(--surface-4);
+ }
+
+ :global(select option:hover) {
+ background-color: var(--surface-4);
+ }
+
+ :global(select optgroup:not(:first-of-type)) {
+ border-block-start-color: var(--surface-4);
+ }
+ }
+ }
+
:global(.sr-only) {
inline-size: 0;
block-size: 0;
From 62d8d53c4e4a59e246a66dc61738dfbc8aa70e86 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 17:21:18 +0000
Subject: [PATCH 03/17] Add 1px gap between option elements in base-select
dropdown
Co-authored-by: argyleink <1134620+argyleink@users.noreply.github.com>
---
src/components/Gradient.svelte | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/components/Gradient.svelte b/src/components/Gradient.svelte
index 0b63051..9f3943e 100644
--- a/src/components/Gradient.svelte
+++ b/src/components/Gradient.svelte
@@ -1050,6 +1050,10 @@ let user_gradient = $derived(gensyntax[$gradient_type](
color 100ms var(--ease-2);
}
+ :global(select option:not(:last-child)) {
+ margin-block-end: 1px;
+ }
+
:global(select option:hover) {
background-color: var(--surface-2);
}
From 6672921510d0ddb0111baec4914e739359cedd63 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 29 Jan 2026 22:44:00 +0000
Subject: [PATCH 04/17] Fix overflow: hidden blocking base-select anchor
positioning
Co-authored-by: argyleink <1134620+argyleink@users.noreply.github.com>
---
src/components/Gradient.svelte | 6 +++---
src/components/LayersPanel.svelte | 2 +-
src/routes/+page.svelte | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/components/Gradient.svelte b/src/components/Gradient.svelte
index 9f3943e..a1b74f9 100644
--- a/src/components/Gradient.svelte
+++ b/src/components/Gradient.svelte
@@ -622,7 +622,7 @@ let user_gradient = $derived(gensyntax[$gradient_type](
display: grid;
border-radius: var(--radius-3);
box-shadow: var(--shadow-3);
- overflow: hidden;
+ overflow: clip;
}
@media (prefers-color-scheme: light) {
@@ -743,7 +743,7 @@ let user_gradient = $derived(gensyntax[$gradient_type](
display: grid;
place-content: center;
inline-size: 100cqi;
- overflow: hidden;
+ overflow: clip;
position: relative;
}
@@ -1170,7 +1170,7 @@ let user_gradient = $derived(gensyntax[$gradient_type](
.global-actions {
position: relative;
inline-size: var(--size-7);
- overflow: hidden;
+ overflow: clip;
border-radius: var(--radius-round);
padding-inline: 0;
aspect-ratio: 1;
diff --git a/src/components/LayersPanel.svelte b/src/components/LayersPanel.svelte
index c6a1fe2..f55fced 100644
--- a/src/components/LayersPanel.svelte
+++ b/src/components/LayersPanel.svelte
@@ -193,7 +193,7 @@
.layer-actions {
position: relative;
inline-size: var(--size-5);
- overflow: hidden;
+ overflow: clip;
border-radius: var(--radius-round);
padding-inline: 0;
aspect-ratio: 1;
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 7cdae76..f34f6fa 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -21,7 +21,7 @@
@media (min-width: 1024px) {
:global(html) {
- overflow: hidden;
+ overflow: clip;
}
}
From 45ff98a0b74ec1a1f72561e8a9f21b34d0d99ae0 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 30 Jan 2026 05:13:47 +0000
Subject: [PATCH 05/17] Add button and selectedcontent elements for base-select
activation
Co-authored-by: argyleink <1134620+argyleink@users.noreply.github.com>
---
src/components/ColorPicker.svelte | 3 +++
src/components/ConicPosition.svelte | 3 +++
src/components/Gradient.svelte | 30 +++++++++++++++++++++++-
src/components/GradientColorSpace.svelte | 3 +++
src/components/HueInterpolation.svelte | 3 +++
src/components/LinearAngle.svelte | 3 +++
src/components/RadialPosition.svelte | 3 +++
src/components/RadialSize.svelte | 3 +++
8 files changed, 50 insertions(+), 1 deletion(-)
diff --git a/src/components/ColorPicker.svelte b/src/components/ColorPicker.svelte
index 3f95412..32531d3 100644
--- a/src/components/ColorPicker.svelte
+++ b/src/components/ColorPicker.svelte
@@ -259,6 +259,9 @@ let gamut = $derived(whatsTheGamutDamnit($picker_value))