@well-insight/ui 0.1.8 → 0.1.10

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 (322) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +3 -3
  3. package/README.zh-CN.md +3 -3
  4. package/dist/{Button-BZzV1X-d.js → Button-B6-YxpOQ.js} +1 -1
  5. package/dist/{Checkbox-BtgWgkHI.js → Checkbox-BvlOYFGs.js} +5 -5
  6. package/dist/{Pagination-C-F_ZDXr.js → Pagination-BU-1IY0E.js} +2 -2
  7. package/dist/accordion/style.css +164 -148
  8. package/dist/auto-complete/style.css +306 -282
  9. package/dist/avatar/style.css +228 -199
  10. package/dist/badge/style.css +272 -235
  11. package/dist/block-ui/style.css +164 -148
  12. package/dist/breadcrumb/style.css +164 -148
  13. package/dist/button/index.js +1 -1
  14. package/dist/button/style.css +731 -572
  15. package/dist/card/style.css +164 -148
  16. package/dist/carousel/style.css +200 -183
  17. package/dist/cascade-select/style.css +274 -256
  18. package/dist/checkbox/index.js +1 -1
  19. package/dist/checkbox/style.css +164 -148
  20. package/dist/chip/style.css +243 -220
  21. package/dist/command-menu/style.css +240 -222
  22. package/dist/components/Accordion/Accordion.vue.d.ts.map +1 -1
  23. package/dist/components/AutoComplete/AutoComplete.vue.d.ts.map +1 -1
  24. package/dist/components/AutoComplete/styles.css +142 -134
  25. package/dist/components/Avatar/Avatar.vue.d.ts.map +1 -1
  26. package/dist/components/Avatar/AvatarGroup.vue.d.ts.map +1 -1
  27. package/dist/components/Avatar/styles.css +64 -51
  28. package/dist/components/Badge/Badge.vue.d.ts.map +1 -1
  29. package/dist/components/Badge/styles.css +108 -87
  30. package/dist/components/BlockUI/BlockUI.vue.d.ts.map +1 -1
  31. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts.map +1 -1
  32. package/dist/components/Button/Button.vue.d.ts +1 -1
  33. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  34. package/dist/components/Button/ButtonGroup.vue.d.ts.map +1 -1
  35. package/dist/components/Button/styles.css +567 -424
  36. package/dist/components/Card/Card.vue.d.ts.map +1 -1
  37. package/dist/components/Carousel/Carousel.vue.d.ts.map +1 -1
  38. package/dist/components/Carousel/styles.css +36 -35
  39. package/dist/components/CascadeSelect/CascadeSelect.vue.d.ts.map +1 -1
  40. package/dist/components/CascadeSelect/styles.css +85 -83
  41. package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
  42. package/dist/components/Checkbox/CheckboxGroup.vue.d.ts.map +1 -1
  43. package/dist/components/Chip/Chip.vue.d.ts.map +1 -1
  44. package/dist/components/Chip/styles.css +79 -72
  45. package/dist/components/CommandMenu/CommandMenu.vue.d.ts.map +1 -1
  46. package/dist/components/CommandMenu/styles.css +59 -57
  47. package/dist/components/ConfigProvider/ConfigProvider.vue.d.ts.map +1 -1
  48. package/dist/components/ConfirmDialog/ConfirmDialog.vue.d.ts.map +1 -1
  49. package/dist/components/ConfirmDialog/styles.css +17 -16
  50. package/dist/components/ConfirmPopup/ConfirmPopup.vue.d.ts.map +1 -1
  51. package/dist/components/ConfirmPopup/styles.css +27 -26
  52. package/dist/components/ContextMenu/ContextMenu.vue.d.ts.map +1 -1
  53. package/dist/components/ContextMenu/ContextMenuNodes.vue.d.ts.map +1 -1
  54. package/dist/components/ContextMenu/index.d.ts +1 -1
  55. package/dist/components/ContextMenu/index.d.ts.map +1 -1
  56. package/dist/components/ContextMenu/styles.css +43 -37
  57. package/dist/components/ContextMenu/useContextMenu.d.ts.map +1 -1
  58. package/dist/components/DataView/DataView.vue.d.ts.map +1 -1
  59. package/dist/components/DatePicker/DatePicker.vue.d.ts.map +1 -1
  60. package/dist/components/DatePicker/styles.css +163 -139
  61. package/dist/components/Dialog/Dialog.vue.d.ts.map +1 -1
  62. package/dist/components/Dialog/styles.css +155 -150
  63. package/dist/components/Divider/Divider.vue.d.ts.map +1 -1
  64. package/dist/components/Dock/Dock.vue.d.ts.map +1 -1
  65. package/dist/components/Dock/styles.css +37 -32
  66. package/dist/components/Drawer/Drawer.vue.d.ts.map +1 -1
  67. package/dist/components/Drawer/styles.css +82 -80
  68. package/dist/components/Dropdown/Dropdown.vue.d.ts.map +1 -1
  69. package/dist/components/Dropdown/DropdownNodes.vue.d.ts.map +1 -1
  70. package/dist/components/Dropdown/styles.css +58 -57
  71. package/dist/components/Fieldset/Fieldset.vue.d.ts.map +1 -1
  72. package/dist/components/FileUpload/FileUpload.vue.d.ts +2 -2
  73. package/dist/components/FileUpload/FileUpload.vue.d.ts.map +1 -1
  74. package/dist/components/FileUpload/styles.css +238 -221
  75. package/dist/components/Flex/Flex.vue.d.ts.map +1 -1
  76. package/dist/components/Form/Form.vue.d.ts.map +1 -1
  77. package/dist/components/Form/FormItem.vue.d.ts.map +1 -1
  78. package/dist/components/Form/index.d.ts +2 -2
  79. package/dist/components/Form/index.d.ts.map +1 -1
  80. package/dist/components/Form/styles.css +46 -44
  81. package/dist/components/Gallery/Gallery.vue.d.ts.map +1 -1
  82. package/dist/components/Gallery/styles.css +42 -39
  83. package/dist/components/Grid/Grid.vue.d.ts.map +1 -1
  84. package/dist/components/Grid/GridItem.vue.d.ts.map +1 -1
  85. package/dist/components/Icon/Icon.vue.d.ts.map +1 -1
  86. package/dist/components/IconField/IconField.vue.d.ts.map +1 -1
  87. package/dist/components/Inplace/Inplace.vue.d.ts.map +1 -1
  88. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  89. package/dist/components/Input/styles.css +198 -191
  90. package/dist/components/InputColor/InputColor.vue.d.ts.map +1 -1
  91. package/dist/components/InputColor/styles.css +50 -48
  92. package/dist/components/InputNumber/InputNumber.vue.d.ts.map +1 -1
  93. package/dist/components/InputNumber/styles.css +90 -80
  94. package/dist/components/InputOtp/InputOtp.vue.d.ts.map +1 -1
  95. package/dist/components/InputPassword/InputPassword.vue.d.ts.map +1 -1
  96. package/dist/components/InputPassword/styles.css +130 -117
  97. package/dist/components/InputTags/InputTags.vue.d.ts.map +1 -1
  98. package/dist/components/InputTags/styles.css +51 -43
  99. package/dist/components/Knob/Knob.vue.d.ts.map +1 -1
  100. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  101. package/dist/components/Layout/Layout.vue.d.ts.map +1 -1
  102. package/dist/components/Layout/LayoutContent.vue.d.ts.map +1 -1
  103. package/dist/components/Layout/LayoutFooter.vue.d.ts.map +1 -1
  104. package/dist/components/Layout/LayoutHeader.vue.d.ts.map +1 -1
  105. package/dist/components/Layout/LayoutSider.vue.d.ts +1 -1
  106. package/dist/components/Layout/LayoutSider.vue.d.ts.map +1 -1
  107. package/dist/components/Layout/index.d.ts +2 -2
  108. package/dist/components/Layout/index.d.ts.map +1 -1
  109. package/dist/components/Layout/styles.css +310 -258
  110. package/dist/components/Layout/types.d.ts +30 -12
  111. package/dist/components/Layout/types.d.ts.map +1 -1
  112. package/dist/components/Listbox/Listbox.vue.d.ts.map +1 -1
  113. package/dist/components/Listbox/styles.css +61 -51
  114. package/dist/components/MegaMenu/MegaMenu.vue.d.ts.map +1 -1
  115. package/dist/components/MegaMenu/styles.css +60 -58
  116. package/dist/components/Menu/Menu.vue.d.ts.map +1 -1
  117. package/dist/components/Menu/MenuNodes.vue.d.ts.map +1 -1
  118. package/dist/components/Menu/styles.css +53 -47
  119. package/dist/components/Menubar/Menubar.vue.d.ts.map +1 -1
  120. package/dist/components/Menubar/styles.css +80 -70
  121. package/dist/components/Message/Message.vue.d.ts.map +1 -1
  122. package/dist/components/Message/index.d.ts +1 -1
  123. package/dist/components/Message/index.d.ts.map +1 -1
  124. package/dist/components/Message/message.d.ts +2 -2
  125. package/dist/components/Message/message.d.ts.map +1 -1
  126. package/dist/components/Message/messageState.d.ts.map +1 -1
  127. package/dist/components/Message/styles.css +193 -143
  128. package/dist/components/Message/types.d.ts +1 -1
  129. package/dist/components/Message/types.d.ts.map +1 -1
  130. package/dist/components/MeterGroup/MeterGroup.vue.d.ts.map +1 -1
  131. package/dist/components/MeterGroup/styles.css +36 -34
  132. package/dist/components/OrderList/OrderList.vue.d.ts.map +1 -1
  133. package/dist/components/Pagination/Pagination.vue.d.ts.map +1 -1
  134. package/dist/components/Pagination/styles.css +59 -57
  135. package/dist/components/Panel/Panel.vue.d.ts.map +1 -1
  136. package/dist/components/PickList/PickList.vue.d.ts.map +1 -1
  137. package/dist/components/Popover/Popover.vue.d.ts.map +1 -1
  138. package/dist/components/Popover/styles.css +46 -45
  139. package/dist/components/ProgressBar/ProgressBar.vue.d.ts.map +1 -1
  140. package/dist/components/ProgressSpinner/ProgressSpinner.vue.d.ts.map +1 -1
  141. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  142. package/dist/components/Radio/RadioGroup.vue.d.ts.map +1 -1
  143. package/dist/components/Rating/Rating.vue.d.ts.map +1 -1
  144. package/dist/components/ScrollTop/ScrollTop.vue.d.ts.map +1 -1
  145. package/dist/components/Scrollbar/Scrollbar.vue.d.ts.map +1 -1
  146. package/dist/components/Scrollbar/Thumb.vue.d.ts.map +1 -1
  147. package/dist/components/Scrollbar/constants.d.ts +2 -2
  148. package/dist/components/Scrollbar/constants.d.ts.map +1 -1
  149. package/dist/components/Scrollbar/styles.css +68 -59
  150. package/dist/components/Select/Select.vue.d.ts +1 -1
  151. package/dist/components/Select/Select.vue.d.ts.map +1 -1
  152. package/dist/components/Select/styles.css +293 -280
  153. package/dist/components/SelectButton/SelectButton.vue.d.ts.map +1 -1
  154. package/dist/components/SelectButton/styles.css +64 -51
  155. package/dist/components/Sidebar/Sidebar.vue.d.ts.map +1 -1
  156. package/dist/components/Sidebar/styles.css +40 -38
  157. package/dist/components/Skeleton/Skeleton.vue.d.ts.map +1 -1
  158. package/dist/components/Slider/Slider.vue.d.ts.map +1 -1
  159. package/dist/components/Slider/styles.css +111 -95
  160. package/dist/components/Space/Space.vue.d.ts.map +1 -1
  161. package/dist/components/SpeedDial/SpeedDial.vue.d.ts.map +1 -1
  162. package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
  163. package/dist/components/SplitButton/styles.css +105 -89
  164. package/dist/components/Splitter/Splitter.vue.d.ts.map +1 -1
  165. package/dist/components/Stepper/Stepper.vue.d.ts.map +1 -1
  166. package/dist/components/Stepper/styles.css +63 -58
  167. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  168. package/dist/components/Switch/styles.css +82 -53
  169. package/dist/components/Table/Table.vue.d.ts.map +1 -1
  170. package/dist/components/Tabs/Tabs.vue.d.ts.map +1 -1
  171. package/dist/components/Tag/Tag.vue.d.ts.map +1 -1
  172. package/dist/components/Terminal/Terminal.vue.d.ts.map +1 -1
  173. package/dist/components/Terminal/styles.css +46 -34
  174. package/dist/components/Textarea/Textarea.vue.d.ts.map +1 -1
  175. package/dist/components/Textarea/styles.css +69 -62
  176. package/dist/components/Textarea/types.d.ts +1 -1
  177. package/dist/components/Textarea/types.d.ts.map +1 -1
  178. package/dist/components/TieredMenu/TieredMenu.vue.d.ts.map +1 -1
  179. package/dist/components/TieredMenu/styles.css +69 -62
  180. package/dist/components/Timeline/Timeline.vue.d.ts.map +1 -1
  181. package/dist/components/Timeline/types.d.ts +1 -1
  182. package/dist/components/Timeline/types.d.ts.map +1 -1
  183. package/dist/components/Toast/Toast.vue.d.ts.map +1 -1
  184. package/dist/components/Toast/index.d.ts +1 -1
  185. package/dist/components/Toast/index.d.ts.map +1 -1
  186. package/dist/components/Toast/toast.d.ts +2 -2
  187. package/dist/components/Toast/toast.d.ts.map +1 -1
  188. package/dist/components/Toast/toastState.d.ts.map +1 -1
  189. package/dist/components/Toast/types.d.ts +1 -1
  190. package/dist/components/Toast/types.d.ts.map +1 -1
  191. package/dist/components/ToggleButton/ToggleButton.vue.d.ts.map +1 -1
  192. package/dist/components/Tooltip/Tooltip.vue.d.ts.map +1 -1
  193. package/dist/components/Tree/Tree.vue.d.ts.map +1 -1
  194. package/dist/components/Tree/TreeNodeItem.vue.d.ts.map +1 -1
  195. package/dist/components/Tree/context.d.ts +2 -2
  196. package/dist/components/Tree/context.d.ts.map +1 -1
  197. package/dist/components/Tree/index.d.ts +1 -1
  198. package/dist/components/Tree/index.d.ts.map +1 -1
  199. package/dist/components/TreeSelect/TreeSelect.vue.d.ts.map +1 -1
  200. package/dist/components/TreeSelect/styles.css +140 -138
  201. package/dist/components/TreeTable/TreeTable.vue.d.ts.map +1 -1
  202. package/dist/components/TreeTable/TreeTableRow.vue.d.ts.map +1 -1
  203. package/dist/components/VirtualScroller/VirtualScroller.vue.d.ts.map +1 -1
  204. package/dist/components/VirtualScroller/index.d.ts +1 -1
  205. package/dist/components/VirtualScroller/index.d.ts.map +1 -1
  206. package/dist/config-provider/style.css +890 -724
  207. package/dist/confirm-dialog/index.js +1 -1
  208. package/dist/confirm-dialog/style.css +904 -739
  209. package/dist/confirm-popup/index.js +1 -1
  210. package/dist/confirm-popup/style.css +759 -599
  211. package/dist/context-menu/style.css +207 -185
  212. package/dist/data-view/index.js +1 -1
  213. package/dist/data-view/style.css +223 -205
  214. package/dist/date-picker/index.js +2 -2
  215. package/dist/date-picker/style.css +326 -286
  216. package/dist/dialog/index.js +1 -1
  217. package/dist/dialog/style.css +887 -723
  218. package/dist/divider/style.css +164 -148
  219. package/dist/dock/style.css +210 -189
  220. package/dist/drawer/style.css +246 -228
  221. package/dist/dropdown/index.js +3 -3
  222. package/dist/dropdown/style.css +222 -205
  223. package/dist/fieldset/style.css +164 -148
  224. package/dist/file-upload/style.css +397 -364
  225. package/dist/flex/style.css +164 -148
  226. package/dist/float-label/style.css +164 -148
  227. package/dist/fluid/style.css +164 -148
  228. package/dist/form/style.css +210 -192
  229. package/dist/gallery/style.css +219 -200
  230. package/dist/grid/index.js +39 -39
  231. package/dist/grid/style.css +164 -148
  232. package/dist/icon/style.css +164 -148
  233. package/dist/icon-field/style.css +164 -148
  234. package/dist/index.d.ts +174 -174
  235. package/dist/index.d.ts.map +1 -1
  236. package/dist/index.js +1028 -976
  237. package/dist/inplace/style.css +164 -148
  238. package/dist/input/index.js +6 -7
  239. package/dist/input/style.css +361 -338
  240. package/dist/input-color/index.js +2 -2
  241. package/dist/input-color/style.css +214 -196
  242. package/dist/input-group/style.css +164 -148
  243. package/dist/input-number/index.js +15 -15
  244. package/dist/input-number/style.css +254 -228
  245. package/dist/input-otp/index.js +1 -1
  246. package/dist/input-otp/style.css +164 -148
  247. package/dist/input-password/index.js +16 -17
  248. package/dist/input-password/style.css +294 -265
  249. package/dist/input-tags/style.css +226 -202
  250. package/dist/knob/style.css +164 -148
  251. package/dist/label/style.css +164 -148
  252. package/dist/layout/index.js +135 -93
  253. package/dist/layout/style.css +534 -457
  254. package/dist/listbox/style.css +242 -216
  255. package/dist/locale/index.d.ts +1 -1
  256. package/dist/locale/index.d.ts.map +1 -1
  257. package/dist/mega-menu/style.css +241 -223
  258. package/dist/menu/style.css +217 -195
  259. package/dist/menubar/style.css +266 -240
  260. package/dist/message/style.css +357 -291
  261. package/dist/meter-group/style.css +200 -182
  262. package/dist/order-list/style.css +164 -148
  263. package/dist/pagination/index.js +1 -1
  264. package/dist/pagination/style.css +223 -205
  265. package/dist/panel/style.css +164 -148
  266. package/dist/pick-list/style.css +164 -148
  267. package/dist/popover/index.js +5 -5
  268. package/dist/popover/style.css +210 -193
  269. package/dist/progress-bar/style.css +164 -148
  270. package/dist/progress-spinner/style.css +164 -148
  271. package/dist/radio/index.js +4 -4
  272. package/dist/radio/style.css +164 -148
  273. package/dist/rating/style.css +164 -148
  274. package/dist/scroll-top/style.css +164 -148
  275. package/dist/scrollbar/style.css +232 -207
  276. package/dist/select/style.css +457 -428
  277. package/dist/select-button/style.css +228 -199
  278. package/dist/shared/Renderable.d.ts.map +1 -1
  279. package/dist/shared/config.d.ts.map +1 -1
  280. package/dist/shared/content.d.ts.map +1 -1
  281. package/dist/shared/overlayHost.d.ts.map +1 -1
  282. package/dist/shared/useModalOverlay.d.ts.map +1 -1
  283. package/dist/shared/vnode.d.ts.map +1 -1
  284. package/dist/sidebar/style.css +204 -186
  285. package/dist/skeleton/style.css +164 -148
  286. package/dist/slider/style.css +275 -243
  287. package/dist/space/style.css +164 -148
  288. package/dist/speed-dial/index.js +1 -1
  289. package/dist/speed-dial/style.css +164 -148
  290. package/dist/split-button/style.css +865 -690
  291. package/dist/splitter/style.css +164 -148
  292. package/dist/stepper/style.css +227 -206
  293. package/dist/styles/base.css +126 -125
  294. package/dist/styles.css +1 -1
  295. package/dist/switch/index.js +5 -5
  296. package/dist/switch/style.css +245 -200
  297. package/dist/table/index.js +3 -3
  298. package/dist/table/style.css +223 -205
  299. package/dist/tabs/style.css +164 -148
  300. package/dist/tag/style.css +164 -148
  301. package/dist/terminal/style.css +209 -181
  302. package/dist/textarea/index.js +11 -12
  303. package/dist/textarea/style.css +233 -210
  304. package/dist/theme/index.d.ts +5 -5
  305. package/dist/theme/index.d.ts.map +1 -1
  306. package/dist/theme/styles.css +38 -23
  307. package/dist/theme/tokens.d.ts +11 -0
  308. package/dist/theme/tokens.d.ts.map +1 -1
  309. package/dist/theme/useTheme.d.ts.map +1 -1
  310. package/dist/tiered-menu/style.css +254 -231
  311. package/dist/timeline/style.css +164 -148
  312. package/dist/toast/style.css +164 -148
  313. package/dist/toggle-button/style.css +164 -148
  314. package/dist/toolbar/style.css +164 -148
  315. package/dist/tooltip/style.css +164 -148
  316. package/dist/tree/index.js +11 -11
  317. package/dist/tree/style.css +164 -148
  318. package/dist/tree-select/index.js +1 -1
  319. package/dist/tree-select/style.css +297 -279
  320. package/dist/tree-table/style.css +164 -148
  321. package/dist/virtual-scroller/style.css +164 -148
  322. package/package.json +15 -11
