mirror of
https://github.com/anotherhadi/ilovetui.git
synced 2026-10-05 10:58:26 +02:00
+12
-1
@@ -37,12 +37,18 @@ export interface BoxPreset {
|
||||
backgroundColor: string;
|
||||
}
|
||||
|
||||
export interface SliderPreset {
|
||||
backgroundColor: string;
|
||||
foregroundColor: string;
|
||||
}
|
||||
|
||||
export interface Presets {
|
||||
select: SelectPreset;
|
||||
tabSelect: TabSelectPreset;
|
||||
input: InputPreset;
|
||||
textarea: InputPreset;
|
||||
box: BoxPreset;
|
||||
slider: SliderPreset;
|
||||
}
|
||||
|
||||
export function buildPresets(theme: Theme): Presets {
|
||||
@@ -83,5 +89,10 @@ export function buildPresets(theme: Theme): Presets {
|
||||
backgroundColor: theme.background,
|
||||
};
|
||||
|
||||
return { select, tabSelect, input, textarea: input, box };
|
||||
const slider: SliderPreset = {
|
||||
backgroundColor: theme.subtleBg,
|
||||
foregroundColor: theme.primary,
|
||||
};
|
||||
|
||||
return { select, tabSelect, input, textarea: input, box, slider };
|
||||
}
|
||||
|
||||
+13
-1
@@ -4,15 +4,26 @@ import {
|
||||
BoxRenderable,
|
||||
InputRenderable,
|
||||
SelectRenderable,
|
||||
SliderRenderable,
|
||||
TabSelectRenderable,
|
||||
TextareaRenderable,
|
||||
TextRenderable,
|
||||
} from "@opentui/core";
|
||||
import { presets, theme } from "./index.ts";
|
||||
|
||||
declare module "@opentui/solid" {
|
||||
interface OpenTUIComponents {
|
||||
slider: typeof SliderRenderable;
|
||||
}
|
||||
}
|
||||
|
||||
type AnyCtor = new (...args: any[]) => any;
|
||||
|
||||
function withThemeDefaults<T extends AnyCtor>(Ctor: T, defaults: object, after?: (instance: any) => void): T {
|
||||
function withThemeDefaults<T extends AnyCtor>(
|
||||
Ctor: T,
|
||||
defaults: object,
|
||||
after?: (instance: any) => void,
|
||||
): T {
|
||||
class Themed extends Ctor {
|
||||
constructor(...args: any[]) {
|
||||
super(...args);
|
||||
@@ -34,6 +45,7 @@ extend({
|
||||
tab_select: withThemeDefaults(TabSelectRenderable, presets.tabSelect),
|
||||
input: withThemeDefaults(InputRenderable, presets.input),
|
||||
textarea: withThemeDefaults(TextareaRenderable, presets.textarea),
|
||||
slider: withThemeDefaults(SliderRenderable, presets.slider),
|
||||
text: withThemeDefaults(TextRenderable, { fg: theme.text }),
|
||||
ascii_font: withThemeDefaults(ASCIIFontRenderable, { color: theme.primary }),
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user