refactor: repartition server-side and client-side code

This commit is contained in:
LIlGG
2025-10-11 18:26:07 +08:00
parent 7acc4949fb
commit e9b573a276
309 changed files with 631 additions and 962 deletions

View File

@@ -0,0 +1,42 @@
import classNames from 'classnames';
import * as React from 'react';
interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {
value?: number;
color?: 'default' | 'purple' | 'red';
}
const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(
({ className, value, color = 'default', ...props }, ref) => {
const getBarColor = () => {
switch (color) {
case 'purple':
return 'bg-purple-500 dark:bg-purple-400';
case 'red':
return 'bg-orange-500 dark:bg-orange-400';
default:
return 'bg-upage-elements-textPrimary';
}
};
return (
<div
ref={ref}
className={classNames(
'relative h-2 w-full overflow-hidden rounded-full bg-upage-elements-background',
className,
)}
{...props}
>
<div
className={classNames('size-full flex-1 transition-all', getBarColor())}
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
/>
</div>
);
},
);
Progress.displayName = 'Progress';
export { Progress };