From b5bad5281923b607dda5ae9432670bfeef04f647 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Magalh=C3=A3es?= <joamag@gmail.com>
Date: Sun, 17 Jul 2022 11:31:29 +0100
Subject: [PATCH] feat: better components

---
 examples/web/index.css                        |  4 +-
 examples/web/index.html                       | 30 ++++++------
 examples/web/package.json                     |  2 +-
 examples/web/react/app.tsx                    |  6 +--
 .../web/react/components/button/button.css    | 46 ++++++++++---------
 .../web/react/components/button/button.tsx    | 18 ++++++--
 6 files changed, 59 insertions(+), 47 deletions(-)

diff --git a/examples/web/index.css b/examples/web/index.css
index 760e06b7..eb47a643 100644
--- a/examples/web/index.css
+++ b/examples/web/index.css
@@ -473,12 +473,12 @@ p {
     -webkit-user-select: none;
 }
 
-.modal-container > .modal .modal-buttons > .button.tiny {
+.modal-container > .modal .modal-buttons > .button.simple {
     margin-right: 12px;
     min-width: 120px;
 }
 
-.modal-container > .modal .modal-buttons > .button.tiny:last-child {
+.modal-container > .modal .modal-buttons > .button.simple:last-child {
     margin-right: 0px;
 }
 
diff --git a/examples/web/index.html b/examples/web/index.html
index 96e55af5..a192760d 100644
--- a/examples/web/index.html
+++ b/examples/web/index.html
@@ -77,16 +77,16 @@
             <div id="section-diag" class="section">
                 <dl class="diag">
                     <dt>Engine</dt>
-                    <dd id="engine" class="button tiny">-</dd>
+                    <dd id="engine" class="button simple">-</dd>
                     <dt>ROM</dt>
                     <dd id="rom-name">-</dd>
                     <dt>ROM Size</dt>
                     <dd><span id="rom-size">-</span> bytes</dd>
                     <dt>CPU Frequency</dt>
                     <dd>
-                        <span id="logic-frequency-minus" class="button tiny">-</span>
+                        <span id="logic-frequency-minus" class="button simple">-</span>
                         <span id="logic-frequency">-</span> Hz
-                        <span id="logic-frequency-plus" class="button tiny">+</span></dd>
+                        <span id="logic-frequency-plus" class="button simple">+</span></dd>
                     <dt>Framerate</dt>
                     <dd><span id="fps-count">-</span> fps</dd>
                 </dl>
@@ -94,31 +94,31 @@
             <div id="separator-diag" class="separator"></div>
             <div class="section">
                 <div class="button-area">
-                    <span id="button-pause" class="button tiny border padded">
+                    <span id="button-pause" class="button simple border padded">
                         <img src="res/pause.svg" alt="pause" /><span>Pause</span>
                     </span>
-                    <span id="button-reset" class="button tiny border padded">
+                    <span id="button-reset" class="button simple border padded">
                         <img src="res/reset.svg" alt="reset" /><span>Reset</span>
                     </span>
-                    <span id="button-benchmark" class="button tiny border padded">
+                    <span id="button-benchmark" class="button simple border padded">
                         <img src="res/bolt.svg" alt="bolt" /><span>Benchmark</span>
                     </span>
-                    <span id="button-fullscreen" class="button tiny border padded">
+                    <span id="button-fullscreen" class="button simple border padded">
                         <img src="res/maximise.svg" alt="maximise" /><span>Fullscreen</span>
                     </span>
-                    <span id="button-keyboard" class="button tiny border padded">
+                    <span id="button-keyboard" class="button simple border padded">
                         <img src="res/dialpad.svg" alt="info" /><span>Keyboard</span>
                     </span>
-                    <span id="button-information" class="button tiny border padded enabled">
+                    <span id="button-information" class="button simple border padded enabled">
                         <img src="res/info.svg" alt="info" /><span>Information</span>
                     </span>
-                    <span id="button-debug" class="button tiny border padded">
+                    <span id="button-debug" class="button simple border padded">
                         <img src="res/bug.svg" alt="bug" /><span>Debug</span>
                     </span>
-                    <span id="button-theme" class="button tiny border padded">
+                    <span id="button-theme" class="button simple border padded">
                         <img src="res/marker.svg" alt="marker" /><span>Theme</span>
                     </span>
-                    <span id="button-upload" class="button tiny border padded file">
+                    <span id="button-upload" class="button simple border padded file">
                         <img src="res/upload.svg" alt="upload" /><span>Load ROM</span>
                         <input type="file" id="button-upload-file" name="button-upload-file" accept=".gb">
                     </span>
@@ -133,15 +133,15 @@
 <div id="modal-container" class="modal-container">
     <div id="modal" class="modal">
         <div class="modal-top-buttons">
-            <span id="modal-close" class="button tiny rounded no-text">
+            <span id="modal-close" class="button simple rounded no-text">
                 <img class="medium" src="res/close.svg" alt="close" />
             </span>
         </div>
         <h2 id="modal-title" class="modal-title"></h2>
         <p id="modal-text" class="modal-text"></p>
         <div class="modal-buttons">
-            <span id="modal-cancel" class="button tiny red border padded-large">Cancel</span>
-            <span id="modal-confirm" class="button tiny border padded-large">Confirm</span>
+            <span id="modal-cancel" class="button simple red border padded-large">Cancel</span>
+            <span id="modal-confirm" class="button simple border padded-large">Confirm</span>
         </div>
     </div>
 </div>
diff --git a/examples/web/package.json b/examples/web/package.json
index bd9fcb70..a653782f 100644
--- a/examples/web/package.json
+++ b/examples/web/package.json
@@ -10,7 +10,7 @@
     "scripts": {
         "build": "parcel build index.html",
         "dev": "parcel index.html",
-        "pretty": "prettier --config .prettierrc \"./**/*.{ts,json}\" --write",
+        "pretty": "prettier --config .prettierrc \"./**/*.{ts,tsx,json}\" --write",
         "start": "npm run build",
         "watch": "parcel watch index.html"
     },
diff --git a/examples/web/react/app.tsx b/examples/web/react/app.tsx
index 64bc0bf0..ee855b56 100644
--- a/examples/web/react/app.tsx
+++ b/examples/web/react/app.tsx
@@ -7,12 +7,12 @@ import "./app.css";
 
 export const App = () => {
     const getText = () => "Hello World";
-    return <Button text={ getText() } />;
-}
+    return <Button text={getText()} />;
+};
 
 export const startApp = (element: string) => {
     const root = ReactDOM.createRoot(document.getElementById(element)!);
     root.render(<App />);
-}
+};
 
 export default App;
