]> git.ipfire.org Git - thirdparty/bulma.git/commitdiff
Add Typography
authorJeremy Thomas <bbxdesign@gmail.com>
Tue, 25 Jun 2024 22:28:12 +0000 (23:28 +0100)
committerJeremy Thomas <bbxdesign@gmail.com>
Tue, 25 Jun 2024 22:28:12 +0000 (23:28 +0100)
docs/_react/bulma-customizer/src/App.jsx
docs/_react/bulma-customizer/src/components/Color.jsx
docs/_react/bulma-customizer/src/components/Slider.jsx
docs/_react/bulma-customizer/src/components/VarInput.jsx [new file with mode: 0644]
docs/_react/bulma-customizer/src/components/VarItem.jsx
docs/_react/bulma-customizer/src/constants.js
docs/_react/bulma-customizer/src/pages/Typography.jsx [new file with mode: 0644]

index 203a8ce34af8db762ede0f59299fbd70725d58b1..daba53cb7a5b9d61ce2b5d031ee98a0c4da99b11 100644 (file)
@@ -1,20 +1,21 @@
 import { createContext, useEffect, useState } from "react";
 import classNames from "classnames";
-
-import Colors from "./pages/Colors";
+import "../../../../css/bulma.css";
 
 import { CSSVAR_KEYS, SUFFIX_TO_KIND } from "./constants";
 import { unslug } from "./utils";
 
-import "../../../../css/bulma.css";
+import Colors from "./pages/Colors";
 import Scheme from "./pages/Scheme";
+import Typography from "./pages/Typography";
 
 const UNITS = ["deg", "rem", "em", "%"];
 const PAGE_TO_COMPONENT = {
   colors: <Colors />,
   scheme: <Scheme />,
+  typography: <Typography />,
 };
