From 0539d6963ebedd554cd3cd36b6c94df9659d6a6b Mon Sep 17 00:00:00 2001
From: Maksymilian Jopek <maks@jopek.eu>
Date: Mon, 28 Apr 2025 18:03:28 +0200
Subject: Initial commit

Simple frontend version with mock API
---
 src/components/Button.tsx | 57 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 src/components/Button.tsx

(limited to 'src/components/Button.tsx')

diff --git a/src/components/Button.tsx b/src/components/Button.tsx
new file mode 100644
index 0000000..031fc73
--- /dev/null
+++ b/src/components/Button.tsx
@@ -0,0 +1,57 @@
+import styles from "./Button.module.css";
+import { createEffect, createSignal } from "solid-js";
+
+enum BtnType {
+  click = 0,
+  switch = 1,
+}
+export type Button =
+  | {
+      type: BtnType.click;
+      name: string;
+      color?: string;
+    }
+  | {
+      type: BtnType.switch;
+      name: string;
+    };
+
+export default function Button(props: Button) {
+  const [value, setValue] = createSignal(false);
+  const [bgColor, setBgColor] = createSignal<string>();
+
+  createEffect(() => {
+    if (props.type === BtnType.click) {
+      setBgColor(value() ? "pink" : "blue");
+    } else {
+      setBgColor(value() ? "green" : "red");
+    }
+  });
+
+  function onClick() {
+    if (props.type === BtnType.click) {
+      if (value() === true) {
+        return;
+      }
+      setValue(true);
+      setTimeout(() => {
+        setValue(false);
+      }, 3000);
+    } else {
+      setValue((old) => !old);
+    }
+  }
+
+  return (
+    <button
+      on:click={onClick}
+      class={styles.btn}
+      style={{ "background-color": bgColor() }}
+    >
+      {
+        //btnText()
+      }
+      {props.name}
+    </button>
+  );
+}
-- 
cgit v1.3.1