@@ -16,12 +16,13 @@
16
16
  --wi-control-padding-x-small: 10px;
17
17
  --wi-control-padding-x-medium: 12px;
18
18
  --wi-control-padding-x-large: 14px;
19
- --wi-button-padding-x-small: 10px;
20
- --wi-button-padding-x-medium: 14px;
21
- --wi-button-padding-x-large: 18px;
19
+
22
20
  --wi-radius-control: 3px;
23
- --wi-focus-shadow: 0 0 0 2px color-mix(in srgb, var(--wi-color-primary) 20%, transparent);
24
- --wi-focus-shadow-danger: 0 0 0 2px color-mix(in srgb, var(--wi-color-danger) 20%, transparent);
21
+ --wi-border-width: 1px;
22
+ --wi-focus-shadow: 0 0 0 2px
23
+ color-mix(in srgb, var(--wi-color-primary) 20%, transparent);
24
+ --wi-focus-shadow-danger: 0 0 0 2px
25
+ color-mix(in srgb, var(--wi-color-danger) 20%, transparent);
25
26
  --wi-color-success: #159570;
26
27
  --wi-color-info: #2563eb;
27
28
  --wi-color-warning: #d97706;
@@ -39,10 +40,7 @@
39
40
  --wi-shadow-lg: 0 1rem 3rem rgb(15 23 42 / 0.25);
