Skip to content

Latest commit

Β 

History

History
93 lines (74 loc) Β· 3.2 KB

BEFORE_AFTER.md

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