gauge
diceui-base/gaugeFreeComponent
diceui/base publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/sadmann7/diceui/HEAD/docs/public/r/styles/base-vega/gauge.jsonSource
1"use client";23import { mergeProps } from "@base-ui/react/merge-props";4import { useRender } from "@base-ui/react/use-render";5import * as React from "react";6import { cn } from "@/lib/utils";78const GAUGE_NAME = "Gauge";9const INDICATOR_NAME = "GaugeIndicator";10const TRACK_NAME = "GaugeTrack";11const RANGE_NAME = "GaugeRange";12const VALUE_TEXT_NAME = "GaugeValueText";13const LABEL_NAME = "GaugeLabel";1415const DEFAULT_MAX = 100;16const DEFAULT_START_ANGLE = 0;17const DEFAULT_END_ANGLE = 360;1819type GaugeState = "indeterminate" | "complete" | "loading";2021interface DivProps22 extends React.ComponentProps<"div">,23 useRender.ComponentProps<"div"> {}2425interface PathProps extends React.ComponentProps<"path"> {}2627function getGaugeState(28 value: number | undefined | null,29 maxValue: number,30): GaugeState {31 return value == null32 ? "indeterminate"33 : value === maxValue34 ? "complete"35 : "loading";36}3738function getIsValidNumber(value: unknown): value is number {39 return typeof value === "number" && Number.isFinite(value);40}4142function getIsValidMaxNumber(max: unknown): max is number {43 return getIsValidNumber(max) && max > 0;44}4546function getIsValidValueNumber(47 value: unknown,48 min: number,49 max: number,50): value is number {51 return getIsValidNumber(value) && value <= max && value >= min;52}5354function getDefaultValueText(value: number, min: number, max: number): string {55 const percentage = max === min ? 100 : ((value - min) / (max - min)) * 100;56 return Math.round(percentage).toString();57}5859function getInvalidValueError(60 propValue: string,61 componentName: string,62): string {63 return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be a number between \`min\` and \`max\` (inclusive), or \`null\`/\`undefined\` for indeterminate state. The value will be clamped to the valid range.`;64}6566function getInvalidMaxError(propValue: string, componentName: string): string {67 return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid. Defaulting to ${DEFAULT_MAX}.`;68}6970function getNormalizedAngle(angle: number) {71 return ((angle % 360) + 360) % 360;72}7374function polarToCartesian(75 centerX: number,76 centerY: number,77 radius: number,78 angleInDegrees: number,79) {80 const angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0;81 return {82 x: centerX + radius * Math.cos(angleInRadians),83// … truncated
What it pulls in
npm packages
Files it writes
More from diceui/base
All 192 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| action-baraction-bar | diceui/base | Components | Free | 1 dep | |
| angle-sliderangle-slider | diceui/base | Components | Free | 1 dep · 3 files | |
| avatar-groupavatar-group | diceui/base | Components | Free | 1 dep | |
| badge-overflowbadge-overflow | diceui/base | Components | Free | 1 dep · 2 files | |
| bannerbanner | diceui/base | Components | Free | 1 dep | |
| circular-progresscircular-progress | diceui/base | Components | Free | 1 dep | |
| client-onlyclient-only | diceui/base | Components | Free | no deps | |
| color-pickercolor-picker | diceui/base | Components | Free | 1 dep · 2 files |