40
41
  --wi-shadow-sticky: 4px 0 8px color-mix(in srgb, #000 6%, transparent);
41
42
  --wi-shadow-sticky-end: -4px 0 8px color-mix(in srgb, #000 6%, transparent);
42
- --wi-terminal-bg: #111827;
43
- --wi-terminal-fg: #e5e7eb;
44
- --wi-terminal-prompt: #34d399;
45
- --wi-terminal-border: color-mix(in srgb, #fff 12%, transparent);
43
+
46
44
  /* Typography scale (component text, not control-height fonts) */
47
45
  --wi-font-size-xs: 0.75rem;
48
46
  --wi-font-size-sm: 0.8125rem;
@@ -56,8 +54,7 @@
56
54
  --wi-z-dropdown: calc(var(--wi-z-base) + 50);
57
55
  --wi-z-toast: calc(var(--wi-z-base) + 100);
58
56
  --wi-z-popper: 40;
59
- --wi-menu-min-width: 10rem;
60
- --wi-menu-min-width-lg: 12rem;
57
+
61
58
  --wi-control-affix-size: 2rem;
62
59
  --wi-control-affix-gap: 2.35rem;
63
60
  --wi-control-affix-padding: 2.5rem;
@@ -118,9 +115,6 @@
118
115
  --wi-control-padding-x-small: 8px;
119
116
  --wi-control-padding-x-medium: 10px;
120
117
  --wi-control-padding-x-large: 12px;
121
- --wi-button-padding-x-small: 8px;
122
- --wi-button-padding-x-medium: 12px;
123
- --wi-button-padding-x-large: 16px;
124
118
  }
125
119
 
126
120
  [data-wi-density="spacious"] {
@@ -139,9 +133,32 @@
139
133
  --wi-control-padding-x-small: 12px;
140
134
  --wi-control-padding-x-medium: 14px;
141
135
  --wi-control-padding-x-large: 16px;
142
- --wi-button-padding-x-small: 12px;
143
- --wi-button-padding-x-medium: 16px;
144
- --wi-button-padding-x-large: 20px;
136
+ }
137
+
138
+ [data-wi-density="compact"] .wi-layout-header {
139
+ --wi-layout-header-height: 48px;
140
+ }
141
+
142
+ [data-wi-density="compact"] .wi-layout-footer {
143
+ --wi-layout-footer-height: 40px;
144
+ }
145
+
146
+ [data-wi-density="compact"] .wi-layout-sider {
147
+ --wi-layout-sider-width: 240px;
148
+ --wi-layout-sider-collapsed-width: 44px;
149
+ }
150
+
151
+ [data-wi-density="spacious"] .wi-layout-header {
152
+ --wi-layout-header-height: 64px;
153
+ }
154
+
155
+ [data-wi-density="spacious"] .wi-layout-footer {
156
+ --wi-layout-footer-height: 56px;
157
+ }
158
+
159
+ [data-wi-density="spacious"] .wi-layout-sider {
160
+ --wi-layout-sider-width: 288px;
161
+ --wi-layout-sider-collapsed-width: 52px;
145
162
  }
146
163
 
147
164
  [data-theme="dark"] {
@@ -152,8 +169,10 @@
152
169
  --wi-color-text-muted: #94a3b8;
153
170
  --wi-color-border: #334155;
154
171
  --wi-color-focus-ring: #93c5fd;
155
- --wi-focus-shadow: 0 0 0 2px color-mix(in srgb, var(--wi-color-primary) 28%, transparent);
156
- --wi-focus-shadow-danger: 0 0 0 2px color-mix(in srgb, var(--wi-color-danger) 28%, transparent);
172
+ --wi-focus-shadow: 0 0 0 2px
173
+ color-mix(in srgb, var(--wi-color-primary) 28%, transparent);
174
+ --wi-focus-shadow-danger: 0 0 0 2px
175
+ color-mix(in srgb, var(--wi-color-danger) 28%, transparent);
157
176
  --wi-color-success: #5eead4;
158
177
  --wi-color-info: #93c5fd;
159
178
  --wi-color-warning: #fbbf24;
@@ -170,10 +189,6 @@
170
189
  --wi-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 0.55);
171
190
  --wi-shadow-sticky: 4px 0 8px color-mix(in srgb, #000 35%, transparent);
172
191
  --wi-shadow-sticky-end: -4px 0 8px color-mix(in srgb, #000 35%, transparent);
173
- --wi-terminal-bg: #020617;
174
- --wi-terminal-fg: #e2e8f0;
175
- --wi-terminal-prompt: #5eead4;
176
- --wi-terminal-border: color-mix(in srgb, #fff 14%, transparent);
177
192
  }
178
193
 
179
194
  @media (prefers-reduced-motion: reduce) {
@@ -186,8 +201,8 @@
186
201
  }
187
202
  }
188
203
 
189
- /* Shared tokens consumption, type, focus, and mixed selectors. */
190
-
204
+ /* Shared tokens consumption, type, focus, and mixed selectors. */
205
+
191
206
  .wi-button,
192
207
  .wi-input,
193
208
  .wi-card,
@@ -247,14 +262,15 @@
247
262
  .wi-fluid,
248
263
  .wi-terminal {
249
264
  font-family: var(--wi-font-sans);
250
- }
251
-
265
+ box-sizing: border-box;
266
+ }
267
+
252
268
  .wi-button:disabled,
253
269
  .wi-input:disabled {
254
270
  cursor: not-allowed;
255
271
  opacity: var(--wi-opacity-disabled);
256
- }
257
-
272
+ }
273
+
258
274
  .wi-input-field__meta,
259
275
  .wi-textarea-field__meta,
260
276
  .wi-password-field__meta {
@@ -262,14 +278,14 @@
262
278
  display: flex;
263
279
  gap: var(--wi-space-2);
264
280
  justify-content: space-between;
265
- }
266
-
281
+ }
282
+
267
283
  .wi-input-field__meta:not(:has(.wi-input-field__help)),
268
284
  .wi-textarea-field__meta:not(:has(.wi-textarea-field__help)),
269
285
  .wi-password-field__meta:not(:has(.wi-password__feedback)) {
270
286
  justify-content: flex-end;
271
- }
272
-
287
+ }
288
+
273
289
  .wi-input-field__count,
274
290
  .wi-textarea-field__count,
275
291
  .wi-password-field__count {
@@ -277,16 +293,16 @@
277
293
  flex: 0 0 auto;
278
294
  font-size: var(--wi-font-size-xs);
279
295
  margin-left: auto;
280
- }
281
-
296
+ }
297
+
282
298
  .wi-dropdown__item--parent,
283
299
  .wi-contextmenu__item--parent {
284
300
  align-items: center;
285
301
  display: flex;
286
302
  justify-content: space-between;
287
303
  width: 100%;
288
- }
289
-
304
+ }
305
+
290
306
  .wi-dropdown__icon,
291
307
  .wi-dropdown__caret,
292
308
  .wi-menu__icon,
@@ -294,13 +310,13 @@
294
310
  .wi-contextmenu__icon,
295
311
  .wi-contextmenu__caret {
296
312
  flex-shrink: 0;
297
- }
298
-
313
+ }
314
+
299
315
  .wi-dropdown__submenu-wrap,
300
316
  .wi-contextmenu__submenu-wrap {
301
317
  position: relative;
302
- }
303
-
318
+ }
319
+
304
320
  .wi-dropdown__submenu,
305
321
  .wi-contextmenu__submenu {
306
322
  background: var(--wi-color-surface);
@@ -313,54 +329,54 @@
313
329
  position: absolute;
314
330
  top: 0;
315
331
  z-index: 1;
316
- }
317
-
332
+ }
333
+
318
334
  .wi-fade-enter-active,
319
335
  .wi-fade-leave-active {
320
336
  transition: opacity var(--wi-motion-exit) var(--wi-motion-ease);
321
- }
322
-
337
+ }
338
+
323
339
  .wi-fade-enter-from,
324
340
  .wi-fade-leave-to {
325
341
  opacity: 0;
326
- }
327
-
342
+ }
343
+
328
344
  .wi-scale-fade-enter-active {
329
345
  transition:
330
346
  opacity var(--wi-motion-enter) var(--wi-motion-ease),
331
347
  transform var(--wi-motion-enter) var(--wi-motion-ease);
332
- }
333
-
348
+ }
349
+
334
350
  .wi-scale-fade-leave-active {
335
351
  transition:
336
352
  opacity var(--wi-motion-exit) var(--wi-motion-ease),
337
353
  transform var(--wi-motion-exit) var(--wi-motion-ease);
338
- }
339
-
354
+ }
355
+
340
356
  .wi-scale-fade-enter-from,
341
357
  .wi-scale-fade-leave-to {
342
358
  opacity: 0;
343
359
  transform: translateY(calc(var(--wi-motion-distance) * -1)) scale(0.98);
344
- }
345
-
360
+ }
361
+
346
362
  .wi-slide-fade-enter-active {
347
363
  transition:
348
364
  opacity var(--wi-motion-enter) var(--wi-motion-ease),
349
365
  transform var(--wi-motion-enter) var(--wi-motion-ease);
350
- }
351
-
366
+ }
367
+
352
368
  .wi-slide-fade-leave-active {
353
369
  transition:
354
370
  opacity var(--wi-motion-exit) var(--wi-motion-ease),
355
371
  transform var(--wi-motion-exit) var(--wi-motion-ease);
356
- }
357
-
372
+ }
373
+
358
374
  .wi-slide-fade-enter-from,
359
375
  .wi-slide-fade-leave-to {
360
376
  opacity: 0;
361
377
  transform: translateY(calc(var(--wi-motion-distance) * -1));
362
- }
363
-
378
+ }
379
+
364
380
  .wi-checkbox,
365
381
  .wi-radio,
366
382
  .wi-switch {
@@ -372,21 +388,21 @@
372
388
  gap: var(--wi-space-2);
373
389
  /* 避免绝对定位 input 挂到上层 WiScrollbar,聚焦时把滚动容器拽回顶部 */
374
390
  position: relative;
375
- }
376
-
391
+ }
392
+
377
393
  .wi-checkbox--disabled,
378
394
  .wi-radio--disabled,
379
395
  .wi-switch--disabled {
380
396
  color: var(--wi-color-text-muted);
381
397
  cursor: not-allowed;
382
398
  opacity: var(--wi-opacity-disabled);
383
- }
384
-
399
+ }
400
+
385
401
  .wi-checkbox--invalid .wi-checkbox__control,
386
402
  .wi-radio--invalid .wi-radio__control {
387
403
  border-color: var(--wi-color-danger);
388
- }
389
-
404
+ }
405
+
390
406
  .wi-checkbox__input,
391
407
  .wi-radio__input,
392
408
  .wi-switch__input {
@@ -399,8 +415,8 @@
399
415
  position: absolute;
400
416
  white-space: nowrap;
401
417
  width: 1px;
402
- }
403
-
418
+ }
419
+
404
420
  .wi-checkbox__control,
405
421
  .wi-radio__control {
406
422
  align-items: center;
@@ -414,27 +430,27 @@
414
430
  background-color var(--wi-motion-fast) var(--wi-motion-ease),
415
431
  border-color var(--wi-motion-fast) var(--wi-motion-ease);
416
432
  width: 1.125rem;
417
- }
418
-
433
+ }
434
+
419
435
  .wi-checkbox__input:checked + .wi-checkbox__control,
420
436
  .wi-radio__input:checked + .wi-radio__control {
421
437
  background: var(--wi-color-primary);
422
438
  border-color: var(--wi-color-primary);
423
- }
424
-
439
+ }
440
+
425
441
  .wi-checkbox__input:focus-visible + .wi-checkbox__control,
426
442
  .wi-radio__input:focus-visible + .wi-radio__control,
427
443
  .wi-switch__input:focus-visible + .wi-switch__track {
428
444
  box-shadow: var(--wi-focus-shadow);
429
445
  outline: none;
430
- }
431
-
446
+ }
447
+
432
448
  .wi-checkbox__label,
433
449
  .wi-radio__label,
434
450
  .wi-switch__label {
435
451
  font-size: var(--wi-font-size-md);
436
- }
437
-
452
+ }
453
+
438
454
  .wi-textarea-field,
439
455
  .wi-select-field {
440
456
  display: grid;
@@ -444,31 +460,31 @@
444
460
  min-width: var(--wi-menu-min-width);
445
461
  position: relative;
446
462
  width: fit-content;
447
- }
448
-
463
+ }
464
+
449
465
  .wi-textarea-field--fluid,
