/**
* 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 { type MotionStyle, 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 { SliderMarks } from "../core/marks"
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, markAt, stops, trackRef } =
useSliderDrag(props)
const orientation = props.orientation ?? "horizontal"
return (