Skip to content

Latest commit

 

History

History
93 lines (74 loc) · 3.2 KB

File metadata and controls

93 lines (74 loc) · 3.2 KB

Visual Before/After Comparison

Issue 1: Button Styling Problem

BEFORE (Broken)

┌─────────────────────────────┐
│ New stage                   │  <- White button with white text (unreadable!)
│ Create stage                │  <- White button with white text
│ Cancel    Create stage       │  <- White buttons (hard to see)
└─────────────────────────────┘

AFTER (Fixed - Blood Orange Theme)

┌─────────────────────────────┐
│ 🟠 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)


Issue 2: Select Dropdown Binding Problem

BEFORE (Broken)

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.

AFTER (Fixed - Proper String Binding)

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.

Implementation Details

Button Theme Change

- 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",

Select Wrapper Solution

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)

Color Reference

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).