weifuwu 0.89.1 → 0.90.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -461
- package/dist/client/components/AlertGroup/AlertGroup.d.ts +1 -1
- package/dist/client/components/Anchor/Anchor.d.ts +1 -1
- package/dist/client/components/AutoComplete/AutoComplete.d.ts +1 -1
- package/dist/client/components/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/client/components/BackTop/BackTop.d.ts +12 -5
- package/dist/client/components/Button/Button.d.ts +2 -0
- package/dist/client/components/Calendar/Calendar.d.ts +1 -1
- package/dist/client/components/Carousel/Carousel.d.ts +1 -1
- package/dist/client/components/Cascader/Cascader.d.ts +1 -1
- package/dist/client/components/CodeEditor/CodeEditor.d.ts +1 -1
- package/dist/client/components/ColorPicker/ColorPicker.d.ts +1 -1
- package/dist/client/components/DropZone/DropZone.d.ts +27 -0
- package/dist/client/components/Editor/Editor.d.ts +1 -1
- package/dist/client/components/Editor/edit-events.d.ts +1 -1
- package/dist/client/components/Editor/model/types.d.ts +1 -1
- package/dist/client/components/Editor/tools/table.d.ts +1 -1
- package/dist/client/components/Editor/tools/types.d.ts +1 -1
- package/dist/client/components/FilePreview/FilePreview.d.ts +1 -1
- package/dist/client/components/FloatButton/FloatButton.d.ts +1 -1
- package/dist/client/components/Grid/Grid.d.ts +1 -1
- package/dist/client/components/Img/Img.d.ts +7 -0
- package/dist/client/components/InputNumber/InputNumber.d.ts +1 -1
- package/dist/client/components/JSONViewer/JSONViewer.d.ts +1 -1
- package/dist/client/components/Link/Link.d.ts +1 -1
- package/dist/client/components/LogViewer/LogViewer.d.ts +1 -1
- package/dist/client/components/Markdown/parser.d.ts +1 -1
- package/dist/client/components/Math/Math.d.ts +1 -1
- package/dist/client/components/Mentions/Mentions.d.ts +1 -1
- package/dist/client/components/Menu/Menu.d.ts +1 -1
- package/dist/client/components/Menubar/Menubar.d.ts +1 -1
- package/dist/client/components/MessageBubble/MessageBubble.d.ts +1 -1
- package/dist/client/components/NavBar/NavBar.d.ts +32 -0
- package/dist/client/components/NavMenu/NavMenu.d.ts +1 -1
- package/dist/client/components/OfficeEditor/ai/ai-bridge.d.ts +1 -1
- package/dist/client/components/OfficeEditor/model/types.d.ts +1 -1
- package/dist/client/components/Popconfirm/Popconfirm.d.ts +1 -1
- package/dist/client/components/Result/Result.d.ts +1 -1
- package/dist/client/components/Scrollbar/Scrollbar.d.ts +1 -1
- package/dist/client/components/SheetGrid/SheetGrid.d.ts +1 -1
- package/dist/client/components/SlideCanvas/SlideCanvas.d.ts +1 -1
- package/dist/client/components/TagsInput/TagsInput.d.ts +1 -1
- package/dist/client/components/Timeline/Timeline.d.ts +1 -1
- package/dist/client/components/Transfer/Transfer.d.ts +1 -1
- package/dist/client/components/VirtualList/VirtualList.d.ts +1 -1
- package/dist/client/components/VirtualTable/VirtualTable.d.ts +1 -1
- package/dist/client/components/Watermark/Watermark.d.ts +1 -1
- package/dist/client/components/index.d.ts +4 -0
- package/dist/client/components/index.js +39 -39
- package/dist/client/components/style.css +238 -18
- package/dist/client/layout/weifuwu-layout.css +35 -16
- package/dist/client/office/docx.d.ts +1 -1
- package/dist/client/office/xlsx.d.ts +1 -1
- package/dist/client/vdom/core/async-guard.d.ts +1 -1
- package/dist/client/vdom/core/patch/state-machine.d.ts +1 -1
- package/dist/client/vdom/core/router.d.ts +1 -1
- package/dist/client/vdom/core/ssr/html.d.ts +1 -1
- package/dist/client/vdom/core/v2/cycle.d.ts +4 -2
- package/dist/client/vdom/core/v2/diff.d.ts +9 -0
- package/dist/client/vdom/core/v2/integrate.d.ts +1 -1
- package/dist/client/vdom/core/v2/schedule.d.ts +1 -1
- package/dist/client/vdom/core/vnode.d.ts +1 -1
- package/dist/client/vdom/hooks/drag-media.d.ts +4 -1
- package/dist/client/vdom/hooks/popup-manager.d.ts +1 -1
- package/dist/client/vdom/hooks/stable.d.ts +1 -1
- package/dist/client/vdom/index.js +3 -3
- package/dist/client/vdom/testing.js +2 -2
- package/dist/server/ai/client.d.ts +1 -1
- package/dist/server/ai/sse.d.ts +1 -1
- package/dist/server/ai/types.d.ts +2 -2
- package/dist/server/db/contracts.d.ts +5 -0
- package/dist/server/db/postgres/connection.d.ts +6 -0
- package/dist/server/index.js +32 -2
- package/dist/server/postgres/types.d.ts +3 -0
- package/docs/client.md +170 -0
- package/docs/server.md +112 -0
- package/package.json +1 -3
- package/docs/ai-contract.md +0 -418
- package/docs/compat-three-library.md +0 -290
- package/docs/components-map.md +0 -227
- package/docs/environment.md +0 -50
- package/docs/examples.md +0 -121
- package/docs/style-guide.md +0 -248
|
@@ -848,6 +848,15 @@ body.wf-dragging {
|
|
|
848
848
|
align-items: var(--wf-align, center);
|
|
849
849
|
gap: var(--wf-gap, var(--wf-gap-md));
|
|
850
850
|
}
|
|
851
|
+
|
|
852
|
+
.wf-justify-center {
|
|
853
|
+
display: flex;
|
|
854
|
+
justify-content: center;
|
|
855
|
+
}
|
|
856
|
+
:where(.wf-justify-center) {
|
|
857
|
+
align-items: var(--wf-align, center);
|
|
858
|
+
gap: var(--wf-gap, var(--wf-gap-md));
|
|
859
|
+
}
|
|
851
860
|
}
|
|
852
861
|
|
|
853
862
|
@layer layout {
|
|
@@ -1350,6 +1359,7 @@ body.wf-dragging {
|
|
|
1350
1359
|
.wf-padding-xl { padding: var(--wf-space-xl); }
|
|
1351
1360
|
|
|
1352
1361
|
/* ── padding: 轴 ── */
|
|
1362
|
+
.wf-padding-x-xs { padding-left: var(--wf-space-xs); padding-right: var(--wf-space-xs); }
|
|
1353
1363
|
.wf-padding-x-sm { padding-left: var(--wf-space-sm); padding-right: var(--wf-space-sm); }
|
|
1354
1364
|
.wf-padding-x-md { padding-left: var(--wf-space-md); padding-right: var(--wf-space-md); }
|
|
1355
1365
|
|
|
@@ -1384,6 +1394,9 @@ body.wf-dragging {
|
|
|
1384
1394
|
.wf-margin-left-sm { margin-left: var(--wf-space-sm); }
|
|
1385
1395
|
.wf-margin-x-auto { margin-left: auto; margin-right: auto; }
|
|
1386
1396
|
|
|
1397
|
+
/* ── margin: y 轴 ── */
|
|
1398
|
+
.wf-margin-y-xs { margin-top: var(--wf-space-xs); margin-bottom: var(--wf-space-xs); }
|
|
1399
|
+
|
|
1387
1400
|
/* ── gap:直接设置 gap 属性(不设 --wf-gap 变量——变量会继承污染子孙:
|
|
1388
1401
|
壳 root wf-gap-none 曾让 KPI grid 的 gap: var(--wf-gap) = 0 卡无间距) ── */
|
|
1389
1402
|
.wf-gap-none { gap: 0; }
|
|
@@ -1399,22 +1412,6 @@ body.wf-dragging {
|
|
|
1399
1412
|
.wf-height-full { height: 100%; }
|
|
1400
1413
|
}
|
|
1401
1414
|
|
|
1402
|
-
@layer utilities {
|
|
1403
|
-
/* hidden — 隐藏元素(响应式显隐唯一模式:`wf-hidden wf-flex@lg` 窄隐宽显) */
|
|
1404
|
-
.wf-hidden {
|
|
1405
|
-
display: none;
|
|
1406
|
-
}
|
|
1407
|
-
@media (min-width: 1024px) { .wf-hidden\@lg { display: none; } }
|
|
1408
|
-
|
|
1409
|
-
/* dim — 视觉淡化(运行中/历史态/次要操作) */
|
|
1410
|
-
.wf-dim {
|
|
1411
|
-
opacity: 0.7;
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
/* cursor — 交互指针(裸值词) */
|
|
1415
|
-
.wf-pointer { cursor: pointer; }
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
1415
|
@layer utilities {
|
|
1419
1416
|
/* block — 块级显示 */
|
|
1420
1417
|
.wf-block {
|
|
@@ -1435,6 +1432,28 @@ body.wf-dragging {
|
|
|
1435
1432
|
@media (min-width: 1024px) { .wf-flex\@lg { display: flex; } }
|
|
1436
1433
|
}
|
|
1437
1434
|
|
|
1435
|
+
@layer utilities {
|
|
1436
|
+
/* hidden — 隐藏元素。两种响应式组合:
|
|
1437
|
+
* `wf-hidden wf-flex@lg`(窄隐宽显——基础类无 !important,被 media 内 wf-flex@lg 覆盖)
|
|
1438
|
+
* `wf-flex wf-hidden@lg`(宽隐窄显——media 变体 !important,胜组件自身 display)
|
|
1439
|
+
* !important 原因(CHAT-UX 波次 2 L4):@layer 顺序下 utilities 永远输给 components
|
|
1440
|
+
* (@layer tokens,base,layout,utilities,components 顶层声明定死)——.wf-btn 的
|
|
1441
|
+
* display:inline-flex 无条件压过 hidden 变体——面板按钮桌面隐藏失效实证;
|
|
1442
|
+
* 源顺序洗牌无法修复(层叠顺序优先于源顺序)——!important 是唯一出路 */
|
|
1443
|
+
.wf-hidden {
|
|
1444
|
+
display: none;
|
|
1445
|
+
}
|
|
1446
|
+
@media (min-width: 1024px) { .wf-hidden\@lg { display: none !important; } }
|
|
1447
|
+
|
|
1448
|
+
/* dim — 视觉淡化(运行中/历史态/次要操作) */
|
|
1449
|
+
.wf-dim {
|
|
1450
|
+
opacity: 0.7;
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
/* cursor — 交互指针(裸值词) */
|
|
1454
|
+
.wf-pointer { cursor: pointer; }
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1438
1457
|
@layer layout {
|
|
1439
1458
|
/* popup — 浮层基类(usePopup.portal 自动附加;Modal/Drawer 等手动浮层可选用)
|
|
1440
1459
|
*
|
|
@@ -1673,6 +1692,8 @@ body.wf-dragging {
|
|
|
1673
1692
|
.wf-actionsheet-icon {
|
|
1674
1693
|
color: inherit;
|
|
1675
1694
|
}
|
|
1695
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
1696
|
+
:where(.wf-actionsheet-item-label) {}
|
|
1676
1697
|
|
|
1677
1698
|
/* weifuwu/components — Affix */
|
|
1678
1699
|
|
|
@@ -1687,6 +1708,9 @@ body.wf-dragging {
|
|
|
1687
1708
|
.wf-affix-content {
|
|
1688
1709
|
transition: none;
|
|
1689
1710
|
}
|
|
1711
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
1712
|
+
:where(.wf-affix-content--fixed) {}
|
|
1713
|
+
:where(.wf-affix-sentinel--active) {}
|
|
1690
1714
|
|
|
1691
1715
|
/* weifuwu/components — AiChat(标准 AI 对话界面) */
|
|
1692
1716
|
|
|
@@ -1774,7 +1798,8 @@ body.wf-dragging {
|
|
|
1774
1798
|
border-radius: var(--wf-radius);
|
|
1775
1799
|
padding: var(--wf-space-sm);
|
|
1776
1800
|
}
|
|
1777
|
-
|
|
1801
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
1802
|
+
:where(.wf-aichat-inputbar--raised) {}
|
|
1778
1803
|
|
|
1779
1804
|
/* weifuwu/components — Alert */
|
|
1780
1805
|
|
|
@@ -1891,6 +1916,9 @@ body.wf-dragging {
|
|
|
1891
1916
|
background: var(--wf-color-bg-hover);
|
|
1892
1917
|
color: var(--wf-color-text);
|
|
1893
1918
|
}
|
|
1919
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
1920
|
+
:where(.wf-alertgroup-list) {}
|
|
1921
|
+
:where(.wf-alertgroup-list--open) {}
|
|
1894
1922
|
|
|
1895
1923
|
/* weifuwu/components — Anchor(锚点导航) */
|
|
1896
1924
|
|
|
@@ -2118,6 +2146,12 @@ body.wf-dragging {
|
|
|
2118
2146
|
gap: var(--wf-gap-sm);
|
|
2119
2147
|
align-items: flex-start;
|
|
2120
2148
|
}
|
|
2149
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
2150
|
+
:where(.wf-approval-icon) {}
|
|
2151
|
+
:where(.wf-approval-modify-btn) {}
|
|
2152
|
+
:where(.wf-approval-modify-cancel) {}
|
|
2153
|
+
:where(.wf-approval-note) {}
|
|
2154
|
+
:where(.wf-approval-title) {}
|
|
2121
2155
|
|
|
2122
2156
|
/* weifuwu/components — AspectRatio */
|
|
2123
2157
|
|
|
@@ -2264,7 +2298,8 @@ body.wf-dragging {
|
|
|
2264
2298
|
box-shadow: var(--wf-shadow-sm);
|
|
2265
2299
|
transition: opacity var(--wf-dur-base) var(--wf-ease-out),
|
|
2266
2300
|
transform var(--wf-dur-base) var(--wf-ease-out),
|
|
2267
|
-
background var(--wf-dur-fast) var(--wf-ease-out)
|
|
2301
|
+
background var(--wf-dur-fast) var(--wf-ease-out),
|
|
2302
|
+
visibility var(--wf-dur-base) var(--wf-ease-out);
|
|
2268
2303
|
}
|
|
2269
2304
|
|
|
2270
2305
|
.wf-backtop:hover {
|
|
@@ -2279,10 +2314,18 @@ body.wf-dragging {
|
|
|
2279
2314
|
|
|
2280
2315
|
.wf-backtop--hidden {
|
|
2281
2316
|
opacity: 0;
|
|
2317
|
+
/* visibility:不可见按钮不得可 Tab 聚焦(a11y——浮钮语义:隐藏即不可达;
|
|
2318
|
+
加入 transition 使收起时 opacity 先动画完再隐藏——展开立即可见) */
|
|
2319
|
+
visibility: hidden;
|
|
2282
2320
|
pointer-events: none;
|
|
2283
2321
|
transform: translateY(8px);
|
|
2284
2322
|
}
|
|
2285
2323
|
|
|
2324
|
+
/* 容器内浮钮(direction=bottom 聊天流——absolute 相对滚动容器——定位偏移同 fixed) */
|
|
2325
|
+
.wf-backtop--inline {
|
|
2326
|
+
position: absolute;
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2286
2329
|
/* weifuwu/components — Badge */
|
|
2287
2330
|
|
|
2288
2331
|
.wf-badge {
|
|
@@ -2581,6 +2624,8 @@ body.wf-dragging {
|
|
|
2581
2624
|
min-width: 44px;
|
|
2582
2625
|
}
|
|
2583
2626
|
}
|
|
2627
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
2628
|
+
:where(.wf-calendar-grid) {}
|
|
2584
2629
|
|
|
2585
2630
|
/* weifuwu/components — Card */
|
|
2586
2631
|
|
|
@@ -2620,6 +2665,8 @@ body.wf-dragging {
|
|
|
2620
2665
|
border: var(--wf-border-width) solid var(--wf-color-primary);
|
|
2621
2666
|
background: var(--wf-color-primary-bg);
|
|
2622
2667
|
}
|
|
2668
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
2669
|
+
:where(.wf-card--hover) {}
|
|
2623
2670
|
|
|
2624
2671
|
/* weifuwu/components — Carousel */
|
|
2625
2672
|
|
|
@@ -2940,6 +2987,8 @@ body.wf-dragging {
|
|
|
2940
2987
|
background: var(--wf-color-primary-bg);
|
|
2941
2988
|
color: var(--wf-color-primary-text);
|
|
2942
2989
|
}
|
|
2990
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
2991
|
+
:where(.wf-cascader) {}
|
|
2943
2992
|
|
|
2944
2993
|
/* weifuwu/components — Chart */
|
|
2945
2994
|
|
|
@@ -3020,6 +3069,11 @@ body.wf-dragging {
|
|
|
3020
3069
|
.wf-chart-tooltip-value {
|
|
3021
3070
|
opacity: 0.8;
|
|
3022
3071
|
}
|
|
3072
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
3073
|
+
:where(.wf-chart-label) {}
|
|
3074
|
+
:where(.wf-chart-legend-label) {}
|
|
3075
|
+
:where(.wf-chart-svg) {}
|
|
3076
|
+
:where(.wf-chart-value) {}
|
|
3023
3077
|
|
|
3024
3078
|
/* weifuwu/components — ChatInput(独立聊天输入条——从 AiChat 输入条抽取) */
|
|
3025
3079
|
|
|
@@ -3291,6 +3345,8 @@ body.wf-dragging {
|
|
|
3291
3345
|
.wf-citation-item { min-height: 44px; align-items: center; }
|
|
3292
3346
|
.wf-citation-toggle { min-height: 44px; }
|
|
3293
3347
|
}
|
|
3348
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
3349
|
+
:where(.wf-citation-body--open) {}
|
|
3294
3350
|
|
|
3295
3351
|
/* weifuwu/components — CodeBlock */
|
|
3296
3352
|
|
|
@@ -3468,6 +3524,8 @@ body.wf-dragging {
|
|
|
3468
3524
|
from { transform: rotate(0deg); }
|
|
3469
3525
|
to { transform: rotate(360deg); }
|
|
3470
3526
|
}
|
|
3527
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
3528
|
+
:where(.wf-collapse-item--open) {}
|
|
3471
3529
|
|
|
3472
3530
|
/* weifuwu/components — ColorPicker */
|
|
3473
3531
|
|
|
@@ -3809,6 +3867,8 @@ body.wf-dragging {
|
|
|
3809
3867
|
/* sizes */
|
|
3810
3868
|
.wf-copy-btn--sm { padding: 2px var(--wf-space-xs); }
|
|
3811
3869
|
.wf-copy-btn--lg { padding: var(--wf-space-sm) var(--wf-space-md); }
|
|
3870
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
3871
|
+
:where(.wf-copy-btn-text) {}
|
|
3812
3872
|
|
|
3813
3873
|
/* weifuwu/components — DatePicker */
|
|
3814
3874
|
|
|
@@ -4129,6 +4189,8 @@ body.wf-dragging {
|
|
|
4129
4189
|
/* error(F2 状态矩阵) */
|
|
4130
4190
|
.wf-datepicker-input--err { border-color: var(--wf-color-error); }
|
|
4131
4191
|
.wf-datepicker-input--err:focus { box-shadow: 0 0 0 2px var(--wf-color-error-bg), 0 0 0 1px var(--wf-color-error); }
|
|
4192
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
4193
|
+
:where(.wf-datepicker-footer-btn) {}
|
|
4132
4194
|
|
|
4133
4195
|
/* weifuwu/components — Descriptions */
|
|
4134
4196
|
|
|
@@ -4281,6 +4343,8 @@ body.wf-dragging {
|
|
|
4281
4343
|
font-size: var(--wf-font-size-xs); /* 12px 同值 token 化——compact 预设可缩放 */
|
|
4282
4344
|
text-align: center;
|
|
4283
4345
|
}
|
|
4346
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
4347
|
+
:where(.wf-diffview-title) {}
|
|
4284
4348
|
|
|
4285
4349
|
/* weifuwu/components — Divider */
|
|
4286
4350
|
|
|
@@ -4475,6 +4539,16 @@ body.wf-dragging {
|
|
|
4475
4539
|
}
|
|
4476
4540
|
}
|
|
4477
4541
|
|
|
4542
|
+
/* weifuwu/components — DropZone 全区域拖放区(高亮面经组件内 el.style——零 CSS 态) */
|
|
4543
|
+
|
|
4544
|
+
/* 拖入中为容器默认外观(高亮由组件直接 el.style——不依赖 class 态) */
|
|
4545
|
+
|
|
4546
|
+
.wf-drop-zone--disabled {
|
|
4547
|
+
cursor: not-allowed;
|
|
4548
|
+
}
|
|
4549
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
4550
|
+
:where(.wf-drop-zone) {}
|
|
4551
|
+
|
|
4478
4552
|
/* weifuwu/components — Dropdown */
|
|
4479
4553
|
|
|
4480
4554
|
.wf-dropdown {
|
|
@@ -5281,6 +5355,8 @@ body.wf-dragging {
|
|
|
5281
5355
|
.wf-filepreview-name:hover {
|
|
5282
5356
|
color: var(--wf-color-text-secondary);
|
|
5283
5357
|
}
|
|
5358
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
5359
|
+
:where(.wf-filepreview-text) {}
|
|
5284
5360
|
|
|
5285
5361
|
/* weifuwu/components — FileTree(文件树浏览器:面包屑 + 列表/编辑态)
|
|
5286
5362
|
* 语义 token 化(design/style-professional-plan.md M1——旧 token 体系迁移):
|
|
@@ -5604,6 +5680,15 @@ body.wf-dragging {
|
|
|
5604
5680
|
border-radius: var(--wf-radius-xs);
|
|
5605
5681
|
transition: width var(--wf-dur-fast) var(--wf-ease-out);
|
|
5606
5682
|
}
|
|
5683
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
5684
|
+
:where(.wf-upload-input) {}
|
|
5685
|
+
|
|
5686
|
+
/* 拖入悬停高亮(2027-xx——--drag 类无规则真漏:拖拽态无视觉反馈——补 hover 同强度高亮) */
|
|
5687
|
+
.wf-upload-zone--drag {
|
|
5688
|
+
border-color: var(--wf-color-primary);
|
|
5689
|
+
background: var(--wf-color-bg);
|
|
5690
|
+
box-shadow: var(--wf-focus-ring);
|
|
5691
|
+
}
|
|
5607
5692
|
|
|
5608
5693
|
/* weifuwu/components — FloatButton 悬浮操作按钮 */
|
|
5609
5694
|
|
|
@@ -5724,6 +5809,8 @@ body.wf-dragging {
|
|
|
5724
5809
|
position: static;
|
|
5725
5810
|
box-shadow: var(--wf-shadow-md);
|
|
5726
5811
|
}
|
|
5812
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
5813
|
+
:where(.wf-float-group--open) {}
|
|
5727
5814
|
|
|
5728
5815
|
/* weifuwu/components — Form */
|
|
5729
5816
|
|
|
@@ -5863,6 +5950,19 @@ body.wf-dragging {
|
|
|
5863
5950
|
transition: transform var(--wf-dur-base) var(--wf-ease-out);
|
|
5864
5951
|
}
|
|
5865
5952
|
|
|
5953
|
+
/* 加载占位块(2026-09——placeholder:未就绪/失败——与 img 同尺寸——布局恒定) */
|
|
5954
|
+
.wf-image-placeholder {
|
|
5955
|
+
display: flex;
|
|
5956
|
+
align-items: center;
|
|
5957
|
+
justify-content: center;
|
|
5958
|
+
background: var(--wf-color-bg-tertiary);
|
|
5959
|
+
color: var(--wf-color-text-tertiary);
|
|
5960
|
+
font-size: var(--wf-font-size-xs);
|
|
5961
|
+
border-radius: var(--wf-radius-md);
|
|
5962
|
+
}
|
|
5963
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
5964
|
+
:where(.wf-image-placeholder-text) {}
|
|
5965
|
+
|
|
5866
5966
|
/* weifuwu/components — InView */
|
|
5867
5967
|
|
|
5868
5968
|
.wf-inview {
|
|
@@ -5888,6 +5988,9 @@ body.wf-dragging {
|
|
|
5888
5988
|
.wf-inview-placeholder::after {
|
|
5889
5989
|
content: '滚动到此处加载内容';
|
|
5890
5990
|
}
|
|
5991
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
5992
|
+
:where(.wf-inview--pending) {}
|
|
5993
|
+
:where(.wf-inview-pending) {}
|
|
5891
5994
|
|
|
5892
5995
|
/* weifuwu/components — InfiniteScroll */
|
|
5893
5996
|
|
|
@@ -6263,6 +6366,8 @@ body.wf-dragging {
|
|
|
6263
6366
|
padding: 4px;
|
|
6264
6367
|
}
|
|
6265
6368
|
}
|
|
6369
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
6370
|
+
:where(.wf-json-value) {}
|
|
6266
6371
|
|
|
6267
6372
|
/* weifuwu/components — JsonSchemaForm */
|
|
6268
6373
|
|
|
@@ -6439,6 +6544,8 @@ body.wf-dragging {
|
|
|
6439
6544
|
padding: 1px var(--wf-space-sm);
|
|
6440
6545
|
flex-shrink: 0;
|
|
6441
6546
|
}
|
|
6547
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
6548
|
+
:where(.wf-kanban-col-title) {}
|
|
6442
6549
|
|
|
6443
6550
|
/* weifuwu/components — Label(与 Input/Field 的 label 样式同源) */
|
|
6444
6551
|
|
|
@@ -6901,6 +7008,8 @@ body.wf-dragging {
|
|
|
6901
7008
|
.wf-md-editor-textarea {
|
|
6902
7009
|
width: 100%;
|
|
6903
7010
|
}
|
|
7011
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7012
|
+
:where(.wf-md-editor-preview) {}
|
|
6904
7013
|
|
|
6905
7014
|
.wf-math-frac {
|
|
6906
7015
|
display: inline-flex;
|
|
@@ -6914,6 +7023,12 @@ body.wf-dragging {
|
|
|
6914
7023
|
.wf-math-sqrt-radical { margin-right: 1px; }
|
|
6915
7024
|
.wf-math-sup { font-size: 0.75em; vertical-align: super; }
|
|
6916
7025
|
.wf-math-sub { font-size: 0.75em; vertical-align: sub; }
|
|
7026
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7027
|
+
:where(.wf-math-sqrt) {}
|
|
7028
|
+
:where(.wf-math-sqrt-body) {}
|
|
7029
|
+
:where(.wf-math-sum) {}
|
|
7030
|
+
:where(.wf-math-sum-symbol) {}
|
|
7031
|
+
:where(.wf-math-token) {}
|
|
6917
7032
|
|
|
6918
7033
|
/* weifuwu/components — Mentions */
|
|
6919
7034
|
|
|
@@ -7174,6 +7289,9 @@ body.wf-dragging {
|
|
|
7174
7289
|
from { opacity: 0; transform: translateY(calc(var(--wf-motion-sm) * -1)); }
|
|
7175
7290
|
to { opacity: 1; transform: translateY(0); }
|
|
7176
7291
|
}
|
|
7292
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7293
|
+
:where(.wf-menu-label) {}
|
|
7294
|
+
:where(.wf-menu-submenu-title--active) {}
|
|
7177
7295
|
|
|
7178
7296
|
/* weifuwu/components — Menubar */
|
|
7179
7297
|
|
|
@@ -7311,6 +7429,8 @@ body.wf-dragging {
|
|
|
7311
7429
|
gap: var(--wf-gap-xs);
|
|
7312
7430
|
align-items: center;
|
|
7313
7431
|
}
|
|
7432
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7433
|
+
:where(.wf-bubble-text) {}
|
|
7314
7434
|
|
|
7315
7435
|
/* weifuwu/components — Modal */
|
|
7316
7436
|
|
|
@@ -7438,6 +7558,50 @@ body.wf-dragging {
|
|
|
7438
7558
|
}
|
|
7439
7559
|
}
|
|
7440
7560
|
|
|
7561
|
+
/* weifuwu/components — NavBar 移动端顶栏(antd-mobile NavBar 对位) */
|
|
7562
|
+
|
|
7563
|
+
.wf-nav-bar {
|
|
7564
|
+
display: flex;
|
|
7565
|
+
align-items: center;
|
|
7566
|
+
gap: var(--wf-gap-xs);
|
|
7567
|
+
min-height: 48px;
|
|
7568
|
+
padding: 4px var(--wf-space-sm);
|
|
7569
|
+
background: var(--wf-color-bg-secondary);
|
|
7570
|
+
border-bottom: 1px solid var(--wf-color-border);
|
|
7571
|
+
}
|
|
7572
|
+
|
|
7573
|
+
/* sticky 常驻:滚动不丢导航入口(ap-topbar 实证)+ 刘海屏避让 */
|
|
7574
|
+
.wf-nav-bar--fixed {
|
|
7575
|
+
position: sticky;
|
|
7576
|
+
top: 0;
|
|
7577
|
+
z-index: var(--wf-z-sticky);
|
|
7578
|
+
padding-top: calc(4px + env(safe-area-inset-top, 0px));
|
|
7579
|
+
}
|
|
7580
|
+
|
|
7581
|
+
.wf-nav-bar-side {
|
|
7582
|
+
display: flex;
|
|
7583
|
+
align-items: center;
|
|
7584
|
+
gap: var(--wf-gap-xs);
|
|
7585
|
+
min-width: 0;
|
|
7586
|
+
flex-shrink: 0;
|
|
7587
|
+
white-space: nowrap;
|
|
7588
|
+
}
|
|
7589
|
+
|
|
7590
|
+
.wf-nav-bar-title {
|
|
7591
|
+
flex: 1;
|
|
7592
|
+
min-width: 0;
|
|
7593
|
+
text-align: center;
|
|
7594
|
+
font-size: var(--wf-font-size-base);
|
|
7595
|
+
font-weight: var(--wf-font-weight-semibold);
|
|
7596
|
+
white-space: nowrap;
|
|
7597
|
+
overflow: hidden;
|
|
7598
|
+
text-overflow: ellipsis;
|
|
7599
|
+
}
|
|
7600
|
+
|
|
7601
|
+
.wf-nav-bar-title--left {
|
|
7602
|
+
text-align: left;
|
|
7603
|
+
}
|
|
7604
|
+
|
|
7441
7605
|
/* weifuwu/components — NavMenu 顶部导航(shadcn NavigationMenu 对齐) */
|
|
7442
7606
|
|
|
7443
7607
|
.wf-navmenu {
|
|
@@ -7551,6 +7715,13 @@ body.wf-dragging {
|
|
|
7551
7715
|
box-shadow: var(--wf-surface-shadow);
|
|
7552
7716
|
border: var(--wf-border-width) solid var(--wf-color-border-light);
|
|
7553
7717
|
}
|
|
7718
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7719
|
+
:where(.wf-navmenu-label) {}
|
|
7720
|
+
:where(.wf-navmenu-nested) {}
|
|
7721
|
+
:where(.wf-navmenu-sub--nested) {}
|
|
7722
|
+
:where(.wf-navmenu-sub--open) {}
|
|
7723
|
+
:where(.wf-navmenu-sub-item--open) {}
|
|
7724
|
+
:where(.wf-navmenu-sub-label) {}
|
|
7554
7725
|
|
|
7555
7726
|
/* weifuwu/components — Notification */
|
|
7556
7727
|
|
|
@@ -7652,6 +7823,8 @@ body.wf-dragging {
|
|
|
7652
7823
|
box-shadow: var(--wf-focus-ring);
|
|
7653
7824
|
border-radius: var(--wf-radius-sm);
|
|
7654
7825
|
}
|
|
7826
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
7827
|
+
:where(.wf-notification-host) {}
|
|
7655
7828
|
|
|
7656
7829
|
/* weifuwu/components — PageHeader */
|
|
7657
7830
|
|
|
@@ -7977,6 +8150,10 @@ body.wf-dragging {
|
|
|
7977
8150
|
gap: var(--wf-gap-xs);
|
|
7978
8151
|
margin-top: var(--wf-space-xs);
|
|
7979
8152
|
}
|
|
8153
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8154
|
+
:where(.wf-popconfirm-cancel) {}
|
|
8155
|
+
:where(.wf-popconfirm-ok) {}
|
|
8156
|
+
:where(.wf-popconfirm-title-text) {}
|
|
7980
8157
|
|
|
7981
8158
|
/* weifuwu/components — Popover */
|
|
7982
8159
|
|
|
@@ -8048,6 +8225,9 @@ body.wf-dragging {
|
|
|
8048
8225
|
from { opacity: 0; }
|
|
8049
8226
|
to { opacity: 1; }
|
|
8050
8227
|
}
|
|
8228
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8229
|
+
:where(.wf-popover--enter) {}
|
|
8230
|
+
:where(.wf-popover-wrap--open) {}
|
|
8051
8231
|
|
|
8052
8232
|
/* weifuwu/components — ProgressBar */
|
|
8053
8233
|
|
|
@@ -8205,6 +8385,11 @@ body.wf-dragging {
|
|
|
8205
8385
|
word-break: break-word;
|
|
8206
8386
|
}
|
|
8207
8387
|
|
|
8388
|
+
/* weifuwu/components — QRCode */
|
|
8389
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8390
|
+
:where(.wf-qr) {}
|
|
8391
|
+
:where(.wf-qr-bg) {}
|
|
8392
|
+
|
|
8208
8393
|
/* weifuwu/components — RadioGroup */
|
|
8209
8394
|
|
|
8210
8395
|
.wf-radio-group {
|
|
@@ -8363,6 +8548,8 @@ body.wf-dragging {
|
|
|
8363
8548
|
height: 1em;
|
|
8364
8549
|
flex-shrink: 0;
|
|
8365
8550
|
}
|
|
8551
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8552
|
+
:where(.wf-rate-star--half) {}
|
|
8366
8553
|
|
|
8367
8554
|
/* weifuwu/components — ReasoningBlock(CoT 推理折叠展示) */
|
|
8368
8555
|
|
|
@@ -8429,6 +8616,9 @@ body.wf-dragging {
|
|
|
8429
8616
|
white-space: pre-wrap;
|
|
8430
8617
|
word-break: break-word;
|
|
8431
8618
|
}
|
|
8619
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8620
|
+
:where(.wf-reasoning--streaming) {}
|
|
8621
|
+
:where(.wf-reasoning-body--open) {}
|
|
8432
8622
|
|
|
8433
8623
|
/* weifuwu/components — RelationGraph(关系图谱:SVG 画布 + 图例)
|
|
8434
8624
|
* 语义 token 化(M1——旧 token 体系迁移:--wf-border/--wf-text* → --wf-color-*)。
|
|
@@ -8623,6 +8813,8 @@ body.wf-dragging {
|
|
|
8623
8813
|
.wf-scrollbar::-webkit-scrollbar-thumb:hover {
|
|
8624
8814
|
background: var(--wf-color-text-tertiary);
|
|
8625
8815
|
}
|
|
8816
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
8817
|
+
:where(.wf-scrollbar--always) {}
|
|
8626
8818
|
|
|
8627
8819
|
/* weifuwu/components — SearchInput */
|
|
8628
8820
|
|
|
@@ -8974,6 +9166,8 @@ body.wf-dragging {
|
|
|
8974
9166
|
align-items: center;
|
|
8975
9167
|
}
|
|
8976
9168
|
}
|
|
9169
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
9170
|
+
:where(.wf-select-menu) {}
|
|
8977
9171
|
|
|
8978
9172
|
/* weifuwu/components — SessionList(会话管理列表) */
|
|
8979
9173
|
|
|
@@ -9790,6 +9984,9 @@ body.wf-dragging {
|
|
|
9790
9984
|
border-radius: var(--wf-radius-xs);
|
|
9791
9985
|
pointer-events: none;
|
|
9792
9986
|
}
|
|
9987
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
9988
|
+
:where(.wf-slider-input--hi) {}
|
|
9989
|
+
:where(.wf-slider-input--lo) {}
|
|
9793
9990
|
|
|
9794
9991
|
.wf-sortable {
|
|
9795
9992
|
list-style: none;
|
|
@@ -9901,6 +10098,8 @@ body.wf-dragging {
|
|
|
9901
10098
|
outline: none;
|
|
9902
10099
|
box-shadow: var(--wf-shadow-md), var(--wf-focus-ring);
|
|
9903
10100
|
}
|
|
10101
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
10102
|
+
:where(.wf-stat-trend-label) {}
|
|
9904
10103
|
|
|
9905
10104
|
/* weifuwu/components — Steps */
|
|
9906
10105
|
|
|
@@ -10137,6 +10336,9 @@ body.wf-dragging {
|
|
|
10137
10336
|
line-height: 1.2;
|
|
10138
10337
|
white-space: nowrap;
|
|
10139
10338
|
}
|
|
10339
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
10340
|
+
:where(.wf-tab-bar-icon) {}
|
|
10341
|
+
:where(.wf-tab-bar-item--disabled) {}
|
|
10140
10342
|
|
|
10141
10343
|
/* weifuwu/components — Table */
|
|
10142
10344
|
|
|
@@ -10271,6 +10473,14 @@ body.wf-dragging {
|
|
|
10271
10473
|
outline: none;
|
|
10272
10474
|
box-shadow: var(--wf-focus-ring);
|
|
10273
10475
|
}
|
|
10476
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
10477
|
+
:where(.wf-input--table-edit) {}
|
|
10478
|
+
:where(.wf-table-tbody) {}
|
|
10479
|
+
:where(.wf-table-td--editable) {}
|
|
10480
|
+
:where(.wf-table-td--editing) {}
|
|
10481
|
+
:where(.wf-table-td--selection) {}
|
|
10482
|
+
:where(.wf-table-th--selection) {}
|
|
10483
|
+
:where(.wf-table-tr--loading) {}
|
|
10274
10484
|
|
|
10275
10485
|
/* weifuwu/components — Tabs */
|
|
10276
10486
|
|
|
@@ -10509,6 +10719,8 @@ body.wf-dragging {
|
|
|
10509
10719
|
padding: 4px 0;
|
|
10510
10720
|
}
|
|
10511
10721
|
.wf-tags-input::placeholder { color: var(--wf-color-text-tertiary); }
|
|
10722
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
10723
|
+
:where(.wf-tags-text) {}
|
|
10512
10724
|
|
|
10513
10725
|
/* weifuwu/components — Textarea */
|
|
10514
10726
|
|
|
@@ -11011,6 +11223,8 @@ body.wf-dragging {
|
|
|
11011
11223
|
font-size: var(--wf-font-size-xs);
|
|
11012
11224
|
margin-top: var(--wf-gap-xs);
|
|
11013
11225
|
}
|
|
11226
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
11227
|
+
:where(.wf-toolcall-body) {}
|
|
11014
11228
|
|
|
11015
11229
|
/* weifuwu/components — Tooltip */
|
|
11016
11230
|
|
|
@@ -11217,6 +11431,8 @@ body.wf-dragging {
|
|
|
11217
11431
|
.wf-tour-btn:hover {
|
|
11218
11432
|
filter: brightness(0.95);
|
|
11219
11433
|
}
|
|
11434
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
11435
|
+
:where(.wf-tour-layer) {}
|
|
11220
11436
|
|
|
11221
11437
|
/* weifuwu/components — Transfer */
|
|
11222
11438
|
|
|
@@ -11527,6 +11743,8 @@ body.wf-dragging {
|
|
|
11527
11743
|
font-size: var(--wf-font-size-sm);
|
|
11528
11744
|
text-align: center;
|
|
11529
11745
|
}
|
|
11746
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
11747
|
+
:where(.wf-tree-children) {}
|
|
11530
11748
|
|
|
11531
11749
|
.wf-treeselect {
|
|
11532
11750
|
position: relative;
|
|
@@ -11863,6 +12081,8 @@ body.wf-dragging {
|
|
|
11863
12081
|
outline: none;
|
|
11864
12082
|
box-shadow: var(--wf-focus-ring);
|
|
11865
12083
|
}
|
|
12084
|
+
/* ── 语义标记类(DOM 钩子——无样式:测试定位/用户扩展——:where 零优先级显式声明) ── */
|
|
12085
|
+
:where(.wf-virtual-table-th-label) {}
|
|
11866
12086
|
|
|
11867
12087
|
/* weifuwu/components — Watermark */
|
|
11868
12088
|
|
|
@@ -848,6 +848,15 @@ body.wf-dragging {
|
|
|
848
848
|
align-items: var(--wf-align, center);
|
|
849
849
|
gap: var(--wf-gap, var(--wf-gap-md));
|
|
850
850
|
}
|
|
851
|
+
|
|
852
|
+
.wf-justify-center {
|
|
853
|
+
display: flex;
|
|
854
|
+
justify-content: center;
|
|
855
|
+
}
|
|
856
|
+
:where(.wf-justify-center) {
|
|
857
|
+
align-items: var(--wf-align, center);
|
|
858
|
+
gap: var(--wf-gap, var(--wf-gap-md));
|
|
859
|
+
}
|
|
851
860
|
}
|
|
852
861
|
|
|
853
862
|
@layer layout {
|
|
@@ -1350,6 +1359,7 @@ body.wf-dragging {
|
|
|
1350
1359
|
.wf-padding-xl { padding: var(--wf-space-xl); }
|
|
1351
1360
|
|
|
1352
1361
|
/* ── padding: 轴 ── */
|
|
1362
|
+
.wf-padding-x-xs { padding-left: var(--wf-space-xs); padding-right: var(--wf-space-xs); }
|
|
1353
1363
|
.wf-padding-x-sm { padding-left: var(--wf-space-sm); padding-right: var(--wf-space-sm); }
|
|
1354
1364
|
.wf-padding-x-md { padding-left: var(--wf-space-md); padding-right: var(--wf-space-md); }
|
|
1355
1365
|
|
|
@@ -1384,6 +1394,9 @@ body.wf-dragging {
|
|
|
1384
1394
|
.wf-margin-left-sm { margin-left: var(--wf-space-sm); }
|
|
1385
1395
|
.wf-margin-x-auto { margin-left: auto; margin-right: auto; }
|
|
1386
1396
|
|
|
1397
|
+
/* ── margin: y 轴 ── */
|
|
1398
|
+
.wf-margin-y-xs { margin-top: var(--wf-space-xs); margin-bottom: var(--wf-space-xs); }
|
|
1399
|
+
|
|
1387
1400
|
/* ── gap:直接设置 gap 属性(不设 --wf-gap 变量——变量会继承污染子孙:
|
|
1388
1401
|
壳 root wf-gap-none 曾让 KPI grid 的 gap: var(--wf-gap) = 0 卡无间距) ── */
|
|
1389
1402
|
.wf-gap-none { gap: 0; }
|
|
@@ -1399,22 +1412,6 @@ body.wf-dragging {
|
|
|
1399
1412
|
.wf-height-full { height: 100%; }
|
|
1400
1413
|
}
|
|
1401
1414
|
|
|
1402
|
-
@layer utilities {
|
|
1403
|
-
/* hidden — 隐藏元素(响应式显隐唯一模式:`wf-hidden wf-flex@lg` 窄隐宽显) */
|
|
1404
|
-
.wf-hidden {
|
|
1405
|
-
display: none;
|
|
1406
|
-
}
|
|
1407
|
-
@media (min-width: 1024px) { .wf-hidden\@lg { display: none; } }
|
|
1408
|
-
|
|
1409
|
-
/* dim — 视觉淡化(运行中/历史态/次要操作) */
|
|
1410
|
-
.wf-dim {
|
|
1411
|
-
opacity: 0.7;
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
/* cursor — 交互指针(裸值词) */
|
|
1415
|
-
.wf-pointer { cursor: pointer; }
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
1415
|
@layer utilities {
|
|
1419
1416
|
/* block — 块级显示 */
|
|
1420
1417
|
.wf-block {
|
|
@@ -1435,6 +1432,28 @@ body.wf-dragging {
|
|
|
1435
1432
|
@media (min-width: 1024px) { .wf-flex\@lg { display: flex; } }
|
|
1436
1433
|
}
|
|
1437
1434
|
|
|
1435
|
+
@layer utilities {
|
|
1436
|
+
/* hidden — 隐藏元素。两种响应式组合:
|
|
1437
|
+
* `wf-hidden wf-flex@lg`(窄隐宽显——基础类无 !important,被 media 内 wf-flex@lg 覆盖)
|
|
1438
|
+
* `wf-flex wf-hidden@lg`(宽隐窄显——media 变体 !important,胜组件自身 display)
|
|
1439
|
+
* !important 原因(CHAT-UX 波次 2 L4):@layer 顺序下 utilities 永远输给 components
|
|
1440
|
+
* (@layer tokens,base,layout,utilities,components 顶层声明定死)——.wf-btn 的
|
|
1441
|
+
* display:inline-flex 无条件压过 hidden 变体——面板按钮桌面隐藏失效实证;
|
|
1442
|
+
* 源顺序洗牌无法修复(层叠顺序优先于源顺序)——!important 是唯一出路 */
|
|
1443
|
+
.wf-hidden {
|
|
1444
|
+
display: none;
|
|
1445
|
+
}
|
|
1446
|
+
@media (min-width: 1024px) { .wf-hidden\@lg { display: none !important; } }
|
|
1447
|
+
|
|
1448
|
+
/* dim — 视觉淡化(运行中/历史态/次要操作) */
|
|
1449
|
+
.wf-dim {
|
|
1450
|
+
opacity: 0.7;
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
/* cursor — 交互指针(裸值词) */
|
|
1454
|
+
.wf-pointer { cursor: pointer; }
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1438
1457
|
@layer layout {
|
|
1439
1458
|
/* popup — 浮层基类(usePopup.portal 自动附加;Modal/Drawer 等手动浮层可选用)
|
|
1440
1459
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* weifuwu/office/docx — docx ↔ ODES DocState 双向转换(前端/服务端通用——零依赖)
|
|
3
3
|
*
|
|
4
4
|
* 参考算法:office2json(unzip → XML 树 → 路径提取 w:body → w:p → w:r → w:t),
|
|
5
|
-
* 增强提取到 ODES IR
|
|
5
|
+
* 增强提取到 ODES IR():
|
|
6
6
|
* - 段落属性:pStyle → h1/h2/h3、jc → 对齐(裁剪:样式名映射子集)
|
|
7
7
|
* - 内联格式:rPr b/i/u → marks(区间)
|
|
8
8
|
* - 表格:w:tbl → Editor 表格 embed 快照(HTML 复用现有模型)
|