测试: - secure-storage: 26 tests (AES 加解密/明文 fallback/迁移/Base64 边界) - request.ts: 16 tests (扩展 ResponseCache/patientId 隔离/requestUnlimited) - mock-api: 修复 getCachedPatientId 缺失导致 health 测试失败 UX 无障碍 (10 组件): - SegmentTabs/DoctorTabBar: role=tablist/tab + aria-selected - PrimaryButton/SecondaryButton: role=button + aria-disabled/aria-busy - Loading/LoadingCard: role=status + aria-live=polite - EmptyState: role=status + aria-live=polite - ErrorState: role=alert + aria-live=assertive - TrendChart tooltip: role=tooltip + aria-live=polite - FormInput: aria-invalid + aria-label 焦点管理: - 新增 _focus-ring.scss mixin (focus + focus-visible) - 5 组件 SCSS 应用 focus-ring
55 lines
999 B
SCSS
55 lines
999 B
SCSS
@import '../../../styles/variables.scss';
|
|
|
|
.doctor-tabbar {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: $tabbar-space;
|
|
background: $card;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
padding-top: 6px;
|
|
padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
box-shadow: 0 -1px 0 $bd, $shadow-md;
|
|
z-index: 999;
|
|
|
|
&__item {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 2px;
|
|
padding: 6px 0;
|
|
cursor: pointer;
|
|
-webkit-tap-highlight-color: transparent;
|
|
|
|
@include focus-ring;
|
|
|
|
&--active {
|
|
.doctor-tabbar__icon {
|
|
transform: scale(1.15);
|
|
}
|
|
|
|
.doctor-tabbar__label {
|
|
color: $doc-pri;
|
|
font-weight: 600;
|
|
}
|
|
}
|
|
}
|
|
|
|
&__icon {
|
|
font-size: 22px;
|
|
line-height: 1;
|
|
transition: transform 0.15s ease;
|
|
}
|
|
|
|
&__label {
|
|
font-size: var(--tk-font-micro);
|
|
color: $tx3;
|
|
line-height: 1.2;
|
|
transition: color 0.15s ease;
|
|
}
|
|
}
|