/* Copyright 2026 Marimo. All rights reserved. */ import { ChevronDown, ChevronUp } from "lucide-react"; import React from "react"; import { NumberField as AriaNumberField, type NumberFieldProps as AriaNumberFieldProps, Button, type ButtonProps, Input as RACInput, useLocale, } from "react-aria-components"; import { cn } from "@/utils/cn"; import { maxFractionalDigits } from "@/utils/numbers"; export interface NumberFieldProps extends AriaNumberFieldProps { placeholder?: string; variant?: "default" | "xs"; } export const NumberField = React.forwardRef( ({ placeholder, variant = "default", ...props }, ref) => { const { locale } = useLocale(); return (
{ if (e.key === "ArrowUp" || e.key === "ArrowDown") { e.stopPropagation(); } }} className={cn( "flex-1", "w-full", "placeholder:text-muted-foreground", "outline-hidden", "disabled:cursor-not-allowed disabled:opacity-50", variant === "default" ? "px-1.5" : "px-1", )} />
); }, ); NumberField.displayName = "NumberField"; const StepperButton = (props: ButtonProps & { variant?: "default" | "xs" }) => { return (