@xihan-ui/styles 1.0.0 → 2.0.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.
Files changed (171) hide show
  1. package/CHANGELOG.md +5146 -6
  2. package/README.md +22 -2
  3. package/component-tokens.d.ts +4212 -0
  4. package/component-tokens.js +2 -0
  5. package/components.tokens.json +80116 -0
  6. package/css/accordion.css +131 -75
  7. package/css/affix.css +16 -1
  8. package/css/alert.css +114 -67
  9. package/css/anchor.css +99 -27
  10. package/css/approval.css +461 -0
  11. package/css/avatar-group.css +14 -6
  12. package/css/avatar.css +33 -9
  13. package/css/back-top.css +103 -48
  14. package/css/badge.css +42 -14
  15. package/css/bar-code.css +62 -0
  16. package/css/breadcrumb.css +40 -21
  17. package/css/button-group.css +146 -24
  18. package/css/button.css +116 -99
  19. package/css/calendar-picker.css +448 -0
  20. package/css/calendar-range-picker.css +517 -0
  21. package/css/card.css +54 -77
  22. package/css/carousel.css +412 -68
  23. package/css/cascader.css +429 -246
  24. package/css/checkbox-group.css +225 -77
  25. package/css/checkbox.css +174 -37
  26. package/css/clipboard.css +266 -47
  27. package/css/code-view.css +279 -0
  28. package/css/collapsible.css +108 -63
  29. package/css/color-field.css +158 -0
  30. package/css/color-picker.css +172 -184
  31. package/css/color-slider.css +274 -0
  32. package/css/color-swatch-picker.css +243 -0
  33. package/css/color-swatch.css +35 -0
  34. package/css/combobox.css +267 -273
  35. package/css/command.css +399 -0
  36. package/css/context-menu.css +183 -108
  37. package/css/date-field.css +94 -121
  38. package/css/date-picker.css +486 -249
  39. package/css/date-range-picker.css +559 -0
  40. package/css/description.css +51 -0
  41. package/css/descriptions.css +133 -87
  42. package/css/dialog.css +247 -68
  43. package/css/diff-view.css +428 -0
  44. package/css/download-trigger.css +155 -46
  45. package/css/drawer.css +194 -111
  46. package/css/editable.css +172 -152
  47. package/css/empty-state.css +80 -11
  48. package/css/field-array.css +190 -0
  49. package/css/field.css +84 -31
  50. package/css/fieldset.css +51 -18
  51. package/css/file-upload.css +134 -36
  52. package/css/flex.css +20 -1
  53. package/css/float-button.css +238 -57
  54. package/css/floating-panel.css +173 -92
  55. package/css/focus.css +46 -0
  56. package/css/forced-colors.css +93 -0
  57. package/css/form.css +254 -77
  58. package/css/gradient-text.css +34 -10
  59. package/css/grid.css +516 -5
  60. package/css/heatmap.css +87 -29
  61. package/css/highlight.css +20 -5
  62. package/css/hover-card.css +97 -47
  63. package/css/icon-wrapper.css +15 -3
  64. package/css/icon.css +74 -8
  65. package/css/image-cropper.css +143 -29
  66. package/css/image-viewer.css +150 -89
  67. package/css/image.css +30 -1
  68. package/css/infinite-scroll.css +51 -1
  69. package/css/input-group.css +277 -0
  70. package/css/json-viewer.css +102 -45
  71. package/css/kbd.css +72 -0
  72. package/css/label.css +78 -0
  73. package/css/layers.css +5 -0
  74. package/css/layout.css +175 -31
  75. package/css/list.css +24 -3
  76. package/css/listbox.css +208 -67
  77. package/css/loading-bar.css +52 -3
  78. package/css/log.css +144 -9
  79. package/css/markdown-stream.css +149 -0
  80. package/css/marquee.css +27 -1
  81. package/css/masonry.css +7 -0
  82. package/css/matrix-code.css +67 -0
  83. package/css/mention.css +234 -152
  84. package/css/menu.css +180 -83
  85. package/css/menubar.css +204 -136
  86. package/css/message-feed.css +197 -0
  87. package/css/navigation-menu.css +144 -90
  88. package/css/notification.css +178 -100
  89. package/css/number-animation.css +7 -0
  90. package/css/number-field.css +120 -277
  91. package/css/overlay-arrow.css +12 -7
  92. package/css/page-header.css +99 -14
  93. package/css/pagination.css +175 -135
  94. package/css/password-input.css +222 -219
  95. package/css/pin-input.css +101 -67
  96. package/css/pointer.css +36 -0
  97. package/css/popconfirm.css +185 -94
  98. package/css/popover.css +121 -77
  99. package/css/progress.css +60 -12
  100. package/css/prompt-input.css +224 -0
  101. package/css/question-flow.css +513 -0
  102. package/css/radio-group.css +147 -30
  103. package/css/rating.css +193 -43
  104. package/css/reasoning.css +336 -0
  105. package/css/reset.css +84 -6
  106. package/css/resizable.css +237 -0
  107. package/css/scroll-area.css +68 -7
  108. package/css/scrollbar.css +47 -13
  109. package/css/segmented.css +94 -29
  110. package/css/select.css +288 -274
  111. package/css/separator.css +101 -1
  112. package/css/side-nav.css +133 -75
  113. package/css/signature-pad.css +74 -54
  114. package/css/skeleton.css +84 -11
  115. package/css/slider.css +132 -39
  116. package/css/sortable.css +198 -0
  117. package/css/spinner.css +126 -12
  118. package/css/splitter.css +29 -8
  119. package/css/statistic.css +55 -0
  120. package/css/steps.css +206 -72
  121. package/css/switch.css +268 -36
  122. package/css/table.css +695 -118
  123. package/css/tabs.css +604 -42
  124. package/css/tag-group.css +219 -0
  125. package/css/tag.css +118 -28
  126. package/css/tags-input.css +156 -274
  127. package/css/text-field.css +101 -249
  128. package/css/time-field.css +100 -128
  129. package/css/time-picker.css +323 -252
  130. package/css/time-range-picker.css +719 -0
  131. package/css/timeline.css +202 -68
  132. package/css/timer.css +56 -52
  133. package/css/timestamp.css +34 -0
  134. package/css/toast.css +373 -144
  135. package/css/toggle-group.css +309 -76
  136. package/css/toggle.css +116 -85
  137. package/css/tone.css +47 -0
  138. package/css/tool-call.css +421 -0
  139. package/css/toolbar.css +181 -33
  140. package/css/tooltip.css +107 -36
  141. package/css/tour.css +183 -152
  142. package/css/transfer.css +351 -138
  143. package/css/tree-select.css +323 -216
  144. package/css/tree.css +294 -62
  145. package/css/truncate.css +65 -0
  146. package/css/typography.css +228 -5
  147. package/css/undefined.css +10 -1
  148. package/css/virtualizer.css +9 -10
  149. package/css/visually-hidden.css +7 -0
  150. package/css/watermark.css +7 -0
  151. package/family/action-control.css +487 -0
  152. package/family/collection-item.css +721 -0
  153. package/family/field-chrome.css +298 -0
  154. package/family/motion.css +166 -0
  155. package/family/swatch.css +59 -0
  156. package/index.css +41705 -126
  157. package/index.unlayered.css +33692 -17339
  158. package/package.json +51 -17
  159. package/css/calendar.css +0 -367
  160. package/css/code-block.css +0 -91
  161. package/css/composer.css +0 -134
  162. package/css/countdown.css +0 -26
  163. package/css/dynamic-input.css +0 -220
  164. package/css/ellipsis.css +0 -52
  165. package/css/hotkeys.css +0 -90
  166. package/css/popselect.css +0 -391
  167. package/css/qr-code.css +0 -55
  168. package/css/result.css +0 -119
  169. package/css/space.css +0 -117
  170. package/css/thread.css +0 -120
  171. package/css/time.css +0 -25
