Implementation
static FTextInputTheme<T> resolveStyle<T extends App<T>>(FTextInputStyle style) {
return switch (style) {
.flat => .new(
bg: .color(0xF5, 0xF5, 0xF5, 0xFF),
bgHovered: .color(0xED, 0xED, 0xED, 0xFF),
bgFocused: .WHITE,
bgDisabled: .color(0xF0, 0xF0, 0xF0, 0xFF),
fg: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgHovered: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgFocused: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgDisabled: .color(0xA0, 0xA0, 0xA0, 0xFF),
border: .color(0xCC, 0xCC, 0xCC, 0xFF),
borderHovered: .color(0x99, 0x99, 0x99, 0xFF),
borderFocused: .color(0x5B, 0x4F, 0xCF, 0xFF), // primary purple
borderDisabled: .color(0xE0, 0xE0, 0xE0, 0xFF),
placeholder: .color(0xB0, 0xB0, 0xB0, 0xFF),
cursor: .color(0x5B, 0x4F, 0xCF, 0xFF),
selection: .color(0x5B, 0x4F, 0xCF, 0x40),
),
.outlined => .new(
bg: .BLANK,
bgHovered: .color(0xEE, 0xED, 0xFE, 0x60),
bgFocused: .color(0xEE, 0xED, 0xFE, 0xFF),
bgDisabled: .BLANK,
fg: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgHovered: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgFocused: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgDisabled: .color(0xB0, 0xB0, 0xB0, 0xFF),
border: .color(0x5B, 0x4F, 0xCF, 0x80),
borderHovered: .color(0x5B, 0x4F, 0xCF, 0xCC),
borderFocused: .color(0x5B, 0x4F, 0xCF, 0xFF),
borderDisabled: .color(0xD0, 0xD0, 0xD0, 0xFF),
placeholder: .color(0xB0, 0xB0, 0xB0, 0xFF),
cursor: .color(0x5B, 0x4F, 0xCF, 0xFF),
selection: .color(0x5B, 0x4F, 0xCF, 0x40),
),
.ghost => .new(
bg: .BLANK,
bgHovered: .color(0xEE, 0xED, 0xFE, 0x40),
bgFocused: .color(0xEE, 0xED, 0xFE, 0x80),
bgDisabled: .BLANK,
fg: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgHovered: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgFocused: .color(0x1A, 0x1A, 0x1A, 0xFF),
fgDisabled: .color(0xB0, 0xB0, 0xB0, 0xFF),
border: .BLANK,
borderHovered: .BLANK,
borderFocused: .color(0x5B, 0x4F, 0xCF, 0xFF),
borderDisabled: .BLANK,
placeholder: .color(0xB0, 0xB0, 0xB0, 0xFF),
cursor: .color(0x5B, 0x4F, 0xCF, 0xFF),
selection: .color(0x5B, 0x4F, 0xCF, 0x40),
),
};
}