Files
dotfiles/ags/HyprPanel/widget/settings/shared/Option.ts
T
2024-10-23 21:12:15 +07:00

34 lines
1.0 KiB
TypeScript

import { Label } from './Label';
import { Inputter } from './Inputter';
import icons from 'lib/icons';
import { RowProps } from 'lib/types/options';
import { GBox } from 'lib/types/widget';
export const Option = <T extends string | number | boolean | object>(
props: RowProps<T>,
className: string = '',
): GBox => {
const isUnsaved = Variable(false);
return Widget.Box({
class_name: 'option-item',
hexpand: true,
children: [
Widget.Box({
hpack: 'start',
vpack: 'center',
hexpand: true,
child: Label(props.title, props.subtitle || '', props.subtitleLink),
}),
Inputter(props, className, isUnsaved),
Widget.Button({
vpack: 'center',
class_name: 'reset-options',
child: Widget.Icon(icons.ui.refresh),
on_clicked: () => props.opt.reset(),
sensitive: props.opt.bind().as((v) => v !== props.opt.initial),
}),
],
});
};