Files
Genarrative/src/components/common/PlatformInlineOptionButton.tsx
kdletters d1f1cfdcca 抽取内联选项按钮原语
新增 PlatformInlineOptionButton,统一承接当前选项加下拉箭头的轻量按钮 chrome。

编辑器生成输入框的比例和模型按钮改为复用平台内联选项按钮。

补充原语测试和编辑器共享样式断言,并更新 TRACKING。
2026-06-14 15:04:10 +08:00

40 lines
1.1 KiB
TypeScript

import type { ButtonHTMLAttributes, ReactNode } from 'react';
type PlatformInlineOptionButtonProps = Omit<
ButtonHTMLAttributes<HTMLButtonElement>,
'children'
> & {
children: ReactNode;
trailingIcon?: ReactNode;
};
/**
* 平台内联选项按钮。
* 统一承接工具面板里“当前选项 + 下拉箭头”这类轻量 pill 动作。
*/
export function PlatformInlineOptionButton({
children,
trailingIcon,
className,
type = 'button',
...buttonProps
}: PlatformInlineOptionButtonProps) {
const actionClassName = [
'platform-inline-option-button inline-flex items-center justify-center border-0 bg-transparent text-sm font-black text-slate-700 transition-colors hover:text-slate-950 disabled:cursor-not-allowed disabled:opacity-55',
className,
]
.filter(Boolean)
.join(' ');
return (
<button {...buttonProps} type={type} className={actionClassName}>
<span className="platform-inline-option-button__label">{children}</span>
{trailingIcon ? (
<span className="platform-inline-option-button__trailing" aria-hidden="true">
{trailingIcon}
</span>
) : null}
</button>
);
}