/** * Fluksio: the controls. * * Every control is a pill, and a press is answered by the colour changing and * nothing else — no ripple, no glow, no lift. That restraint is the house * style rather than an omission: the one accent is spent on saying what is * selected, not on saying that something was touched. * * Every one of these is a `ui/core` hook in a different coat — the state, the * keyboard and the `aria-` come from there. */ import * as SelectPrimitive from "@radix-ui/react-select" import { Check, ChevronDown } from "lucide-react" import { motion } from "motion/react" import { cn } from "@/lib/utils" import { asOriginal, text } from "../core/config" import type { ButtonProps, InputProps, SegmentedProps, SelectProps, SliderProps, SwitchProps, } from "../core/contract" import { useSegmented, useSliderDrag, useSwitch } from "../core/controls" import { useLook } from "../core/look" import { LOOK } from "../core/motion" export function Button({ variant = "tonal", pressed, disabled, label, onClick, children, }: ButtonProps) { return ( ) } export function Switch(props: SwitchProps) { const { buttonProps } = useSwitch(props) return ( ) } export function Slider(props: SliderProps) { const { fraction, inputProps, marks } = useSliderDrag(props) const orientation = props.orientation ?? "horizontal" return (