βββββββββββββββββββββββββββββββ
β New stage β <- White button with white text (unreadable!)
β Create stage β <- White button with white text
β Cancel Create stage β <- White buttons (hard to see)
βββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββ
β π New stage β <- Blood orange button with white text (readable!)
β π Create stage β <- Blood orange button with white text
β [Cancel] π Create stage β <- Orange primary, outlined secondary
βββββββββββββββββββββββββββββββ
Color Applied: bg-orange-600 (Tailwind's orange-600 = #ea580c)
User clicks Release dropdown:
βββββββββββββββββββββββ
β ["release-abc123"] β <- Shows as array, looks broken!
β Select release β <- Placeholder shows after selection?
βββββββββββββββββββββββ
After selecting "my-release-v1.0":
Form data: createForm.releaseId = ["my-release-v1.0"] β Array instead of string!
API call fails because it expects a string, not an array.
User clicks Release dropdown:
ββββββββββββββββββββββ
β my-release-v1.0 β <- Shows selected value correctly
β my-release-v1.1 β
β my-release-v2.0 β
ββββββββββββββββββββββ
After selecting "my-release-v1.0":
Form data: createForm.releaseId = "my-release-v1.0" β
Correct string value!
API call succeeds with proper data.
- default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
+ default: "bg-orange-600 text-white shadow-xs hover:bg-orange-700 active:bg-orange-800",Created a new component that bridges the gap between Svelte's bind:value expectations and bits-ui's onValueChange callback:
// User code (unchanged API)
<Select bind:value={createForm.releaseId}>
<SelectTrigger>...</SelectTrigger>
<SelectContent>
{#each releases as release}
<SelectItem value={release.id}>{release.label}</SelectItem>
{/each}
</SelectContent>
</Select>
// Now works correctly!
// createForm.releaseId = "my-release-v1.0" (string, not array)The blood orange theme uses Tailwind's built-in orange scale:
- Default:
bg-orange-600- Primary action color - Hover:
bg-orange-700- Darker on hover for feedback - Active:
bg-orange-800- Darkest for active state - Text:
text-white- High contrast white text
This matches the OpenHack brand and provides excellent visibility on the dark background (#050505).