adding monkeytype
Some checks failed
Mark Stale PRs / stale (push) Has been cancelled

This commit is contained in:
Benjamin Falch
2026-04-23 13:53:44 +02:00
parent e214a2fd35
commit 2bc741fb78
1930 changed files with 7590652 additions and 0 deletions

View File

@@ -0,0 +1,170 @@
import preview from "#.storybook/preview";
import { Component, createSignal } from "solid-js";
import { fn } from "storybook/test";
import SlimSelect from "../../src/ts/components/ui/SlimSelect";
const meta = preview.meta({
title: "UI/SlimSelect",
component: SlimSelect as Component,
parameters: {
layout: "centered",
},
tags: ["autodocs"],
args: {
onChange: fn(),
},
});
export const Default = meta.story({
render: () => {
const [selected, setSelected] = createSignal<string | undefined>("banana");
return (
<div style={{ width: "200px" }}>
<SlimSelect
options={[
{ value: "apple", text: "Apple" },
{ value: "banana", text: "Banana" },
{ value: "cherry", text: "Cherry" },
{ value: "date", text: "Date" },
]}
selected={selected()}
onChange={(val) => setSelected(val)}
/>
</div>
);
},
});
export const WithValues = meta.story({
render: () => {
const [selected, setSelected] = createSignal<string | undefined>("15");
return (
<div style={{ width: "200px" }}>
<SlimSelect
values={["15", "30", "60", "120"]}
selected={selected()}
onChange={(val) => setSelected(val)}
/>
</div>
);
},
});
export const Multiple = meta.story({
render: () => {
const [selected, setSelected] = createSignal(["red", "blue"]);
return (
<div style={{ width: "300px" }}>
<SlimSelect
multiple
options={[
{ value: "red", text: "Red" },
{ value: "green", text: "Green" },
{ value: "blue", text: "Blue" },
{ value: "yellow", text: "Yellow" },
{ value: "purple", text: "Purple" },
]}
selected={selected()}
onChange={(val) => setSelected(val)}
/>
</div>
);
},
});
export const MultipleWithAll = meta.story({
render: () => {
const [selected, setSelected] = createSignal([
"english",
"spanish",
"french",
]);
return (
<div style={{ width: "300px" }}>
<SlimSelect
multiple
options={[
{ value: "english", text: "English" },
{ value: "spanish", text: "Spanish" },
{ value: "french", text: "French" },
{ value: "german", text: "German" },
]}
selected={selected()}
onChange={(val) => setSelected(val)}
settings={{ addAllOption: true }}
/>
</div>
);
},
});
export const TwoWayBinding = meta.story({
render: () => {
const options = [
{ value: "apple", text: "Apple" },
{ value: "banana", text: "Banana" },
{ value: "cherry", text: "Cherry" },
{ value: "date", text: "Date" },
];
const [selected, setSelected] = createSignal<string | undefined>("banana");
const buttonStyle = (active: boolean) => ({
padding: "4px 12px",
cursor: "pointer",
"background-color": active ? "var(--main-color)" : "var(--sub-alt-color)",
color: active ? "var(--bg-color)" : "var(--text-color)",
border: "none",
"border-radius": "4px",
});
return (
<div style={{ width: "250px" }}>
<SlimSelect
options={options}
selected={selected()}
onChange={(val) => setSelected(val)}
/>
<div
style={{
display: "flex",
gap: "4px",
"margin-top": "12px",
"flex-wrap": "wrap",
}}
>
{options.map((opt) => (
<button
style={buttonStyle(selected() === opt.value)}
onClick={() => setSelected(opt.value)}
>
{opt.text}
</button>
))}
</div>
<p style={{ color: "var(--sub-color)", "margin-top": "8px" }}>
Selected: {selected() ?? "none"}
</p>
</div>
);
},
});
export const Searchable = meta.story({
render: () => {
const [selected, setSelected] = createSignal<string | undefined>(undefined);
return (
<div style={{ width: "250px" }}>
<SlimSelect
options={Array.from({ length: 50 }, (_, i) => ({
value: `option-${i + 1}`,
text: `Option ${i + 1}`,
}))}
selected={selected()}
onChange={(val) => setSelected(val)}
settings={{ placeholderText: "Search options..." }}
/>
</div>
);
},
});