From d0018ea4e8f7f196f4bed9adaa90fa51432934ab Mon Sep 17 00:00:00 2001 From: Victor Date: Thu, 4 Jan 2024 15:27:59 -0500 Subject: [PATCH] added NumberSlider, reusable Label component, onChanger, and initial SdInferencePanel inputs --- .../api/image_generation/EnqueueImageGen.ts | 16 +++ .../src/components/common/Label/Label.tsx | 12 ++ .../src/components/common/Label/index.ts | 1 + .../common/NumberSlider/NumberSlider.scss | 40 ++++++ .../common/NumberSlider/NumberSlider.tsx | 43 ++++-- .../common/SegmentButtons/SegmentButtons.tsx | 23 +-- .../src/components/common/index.tsx | 2 + packages/fakeyou.com/src/resources/index.tsx | 9 +- .../fakeyou.com/src/resources/onChanger.ts | 8 ++ .../inference_panels/SdInferencePanel.tsx | 132 +++++++++++++++++- 10 files changed, 262 insertions(+), 24 deletions(-) create mode 100644 packages/components/src/api/image_generation/EnqueueImageGen.ts create mode 100644 packages/fakeyou.com/src/components/common/Label/Label.tsx create mode 100644 packages/fakeyou.com/src/components/common/Label/index.ts create mode 100644 packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.scss create mode 100644 packages/fakeyou.com/src/resources/onChanger.ts diff --git a/packages/components/src/api/image_generation/EnqueueImageGen.ts b/packages/components/src/api/image_generation/EnqueueImageGen.ts new file mode 100644 index 0000000000..158e01c476 --- /dev/null +++ b/packages/components/src/api/image_generation/EnqueueImageGen.ts @@ -0,0 +1,16 @@ +import MakeRequest from "../MakeRequest"; + +export interface EnqueueImageGenRequest { + loRA_path: String, + check_point: String, + vae: String +} + +export interface EnqueueImageGenResponse { + success: boolean +} + +export const EnqueueImageGen = MakeRequest({ + method: "POST", + routingFunction: () => "/v1/inference/enqueue_image_gen", +}); \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Label/Label.tsx b/packages/fakeyou.com/src/components/common/Label/Label.tsx new file mode 100644 index 0000000000..9461c32c46 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Label/Label.tsx @@ -0,0 +1,12 @@ +import React from 'react'; + +interface Props { + label?: any, + required?: boolean +} + +export default function Label({ label, required }: Props) { + return label ? : null; +}; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/Label/index.ts b/packages/fakeyou.com/src/components/common/Label/index.ts new file mode 100644 index 0000000000..12d3cc8ba4 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/Label/index.ts @@ -0,0 +1 @@ +export { default } from "./Label"; \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.scss b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.scss new file mode 100644 index 0000000000..5d1b48bf16 --- /dev/null +++ b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.scss @@ -0,0 +1,40 @@ +.fy-number-slider { + display: flex; + gap: 2rem; + align-items: center; + margin-bottom: .75rem; + + .fy-number-slider-range { + flex-grow: 1; + } + + .fy-number-slider-value { + text-align: center; + width: fit-content; + padding: 6px; + border-radius: 8px; + background-color: #2f2f42; + border-width: 1px; + border-color: rgba(#fff, 0.12); + color: rgba(#fff, 0.85); + font-weight: 500; + flex-shrink: 0; + } + + .fy-number-slider-track { + height: .5rem; + width: 100%; + margin: 0 0 0 .6875rem; // margin half width of thumb, so that thumb does not overlap margins at minimum position + background-color: #4f4f66; + border-radius: .25rem; + } + + .fy-number-slider-thumb { + height: 1.375rem; + width: 1.375rem; + background-color: #e66462; + border-radius: 50%; + box-shadow: 0px 0px 10px rgba(#000, 0.15); + &:hover { background-color: #fff } + } +} \ No newline at end of file diff --git a/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx index 7969ca429c..6d7a583673 100644 --- a/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx +++ b/packages/fakeyou.com/src/components/common/NumberSlider/NumberSlider.tsx @@ -1,16 +1,43 @@ import React from 'react'; -import { Slider } from "components/common"; +import { Range } from "react-range"; +import Tippy from "@tippyjs/react"; +import { Label } from "components/common"; +import "./NumberSlider.scss"; interface Props { - max?: number; - min?: number; - onChange?: any; - value?: number; + label?: string; + max?: number, + min?: number, + name?: string, + onChange?: any, + required?: boolean, + step?: number, + thumbTip?: string, + value?: number } -export default function NumberSlider({ max, min, onChange, value }: Props) { +const renderTrack = ({ props: { style, ...props }, children }: any) => +
+ { children } +
; + +const thumb = (thumbTip = "") => ({ props: { style, ...props }}: any) => { + return +
+
+}; + +export default function NumberSlider({ label, max, min, name, onChange: inChange = () => {}, required, step = 1, thumbTip, value = 0 }: Props) { + + const onChange = (newVal: number[]) => inChange({ target: { ...name && { name }, type: "number", value: newVal[0] }}); + return <> - - +