diff --git a/.devcontainer/demo/README.md b/.devcontainer/demo/README.md index d0ad14f9e..0a828a009 100644 --- a/.devcontainer/demo/README.md +++ b/.devcontainer/demo/README.md @@ -1,6 +1,6 @@ -# LangFlow Demo Codespace Readme +# Langflow Demo Codespace Readme -These instructions will walk you through the process of running a LangFlow demo via GitHub Codespaces. +These instructions will walk you through the process of running a Langflow demo via GitHub Codespaces. ## Setup diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 001417643..f2c471b1a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to LangFlow +# Contributing to Langflow -Hello there! We appreciate your interest in contributing to LangFlow. +Hello there! We appreciate your interest in contributing to Langflow. As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infra, or better documentation. @@ -40,7 +40,7 @@ the system we use to tag our issues and pull requests. ### Local development -You can develop LangFlow using docker compose, or locally. +You can develop Langflow using docker compose, or locally. We provide a .vscode/launch.json file for debugging the backend in VSCode, which is a lot faster than using docker compose. diff --git a/README.md b/README.md index 9a998609c..11d7c42aa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ⛓️ LangFlow +# ⛓️ Langflow ~ An effortless way to experiment and prototype [LangChain](https://github.com/hwchase17/langchain) pipelines ~ @@ -16,7 +16,7 @@

Discord Server -HuggingFace Spaces +HuggingFace Spaces

@@ -27,6 +27,8 @@