package/css/thread.css DELETED
@@ -1,120 +0,0 @@
1
- @layer xihan.components {
2
- /* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
3
- [data-scope='thread'] {
4
- --xh-thread-skin: 1;
5
- }
6
-
7
- /* 自建定位上下文,作为绝对定位的回到底部按钮的参照系;
8
- block-size: 100% 让高度由外部决定,使滚动发生在内部。 */
9
- [data-scope='thread'][data-part='root'] {
10
- /* 组件内那几档层号只在自己人之间排序:建一个层叠上下文把它们关起来,
11
- 既不让页面上的层号插进来,也不让它们漏出去压住别人 */
12
- isolation: isolate;
13
-
14
- position: relative;
15
- display: flex;
16
- flex-direction: column;
17
- block-size: 100%;
18
- }
19
-
20
- /* 上面声明的 display 会盖掉 UA 的 [hidden]{display:none},这里补回 */
21
- [data-scope='thread'][data-part='root'][hidden] {
22
- display: none;
23
- }
24
-
25
- /* 滚动容器,粘底读的是它的 scrollTop / clientHeight / scrollHeight。
26
- min-block-size: 0 让弹性子项能被压缩从而触发溢出;
27
- overscroll-behavior: contain 阻止滚动量传给页面。 */
28
- [data-scope='thread'][data-part='viewport'] {
29
- flex: 1;
30
- min-block-size: 0;
31
- /* 逻辑属性 overflow-block 尚无可用实现,写物理轴 */
32
- overflow-y: auto;
33
- overscroll-behavior: contain;
34
- }
35
-
36
- /* 还在用原生滚动条的视口留一条空道,滚动条出现与消失时不推动文字。
37
- 带 data-xh-scrollbar 的容器已经把原生条藏成零宽,这条空道对它没有布局作用,排除掉 */
38
- [data-scope='thread'][data-part='viewport']:not([data-xh-scrollbar]) {
39
- scrollbar-gutter: stable;
40
- }
41
-
42
- /* 视口带 tabindex=0,需要焦点环;偏移取负画在内侧,避免被 root 裁掉 */
43
- [data-scope='thread'][data-part='viewport']:focus-visible {
44
- outline: var(--xh-ring-width) solid var(--xh-ring-focus);
45
- outline-offset: calc(-1 * var(--xh-ring-width));
46
- }
47
-
48
- /* 只定消息之间的竖向间距与上下留白,左右留白留给作者 */
49
- [data-scope='thread'][data-part='content'] {
50
- display: flex;
51
- flex-direction: column;
52
- gap: var(--xh-thread-content-gap, var(--xh-stack-gap-md));
53
- padding-block: var(--xh-thread-content-py, var(--xh-space-4));
54
- }
55
-
56
- [data-scope='thread'][data-part='content'][hidden] {
57
- display: none;
58
- }
59
-
60
- /* 浮在视口右下角,z-index 使其不受源序影响地盖在消息之上 */
61
- [data-scope='thread'][data-part='scroll-button'] {
62
- position: absolute;
63
- z-index: 1;
64
- display: inline-flex;
65
- align-items: center;
66
- justify-content: center;
67
- gap: var(--xh-thread-scroll-button-gap, var(--xh-control-gap-md));
68
- inset-block-end: var(--xh-thread-scroll-button-inset, var(--xh-space-4));
69
- inset-inline-end: var(--xh-thread-scroll-button-inset, var(--xh-space-4));
70
- min-inline-size: var(--xh-thread-scroll-button-h, var(--xh-control-h-md));
71
- block-size: var(--xh-thread-scroll-button-h, var(--xh-control-h-md));
72
- padding-inline: var(--xh-thread-scroll-button-px, var(--xh-control-px-md));
73
- border: var(--xh-stroke-thin) solid var(--xh-thread-scroll-button-border, var(--xh-border-control));
74
- border-radius: var(--xh-thread-scroll-button-radius, var(--xh-shape-pill));
75
- background: var(--xh-thread-scroll-button-bg, var(--xh-bg-surface));
76
- color: var(--xh-thread-scroll-button-fg, var(--xh-fg-default));
77
- box-shadow: var(--xh-thread-scroll-button-shadow, var(--xh-elevation-sheet));
78
- /* 按钮默认不继承页面字族,显式继承 */
79
- font-family: inherit;
80
- font-size: var(--xh-thread-scroll-button-font-size, var(--xh-text-label-size));
81
- font-weight: var(--xh-thread-scroll-button-font-weight, var(--xh-text-label-weight));
82
- line-height: var(--xh-leading-none);
83
- white-space: nowrap;
84
- cursor: pointer;
85
- user-select: none;
86
- transition: background var(--xh-motion-duration-micro) var(--xh-motion-ease-enter);
87
- }
88
-
89
- /* 连接层收起按钮时写 hidden 属性,上面的 display 会盖掉 UA 规则,这里补回 */
90
- [data-scope='thread'][data-part='scroll-button'][hidden] {
91
- display: none;
92
- }
93
-
94
- [data-scope='thread'][data-part='scroll-button']:hover {
95
- background: var(--xh-thread-scroll-button-bg-hover, var(--xh-bg-subtle-hover));
96
- }
97
-
98
- [data-scope='thread'][data-part='scroll-button']:active {
99
- background: var(--xh-thread-scroll-button-bg-active, var(--xh-bg-subtle-active));
100
- }
101
-
102
- [data-scope='thread'][data-part='scroll-button']:focus-visible {
103
- outline: var(--xh-ring-width) solid var(--xh-ring-focus);
104
- outline-offset: var(--xh-ring-offset);
105
- }
106
-
107
- /* 视觉隐藏但仍参与播报:用 clip-path 裁到不可见,不能用 display:none 或 visibility:hidden;
108
- white-space: nowrap 防止 1px 宽把文本挤成竖排。 */
109
- [data-scope='thread'][data-part='live-region'] {
110
- position: absolute;
111
- inline-size: 1px;
112
- block-size: 1px;
113
- padding: 0;
114
- margin: -1px;
115
- overflow: hidden;
116
- clip-path: inset(50%);
117
- white-space: nowrap;
118
- border: 0;
119
- }
120
- }
package/css/time.css DELETED
@@ -1,25 +0,0 @@
1
- @layer xihan.components {
2
- /* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
3
- [data-scope='time'] {
4
- --xh-time-skin: 1;
5
- }
6
-
7
- [data-scope='time'][data-part='root'] {
8
- color: var(--xh-time-fg, var(--xh-fg-default));
9
- /* 等宽数字:秒数跳动时后面的字符不会左右挪 */
10
- font-variant-numeric: tabular-nums;
11
- /* 一个时间戳不该被拆到两行去 */
12
- white-space: nowrap;
13
- }
14
-
15
- /* 相对说法是一句话不是一串数字,等宽数字反而把字距拉开 */
16
- [data-scope='time'][data-part='root'][data-relative] {
17
- font-variant-numeric: normal;
18
- }
19
-
20
- /* 没给时刻、或给了认不出的时刻:这时显示的是作者写在节点里的兜底文案,退成弱前景 */
21
- [data-scope='time'][data-part='root'][data-state='empty'],
22
- [data-scope='time'][data-part='root'][data-state='invalid'] {
23
- color: var(--xh-time-placeholder-fg, var(--xh-fg-muted));
24
- }
25
- }