chore: establish V1.1 recovery baseline

This commit is contained in:
2026-09-09 22:05:00 +08:00
commit b46b48eb33
947 changed files with 155471 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
/**
* NavBar 自定义导航栏(规范 §17)
*
* 用于非 tabBar 页面:返回按钮 + 标题 + 右侧操作 slot。
* statusBarHeight / navBarHeight 由调用方 app.js 通过 wx.getSystemInfoSync 注入。
* 用法:
* <ui-nav-bar title="编辑资料" show-back bind:back="onBack" />
*/
Component({
options: { addGlobalClass: true, multipleSlots: true },
properties: {
title: { type: String, value: '' },
showBack: { type: Boolean, value: true },
statusBarHeight: { type: Number, value: 20 },
navBarHeight: { type: Number, value: 44 },
bg: { type: String, value: 'card' }, // card | transparent
},
data: {
containerStyle: '',
},
observers: {
'statusBarHeight, navBarHeight'(s, n) {
this.setData({
containerStyle: `padding-top: ${s}px; height: ${s + n}px;`,
});
},
},
methods: {
onBack() {
this.triggerEvent('back', {});
},
},
});
+4
View File
@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}
+12
View File
@@ -0,0 +1,12 @@
<view class="ui-nav ui-nav--{{bg}}" style="{{containerStyle}}">
<view class="ui-nav__bar">
<view wx:if="{{showBack}}" class="ui-nav__back" bindtap="onBack">
<view class="ui-nav__back-arrow"></view>
</view>
<view wx:else class="ui-nav__placeholder"></view>
<view class="ui-nav__title">{{title}}</view>
<view class="ui-nav__right">
<slot name="right"></slot>
</view>
</view>
</view>
+54
View File
@@ -0,0 +1,54 @@
.ui-nav {
position: sticky;
top: 0;
left: 0;
width: 100%;
z-index: var(--z-sticky);
box-sizing: border-box;
}
.ui-nav--card {
background: var(--color-bg-card);
border-bottom: 1rpx solid var(--color-divider);
}
.ui-nav--transparent {
background: transparent;
}
.ui-nav__bar {
display: flex;
align-items: center;
height: 88rpx;
padding: 0 var(--spacing-2);
}
.ui-nav__back,
.ui-nav__placeholder {
width: 64rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.ui-nav__back-arrow {
width: 20rpx;
height: 20rpx;
border-left: 4rpx solid var(--color-text-primary);
border-bottom: 4rpx solid var(--color-text-primary);
transform: rotate(45deg);
}
.ui-nav__title {
flex: 1;
text-align: center;
font-size: var(--font-size-lg);
font-weight: var(--font-weight-semibold);
color: var(--color-text-primary);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.ui-nav__right {
flex-shrink: 0;
min-width: 64rpx;
display: flex;
align-items: center;
justify-content: flex-end;
}