450
466
  .wi-select-field--fluid {
451
467
  width: 100%;
452
- }
453
-
468
+ }
469
+
454
470
  .wi-textarea-field__label,
455
471
  .wi-select-field__label {
456
472
  color: var(--wi-color-text);
457
473
  font-size: var(--wi-font-size-md);
458
474
  font-weight: 600;
459
- }
460
-
475
+ }
476
+
461
477
  .wi-textarea-field__help,
462
478
  .wi-select-field__help {
463
479
  color: var(--wi-color-text-muted);
464
480
  font-size: var(--wi-font-size-xs);
465
- }
466
-
481
+ }
482
+
467
483
  .wi-textarea-field__help--error,
468
484
  .wi-select-field__help--error {
469
485
  color: var(--wi-color-danger);
470
- }
471
-
486
+ }
487
+
472
488
  .wi-textarea,
473
489
  .wi-select {
474
490
  background: var(--wi-color-surface);
@@ -481,55 +497,55 @@
481
497
  box-shadow var(--wi-motion-fast) var(--wi-motion-ease),
482
498
  background-color var(--wi-motion-fast) var(--wi-motion-ease);
483
499
  width: 100%;
484
- }
485
-
500
+ }
501
+
486
502
  .wi-textarea--invalid:focus-visible,
487
503
  .wi-textarea--error:focus-visible,
488
504
  .wi-select--error.wi-select--open,
489
505
  .wi-select--error:focus-visible {
490
506
  border-color: var(--wi-color-danger);
491
507
  box-shadow: var(--wi-focus-shadow-danger);
492
- }
493
-
508
+ }
509
+
494
510
  .wi-textarea:disabled,
495
511
  .wi-select:disabled,
496
512
  .wi-select--disabled {
497
513
  cursor: not-allowed;
498
514
  opacity: var(--wi-opacity-disabled);
499
- }
500
-
515
+ }
516
+
501
517
  .wi-icon-field--left :is(.wi-input, .wi-password__input, .wi-inputnumber__input, input) {
502
518
  padding-left: 2.5rem;
503
- }
504
-
519
+ }
520
+
505
521
  .wi-icon-field--right :is(.wi-input, .wi-password__input, .wi-inputnumber__input, input) {
506
522
  padding-right: var(--wi-control-affix-padding);
507
- }
508
-
523
+ }
524
+
509
525
  .wi-inputgroup > .wi-input,
510
526
  .wi-inputgroup > .wi-input-field,
511
527
  .wi-inputgroup > .wi-password-field,
512
528
  .wi-inputgroup > .wi-inputnumber-field {
513
529
  flex: 1 1 auto;
514
530
  min-width: 0;
515
- }
516
-
531
+ }
532
+
517
533
  .wi-inputgroup > .wi-input-field,
518
534
  .wi-inputgroup > .wi-password-field,
519
535
  .wi-inputgroup > .wi-inputnumber-field {
520
536
  display: flex;
521
537
  flex-direction: column;
522
538
  gap: 0;
523
- }
524
-
539
+ }
540
+
525
541
  .wi-inputgroup > .wi-input,
526
542
  .wi-inputgroup .wi-input,
527
543
  .wi-inputgroup .wi-password__input,
528
544
  .wi-inputgroup .wi-inputnumber__input {
529
545
  border-radius: 0;
530
546
  width: 100%;
531
- }
532
-
547
+ }
548
+
533
549
  .wi-inputgroup > :first-child.wi-input,
534
550
  .wi-inputgroup > :first-child .wi-input,
535
551
  .wi-inputgroup > :first-child .wi-password__input,
@@ -537,8 +553,8 @@
537
553
  .wi-inputgroup > :first-child.wi-inputgroup-addon {
538
554
  border-bottom-left-radius: var(--wi-radius-control);
539
555
  border-top-left-radius: var(--wi-radius-control);
540
- }
541
-
556
+ }
557
+
542
558
  .wi-inputgroup > :last-child.wi-input,
543
559
  .wi-inputgroup > :last-child .wi-input,
544
560
  .wi-inputgroup > :last-child .wi-password__input,
@@ -546,32 +562,32 @@
546
562
  .wi-inputgroup > :last-child.wi-inputgroup-addon {
547
563
  border-bottom-right-radius: var(--wi-radius-control);
548
564
  border-top-right-radius: var(--wi-radius-control);
549
- }
550
-
565
+ }
566
+
551
567
  .wi-inputgroup > .wi-inputgroup-addon + .wi-input,
552
568
  .wi-inputgroup > .wi-inputgroup-addon + .wi-input-field .wi-input,
553
569
  .wi-inputgroup > .wi-input + .wi-inputgroup-addon,
554
570
  .wi-inputgroup > .wi-input-field + .wi-inputgroup-addon {
555
571
  margin-left: -1px;
556
- }
557
-
572
+ }
573
+
558
574
  .wi-layout__scrollbar > .wi-scrollbar__wrap {
559
575
  height: 100%;
560
576
  overflow-x: hidden;
561
- }
562
-
577
+ }
578
+
563
579
  .wi-layout-sider__scrollbar > .wi-scrollbar__wrap {
564
580
  height: 100%;
565
581
  overflow-x: hidden;
566
- }
567
-
582
+ }
583
+
568
584
  .wi-menu__item--selected,
569
585
  .wi-menubar__trigger--selected,
570
586
  .wi-menubar__subitem--selected {
571
587
  background: color-mix(in srgb, var(--wi-color-primary) 12%, var(--wi-color-surface));
572
588
  color: var(--wi-color-primary);
573
- }
574
-
589
+ }
590
+
575
591
  .wi-orderlist__btn,
576
592
  .wi-picklist__btn {
577
593
  align-items: center;
@@ -587,25 +603,25 @@
587
603
  min-height: var(--wi-control-height-small, 1.75rem);
588
604
  min-width: var(--wi-control-affix-size);
589
605
  padding: var(--wi-space-1) var(--wi-space-2);
590
- }
591
-
606
+ }
607
+
592
608
  .wi-orderlist__btn:hover,
593
609
  .wi-picklist__btn:hover {
594
610
  border-color: var(--wi-color-primary);
595
611
  color: var(--wi-color-primary);
596
- }
597
-
612
+ }
613
+
598
614
  .wi-orderlist__btn:focus-visible,
599
615
  .wi-picklist__btn:focus-visible {
600
616
  border-color: var(--wi-color-primary);
601
617
  box-shadow: var(--wi-focus-shadow);
602
618
  outline: none;
603
- }
604
-
619
+ }
620
+
605
621
  .wi-picklist__btn .wi-icon + .wi-icon {
606
622
  margin-left: -0.35rem;
607
- }
608
-
623
+ }
624
+
609
625
  .wi-orderlist__list,
610
626
  .wi-picklist__list {
611
627
  background: var(--wi-color-surface);
@@ -619,33 +635,33 @@
619
635
  min-width: var(--wi-menu-min-width);
620
636
  overflow: auto;
621
637
  padding: var(--wi-space-1);
622
- }
623
-
638
+ }
639
+
624
640
  .wi-orderlist__item,
625
641
  .wi-picklist__item {
626
642
  border-radius: var(--wi-radius-sm);
627
643
  cursor: pointer;
628
644
  padding: var(--wi-space-2) var(--wi-space-3);
629
- }
630
-
645
+ }
646
+
631
647
  .wi-orderlist__item:hover,
632
648
  .wi-picklist__item:hover {
633
649
  background: color-mix(in srgb, var(--wi-color-primary) 8%, var(--wi-color-surface));
634
- }
635
-
650
+ }
651
+
636
652
  .wi-orderlist__item:focus-visible,
637
653
  .wi-picklist__item:focus-visible {
638
654
  box-shadow: var(--wi-focus-shadow);
639
655
  outline: none;
640
- }
641
-
656
+ }
657
+
642
658
  .wi-orderlist__item--selected,
643
659
  .wi-picklist__item--selected {
644
660
  background: color-mix(in srgb, var(--wi-color-primary) 14%, var(--wi-color-surface));
645
661
  color: var(--wi-color-primary);
646
662
  font-weight: 600;
647
- }
648
-
663
+ }
664
+
649
665
  .wi-carousel__nav,
650
666
  .wi-gallery__nav {
651
667
  background: var(--wi-color-surface);
@@ -657,14 +673,14 @@
657
673
  font: inherit;
658
674
  height: var(--wi-control-affix-size);
659
675
  width: var(--wi-control-affix-size);
660
- }
661
-
676
+ }
677
+
662
678
  .wi-carousel__nav:disabled,
663
679
  .wi-gallery__nav:disabled {
664
680
  cursor: not-allowed;
665
681
  opacity: 0.4;
666
- }
667
-
682
+ }
683
+
668
684
  /* Shared Naive-like hover/focus for remaining form triggers */
669
685
  .wi-inputnumber__input:hover:not(:disabled):not(:focus),
670
686
  .wi-password__input:hover:not(:disabled):not(:focus),
@@ -677,8 +693,8 @@
677
693
  .wi-togglebutton:hover:not(:disabled):not(.wi-togglebutton--checked),
678
694
  .wi-inplace__display:hover {
679
695
  border-color: var(--wi-color-primary-hover);
680
- }
681
-
696
+ }
697
+
682
698
  .wi-inputnumber__input:focus-visible,
683
699
  .wi-password__input:focus-visible,
684
700
  .wi-datepicker__input:focus-visible,
@@ -696,34 +712,34 @@
696
712
  border-color: var(--wi-color-primary-hover);
697
713
  box-shadow: var(--wi-focus-shadow);
698
714
  outline: none;
699
- }
700
-
715
+ }
716
+
701
717
  .wi-inputnumber--invalid .wi-inputnumber__input:focus-visible,
702
718
  .wi-password--invalid .wi-password__input:focus-visible,
703
719
  .wi-datepicker--invalid .wi-datepicker__input:focus-visible {
704
720
  border-color: var(--wi-color-danger);
705
721
  box-shadow: var(--wi-focus-shadow-danger);
706
- }
707
-
722
+ }
723
+
708
724
  .wi-checkbox-group,
709
725
  .wi-radio-group {
710
726
  display: flex;
711
727
  flex-wrap: wrap;
712
728
  gap: var(--wi-space-3);
713
- }
714
-
729
+ }
730
+
715
731
  .wi-checkbox--small .wi-checkbox__control,
716
732
  .wi-radio--small .wi-radio__control {
717
733
  height: 0.95rem;
718
734
  width: 0.95rem;
719
- }
720
-
735
+ }
736
+
721
737
  .wi-checkbox--large .wi-checkbox__control,
722
738
  .wi-radio--large .wi-radio__control {
723
739
  height: 1.35rem;
724
740
  width: 1.35rem;
725
- }
726
-
741
+ }
742
+
727
743
  .wi-inputnumber__clear,
