dudu MVP:五端语音输入法初始提交
- server:Go 网关(WS 流式识别中继/计费配额/微信登录支付 mock/反馈/埋点),gummy provider 已真实联调 - desktop:Tauri 2(全局快捷键 push-to-talk/浮层/托盘/设置/登录购买/反馈/首启引导) - android:Compose 主 App + IME(键盘内录音直传) - ios:App + 键盘扩展(1A spike 实证键盘内不可录音,走 deep link 听写) - design/design-pipeline:设计系统 + token 导出 iOS/Android 主题 - doc:前后端设计文档(HTML);web:官网宣传页;todo:任务看板 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
const ddSettingRowCss = `
|
||||
.dd-setrow {
|
||||
display: flex; align-items: center; justify-content: space-between; gap: 16px;
|
||||
padding: 12px 0; border-bottom: 1px solid var(--border-1);
|
||||
font-family: var(--font-sans); font-size: var(--text-base);
|
||||
}
|
||||
.dd-setrow:last-child { border-bottom: none; }
|
||||
.dd-setrow__label { color: var(--text-1); }
|
||||
.dd-setrow__desc { font-size: var(--text-xs); color: var(--text-3); margin-top: 2px; }
|
||||
.dd-setrow__control { display: flex; align-items: center; gap: 8px; color: var(--text-2); font-size: var(--text-sm); }
|
||||
`;
|
||||
|
||||
if (typeof document !== 'undefined' && !document.getElementById('dd-setrow-css')) {
|
||||
const s = document.createElement('style');
|
||||
s.id = 'dd-setrow-css';
|
||||
s.textContent = ddSettingRowCss;
|
||||
document.head.appendChild(s);
|
||||
}
|
||||
|
||||
export function SettingRow({ label, description, children, ...rest }) {
|
||||
return (
|
||||
<div className="dd-setrow" {...rest}>
|
||||
<div>
|
||||
<div className="dd-setrow__label">{label}</div>
|
||||
{description ? <div className="dd-setrow__desc">{description}</div> : null}
|
||||
</div>
|
||||
<div className="dd-setrow__control">{children}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user