Files
npc0-hue b2f5707676 Merge 升级到1.11.4
# Conflicts:
#	.github/workflows/tool-test-sdks.yaml
#	api/.env.example
#	api/README.md
#	api/commands.py
#	api/controllers/console/explore/wraps.py
#	api/controllers/web/workflow.py
#	api/extensions/ext_commands.py
#	api/models/model.py
#	api/pyproject.toml
#	api/services/feature_service.py
#	web/README.md
#	web/app/components/explore/app-card/index.tsx
#	web/app/components/explore/app-list/index.tsx
#	web/app/components/explore/sidebar/index.tsx
#	web/app/signin/components/mail-and-password-auth.tsx
#	web/i18n/uk-UA/app-overview.json
#	web/i18n/uk-UA/app.json
#	web/i18n/uk-UA/billing.json
#	web/i18n/uk-UA/common.json
#	web/i18n/uk-UA/dataset-creation.json
#	web/i18n/uk-UA/dataset-documents.json
#	web/i18n/uk-UA/dataset-hit-testing.json
#	web/i18n/uk-UA/dataset-settings.json
#	web/i18n/uk-UA/dataset.json
#	web/i18n/uk-UA/explore.json
#	web/i18n/uk-UA/plugin.json
#	web/i18n/uk-UA/tools.json
#	web/next.config.js
#	web/package.json
#	web/pnpm-lock.yaml
#	web/service/common.ts
#	web/service/explore.ts
#	web/service/fetch.ts
#	web/service/use-explore.ts
#	web/types/feature.ts
2026-01-26 07:08:40 +08:00

77 lines
1.9 KiB
TypeScript

import type { VariantProps } from 'class-variance-authority'
import type { CSSProperties } from 'react'
import { cva } from 'class-variance-authority'
import * as React from 'react'
import { cn } from '@/utils/classnames'
enum ActionButtonState {
Destructive = 'destructive',
Active = 'active',
Disabled = 'disabled',
Default = '',
Hover = 'hover',
}
const actionButtonVariants = cva(
'action-btn',
{
variants: {
size: {
xs: 'action-btn-xs',
sm: 'action-btn-sm',
m: 'action-btn-m',
l: 'action-btn-l',
xl: 'action-btn-xl',
},
},
defaultVariants: {
size: 'm',
},
},
)
export type ActionButtonProps = {
size?: 'xs' | 'sm' | 'm' | 'l' | 'xl'
state?: ActionButtonState
styleCss?: CSSProperties
ref?: React.Ref<HTMLButtonElement>
} & React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof actionButtonVariants>
function getActionButtonState(state: ActionButtonState) {
switch (state) {
case ActionButtonState.Destructive:
return 'action-btn-destructive'
case ActionButtonState.Active:
return 'action-btn-active'
case ActionButtonState.Disabled:
return 'action-btn-disabled'
case ActionButtonState.Hover:
return 'action-btn-hover'
default:
return ''
}
}
const ActionButton = ({ className, size, state = ActionButtonState.Default, styleCss, children, ref, disabled, ...props }: ActionButtonProps) => {
return (
<button
type="button"
className={cn(
actionButtonVariants({ className, size }),
getActionButtonState(state),
disabled && 'cursor-not-allowed text-text-disabled hover:bg-transparent hover:text-text-disabled',
)}
disabled={disabled}
ref={ref}
style={styleCss}
{...props}
>
{children}
</button>
)
}
ActionButton.displayName = 'ActionButton'
export default ActionButton
export { ActionButton, ActionButtonState, actionButtonVariants }