mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
* chore: rebrand in progress * chore: update docs to use heroui * chore: components renbranded * chore: figma moved to the docs files * fix: posthog config * fix(docs): extra classname in form example (#4465) * chore: clean git * chore: make heroui private * chore: new logo * chore: node env var renamed * chore: public robots txt deleted * chore: wrangler installed * chore: wrangler renamed * chore: cloudlfare workers removed * chore: force vercel deploy * refactor: first migration and provider * refactor: rename nextui plugin * refactor: rename github site * refactor: rename CONTRIBUTING * refactor: rename package name * refactor: nextjs image hostname * refactor: mdx repo nextui-org rename frontio-ai * refactor: nextui.org rename heroui.com * refactor: add heroui to missing places * fix: heroui plugin name * fix: update docs * docs: nextui to heroui add npmrc pnpm migratation * chore: rename all packages with new org name * chore: replace frontio-ai by frontioai * chore: revert previous changes * chore: small adjustment * chore: doc updated * feat: blog * chore: avatar updated * fix: url * chore: add new ogimage * fix: ogimage command * fix: heroui name and storybook welcome page * fix: og image url * feat: favicon and icon changed --------- Co-authored-by: աӄա <wingkwong.code@gmail.com> Co-authored-by: winches <329487092@qq.com>
90 lines
1.8 KiB
TypeScript
90 lines
1.8 KiB
TypeScript
import {
|
|
tv,
|
|
VariantProps,
|
|
CircularProgress,
|
|
CircularProgressProps,
|
|
circularProgress,
|
|
} from "@heroui/react";
|
|
import {FC} from "react";
|
|
|
|
const speedProgress = tv({
|
|
extend: circularProgress,
|
|
slots: {
|
|
svg: "",
|
|
label: "",
|
|
value: "",
|
|
},
|
|
variants: {
|
|
color: {
|
|
olive: {
|
|
svg: "text-[#84cc16]",
|
|
},
|
|
orange: {
|
|
svg: "text-[#ff8c00]",
|
|
},
|
|
violet: {
|
|
svg: "text-[#8b5cf6]",
|
|
},
|
|
},
|
|
size: {
|
|
sm: {
|
|
svg: "w-10 h-10",
|
|
label: "text-small",
|
|
value: "text-[0.5rem]",
|
|
},
|
|
md: {
|
|
svg: "w-12 h-12",
|
|
label: "text-medium",
|
|
value: "text-small",
|
|
},
|
|
lg: {
|
|
svg: "w-14 h-14",
|
|
label: "text-medium",
|
|
value: "text-[0.6rem]",
|
|
},
|
|
xl: {
|
|
svg: "w-16 h-16",
|
|
label: "text-large",
|
|
value: "text-small",
|
|
},
|
|
},
|
|
},
|
|
defaultVariants: {
|
|
color: "olive",
|
|
size: "sm",
|
|
},
|
|
});
|
|
|
|
type SpeedProgressVariants = VariantProps<typeof speedProgress>;
|
|
|
|
export interface SpeedProgressProps extends Omit<CircularProgressProps, "color" | "size"> {
|
|
color?: SpeedProgressVariants["color"];
|
|
size?: SpeedProgressVariants["size"];
|
|
}
|
|
|
|
export const SpeedProgress: FC<SpeedProgressProps> = ({color, size, ...otherProps}) => {
|
|
const slots = speedProgress({size, color});
|
|
|
|
return (
|
|
<CircularProgress
|
|
classNames={{
|
|
svg: slots.svg(),
|
|
label: slots.label(),
|
|
value: slots.value(),
|
|
}}
|
|
// color={color} // not needed because is being passed from slots
|
|
formatOptions={{style: "unit", unit: "kilometer"}}
|
|
label="Speed"
|
|
showValueLabel={true}
|
|
// size={size}
|
|
{...otherProps}
|
|
/>
|
|
);
|
|
};
|
|
|
|
// const MyApp = () => {
|
|
// return (
|
|
// <SpeedProgress color="orange" />
|
|
// );
|
|
// }
|