add preset & rebuild

Signed-off-by: Hadi <[email protected]>
This commit is contained in:
Hadi
2026-09-03 16:45:05 +02:00
parent 6d858380c7
commit 280507f7e0
34 changed files with 110 additions and 81 deletions
+12 -1
View File
@@ -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
View File
@@ -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 }),
});