diff --git a/examples/web/react/components/button/button.css b/examples/web/react/components/button/button.css
index ccb443e8..ca261c4b 100644
--- a/examples/web/react/components/button/button.css
+++ b/examples/web/react/components/button/button.css
@@ -1,16 +1,20 @@
 .button {
-    font-size: 12px;
     cursor: pointer;
+    display: inline-block;
+}
+
+.button.small {
+    font-size: 14px;
+    line-height: 24px;
 }
 
-.button.tiny {
+.button.simple {
     border-radius: 96px 96px 96px 96px;
     -o-border-radius: 96px 96px 96px 96px;
     -ms-border-radius: 96px 96px 96px 96px;
     -moz-border-radius: 96px 96px 96px 96px;
     -khtml-border-radius: 96px 96px 96px 96px;
     -webkit-border-radius: 96px 96px 96px 96px;
-    display: inline-block;
     padding: 0px 8px 0px 8px;
     user-select: none;
     -o-user-select: none;
@@ -20,71 +24,71 @@
     -webkit-user-select: none;
 }
 
-.button.tiny.border {
+.button.simple.border {
     border: 1px solid #ffffff;
 }
 
-.button.tiny.padded {
+.button.simple.padded {
     padding: 4px 10px 4px 10px;
 }
 
-.button.tiny.padded-large {
+.button.simple.padded-large {
     padding: 4px 14px 4px 14px;
 }
 
-.button.tiny.rounded {
+.button.simple.rounded {
     padding: 6px 6px 6px 6px;
 }
 
-.button.tiny.enabled {
+.button.simple.enabled {
     background-color: #50cb93;
 }
 
-.button.tiny.file {
+.button.simple.file {
     position: relative;
 }
 
-.button.tiny:hover {
+.button.simple:hover {
     background-color: #50cb93;
 }
 
-.button.tiny.red:hover {
+.button.simple.red:hover {
     background-color: #e63946;
 }
 
-.button.tiny:active {
+.button.simple:active {
     background-color: #2a9d8f;
 }
 
-.button.tiny.red:active {
+.button.simple.red:active {
     background-color: #bf2a37;
 }
 
-.button.tiny > img {
+.button.simple > img {
     margin-right: 6px;
     margin-top: 2px;
     vertical-align: top;
     width: 13px;
 }
 
-.button.tiny > img.medium {
+.button.simple > img.medium {
     width: 20px;
 }
 
-.button.tiny > img.large {
+.button.simple > img.large {
     width: 28px;
 }
 
-.button.tiny > img.very-large {
+.button.simple > img.very-large {
     width: 38px;
 }
 
-.button.tiny.no-text > img {
+.button.simple.no-text > img {
     margin-right: 0px;
     margin-top: 0px;
 }
 
-.button.tiny.file > input[type="file"] {
+.button.simple.file > input[type="file"] {
     cursor: pointer;
     height: 100%;
     left: 0px;
@@ -100,6 +104,6 @@
     width: 100%;
 }
 
-.button.tiny.file > input[type="file"]::-webkit-file-upload-button {
+.button.simple.file > input[type="file"]::-webkit-file-upload-button {
     cursor: pointer;
-}
\ No newline at end of file
+}
diff --git a/examples/web/react/components/button/button.tsx b/examples/web/react/components/button/button.tsx
index c8dda14c..39350d86 100644
--- a/examples/web/react/components/button/button.tsx
+++ b/examples/web/react/components/button/button.tsx
@@ -2,12 +2,20 @@ import React, { FC } from "react";
 
 import "./button.css";
 
-export const Button: FC<{ text: string, style?: string[] }> = ({ text, style = ["tiny", "border"] }) => {
+export const Button: FC<{ text: string; size?: string; style?: string[] }> = ({
+    text,
+    size = "small",
+    style = ["simple", "border"]
+}) => {
     const onClick = () => {
         alert("Hello World");
-    }
+    };
 
-    const classes = () => ["button", ...style].join(" ")
+    const classes = () => ["button", size, ...style].join(" ");
 
-    return <span className={classes()} onClick={onClick}>{ text }</span>;
-}
+    return (
+        <span className={classes()} onClick={onClick}>
+            {text}
+        </span>
+    );
+};
-- 
GitLab