728
744
  .wi-autocomplete__clear {
729
745
  background: transparent;
@@ -732,499 +748,642 @@
732
748
  cursor: pointer;
733
749
  font: inherit;
734
750
  line-height: 1;
751
+ }
752
+
753
+ .wi-button {
754
+ --wi-button-padding-x-small: var(--wi-control-padding-x-small);
755
+ --wi-button-padding-x-medium: calc(
756
+ var(--wi-control-padding-x-medium) + var(--wi-space-1)
757
+ );
758
+ --wi-button-padding-x-large: calc(
759
+ var(--wi-control-padding-x-large) + var(--wi-space-1)
760
+ );
761
+ --wi-button-icon-stack-min-height: 3.25rem;
762
+ --wi-button-badge-min-width: 1.15rem;
763
+ --wi-button-spinner-size: 0.875rem;
764
+ --wi-button-bg: var(--wi-color-primary);
765
+ --wi-button-fg: var(--wi-color-on-emphasis);
766
+ --wi-button-border: var(--wi-color-primary);
767
+ --wi-button-hover-bg: var(--wi-color-primary-hover);
768
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
769
+ --wi-button-hover-border: var(--wi-color-primary-hover);
770
+ --wi-button-active-bg: color-mix(
771
+ in srgb,
772
+ var(--wi-color-primary) 82%,
773
+ black
774
+ );
775
+ align-items: center;
776
+ background: var(--wi-button-bg);
777
+ border: 1px solid var(--wi-button-border);
778
+ border-radius: var(--wi-radius-control);
779
+ color: var(--wi-button-fg);
780
+ cursor: pointer;
781
+ display: inline-flex;
782
+ flex-direction: row;
783
+ font-size: var(--wi-control-font-medium);
784
+ font-weight: 600;
785
+ gap: var(--wi-space-2);
786
+ justify-content: center;
787
+ line-height: 1;
788
+ min-height: var(--wi-control-height-medium);
789
+ padding: 0 var(--wi-button-padding-x-medium);
790
+ position: relative;
791
+ transition:
792
+ background-color var(--wi-motion-fast) var(--wi-motion-ease),
793
+ border-color var(--wi-motion-fast) var(--wi-motion-ease),
794
+ color var(--wi-motion-fast) var(--wi-motion-ease),
795
+ box-shadow var(--wi-motion-fast) var(--wi-motion-ease);
796
+ vertical-align: middle;
797
+ white-space: nowrap;
798
+ }
799
+
800
+ .wi-button:hover:not(:disabled) {
801
+ background: var(--wi-button-hover-bg);
802
+ border-color: var(--wi-button-hover-border);
803
+ color: var(--wi-button-hover-fg);
804
+ }
805
+
806
+ .wi-button:active:not(:disabled) {
807
+ background: var(--wi-button-active-bg);
808
+ }
809
+
810
+ /* Naive-style focus: soft glow, not outline-offset ring */
811
+ .wi-button:focus {
812
+ outline: none;
813
+ }
814
+
815
+ .wi-button:focus-visible {
816
+ box-shadow: var(--wi-focus-shadow);
817
+ outline: none;
818
+ }
819
+
820
+ .wi-button--primary {
821
+ --wi-button-bg: var(--wi-color-primary);
822
+ --wi-button-fg: var(--wi-color-on-emphasis);
823
+ --wi-button-border: var(--wi-color-primary);
824
+ --wi-button-hover-bg: var(--wi-color-primary-hover);
825
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
826
+ --wi-button-hover-border: var(--wi-color-primary-hover);
827
+ --wi-button-active-bg: color-mix(
828
+ in srgb,
829
+ var(--wi-color-primary) 82%,
830
+ black
831
+ );
832
+ }
833
+
834
+ .wi-button--secondary {
835
+ --wi-button-bg: color-mix(
836
+ in srgb,
837
+ var(--wi-color-text-muted) 16%,
838
+ var(--wi-color-surface)
839
+ );
840
+ --wi-button-fg: var(--wi-color-text);
841
+ --wi-button-border: transparent;
842
+ --wi-button-hover-bg: color-mix(
843
+ in srgb,
844
+ var(--wi-color-text-muted) 24%,
845
+ var(--wi-color-surface)
846
+ );
847
+ --wi-button-hover-fg: var(--wi-color-text);
848
+ --wi-button-hover-border: transparent;
849
+ --wi-button-active-bg: color-mix(
850
+ in srgb,
851
+ var(--wi-color-text-muted) 32%,
852
+ var(--wi-color-surface)
853
+ );
854
+ }
855
+
856
+ .wi-button--success {
857
+ --wi-button-bg: var(--wi-color-success);
858
+ --wi-button-fg: var(--wi-color-on-emphasis);
859
+ --wi-button-border: var(--wi-color-success);
860
+ --wi-button-hover-bg: color-mix(
861
+ in srgb,
862
+ var(--wi-color-success) 85%,
863
+ black
864
+ );
865
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
866
+ --wi-button-hover-border: color-mix(
867
+ in srgb,
868
+ var(--wi-color-success) 85%,
869
+ black
870
+ );
871
+ --wi-button-active-bg: color-mix(
872
+ in srgb,
873
+ var(--wi-color-success) 75%,
874
+ black
875
+ );
876
+ }
877
+
878
+ .wi-button--info {
879
+ --wi-button-bg: var(--wi-color-info);
880
+ --wi-button-fg: var(--wi-color-on-emphasis);
881
+ --wi-button-border: var(--wi-color-info);
882
+ --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-info) 85%, black);
883
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
884
+ --wi-button-hover-border: color-mix(
885
+ in srgb,
886
+ var(--wi-color-info) 85%,
887
+ black
888
+ );
889
+ --wi-button-active-bg: color-mix(in srgb, var(--wi-color-info) 75%, black);
890
+ }
891
+
892
+ .wi-button--warn {
893
+ --wi-button-bg: var(--wi-color-warn);
894
+ --wi-button-fg: var(--wi-color-on-emphasis);
895
+ --wi-button-border: var(--wi-color-warn);
896
+ --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-warn) 85%, black);
897
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
898
+ --wi-button-hover-border: color-mix(
899
+ in srgb,
900
+ var(--wi-color-warn) 85%,
901
+ black
902
+ );
903
+ --wi-button-active-bg: color-mix(in srgb, var(--wi-color-warn) 75%, black);
904
+ }
905
+
906
+ .wi-button--help {
907
+ --wi-button-bg: var(--wi-color-help);
908
+ --wi-button-fg: var(--wi-color-on-emphasis);
909
+ --wi-button-border: var(--wi-color-help);
910
+ --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-help) 85%, black);
911
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
912
+ --wi-button-hover-border: color-mix(
913
+ in srgb,
914
+ var(--wi-color-help) 85%,
915
+ black
916
+ );
917
+ --wi-button-active-bg: color-mix(in srgb, var(--wi-color-help) 75%, black);
918
+ }
919
+
920
+ .wi-button--danger {
921
+ --wi-button-bg: var(--wi-color-danger);
922
+ --wi-button-fg: var(--wi-color-on-emphasis);
923
+ --wi-button-border: var(--wi-color-danger);
924
+ --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-danger) 85%, black);
925
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
926
+ --wi-button-hover-border: color-mix(
927
+ in srgb,
928
+ var(--wi-color-danger) 85%,
929
+ black
930
+ );
931
+ --wi-button-active-bg: color-mix(
932
+ in srgb,
933
+ var(--wi-color-danger) 75%,
934
+ black
935
+ );
936
+ }
937
+
938
+ .wi-button--contrast {
939
+ --wi-button-bg: var(--wi-color-contrast);
940
+ --wi-button-fg: var(--wi-color-contrast-fg);
941
+ --wi-button-border: var(--wi-color-contrast);
942
+ --wi-button-hover-bg: var(--wi-color-contrast-hover);
943
+ --wi-button-hover-fg: var(--wi-color-contrast-fg);
944
+ --wi-button-hover-border: var(--wi-color-contrast-hover);
945
+ --wi-button-active-bg: var(--wi-color-contrast-active);
946
+ }
947
+
948
+ .wi-button--outlined {
949
+ --wi-button-bg: transparent;
950
+ --wi-button-fg: var(--wi-button-border);
951
+ --wi-button-hover-bg: color-mix(
952
+ in srgb,
953
+ var(--wi-button-border) 10%,
954
+ transparent
955
+ );
956
+ --wi-button-hover-fg: var(--wi-button-border);
957
+ --wi-button-hover-border: var(--wi-button-border);
958
+ --wi-button-active-bg: color-mix(
959
+ in srgb,
960
+ var(--wi-button-border) 16%,
961
+ transparent
962
+ );
963
+ }
964
+
965
+ .wi-button--secondary.wi-button--outlined {
966
+ --wi-button-border: var(--wi-color-border);
967
+ --wi-button-fg: var(--wi-color-text);
968
+ --wi-button-hover-fg: var(--wi-color-text);
969
+ }
970
+
971
+ .wi-button--text,
972
+ .wi-button--link {
973
+ --wi-button-bg: transparent;
974
+ --wi-button-border: transparent;
975
+ --wi-button-fg: var(--wi-color-primary);
976
+ --wi-button-hover-bg: color-mix(
977
+ in srgb,
978
+ var(--wi-color-primary) 10%,
979
+ transparent
980
+ );
981
+ --wi-button-hover-fg: var(--wi-color-primary);
982
+ --wi-button-hover-border: transparent;
983
+ --wi-button-active-bg: color-mix(
984
+ in srgb,
985
+ var(--wi-color-primary) 16%,
986
+ transparent
987
+ );
988
+ }
989
+
990
+ .wi-button--secondary.wi-button--text,
991
+ .wi-button--secondary.wi-button--link {
992
+ --wi-button-fg: var(--wi-color-text-muted);
993
+ --wi-button-hover-bg: color-mix(
994
+ in srgb,
995
+ var(--wi-color-text-muted) 12%,
996
+ transparent
997
+ );
998
+ --wi-button-hover-fg: var(--wi-color-text);
999
+ }
1000
+
1001
+ .wi-button--success.wi-button--text,
1002
+ .wi-button--success.wi-button--link,
1003
+ .wi-button--success.wi-button--outlined {
1004
+ --wi-button-fg: var(--wi-color-success);
1005
+ --wi-button-border: var(--wi-color-success);
1006
+ --wi-button-hover-bg: color-mix(
1007
+ in srgb,
1008
+ var(--wi-color-success) 10%,
1009
+ transparent
1010
+ );
1011
+ --wi-button-hover-fg: var(--wi-color-success);
1012
+ --wi-button-hover-border: var(--wi-color-success);
1013
+ }
1014
+
1015
+ .wi-button--info.wi-button--text,
1016
+ .wi-button--info.wi-button--link,
1017
+ .wi-button--info.wi-button--outlined {
1018
+ --wi-button-fg: var(--wi-color-info);
1019
+ --wi-button-border: var(--wi-color-info);
1020
+ --wi-button-hover-bg: color-mix(
1021
+ in srgb,
1022
+ var(--wi-color-info) 10%,
1023
+ transparent
1024
+ );
1025
+ --wi-button-hover-fg: var(--wi-color-info);
1026
+ --wi-button-hover-border: var(--wi-color-info);
1027
+ }
1028
+
1029
+ .wi-button--warn.wi-button--text,
1030
+ .wi-button--warn.wi-button--link,
1031
+ .wi-button--warn.wi-button--outlined {
1032
+ --wi-button-fg: var(--wi-color-warn);
1033
+ --wi-button-border: var(--wi-color-warn);
1034
+ --wi-button-hover-bg: color-mix(
1035
+ in srgb,
1036
+ var(--wi-color-warn) 10%,
1037
+ transparent
1038
+ );
1039
+ --wi-button-hover-fg: var(--wi-color-warn);
1040
+ --wi-button-hover-border: var(--wi-color-warn);
1041
+ }
1042
+
1043
+ .wi-button--help.wi-button--text,
1044
+ .wi-button--help.wi-button--link,
1045
+ .wi-button--help.wi-button--outlined {
1046
+ --wi-button-fg: var(--wi-color-help);
1047
+ --wi-button-border: var(--wi-color-help);
1048
+ --wi-button-hover-bg: color-mix(
1049
+ in srgb,
1050
+ var(--wi-color-help) 10%,
1051
+ transparent
1052
+ );
1053
+ --wi-button-hover-fg: var(--wi-color-help);
1054
+ --wi-button-hover-border: var(--wi-color-help);
1055
+ }
1056
+
1057
+ .wi-button--danger.wi-button--text,
1058
+ .wi-button--danger.wi-button--link,
1059
+ .wi-button--danger.wi-button--outlined {
1060
+ --wi-button-fg: var(--wi-color-danger);
1061
+ --wi-button-border: var(--wi-color-danger);
1062
+ --wi-button-hover-bg: color-mix(
1063
+ in srgb,
1064
+ var(--wi-color-danger) 10%,
1065
+ transparent
1066
+ );
1067
+ --wi-button-hover-fg: var(--wi-color-danger);
1068
+ --wi-button-hover-border: var(--wi-color-danger);
1069
+ }
1070
+
1071
+ .wi-button--contrast.wi-button--text,
1072
+ .wi-button--contrast.wi-button--link,
1073
+ .wi-button--contrast.wi-button--outlined {
1074
+ --wi-button-fg: var(--wi-color-contrast);
1075
+ --wi-button-border: var(--wi-color-contrast);
1076
+ --wi-button-hover-bg: color-mix(
1077
+ in srgb,
1078
+ var(--wi-color-contrast) 10%,
1079
+ transparent
1080
+ );
1081
+ --wi-button-hover-fg: var(--wi-color-contrast);
1082
+ --wi-button-hover-border: var(--wi-color-contrast);
1083
+ }
1084
+
1085
+ .wi-button--plain.wi-button--text,
1086
+ .wi-button--plain.wi-button--outlined,
1087
+ .wi-button--plain.wi-button--link {
1088
+ --wi-button-fg: var(--wi-color-text-muted);
1089
+ --wi-button-border: var(--wi-color-border);
1090
+ --wi-button-hover-bg: color-mix(
1091
+ in srgb,
1092
+ var(--wi-color-text-muted) 12%,
1093
+ transparent
1094
+ );
1095
+ --wi-button-hover-fg: var(--wi-color-text);
1096
+ --wi-button-hover-border: var(--wi-color-border);
1097
+ }
1098
+
1099
+ .wi-button--link {
1100
+ height: auto;
1101
+ min-height: 0;
1102
+ padding: 0;
1103
+ }
1104
+
1105
+ .wi-button--link:hover:not(:disabled) {
1106
+ text-decoration: underline;
1107
+ }
1108
+
1109
+ .wi-button--ghost {
1110
+ --wi-button-bg: transparent;
1111
+ --wi-button-fg: var(--wi-button-border);
1112
+ --wi-button-hover-bg: color-mix(
1113
+ in srgb,
1114
+ var(--wi-button-border) 12%,
1115
+ transparent
1116
+ );
1117
+ --wi-button-hover-fg: var(--wi-button-border);
1118
+ --wi-button-hover-border: var(--wi-button-border);
1119
+ --wi-button-active-bg: color-mix(
1120
+ in srgb,
1121
+ var(--wi-button-border) 18%,
1122
+ transparent
1123
+ );
1124
+ }
1125
+
1126
+ .wi-button--secondary.wi-button--ghost {
1127
+ --wi-button-border: var(--wi-color-border);
1128
+ --wi-button-fg: var(--wi-color-text);
1129
+ --wi-button-hover-fg: var(--wi-color-text);
1130
+ }
1131
+
1132
+ .wi-button--success.wi-button--ghost {
1133
+ --wi-button-fg: var(--wi-color-success);
1134
+ --wi-button-border: var(--wi-color-success);
1135
+ }
1136
+
1137
+ .wi-button--info.wi-button--ghost {
1138
+ --wi-button-fg: var(--wi-color-info);
1139
+ --wi-button-border: var(--wi-color-info);
1140
+ }
1141
+
1142
+ .wi-button--warn.wi-button--ghost {
1143
+ --wi-button-fg: var(--wi-color-warn);
1144
+ --wi-button-border: var(--wi-color-warn);
1145
+ }
1146
+
1147
+ .wi-button--help.wi-button--ghost {
1148
+ --wi-button-fg: var(--wi-color-help);
1149
+ --wi-button-border: var(--wi-color-help);
1150
+ }
1151
+
1152
+ .wi-button--danger.wi-button--ghost {
1153
+ --wi-button-fg: var(--wi-color-danger);
1154
+ --wi-button-border: var(--wi-color-danger);
735
1155
  }