-const PAGE_IDS = ["scheme", "colors"];
+const PAGE_IDS = ["colors", "scheme", "typography"];
 
 export const CustomizerContext = createContext({
   cssvars: {},
@@ -27,7 +28,7 @@ export const CustomizerContext = createContext({
 function App() {
   const initialContext = {
     cssvars: {},
-    currentPage: "scheme",
+    currentPage: "typography",
     getVar: (id) => {
       return context.cssvars[id];
     },
@@ -95,8 +96,8 @@ function App() {
         kind: SUFFIX_TO_KIND[suffix] || "any",
         original,
         unit,
-        current: Number(value),
-        start: Number(value),
+        current: value,
+        start: value,
         description,
       };
     });
@@ -118,6 +119,7 @@ function App() {
           {PAGE_IDS.map((pageId) => {
             const buttonClass = classNames({
               button: true,
+              "is-link": pageId === context.currentPage,
             });
 
             return (
index ff01c21314edc74404a89b5a526bdc46784578fe..fa6fc711787390a6510e34cbe7e79db317dc4e79 100644 (file)
@@ -192,7 +192,9 @@ function Color({ color }) {
   }
 
   const isDisabled =
-    h.current === h.start && s.current === s.start && l.current === l.start;
+    Number(h.current) === Number(h.start) &&
+    Number(s.current) === Number(s.start) &&
+    Number(l.current) === Number(l.start);
 
   return (
     <div className={cn.main} style={mainStyle}>
@@ -242,7 +244,7 @@ function Color({ color }) {
             <input
               type="text"
               className="input"
-              value={h.current}
+              value={Number(h.current)}
               onChange={(e) => handleInputChange(e, h)}
               size="3"
             />
@@ -257,7 +259,7 @@ function Color({ color }) {
             <input
               type="text"
               className="input"
-              value={s.current}
+              value={Number(s.current)}
               onChange={(e) => handleInputChange(e, s)}
               size="3"
             />
@@ -272,7 +274,7 @@ function Color({ color }) {
             <input
               type="text"
               className="input"
-              value={l.current}
+              value={Number(l.current)}
               onChange={(e) => handleInputChange(e, l)}
               size="3"
             />
index dc8e6c052e61955ef7aea37d77e6cb40c4f3f614..a00aa0f833b461acaa63f165b223f778cf0ae441 100644 (file)
@@ -21,7 +21,7 @@ const xToValue = (x, width, min, max) => {
 };
 
 const valueToX = (value, width, min, max) => {
-  const decimal = value / (max - min);
+  const decimal = Number(value) / (max - min);
   const newValue = decimal * width;
   return Math.round(newValue);
 };
@@ -158,12 +158,7 @@ function Slider({ id, color }) {
 
 Slider.propTypes = {
   id: PropTypes.string,
-  kind: PropTypes.string,
   color: PropTypes.string,
-  original: PropTypes.string,
-  start: PropTypes.number,
-  unit: PropTypes.string,
-  getValue: PropTypes.func,
 };
 
 export default Slider;
diff --git a/docs/_react/bulma-customizer/src/components/VarInput.jsx b/docs/_react/bulma-customizer/src/components/VarInput.jsx
new file mode 100644 (file)
index 0000000..f4f1cba
--- /dev/null
@@ -0,0 +1,3 @@
+function VarInput() {}
+
+export default VarInput;
index 2cc4b49125a9cae9afd2e00731fce14e7405c848..6c9b258754609d44cbfaa5c7f66aee4af8997279 100644 (file)
@@ -25,7 +25,7 @@ function VarItem({ id }) {
     updateVar(cssvar.id, value);
   };
 
-  const isDisabled = cssvar.current === cssvar.start;
+  const isDisabled = cssvar.current == cssvar.start;
 
   return (
     <div className={cn.main}>
@@ -46,17 +46,29 @@ function VarItem({ id }) {
       </div>
 
       <div className={cn.slider}>
-        <Slider id={cssvar.id} />
-        <p className={cn.form}>
+        {cssvar.kind === "any" ? (
           <input
-            type="text"
             className="input"
+            type="text"
             value={cssvar.current}
             onChange={(e) => handleInputChange(e, cssvar)}
-            size="3"
           />
-          <span>{cssvar.unit}</span>
-        </p>
+        ) : (
+          <>
+            <Slider id={cssvar.id} />
+
+            <p className={cn.form}>
+              <input
+                type="text"
+                className="input"
+                value={cssvar.current}
+                onChange={(e) => handleInputChange(e, cssvar)}
+                size="3"
+              />
+              <span>{cssvar.unit}</span>
+            </p>
+          </>
+        )}
       </div>
 
       <div className={cn.description}>{cssvar.description}</div>
index 5e40ac9ee1f09e893f8585c85e700ef0272818e7..e750c956e91a5a0b591df3e698a2b290ac957506 100644 (file)
@@ -99,4 +99,25 @@ export const CSSVAR_KEYS = {
     { id: "danger-s", description: "Defines the Danger color's saturation" },
     { id: "danger-l", description: "Defines the Danger color's lightness" },
   ],
+  typography: [
+    { id: "family-primary", description: "Defines the Primary font family" },
+    {
+      id: "family-secondary",
+      description: "Defines the Secondary font family",
+    },
+    { id: "family-code", description: "Defines the Code font family" },
+    { id: "size-small", description: "Defines the Small font size" },
+    { id: "size-normal", description: "Defines the Normal font size" },
+    { id: "size-medium", description: "Defines the Medium font size" },
+    { id: "size-large", description: "Defines the Large font size" },
+    { id: "weight-light", description: "Defines the Light font weight" },
+    { id: "weight-normal", description: "Defines the Normal font weight" },
+    { id: "weight-medium", description: "Defines the Medium font weight" },
+    { id: "weight-semibold", description: "Defines the Semibold font weight" },
+    { id: "weight-bold", description: "Defines the Bold font weight" },
+    {
+      id: "weight-extrabold",
+      description: "Defines the Extrabold font weight",
+    },
+  ],
 };
diff --git a/docs/_react/bulma-customizer/src/pages/Typography.jsx b/docs/_react/bulma-customizer/src/pages/Typography.jsx
new file mode 100644 (file)
index 0000000..2dafa0a
--- /dev/null
@@ -0,0 +1,16 @@
+import VarItem from "../components/VarItem";
+import { CSSVAR_KEYS } from "../constants";
+
+function Typography() {
+  const ids = CSSVAR_KEYS.typography.map((i) => i.id);
+
+  return (
+    <div>
+      {ids.map((id) => {
+        return <VarItem key={id} id={id} />;
+      })}
+    </div>
+  );
+}
+
+export default Typography;