# Table of Contents +- [⛓️ Langflow](#️-langflow) +- [Table of Contents](#table-of-contents) - [📦 Installation](#-installation) - [Locally](#locally) - [🖥️ Command Line Interface (CLI)](#️-command-line-interface-cli) @@ -36,14 +38,14 @@ - [Deploy Langflow on Google Cloud Platform](#deploy-langflow-on-google-cloud-platform) - [Deploy Langflow on Jina AI Cloud](#deploy-langflow-on-jina-ai-cloud) - [API Usage](#api-usage) -- [🎨 Creating Flows](#-creating-flows) -- [👋 Contributing](#-contributing) -- [📄 License](#-license) + - [🎨 Creating Flows](#-creating-flows) + - [👋 Contributing](#-contributing) + - [📄 License](#-license) # 📦 Installation ### Locally -You can install LangFlow from pip: +You can install Langflow from pip: ```shell pip install langflow @@ -220,7 +222,7 @@ print(run_flow("Your message", flow_id=FLOW_ID, tweaks=TWEAKS)) ## 🎨 Creating Flows -Creating flows with LangFlow is easy. Simply drag sidebar components onto the canvas and connect them together to create your pipeline. LangFlow provides a range of [LangChain components](https://api.python.langchain.com/en/latest/index.html) to choose from, including LLMs, prompt serializers, agents, and chains. +Creating flows with Langflow is easy. Simply drag sidebar components onto the canvas and connect them together to create your pipeline. Langflow provides a range of [LangChain components](https://langchain.readthedocs.io/en/latest/reference.html) to choose from, including LLMs, prompt serializers, agents, and chains. Explore by editing prompt parameters, link chains and agents, track an agent's thought process, and export your flow. @@ -233,13 +235,13 @@ from langflow import load_flow_from_json flow = load_flow_from_json("path/to/flow.json") # Now you can use it like any chain -flow("Hey, have you heard of LangFlow?") +flow("Hey, have you heard of Langflow?") ``` ## 👋 Contributing -We welcome contributions from developers of all levels to our open-source project on GitHub. If you'd like to contribute, please check our [contributing guidelines](./CONTRIBUTING.md) and help make LangFlow more accessible. +We welcome contributions from developers of all levels to our open-source project on GitHub. If you'd like to contribute, please check our [contributing guidelines](./CONTRIBUTING.md) and help make Langflow more accessible. Join our [Discord](https://discord.com/invite/EqksyE2EX9) server to ask questions, make suggestions and showcase your projects! 🦾 @@ -252,4 +254,4 @@ Join our [Discord](https://discord.com/invite/EqksyE2EX9) server to ask question ## 📄 License -LangFlow is released under the MIT License. See the LICENSE file for details. +Langflow is released under the MIT License. See the LICENSE file for details. diff --git a/poetry.lock b/poetry.lock index 49b44c78a..dd4e1116e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -170,14 +170,14 @@ typing-extensions = ">=4.1.1" [[package]] name = "anyio" -version = "3.7.0" +version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "anyio-3.7.0-py3-none-any.whl", hash = "sha256:eddca883c4175f14df8aedce21054bfca3adb70ffe76a9f607aef9d7fa2ea7f0"}, - {file = "anyio-3.7.0.tar.gz", hash = "sha256:275d9973793619a5374e1c89a4f4ad3f4b0a5510a2b5b939444bee8f4c4d37ce"}, + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] [package.dependencies] @@ -186,7 +186,7 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=6.1.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme", "sphinxcontrib-jquery"] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (<0.22)"] @@ -1609,14 +1609,14 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.91.0" +version = "2.92.0" description = "Google API Client Library for Python" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.91.0.tar.gz", hash = "sha256:d9385ad6e7f95eecd40f7c81e3abfe4b6ad3a84f2c16bcdb66fb7b8dd814ed56"}, - {file = "google_api_python_client-2.91.0-py2.py3-none-any.whl", hash = "sha256:6959d21d4b20c0f65c69662ca7b6a8a02fc08f3e7f72d70b28ae3e6e3a5f9ab2"}, + {file = "google-api-python-client-2.92.0.tar.gz", hash = "sha256:f38a6e106a7417719715506d36f0a233ec253335e422bda311352866a86c4187"}, + {file = "google_api_python_client-2.92.0-py2.py3-none-any.whl", hash = "sha256:e0b74ed5fa9bdb07a66fb030d3f4cae550ed1c07e23600d86450d3c3c5efae51"}, ] [package.dependencies] @@ -1761,14 +1761,14 @@ grpc = ["grpcio (>=1.38.0,<2.0dev)"] [[package]] name = "google-cloud-resource-manager" -version = "1.10.1" +version = "1.10.2" description = "Google Cloud Resource Manager API client library" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "google-cloud-resource-manager-1.10.1.tar.gz", hash = "sha256:c974fb6f9810476cf7b63ea89394c1a8df47f7f2dc2303e728bb74b500bcde67"}, - {file = "google_cloud_resource_manager-1.10.1-py2.py3-none-any.whl", hash = "sha256:41a2204532f084c707fde0bc1a9bc95c7e0b739d7072dd0b8a25106667a56184"}, + {file = "google-cloud-resource-manager-1.10.2.tar.gz", hash = "sha256:9a7bdd0347ad553376cc66ad317c5223d1ae04bdcf74edcbfcd12605cff7b510"}, + {file = "google_cloud_resource_manager-1.10.2-py2.py3-none-any.whl", hash = "sha256:9e074c28326bd1632f1a270c20cfea1ffe98f49cf821033e65bdac55661ffbd5"}, ] [package.dependencies] @@ -7832,4 +7832,4 @@ deploy = ["langchain-serve"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.11" -content-hash = "814dc6b89b345e3ea08c7b7dc1fb29e3f8484070e3ad67030eb67566b33f12b0" +content-hash = "e25e43fde8f96f57beab702ac4c51cb3e569b81f85c540a7b4b5fb7b6388d04e" diff --git a/pyproject.toml b/pyproject.toml index 4960e97c5..08bdaad65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langflow" -version = "0.2.11" +version = "0.2.13" description = "A Python package with a built-in web application" authors = ["Logspace "] maintainers = [ diff --git a/src/backend/langflow/__main__.py b/src/backend/langflow/__main__.py index 15005585c..385e74932 100644 --- a/src/backend/langflow/__main__.py +++ b/src/backend/langflow/__main__.py @@ -48,6 +48,26 @@ def update_settings( settings.update_settings(cache=cache) +def load_params(): + """ + Load the parameters from the environment variables. + """ + global_vars = globals() + + for key, value in global_vars.items(): + env_key = f"LANGFLOW_{key.upper()}" + if env_key in os.environ: + if isinstance(value, bool): + # Handle booleans + global_vars[key] = os.getenv(env_key, str(value)).lower() == "true" + elif isinstance(value, int): + # Handle integers + global_vars[key] = int(os.getenv(env_key, str(value))) + elif isinstance(value, str) or value is None: + # Handle strings and None values + global_vars[key] = os.getenv(env_key, str(value)) + + def serve_on_jcloud(): """ Deploy Langflow server on Jina AI Cloud @@ -149,6 +169,7 @@ def serve( # override env variables with .env file if env_file: load_dotenv(env_file, override=True) + load_params() if jcloud: return serve_on_jcloud() @@ -244,7 +265,7 @@ def get_free_port(port): def print_banner(host, port): # console = Console() - word = "LangFlow" + word = "Langflow" colors = ["#3300cc"] styled_word = "" diff --git a/src/backend/langflow/api/v1/schemas.py b/src/backend/langflow/api/v1/schemas.py index f5f1f9ccf..22df4a977 100644 --- a/src/backend/langflow/api/v1/schemas.py +++ b/src/backend/langflow/api/v1/schemas.py @@ -23,7 +23,7 @@ class GraphData(BaseModel): class ExportedFlow(BaseModel): - """Exported flow from LangFlow.""" + """Exported flow from Langflow.""" description: str name: str diff --git a/src/frontend/index.html b/src/frontend/index.html index 3b6e30308..50bdae647 100644 --- a/src/frontend/index.html +++ b/src/frontend/index.html @@ -5,7 +5,7 @@ - LangFlow + Langflow diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index f4df0f00b..a8d6629c4 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -118,7 +118,7 @@ export default function App() { const removeAlert = (id: string) => { setAlertsList((prevAlertsList) => - prevAlertsList.filter((alert) => alert.id !== id) + prevAlertsList.filter((alert) => alert.id !== id), ); }; diff --git a/src/frontend/src/components/AccordionComponent/index.tsx b/src/frontend/src/components/AccordionComponent/index.tsx index f03a2ad5f..8990da245 100644 --- a/src/frontend/src/components/AccordionComponent/index.tsx +++ b/src/frontend/src/components/AccordionComponent/index.tsx @@ -18,7 +18,7 @@ export default function AccordionComponent({ open = [], }: AccordionComponentType) { const [value, setValue] = useState( - open.length == 0 ? "" : getOpenAccordion() + open.length == 0 ? "" : getOpenAccordion(), ); function getOpenAccordion() { diff --git a/src/frontend/src/components/ExtraSidebarComponent/index.tsx b/src/frontend/src/components/ExtraSidebarComponent/index.tsx index 5273b7147..00c1645ec 100644 --- a/src/frontend/src/components/ExtraSidebarComponent/index.tsx +++ b/src/frontend/src/components/ExtraSidebarComponent/index.tsx @@ -1,5 +1,5 @@ import { Disclosure } from "@headlessui/react"; -import { useContext, useState } from "react"; +import { useContext } from "react"; import { Link } from "react-router-dom"; import { classNames } from "../../utils"; import { locationContext } from "../../contexts/locationContext"; diff --git a/src/frontend/src/components/chatComponent/buildTrigger/index.tsx b/src/frontend/src/components/chatComponent/buildTrigger/index.tsx index f59fea7a6..1bafaa292 100644 --- a/src/frontend/src/components/chatComponent/buildTrigger/index.tsx +++ b/src/frontend/src/components/chatComponent/buildTrigger/index.tsx @@ -127,7 +127,7 @@ export default function BuildTrigger({ async function enforceMinimumLoadingTime( startTime: number, - minimumLoadingTime: number + minimumLoadingTime: number, ) { const elapsedTime = Date.now() - startTime; const remainingTime = minimumLoadingTime - elapsedTime; diff --git a/src/frontend/src/components/chatComponent/index.tsx b/src/frontend/src/components/chatComponent/index.tsx index 6c451fc31..0c7c069c5 100644 --- a/src/frontend/src/components/chatComponent/index.tsx +++ b/src/frontend/src/components/chatComponent/index.tsx @@ -45,7 +45,7 @@ export default function Chat({ flow }: ChatType) { useEffect(() => { const prevNodes = prevNodesRef.current; const currentNodes = nodes.map( - (node: NodeType) => node.data.node.template.value + (node: NodeType) => node.data.node.template.value, ); if ( diff --git a/src/frontend/src/components/codeAreaComponent/index.tsx b/src/frontend/src/components/codeAreaComponent/index.tsx index 458edcc76..2c189f3c5 100644 --- a/src/frontend/src/components/codeAreaComponent/index.tsx +++ b/src/frontend/src/components/codeAreaComponent/index.tsx @@ -13,7 +13,7 @@ export default function CodeAreaComponent({ editNode = false, }: TextAreaComponentType) { const [myValue, setMyValue] = useState( - typeof value == "string" ? value : JSON.stringify(value) + typeof value == "string" ? value : JSON.stringify(value), ); const { openPopUp } = useContext(PopUpContext); useEffect(() => { @@ -43,7 +43,7 @@ export default function CodeAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} className={ @@ -64,7 +64,7 @@ export default function CodeAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} > diff --git a/src/frontend/src/components/dropdownComponent/index.tsx b/src/frontend/src/components/dropdownComponent/index.tsx index b275f83f7..d0867091b 100644 --- a/src/frontend/src/components/dropdownComponent/index.tsx +++ b/src/frontend/src/components/dropdownComponent/index.tsx @@ -4,7 +4,6 @@ import { DropDownComponentType } from "../../types/components"; import { classNames } from "../../utils"; import { ChevronsUpDown, Check } from "lucide-react"; import { PopUpContext } from "../../contexts/popUpContext"; -import { TabsContext } from "../../contexts/tabsContext"; export default function Dropdown({ value, diff --git a/src/frontend/src/components/headerComponent/index.tsx b/src/frontend/src/components/headerComponent/index.tsx index f60f65f61..f0f337592 100644 --- a/src/frontend/src/components/headerComponent/index.tsx +++ b/src/frontend/src/components/headerComponent/index.tsx @@ -1,4 +1,4 @@ -import { BellIcon, Home, MoonIcon, SunIcon, Users2 } from "lucide-react"; +import { Home, MoonIcon, SunIcon, Users2 } from "lucide-react"; import { useContext, useEffect, useState } from "react"; import { FaDiscord, FaGithub, FaTwitter } from "react-icons/fa"; import { Button } from "../ui/button"; diff --git a/src/frontend/src/components/promptComponent/index.tsx b/src/frontend/src/components/promptComponent/index.tsx index e4349c385..84e08df0b 100644 --- a/src/frontend/src/components/promptComponent/index.tsx +++ b/src/frontend/src/components/promptComponent/index.tsx @@ -44,7 +44,7 @@ export default function PromptAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} className={ @@ -69,7 +69,7 @@ export default function PromptAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} > diff --git a/src/frontend/src/components/textAreaComponent/index.tsx b/src/frontend/src/components/textAreaComponent/index.tsx index ec82242f2..2ada4b9b0 100644 --- a/src/frontend/src/components/textAreaComponent/index.tsx +++ b/src/frontend/src/components/textAreaComponent/index.tsx @@ -45,7 +45,7 @@ export default function TextAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} className={ @@ -70,7 +70,7 @@ export default function TextAreaComponent({ setMyValue(t); onChange(t); }} - /> + />, ); }} > diff --git a/src/frontend/src/components/ui/accordion.tsx b/src/frontend/src/components/ui/accordion.tsx index 684b257fc..9dcb1c2a1 100644 --- a/src/frontend/src/components/ui/accordion.tsx +++ b/src/frontend/src/components/ui/accordion.tsx @@ -28,7 +28,7 @@ const AccordionTrigger = React.forwardRef< ref={ref} className={cn( "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", - className + className, )} {...props} > @@ -47,7 +47,7 @@ const AccordionContent = React.forwardRef< ref={ref} className={cn( "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", - className + className, )} {...props} > diff --git a/src/frontend/src/components/ui/badge.tsx b/src/frontend/src/components/ui/badge.tsx index d8f6ca740..3febd0bcd 100644 --- a/src/frontend/src/components/ui/badge.tsx +++ b/src/frontend/src/components/ui/badge.tsx @@ -19,7 +19,7 @@ const badgeVariants = cva( defaultVariants: { variant: "default", }, - } + }, ); export interface BadgeProps diff --git a/src/frontend/src/components/ui/button.tsx b/src/frontend/src/components/ui/button.tsx index 648ce43c9..5dae5ecec 100644 --- a/src/frontend/src/components/ui/button.tsx +++ b/src/frontend/src/components/ui/button.tsx @@ -30,7 +30,7 @@ const buttonVariants = cva( variant: "default", size: "default", }, - } + }, ); export interface ButtonProps @@ -49,7 +49,7 @@ const Button = React.forwardRef( {...props} /> ); - } + }, ); Button.displayName = "Button"; diff --git a/src/frontend/src/components/ui/checkbox.tsx b/src/frontend/src/components/ui/checkbox.tsx index 4e4905bb9..1038b4bdc 100644 --- a/src/frontend/src/components/ui/checkbox.tsx +++ b/src/frontend/src/components/ui/checkbox.tsx @@ -13,7 +13,7 @@ const Checkbox = React.forwardRef< ref={ref} className={cn( "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground", - className + className, )} {...props} > diff --git a/src/frontend/src/components/ui/dropdown-menu.tsx b/src/frontend/src/components/ui/dropdown-menu.tsx index ee62abc4a..f0ef50d5a 100644 --- a/src/frontend/src/components/ui/dropdown-menu.tsx +++ b/src/frontend/src/components/ui/dropdown-menu.tsx @@ -28,7 +28,7 @@ const DropdownMenuSubTrigger = React.forwardRef< className={cn( "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent", inset && "pl-8", - className + className, )} {...props} > @@ -47,7 +47,7 @@ const DropdownMenuSubContent = React.forwardRef< ref={ref} className={cn( "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1", - className + className, )} {...props} /> @@ -65,7 +65,7 @@ const DropdownMenuContent = React.forwardRef< sideOffset={sideOffset} className={cn( "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", - className + className, )} {...props} /> @@ -84,7 +84,7 @@ const DropdownMenuItem = React.forwardRef< className={cn( "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", - className + className, )} {...props} /> @@ -99,7 +99,7 @@ const DropdownMenuCheckboxItem = React.forwardRef< ref={ref} className={cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", - className + className, )} checked={checked} {...props} @@ -123,7 +123,7 @@ const DropdownMenuRadioItem = React.forwardRef< ref={ref} className={cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", - className + className, )} {...props} > @@ -148,7 +148,7 @@ const DropdownMenuLabel = React.forwardRef< className={cn( "px-2 py-1.5 pl-2 text-sm font-semibold", inset && "pl-8", - className + className, )} {...props} /> diff --git a/src/frontend/src/components/ui/input.tsx b/src/frontend/src/components/ui/input.tsx index f3a8757e8..bb3c0409f 100644 --- a/src/frontend/src/components/ui/input.tsx +++ b/src/frontend/src/components/ui/input.tsx @@ -11,13 +11,13 @@ const Input = React.forwardRef( type={type} className={cn( "flex h-10 w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", - className + className, )} ref={ref} {...props} /> ); - } + }, ); Input.displayName = "Input"; diff --git a/src/frontend/src/components/ui/label.tsx b/src/frontend/src/components/ui/label.tsx index ab5129253..f2017b255 100644 --- a/src/frontend/src/components/ui/label.tsx +++ b/src/frontend/src/components/ui/label.tsx @@ -6,7 +6,7 @@ import { cva, type VariantProps } from "class-variance-authority"; import { cn } from "../../utils"; const labelVariants = cva( - "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", ); const Label = React.forwardRef< diff --git a/src/frontend/src/components/ui/menubar.tsx b/src/frontend/src/components/ui/menubar.tsx index 2eb3a61f4..a0c382e01 100644 --- a/src/frontend/src/components/ui/menubar.tsx +++ b/src/frontend/src/components/ui/menubar.tsx @@ -24,7 +24,7 @@ const Menubar = React.forwardRef< ref={ref} className={cn( "flex h-10 items-center space-x-1 rounded-md border bg-background p-1", - className + className, )} {...props} /> @@ -39,7 +39,7 @@ const MenubarTrigger = React.forwardRef< ref={ref} className={cn( "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", - className + className, )} {...props} /> @@ -57,7 +57,7 @@ const MenubarSubTrigger = React.forwardRef< className={cn( "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", inset && "pl-8", - className + className, )} {...props} > @@ -75,7 +75,7 @@ const MenubarSubContent = React.forwardRef< ref={ref} className={cn( "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1", - className + className, )} {...props} /> @@ -88,7 +88,7 @@ const MenubarContent = React.forwardRef< >( ( { className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, - ref + ref, ) => ( - ) + ), ); MenubarContent.displayName = MenubarPrimitive.Content.displayName; @@ -118,7 +118,7 @@ const MenubarItem = React.forwardRef< className={cn( "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", - className + className, )} {...props} /> @@ -133,7 +133,7 @@ const MenubarCheckboxItem = React.forwardRef< ref={ref} className={cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", - className + className, )} checked={checked} {...props} @@ -156,7 +156,7 @@ const MenubarRadioItem = React.forwardRef< ref={ref} className={cn( "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", - className + className, )} {...props} > @@ -181,7 +181,7 @@ const MenubarLabel = React.forwardRef< className={cn( "px-2 py-1.5 text-sm font-semibold", inset && "pl-8", - className + className, )} {...props} /> @@ -208,7 +208,7 @@ const MenubarShortcut = ({ diff --git a/src/frontend/src/components/ui/progress.tsx b/src/frontend/src/components/ui/progress.tsx index 69d1f86fb..71ff8a889 100644 --- a/src/frontend/src/components/ui/progress.tsx +++ b/src/frontend/src/components/ui/progress.tsx @@ -12,7 +12,7 @@ const Progress = React.forwardRef< ref={ref} className={cn( "relative h-4 w-full overflow-hidden rounded-full bg-secondary", - className + className, )} {...props} > diff --git a/src/frontend/src/components/ui/separator.tsx b/src/frontend/src/components/ui/separator.tsx index 84a16676d..f78d5c0cb 100644 --- a/src/frontend/src/components/ui/separator.tsx +++ b/src/frontend/src/components/ui/separator.tsx @@ -10,7 +10,7 @@ const Separator = React.forwardRef< >( ( { className, orientation = "horizontal", decorative = true, ...props }, - ref + ref, ) => ( - ) + ), ); Separator.displayName = SeparatorPrimitive.Root.displayName; diff --git a/src/frontend/src/components/ui/table.tsx b/src/frontend/src/components/ui/table.tsx index f08ce3f6b..64a5c207c 100644 --- a/src/frontend/src/components/ui/table.tsx +++ b/src/frontend/src/components/ui/table.tsx @@ -55,7 +55,7 @@ const TableRow = React.forwardRef< ref={ref} className={cn( "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", - className + className, )} {...props} /> @@ -70,7 +70,7 @@ const TableHead = React.forwardRef< ref={ref} className={cn( "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", - className + className, )} {...props} /> diff --git a/src/frontend/src/components/ui/textarea.tsx b/src/frontend/src/components/ui/textarea.tsx index fc0cda2ff..b399e167d 100644 --- a/src/frontend/src/components/ui/textarea.tsx +++ b/src/frontend/src/components/ui/textarea.tsx @@ -10,13 +10,13 @@ const Textarea = React.forwardRef(