Skip to content

Commit 41372b9

Browse files
committed
wip
1 parent c0eb9dc commit 41372b9

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

src/ui/layout/theme-selector.tsx

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,42 @@ import { Icon } from "solid-heroicons";
1111
interface ThemeOption {
1212
value: ThemeType | "system";
1313
label: string;
14-
icon: { path: JSX.Element; outline: boolean; mini: boolean };
14+
icon: (cls: string) => JSX.Element;
1515
}
1616

1717
const THEME_OPTIONS: ThemeOption[] = [
1818
{
1919
value: "light",
2020
label: "Light",
21-
icon: sun,
21+
icon: (cls: string) => (
22+
<Icon
23+
class={cls}
24+
path={sun}
25+
aria-hidden
26+
/>
27+
),
2228
},
2329
{
2430
value: "dark",
2531
label: "Dark",
26-
icon: moon,
32+
icon: (cls: string) => (
33+
<Icon
34+
class={cls}
35+
path={moon}
36+
aria-hidden
37+
/>
38+
),
2739
},
2840
{
2941
value: "system",
3042
label: "System",
31-
icon: computerDesktop,
43+
icon: (cls: string) => (
44+
<Icon
45+
class={cls}
46+
path={computerDesktop}
47+
aria-hidden
48+
/>
49+
),
3250
},
3351
];
3452

@@ -55,10 +73,7 @@ export const ThemeSelector: Component = () => {
5573
item={props.item}
5674
>
5775
<Select.ItemLabel>
58-
<Icon
59-
class="inline-block h-6 w-6 mr-2 rounded-md bg-white p-1 shadow ring-1 ring-slate-900/5 dark:bg-slate-700 dark:ring-inset dark:ring-white/5 fill-slate-700 dark:fill-slate-200 kb-selected:fill-slate-800 kb-selected:dark:fill-white"
60-
path={props.item.rawValue.icon}
61-
/>
76+
{props.item.rawValue.icon("inline-block h-6 w-6 mr-2 rounded-md bg-white p-1 shadow ring-1 ring-slate-900/5 dark:bg-slate-700 dark:ring-inset dark:ring-white/5 fill-slate-700 dark:fill-slate-200 kb-selected:fill-slate-800 kb-selected:dark:fill-white")}
6277
<span
6378
class="prose prose-slate text-sm group-hover:dark:text-white text-slate-700 dark:text-slate-300 kb-selected:text-blue-500 kb-selected:group-hover:dark:text-white"
6479
>
@@ -72,10 +87,7 @@ export const ThemeSelector: Component = () => {
7287
<Select.Value<ThemeOption>>
7388
{(state) => (
7489
<RefreshOnMount aria-label={state.selectedOption().label}>
75-
<Icon
76-
class="w-4 h-4 fill-slate-700 dark:fill-slate-200"
77-
path={state.selectedOption().icon}
78-
/>
90+
{state.selectedOption().icon("w-4 h-4 fill-slate-700 dark:fill-slate-200")}
7991
</RefreshOnMount>
8092
)}
8193
</Select.Value>
@@ -99,7 +111,7 @@ function RefreshOnMount(props: ComponentProps<"div">) {
99111
});
100112

101113
return (
102-
<Show when={refresh()} fallback={<div {...props}><div>{resolved()}</div></div>} keyed>
114+
<Show when={refresh()} fallback={<div {...props}>{resolved()}</div>} keyed>
103115
<div {...props}>{resolved()}</div>
104116
</Show>
105117
);

0 commit comments

Comments
 (0)