736
-
737
- .wi-button {
738
- --wi-button-bg: var(--wi-color-primary);
739
- --wi-button-fg: var(--wi-color-on-emphasis);
740
- --wi-button-border: var(--wi-color-primary);
741
- --wi-button-hover-bg: var(--wi-color-primary-hover);
742
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
743
- --wi-button-hover-border: var(--wi-color-primary-hover);
744
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-primary) 82%, black);
745
- align-items: center;
746
- background: var(--wi-button-bg);
747
- border: 1px solid var(--wi-button-border);
748
- border-radius: var(--wi-radius-control);
749
- color: var(--wi-button-fg);
750
- cursor: pointer;
751
- display: inline-flex;
752
- flex-direction: row;
753
- font-size: var(--wi-control-font-medium);
754
- font-weight: 600;
755
- gap: var(--wi-space-2);
756
- justify-content: center;
757
- line-height: 1;
758
- min-height: var(--wi-control-height-medium);
759
- padding: 0 var(--wi-button-padding-x-medium);
760
- position: relative;
761
- transition:
762
- background-color var(--wi-motion-fast) var(--wi-motion-ease),
763
- border-color var(--wi-motion-fast) var(--wi-motion-ease),
764
- color var(--wi-motion-fast) var(--wi-motion-ease),
765
- box-shadow var(--wi-motion-fast) var(--wi-motion-ease);
766
- vertical-align: middle;
767
- white-space: nowrap;
768
- }
769
-
770
- .wi-button:hover:not(:disabled) {
771
- background: var(--wi-button-hover-bg);
772
- border-color: var(--wi-button-hover-border);
773
- color: var(--wi-button-hover-fg);
774
- }
775
-
776
- .wi-button:active:not(:disabled) {
777
- background: var(--wi-button-active-bg);
778
- }
779
-
780
- /* Naive-style focus: soft glow, not outline-offset ring */
781
- .wi-button:focus {
782
- outline: none;
783
- }
784
-
785
- .wi-button:focus-visible {
786
- box-shadow: var(--wi-focus-shadow);
787
- outline: none;
788
- }
789
-
790
- .wi-button--primary {
791
- --wi-button-bg: var(--wi-color-primary);
792
- --wi-button-fg: var(--wi-color-on-emphasis);
793
- --wi-button-border: var(--wi-color-primary);
794
- --wi-button-hover-bg: var(--wi-color-primary-hover);
795
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
796
- --wi-button-hover-border: var(--wi-color-primary-hover);
797
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-primary) 82%, black);
798
- }
799
-
800
- .wi-button--secondary {
801
- --wi-button-bg: color-mix(in srgb, var(--wi-color-text-muted) 16%, var(--wi-color-surface));
802
- --wi-button-fg: var(--wi-color-text);
803
- --wi-button-border: transparent;
804
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-text-muted) 24%, var(--wi-color-surface));
805
- --wi-button-hover-fg: var(--wi-color-text);
806
- --wi-button-hover-border: transparent;
807
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-text-muted) 32%, var(--wi-color-surface));
808
- }
809
-
810
- .wi-button--success {
811
- --wi-button-bg: var(--wi-color-success);
812
- --wi-button-fg: var(--wi-color-on-emphasis);
813
- --wi-button-border: var(--wi-color-success);
814
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-success) 85%, black);
815
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
816
- --wi-button-hover-border: color-mix(in srgb, var(--wi-color-success) 85%, black);
817
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-success) 75%, black);
818
- }
819
-
820
- .wi-button--info {
821
- --wi-button-bg: var(--wi-color-info);
822
- --wi-button-fg: var(--wi-color-on-emphasis);
823
- --wi-button-border: var(--wi-color-info);
824
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-info) 85%, black);
825
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
826
- --wi-button-hover-border: color-mix(in srgb, var(--wi-color-info) 85%, black);
827
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-info) 75%, black);
828
- }
829
-
830
- .wi-button--warn {
831
- --wi-button-bg: var(--wi-color-warn);
832
- --wi-button-fg: var(--wi-color-on-emphasis);
833
- --wi-button-border: var(--wi-color-warn);
834
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-warn) 85%, black);
835
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
836
- --wi-button-hover-border: color-mix(in srgb, var(--wi-color-warn) 85%, black);
837
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-warn) 75%, black);
838
- }
839
-
840
- .wi-button--help {
841
- --wi-button-bg: var(--wi-color-help);
842
- --wi-button-fg: var(--wi-color-on-emphasis);
843
- --wi-button-border: var(--wi-color-help);
844
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-help) 85%, black);
845
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
846
- --wi-button-hover-border: color-mix(in srgb, var(--wi-color-help) 85%, black);
847
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-help) 75%, black);
848
- }
849
-
850
- .wi-button--danger {
851
- --wi-button-bg: var(--wi-color-danger);
852
- --wi-button-fg: var(--wi-color-on-emphasis);
853
- --wi-button-border: var(--wi-color-danger);
854
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-danger) 85%, black);
855
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
856
- --wi-button-hover-border: color-mix(in srgb, var(--wi-color-danger) 85%, black);
857
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-danger) 75%, black);
858
- }
859
-
860
- .wi-button--contrast {
861
- --wi-button-bg: var(--wi-color-contrast);
862
- --wi-button-fg: var(--wi-color-contrast-fg);
863
- --wi-button-border: var(--wi-color-contrast);
864
- --wi-button-hover-bg: var(--wi-color-contrast-hover);
865
- --wi-button-hover-fg: var(--wi-color-contrast-fg);
866
- --wi-button-hover-border: var(--wi-color-contrast-hover);
867
- --wi-button-active-bg: var(--wi-color-contrast-active);
868
- }
869
-
870
- .wi-button--outlined {
871
- --wi-button-bg: transparent;
872
- --wi-button-fg: var(--wi-button-border);
873
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-button-border) 10%, transparent);
874
- --wi-button-hover-fg: var(--wi-button-border);
875
- --wi-button-hover-border: var(--wi-button-border);
876
- --wi-button-active-bg: color-mix(in srgb, var(--wi-button-border) 16%, transparent);
877
- }
878
-
879
- .wi-button--secondary.wi-button--outlined {
880
- --wi-button-border: var(--wi-color-border);
881
- --wi-button-fg: var(--wi-color-text);
882
- --wi-button-hover-fg: var(--wi-color-text);
883
- }
884
-
885
- .wi-button--text,
886
- .wi-button--link {
887
- --wi-button-bg: transparent;
888
- --wi-button-border: transparent;
889
- --wi-button-fg: var(--wi-color-primary);
890
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-primary) 10%, transparent);
891
- --wi-button-hover-fg: var(--wi-color-primary);
892
- --wi-button-hover-border: transparent;
893
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-primary) 16%, transparent);
894
- }
895
-
896
- .wi-button--secondary.wi-button--text,
897
- .wi-button--secondary.wi-button--link {
898
- --wi-button-fg: var(--wi-color-text-muted);
899
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-text-muted) 12%, transparent);
900
- --wi-button-hover-fg: var(--wi-color-text);
901
- }
902
-
903
- .wi-button--success.wi-button--text,
904
- .wi-button--success.wi-button--link,
905
- .wi-button--success.wi-button--outlined {
906
- --wi-button-fg: var(--wi-color-success);
907
- --wi-button-border: var(--wi-color-success);
908
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-success) 10%, transparent);
909
- --wi-button-hover-fg: var(--wi-color-success);
910
- --wi-button-hover-border: var(--wi-color-success);
911
- }
912
-
913
- .wi-button--info.wi-button--text,
914
- .wi-button--info.wi-button--link,
915
- .wi-button--info.wi-button--outlined {
916
- --wi-button-fg: var(--wi-color-info);
917
- --wi-button-border: var(--wi-color-info);
918
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-info) 10%, transparent);
919
- --wi-button-hover-fg: var(--wi-color-info);
920
- --wi-button-hover-border: var(--wi-color-info);
921
- }
922
-
923
- .wi-button--warn.wi-button--text,
924
- .wi-button--warn.wi-button--link,
925
- .wi-button--warn.wi-button--outlined {
926
- --wi-button-fg: var(--wi-color-warn);
927
- --wi-button-border: var(--wi-color-warn);
928
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-warn) 10%, transparent);
929
- --wi-button-hover-fg: var(--wi-color-warn);
930
- --wi-button-hover-border: var(--wi-color-warn);
931
- }
932
-
933
- .wi-button--help.wi-button--text,
934
- .wi-button--help.wi-button--link,
935
- .wi-button--help.wi-button--outlined {
936
- --wi-button-fg: var(--wi-color-help);
937
- --wi-button-border: var(--wi-color-help);
938
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-help) 10%, transparent);
939
- --wi-button-hover-fg: var(--wi-color-help);
940
- --wi-button-hover-border: var(--wi-color-help);
941
- }
942
-
943
- .wi-button--danger.wi-button--text,
944
- .wi-button--danger.wi-button--link,
945
- .wi-button--danger.wi-button--outlined {
946
- --wi-button-fg: var(--wi-color-danger);
947
- --wi-button-border: var(--wi-color-danger);
948
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-danger) 10%, transparent);
949
- --wi-button-hover-fg: var(--wi-color-danger);
950
- --wi-button-hover-border: var(--wi-color-danger);
951
- }
952
-
953
- .wi-button--contrast.wi-button--text,
954
- .wi-button--contrast.wi-button--link,
955
- .wi-button--contrast.wi-button--outlined {
956
- --wi-button-fg: var(--wi-color-contrast);
957
- --wi-button-border: var(--wi-color-contrast);
958
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-contrast) 10%, transparent);
959
- --wi-button-hover-fg: var(--wi-color-contrast);
960
- --wi-button-hover-border: var(--wi-color-contrast);
961
- }
962
-
963
- .wi-button--plain.wi-button--text,
964
- .wi-button--plain.wi-button--outlined,
965
- .wi-button--plain.wi-button--link {
966
- --wi-button-fg: var(--wi-color-text-muted);
967
- --wi-button-border: var(--wi-color-border);
968
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-text-muted) 12%, transparent);
969
- --wi-button-hover-fg: var(--wi-color-text);
970
- --wi-button-hover-border: var(--wi-color-border);
971
- }
972
-
973
- .wi-button--link {
974
- height: auto;
975
- min-height: 0;
976
- padding: 0;
977
- }
978
-
979
- .wi-button--link:hover:not(:disabled) {
980
- text-decoration: underline;
1156
+
1157
+ .wi-button--contrast.wi-button--ghost {
1158
+ --wi-button-fg: var(--wi-color-contrast);
1159
+ --wi-button-border: var(--wi-color-contrast);
981
1160
  }
982
1161
 
983
- .wi-button--ghost {
984
- --wi-button-bg: transparent;
985
- --wi-button-fg: var(--wi-button-border);
986
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-button-border) 12%, transparent);
987
- --wi-button-hover-fg: var(--wi-button-border);
988
- --wi-button-hover-border: var(--wi-button-border);
989
- --wi-button-active-bg: color-mix(in srgb, var(--wi-button-border) 18%, transparent);
1162
+ .wi-button--quaternary {
1163
+ --wi-button-bg: transparent;
1164
+ --wi-button-border: transparent;
1165
+ --wi-button-fg: var(--wi-color-text);
1166
+ --wi-button-hover-bg: color-mix(
1167
+ in srgb,
1168
+ var(--wi-color-text-muted) 10%,
1169
+ transparent
1170
+ );
1171
+ --wi-button-hover-fg: var(--wi-color-text);
1172
+ --wi-button-hover-border: transparent;
1173
+ --wi-button-active-bg: color-mix(
1174
+ in srgb,
1175
+ var(--wi-color-text-muted) 16%,
1176
+ transparent
1177
+ );
990
1178
  }
991
1179
 
992
- .wi-button--secondary.wi-button--ghost {
993
- --wi-button-border: var(--wi-color-border);
994
- --wi-button-fg: var(--wi-color-text);
995
- --wi-button-hover-fg: var(--wi-color-text);
1180
+ .wi-button--custom {
1181
+ --wi-button-bg: var(--wi-button-color);
1182
+ --wi-button-fg: var(--wi-color-on-emphasis);
1183
+ --wi-button-border: var(--wi-button-color);
1184
+ --wi-button-hover-bg: color-mix(in srgb, var(--wi-button-color) 85%, black);
1185
+ --wi-button-hover-fg: var(--wi-color-on-emphasis);
1186
+ --wi-button-hover-border: color-mix(
1187
+ in srgb,
1188
+ var(--wi-button-color) 85%,
1189
+ black
1190
+ );
1191
+ --wi-button-active-bg: color-mix(
1192
+ in srgb,
1193
+ var(--wi-button-color) 75%,
1194
+ black
1195
+ );
996
1196
  }
997
1197
 
998
- .wi-button--success.wi-button--ghost {
999
- --wi-button-fg: var(--wi-color-success);
1000
- --wi-button-border: var(--wi-color-success);
1198
+ .wi-button--custom.wi-button--outlined,
1199
+ .wi-button--custom.wi-button--ghost,
1200
+ .wi-button--custom.wi-button--text,
1201
+ .wi-button--custom.wi-button--quaternary,
1202
+ .wi-button--custom.wi-button--link {
1203
+ --wi-button-bg: transparent;
1204
+ --wi-button-fg: var(--wi-button-color);
1205
+ --wi-button-border: var(--wi-button-color);
1206
+ --wi-button-hover-bg: color-mix(
1207
+ in srgb,
1208
+ var(--wi-button-color) 12%,
1209
+ transparent
1210
+ );
1211
+ --wi-button-hover-fg: var(--wi-button-color);
1212
+ --wi-button-hover-border: var(--wi-button-color);
1001
1213
  }
1002
1214
 
1003
- .wi-button--info.wi-button--ghost {
1004
- --wi-button-fg: var(--wi-color-info);
1005
- --wi-button-border: var(--wi-color-info);
1215
+ .wi-button--custom.wi-button--text,
1216
+ .wi-button--custom.wi-button--quaternary,
1217
+ .wi-button--custom.wi-button--link {
1218
+ --wi-button-border: transparent;
1219
+ --wi-button-hover-border: transparent;
1006
1220
  }
1007
1221
 
1008
- .wi-button--warn.wi-button--ghost {
1009
- --wi-button-fg: var(--wi-color-warn);
1010
- --wi-button-border: var(--wi-color-warn);
1222
+ .wi-button-group {
1223
+ display: inline-flex;
1224
+ vertical-align: middle;
1011
1225
  }
1012
1226
 
1013
- .wi-button--help.wi-button--ghost {
1014
- --wi-button-fg: var(--wi-color-help);
1015
- --wi-button-border: var(--wi-color-help);
1227
+ .wi-button-group--fluid {
1228
+ display: flex;
1229
+ width: 100%;
1016
1230
  }
1017
1231
 
1018
- .wi-button--danger.wi-button--ghost {
1019
- --wi-button-fg: var(--wi-color-danger);
1020
- --wi-button-border: var(--wi-color-danger);
1232
+ .wi-button-group--fluid > .wi-button {
1233
+ flex: 1;
1021
1234
  }
1022
1235
 
1023
- .wi-button--contrast.wi-button--ghost {
1024
- --wi-button-fg: var(--wi-color-contrast);
1025
- --wi-button-border: var(--wi-color-contrast);
1236
+ .wi-button-group > .wi-button {
1237
+ border-radius: 0;
1238
+ margin: 0;
1026
1239
  }
1027
1240
 
1028
- .wi-button--quaternary {
1029
- --wi-button-bg: transparent;
1030
- --wi-button-border: transparent;
1031
- --wi-button-fg: var(--wi-color-text);
1032
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-color-text-muted) 10%, transparent);
1033
- --wi-button-hover-fg: var(--wi-color-text);
1034
- --wi-button-hover-border: transparent;
1035
- --wi-button-active-bg: color-mix(in srgb, var(--wi-color-text-muted) 16%, transparent);
1241
+ .wi-button-group > .wi-button + .wi-button {
1242
+ margin-left: -1px;
1036
1243
  }
1037
1244
 
1038
- .wi-button--custom {
1039
- --wi-button-bg: var(--wi-button-color);
1040
- --wi-button-fg: var(--wi-color-on-emphasis);
1041
- --wi-button-border: var(--wi-button-color);
1042
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-button-color) 85%, black);
1043
- --wi-button-hover-fg: var(--wi-color-on-emphasis);
1044
- --wi-button-hover-border: color-mix(in srgb, var(--wi-button-color) 85%, black);
1045
- --wi-button-active-bg: color-mix(in srgb, var(--wi-button-color) 75%, black);
1245
+ .wi-button-group > .wi-button:first-child {
1246
+ border-top-left-radius: var(--wi-radius-md);
1247
+ border-bottom-left-radius: var(--wi-radius-md);
1046
1248
  }
1047
1249
 
1048
- .wi-button--custom.wi-button--outlined,
1049
- .wi-button--custom.wi-button--ghost,
1050
- .wi-button--custom.wi-button--text,
1051
- .wi-button--custom.wi-button--quaternary,
1052
- .wi-button--custom.wi-button--link {
1053
- --wi-button-bg: transparent;
1054
- --wi-button-fg: var(--wi-button-color);
1055
- --wi-button-border: var(--wi-button-color);
1056
- --wi-button-hover-bg: color-mix(in srgb, var(--wi-button-color) 12%, transparent);
1057
- --wi-button-hover-fg: var(--wi-button-color);
1058
- --wi-button-hover-border: var(--wi-button-color);
1250
+ .wi-button-group > .wi-button:last-child {
1251
+ border-top-right-radius: var(--wi-radius-md);
1252
+ border-bottom-right-radius: var(--wi-radius-md);
1059
1253
  }
1060
1254
 
1061
- .wi-button--custom.wi-button--text,
1062
- .wi-button--custom.wi-button--quaternary,
1063
- .wi-button--custom.wi-button--link {
1064
- --wi-button-border: transparent;
1065
- --wi-button-hover-border: transparent;
1255
+ .wi-button--raised {
1256
+ box-shadow: 0 0.25rem 0.75rem
1257
+ color-mix(in srgb, var(--wi-color-text) 14%, transparent);
1066
1258
  }
1067
1259
 
1068
- .wi-button-group {
1069
- display: inline-flex;
1070
- vertical-align: middle;
1260
+ .wi-button--rounded {
1261
+ border-radius: var(--wi-radius-full);
1071
1262
  }
1072
1263
 
1073
- .wi-button-group--fluid {
1074
- display: flex;
1075
- width: 100%;
1264
+ .wi-button--icon-only {
1265
+ gap: 0;
1266
+ min-width: var(--wi-control-height-medium);
1267
+ padding: 0;
1268
+ width: var(--wi-control-height-medium);
1076
1269
  }
1077
1270
 
1078
- .wi-button-group--fluid > .wi-button {
1079
- flex: 1;
1080
- }
1081
-
1082
- .wi-button-group > .wi-button {
1083
- border-radius: 0;
1084
- margin: 0;
1085
- }
1086
-
1087
- .wi-button-group > .wi-button + .wi-button {
1088
- margin-left: -1px;
1271
+ .wi-button--icon-only.wi-button--small {
1272
+ min-width: var(--wi-control-height-small);
1273
+ width: var(--wi-control-height-small);
1089
1274
  }
1090
1275
 
1091
- .wi-button-group > .wi-button:first-child {
1092
- border-top-left-radius: var(--wi-radius-md);
1093
- border-bottom-left-radius: var(--wi-radius-md);
1276
+ .wi-button--icon-only.wi-button--large {
1277
+ min-width: var(--wi-control-height-large);
1278
+ width: var(--wi-control-height-large);
1094
1279
  }
1095
1280
 
1096
- .wi-button-group > .wi-button:last-child {
1097
- border-top-right-radius: var(--wi-radius-md);
1098
- border-bottom-right-radius: var(--wi-radius-md);
1281
+ .wi-button--icon-right {
1282
+ flex-direction: row-reverse;
1099
1283
  }
1100
1284
 
1101
- .wi-button--raised {
1102
- box-shadow: 0 0.25rem 0.75rem color-mix(in srgb, var(--wi-color-text) 14%, transparent);
1103
- }
1104
-
1105
- .wi-button--rounded {
1106
- border-radius: var(--wi-radius-full);
1107
- }
1108
-
1109
- .wi-button--icon-only {
1110
- gap: 0;
1111
- min-width: var(--wi-control-height-medium);
1112
- padding: 0;
1113
- width: var(--wi-control-height-medium);
1114
- }
1115
-
1116
- .wi-button--icon-only.wi-button--small {
1117
- min-width: var(--wi-control-height-small);
1118
- width: var(--wi-control-height-small);
1119
- }
1120
-
1121
- .wi-button--icon-only.wi-button--large {
1122
- min-width: var(--wi-control-height-large);
1123
- width: var(--wi-control-height-large);
1124
- }
1125
-
1126
- .wi-button--icon-right {
1127
- flex-direction: row-reverse;
1128
- }
1129
-
1130
- .wi-button--icon-top {
1131
- flex-direction: column;
1132
- min-height: 3.25rem;
1133
- padding-block: var(--wi-space-2);
1285
+ .wi-button--icon-top {
1286
+ flex-direction: column;
1287
+ min-height: var(--wi-button-icon-stack-min-height);
1288
+ padding-block: var(--wi-space-2);
1134
1289
  }
1135
1290
 
1136
- .wi-button--icon-bottom {
1137
- flex-direction: column-reverse;
1138
- min-height: 3.25rem;
1139
- padding-block: var(--wi-space-2);
1291
+ .wi-button--icon-bottom {
1292
+ flex-direction: column-reverse;
1293
+ min-height: var(--wi-button-icon-stack-min-height);
1294
+ padding-block: var(--wi-space-2);
1140
1295
  }
1141
1296
 
1142
- .wi-button--fluid {
1143
- display: flex;
1144
- width: 100%;
1297
+ .wi-button--fluid {
1298
+ display: flex;
1299
+ width: 100%;
1145
1300
  }
1146
1301
 
1147
- .wi-button--small {
1148
- font-size: var(--wi-control-font-small);
1149
- min-height: var(--wi-control-height-small);
1150
- padding: 0 var(--wi-button-padding-x-small);
1302
+ .wi-button--small {
1303
+ font-size: var(--wi-control-font-small);
1304
+ min-height: var(--wi-control-height-small);
1305
+ padding: 0 var(--wi-button-padding-x-small);
1151
1306
  }
1152
1307
 
1153
- .wi-button--large {
1154
- font-size: var(--wi-control-font-large);
1155
- min-height: var(--wi-control-height-large);
1156
- padding: 0 var(--wi-button-padding-x-large);
1308
+ .wi-button--large {
1309
+ font-size: var(--wi-control-font-large);
1310
+ min-height: var(--wi-control-height-large);
1311
+ padding: 0 var(--wi-button-padding-x-large);
1157
1312
  }
1158
1313
 
1159
- .wi-button__icon,
1160
- .wi-button__label {
1161
- align-items: center;
1162
- display: inline-flex;
1163
- justify-content: center;
1314
+ .wi-button__icon,
1315
+ .wi-button__label {
1316
+ align-items: center;
1317
+ display: inline-flex;
1318
+ justify-content: center;
1164
1319
  }
1165
1320
 
1166
- .wi-button__icon {
1167
- flex: 0 0 auto;
1321
+ .wi-button__icon {
1322
+ flex: 0 0 auto;
1168
1323
  }
1169
1324
 
1170
- .wi-button__badge {
1171
- align-items: center;
1172
- background: var(--wi-color-contrast);
1173
- border-radius: var(--wi-radius-full);
1174
- color: var(--wi-color-contrast-fg);
1175
- display: inline-flex;
1176
- font-size: 0.65rem;
1177
- font-weight: 700;
1178
- justify-content: center;
1179
- line-height: 1;
1180
- margin-inline-start: var(--wi-space-1);
1181
- min-width: 1.15rem;
1182
- padding: 0.2rem 0.35rem;
1325
+ .wi-button__badge {
1326
+ align-items: center;
1327
+ background: var(--wi-color-contrast);
1328
+ border-radius: var(--wi-radius-full);
1329
+ color: var(--wi-color-contrast-fg);
1330
+ display: inline-flex;
1331
+ font-size: var(--wi-font-size-xs);
1332
+ font-weight: 700;
1333
+ justify-content: center;
1334
+ line-height: 1;
1335
+ margin-inline-start: var(--wi-space-1);
1336
+ min-width: var(--wi-button-badge-min-width);
1337
+ padding: var(--wi-space-1) var(--wi-space-2);
1183
1338
  }
1184
1339
 
1185
- .wi-button__badge--secondary {
1186
- background: color-mix(in srgb, var(--wi-color-text-muted) 25%, var(--wi-color-surface));
1187
- color: var(--wi-color-text);
1340
+ .wi-button__badge--secondary {
1341
+ background: color-mix(
1342
+ in srgb,
1343
+ var(--wi-color-text-muted) 25%,
1344
+ var(--wi-color-surface)
1345
+ );
1346
+ color: var(--wi-color-text);
1188
1347
  }
1189
1348
 
1190
- .wi-button__badge--success {
1191
- background: var(--wi-color-success);
1192
- color: var(--wi-color-on-emphasis);
1349
+ .wi-button__badge--success {
1350
+ background: var(--wi-color-success);
1351
+ color: var(--wi-color-on-emphasis);
1193
1352
  }
1194
1353
 
1195
- .wi-button__badge--info {
1196
- background: var(--wi-color-info);
1197
- color: var(--wi-color-on-emphasis);
1354
+ .wi-button__badge--info {
1355
+ background: var(--wi-color-info);
1356
+ color: var(--wi-color-on-emphasis);
1198
1357
  }
1199
1358
 
1200
- .wi-button__badge--warn {
1201
- background: var(--wi-color-warn);
1202
- color: var(--wi-color-on-emphasis);
1359
+ .wi-button__badge--warn {
1360
+ background: var(--wi-color-warn);
1361
+ color: var(--wi-color-on-emphasis);
1203
1362
  }
1204
1363
 
1205
- .wi-button__badge--danger {
1206
- background: var(--wi-color-danger);
1207
- color: var(--wi-color-on-emphasis);
1364
+ .wi-button__badge--danger {
1365
+ background: var(--wi-color-danger);
1366
+ color: var(--wi-color-on-emphasis);
1208
1367
  }
1209
1368
 
1210
- .wi-button__badge--contrast {
1211
- background: var(--wi-color-contrast);
1212
- color: var(--wi-color-contrast-fg);
1369
+ .wi-button__badge--contrast {
1370
+ background: var(--wi-color-contrast);
1371
+ color: var(--wi-color-contrast-fg);
1213
1372
  }
1214
1373
 
1215
- .wi-button__spinner {
1216
- animation: wi-button-spin 700ms linear infinite;
1217
- border: 2px solid currentColor;
1218
- border-right-color: transparent;
1219
- border-radius: var(--wi-radius-full);
1220
- height: 0.875rem;
1221
- width: 0.875rem;
1374
+ .wi-button__spinner {
1375
+ animation: wi-button-spin 700ms linear infinite;
1376
+ border: 2px solid currentColor;
1377
+ border-right-color: transparent;
1378
+ border-radius: var(--wi-radius-full);
1379
+ height: var(--wi-button-spinner-size);
1380
+ width: var(--wi-button-spinner-size);
1222
1381
  }
1223
1382
 
1224
- @keyframes wi-button-spin {
1225
- to {
1226
- transform: rotate(360deg);
1227
- }
1383
+ @keyframes wi-button-spin {
1384
+ to {
1385
+ transform: rotate(360deg);
1386
+ }
1228
1387
  }
1229
1388
 
1230
1389
  .wi-icon {
@@ -1266,40 +1425,41 @@
1266
1425
  }
1267
1426
  }
1268
1427
 
1269
- /* —— Overlay: ConfirmPopup —— */
1270
- .wi-confirmpopup {
1271
- background: var(--wi-color-surface);
1272
- border: 1px solid var(--wi-color-border);
1273
- border-radius: var(--wi-radius-md);
1274
- box-shadow: var(--wi-shadow-md);
1275
- max-width: min(20rem, calc(100vw - 2rem));
1276
- padding: var(--wi-space-3);
1277
- position: fixed;
1278
- z-index: var(--wi-z-popper);
1428
+ /* —— Overlay: ConfirmPopup —— */
1429
+ .wi-confirmpopup {
1430
+ --wi-confirmpopup-width: 20rem;
1431
+ background: var(--wi-color-surface);
1432
+ border: 1px solid var(--wi-color-border);
1433
+ border-radius: var(--wi-radius-md);
1434
+ box-shadow: var(--wi-shadow-md);
1435
+ max-width: min(var(--wi-confirmpopup-width), calc(100vw - 2rem));
1436
+ padding: var(--wi-space-3);
1437
+ position: fixed;
1438
+ z-index: var(--wi-z-popper);
1279
1439
  }
1280
1440
 
1281
- .wi-confirmpopup--teleported {
1282
- z-index: var(--wi-z-dropdown);
1441
+ .wi-confirmpopup--teleported {
1442
+ z-index: var(--wi-z-dropdown);
1283
1443
  }
1284
1444
 
1285
- .wi-confirmpopup__message {
1286
- color: var(--wi-color-text);
1287
- line-height: 1.5;
1288
- margin-bottom: var(--wi-space-3);
1445
+ .wi-confirmpopup__message {
1446
+ color: var(--wi-color-text);
1447
+ line-height: 1.5;
1448
+ margin-bottom: var(--wi-space-3);
1289
1449
  }
1290
1450
 
1291
- .wi-confirmpopup__footer {
1292
- display: flex;
1293
- gap: var(--wi-space-2);
1294
- justify-content: flex-end;
1451
+ .wi-confirmpopup__footer {
1452
+ display: flex;
1453
+ gap: var(--wi-space-2);
1454
+ justify-content: flex-end;
1295
1455
  }
1296
1456
 
1297
- .wi-confirmpopup__message {
1298
- align-items: center;
1299
- display: flex;
1300
- gap: var(--wi-space-2);
1457
+ .wi-confirmpopup__message {
1458
+ align-items: center;
1459
+ display: flex;
1460
+ gap: var(--wi-space-2);
1301
1461
  }
1302
1462
 
1303
- .wi-confirmpopup__icon {
1304
- flex-shrink: 0;
1463
+ .wi-confirmpopup__icon {
1464
+ flex-shrink: 0;
1305
1465
  }