@greypan/web-ui 11.2.0 → 12.0.1

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 (667) hide show
  1. package/README.CN.md +79 -68
  2. package/README.md +81 -72
  3. package/dist/_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js +8 -0
  4. package/dist/assets/menu-portal.js +3 -4
  5. package/dist/assets/menu-portal.js.map +1 -1
  6. package/dist/assets/modal-surface.js +3 -4
  7. package/dist/assets/modal-surface.js.map +1 -1
  8. package/dist/assets/overlay-motion.js +3 -4
  9. package/dist/assets/overlay-motion.js.map +1 -1
  10. package/dist/assets/scrollbar.js +5 -0
  11. package/dist/assets/scrollbar.js.map +1 -0
  12. package/dist/assets/selection-control.js +3 -4
  13. package/dist/assets/selection-control.js.map +1 -1
  14. package/dist/assets/toast-containers.js +3 -4
  15. package/dist/assets/toast-containers.js.map +1 -1
  16. package/dist/classes/glass.js +3 -4
  17. package/dist/classes/glass.js.map +1 -1
  18. package/dist/classes/glow.js +3 -4
  19. package/dist/classes/glow.js.map +1 -1
  20. package/dist/components/autocomplete/index.d.ts +485 -483
  21. package/dist/components/autocomplete/index.d.ts.map +1 -0
  22. package/dist/components/autocomplete/index.js +475 -267
  23. package/dist/components/autocomplete/index.js.map +1 -1
  24. package/dist/components/autocomplete/style.js +3 -4
  25. package/dist/components/autocomplete/style.js.map +1 -1
  26. package/dist/components/avatar/index.d.ts +26 -24
  27. package/dist/components/avatar/index.d.ts.map +1 -0
  28. package/dist/components/avatar/index.js +72 -52
  29. package/dist/components/avatar/index.js.map +1 -1
  30. package/dist/components/avatar/style.js +3 -4
  31. package/dist/components/avatar/style.js.map +1 -1
  32. package/dist/components/back-top/index.d.ts +30 -27
  33. package/dist/components/back-top/index.d.ts.map +1 -0
  34. package/dist/components/back-top/index.js +96 -62
  35. package/dist/components/back-top/index.js.map +1 -1
  36. package/dist/components/back-top/style.js +3 -4
  37. package/dist/components/back-top/style.js.map +1 -1
  38. package/dist/components/badge/index.d.ts +32 -26
  39. package/dist/components/badge/index.d.ts.map +1 -0
  40. package/dist/components/badge/index.js +116 -74
  41. package/dist/components/badge/index.js.map +1 -1
  42. package/dist/components/badge/style.js +3 -4
  43. package/dist/components/badge/style.js.map +1 -1
  44. package/dist/components/button/index.d.ts +392 -390
  45. package/dist/components/button/index.d.ts.map +1 -0
  46. package/dist/components/button/index.js +108 -74
  47. package/dist/components/button/index.js.map +1 -1
  48. package/dist/components/button/style.js +3 -4
  49. package/dist/components/button/style.js.map +1 -1
  50. package/dist/components/button-group/index.d.ts +14 -13
  51. package/dist/components/button-group/index.d.ts.map +1 -0
  52. package/dist/components/button-group/index.js +43 -33
  53. package/dist/components/button-group/index.js.map +1 -1
  54. package/dist/components/button-group/style.js +3 -4
  55. package/dist/components/button-group/style.js.map +1 -1
  56. package/dist/components/checkbox/index.d.ts +399 -397
  57. package/dist/components/checkbox/index.d.ts.map +1 -0
  58. package/dist/components/checkbox/index.js +103 -74
  59. package/dist/components/checkbox/index.js.map +1 -1
  60. package/dist/components/checkbox/style.js +3 -4
  61. package/dist/components/checkbox/style.js.map +1 -1
  62. package/dist/components/checkbox-group/index.d.ts +397 -396
  63. package/dist/components/checkbox-group/index.d.ts.map +1 -0
  64. package/dist/components/checkbox-group/index.js +92 -70
  65. package/dist/components/checkbox-group/index.js.map +1 -1
  66. package/dist/components/checkbox-group/style.js +3 -4
  67. package/dist/components/checkbox-group/style.js.map +1 -1
  68. package/dist/components/collapse/index.d.ts +74 -73
  69. package/dist/components/collapse/index.d.ts.map +1 -0
  70. package/dist/components/collapse/index.js +225 -130
  71. package/dist/components/collapse/index.js.map +1 -1
  72. package/dist/components/collapse/style.js +3 -4
  73. package/dist/components/collapse/style.js.map +1 -1
  74. package/dist/components/context-menu/index.d.ts +307 -310
  75. package/dist/components/context-menu/index.d.ts.map +1 -0
  76. package/dist/components/context-menu/index.js +685 -270
  77. package/dist/components/context-menu/index.js.map +1 -1
  78. package/dist/components/context-menu/scrim.js +3 -4
  79. package/dist/components/context-menu/scrim.js.map +1 -1
  80. package/dist/components/context-menu/style.js +3 -4
  81. package/dist/components/context-menu/style.js.map +1 -1
  82. package/dist/components/dialog/index.d.ts +87 -78
  83. package/dist/components/dialog/index.d.ts.map +1 -0
  84. package/dist/components/dialog/index.js +183 -88
  85. package/dist/components/dialog/index.js.map +1 -1
  86. package/dist/components/dialog/style.js +3 -4
  87. package/dist/components/dialog/style.js.map +1 -1
  88. package/dist/components/drawer/index.d.ts +159 -150
  89. package/dist/components/drawer/index.d.ts.map +1 -0
  90. package/dist/components/drawer/index.js +503 -242
  91. package/dist/components/drawer/index.js.map +1 -1
  92. package/dist/components/drawer/style.js +3 -4
  93. package/dist/components/drawer/style.js.map +1 -1
  94. package/dist/components/dropdown/index.d.ts +125 -124
  95. package/dist/components/dropdown/index.d.ts.map +1 -0
  96. package/dist/components/dropdown/index.js +556 -328
  97. package/dist/components/dropdown/index.js.map +1 -1
  98. package/dist/components/dropdown/style.js +3 -4
  99. package/dist/components/dropdown/style.js.map +1 -1
  100. package/dist/components/dropdown-divider/index.d.ts +7 -6
  101. package/dist/components/dropdown-divider/index.d.ts.map +1 -0
  102. package/dist/components/dropdown-divider/index.js +10 -11
  103. package/dist/components/dropdown-divider/index.js.map +1 -1
  104. package/dist/components/dropdown-divider/style.js +3 -4
  105. package/dist/components/dropdown-divider/style.js.map +1 -1
  106. package/dist/components/dropdown-header/index.d.ts +7 -6
  107. package/dist/components/dropdown-header/index.d.ts.map +1 -0
  108. package/dist/components/dropdown-header/index.js +10 -11
  109. package/dist/components/dropdown-header/index.js.map +1 -1
  110. package/dist/components/dropdown-header/style.js +3 -4
  111. package/dist/components/dropdown-header/style.js.map +1 -1
  112. package/dist/components/dropdown-item/index.d.ts +13 -11
  113. package/dist/components/dropdown-item/index.d.ts.map +1 -0
  114. package/dist/components/dropdown-item/index.js +32 -25
  115. package/dist/components/dropdown-item/index.js.map +1 -1
  116. package/dist/components/dropdown-item/style.js +3 -4
  117. package/dist/components/dropdown-item/style.js.map +1 -1
  118. package/dist/components/editable-text/index.d.ts +506 -505
  119. package/dist/components/editable-text/index.d.ts.map +1 -0
  120. package/dist/components/editable-text/index.js +281 -127
  121. package/dist/components/editable-text/index.js.map +1 -1
  122. package/dist/components/editable-text/style.js +3 -4
  123. package/dist/components/editable-text/style.js.map +1 -1
  124. package/dist/components/empty/index.d.ts +17 -15
  125. package/dist/components/empty/index.d.ts.map +1 -0
  126. package/dist/components/empty/index.js +66 -37
  127. package/dist/components/empty/index.js.map +1 -1
  128. package/dist/components/empty/style.js +3 -4
  129. package/dist/components/empty/style.js.map +1 -1
  130. package/dist/components/icon/index.d.ts +12 -11
  131. package/dist/components/icon/index.d.ts.map +1 -0
  132. package/dist/components/icon/index.js +34 -27
  133. package/dist/components/icon/index.js.map +1 -1
  134. package/dist/components/icon/style.js +3 -4
  135. package/dist/components/icon/style.js.map +1 -1
  136. package/dist/components/image-preview/index.d.ts +58 -44
  137. package/dist/components/image-preview/index.d.ts.map +1 -0
  138. package/dist/components/image-preview/index.js +536 -265
  139. package/dist/components/image-preview/index.js.map +1 -1
  140. package/dist/components/image-preview/style.js +3 -4
  141. package/dist/components/image-preview/style.js.map +1 -1
  142. package/dist/components/index.d.ts +46 -43
  143. package/dist/components/index.d.ts.map +1 -0
  144. package/dist/components/index.js +41 -41
  145. package/dist/components/input/index.d.ts +418 -413
  146. package/dist/components/input/index.d.ts.map +1 -0
  147. package/dist/components/input/index.js +148 -84
  148. package/dist/components/input/index.js.map +1 -1
  149. package/dist/components/input/style.js +3 -4
  150. package/dist/components/input/style.js.map +1 -1
  151. package/dist/components/input-number/index.d.ts +453 -447
  152. package/dist/components/input-number/index.d.ts.map +1 -0
  153. package/dist/components/input-number/index.js +484 -292
  154. package/dist/components/input-number/index.js.map +1 -1
  155. package/dist/components/input-number/style.js +3 -4
  156. package/dist/components/input-number/style.js.map +1 -1
  157. package/dist/components/layout/index.d.ts +110 -87
  158. package/dist/components/layout/index.d.ts.map +1 -0
  159. package/dist/components/layout/index.js +238 -144
  160. package/dist/components/layout/index.js.map +1 -1
  161. package/dist/components/layout/style.js +3 -4
  162. package/dist/components/layout/style.js.map +1 -1
  163. package/dist/components/middle-ellipsis/index.d.ts +93 -92
  164. package/dist/components/middle-ellipsis/index.d.ts.map +1 -0
  165. package/dist/components/middle-ellipsis/index.js +261 -107
  166. package/dist/components/middle-ellipsis/index.js.map +1 -1
  167. package/dist/components/middle-ellipsis/style.js +3 -4
  168. package/dist/components/middle-ellipsis/style.js.map +1 -1
  169. package/dist/components/middle-ellipsis/truncate.js +60 -30
  170. package/dist/components/middle-ellipsis/truncate.js.map +1 -1
  171. package/dist/components/option/index.d.ts +20 -18
  172. package/dist/components/option/index.d.ts.map +1 -0
  173. package/dist/components/option/index.js +53 -40
  174. package/dist/components/option/index.js.map +1 -1
  175. package/dist/components/option/style.js +3 -4
  176. package/dist/components/option/style.js.map +1 -1
  177. package/dist/components/popover/index.d.ts +69 -68
  178. package/dist/components/popover/index.d.ts.map +1 -0
  179. package/dist/components/popover/index.js +221 -104
  180. package/dist/components/popover/index.js.map +1 -1
  181. package/dist/components/popover/style.js +3 -4
  182. package/dist/components/popover/style.js.map +1 -1
  183. package/dist/components/radio/index.d.ts +396 -395
  184. package/dist/components/radio/index.d.ts.map +1 -0
  185. package/dist/components/radio/index.js +91 -62
  186. package/dist/components/radio/index.js.map +1 -1
  187. package/dist/components/radio/interaction.js +10 -11
  188. package/dist/components/radio/interaction.js.map +1 -1
  189. package/dist/components/radio/style.js +3 -4
  190. package/dist/components/radio/style.js.map +1 -1
  191. package/dist/components/radio-group/index.d.ts +417 -416
  192. package/dist/components/radio-group/index.d.ts.map +1 -0
  193. package/dist/components/radio-group/index.js +307 -207
  194. package/dist/components/radio-group/index.js.map +1 -1
  195. package/dist/components/radio-group/style.js +3 -4
  196. package/dist/components/radio-group/style.js.map +1 -1
  197. package/dist/components/segmented/index.d.ts +408 -402
  198. package/dist/components/segmented/index.d.ts.map +1 -0
  199. package/dist/components/segmented/index.js +267 -158
  200. package/dist/components/segmented/index.js.map +1 -1
  201. package/dist/components/segmented/style.js +3 -4
  202. package/dist/components/segmented/style.js.map +1 -1
  203. package/dist/components/segmented-trigger/index.d.ts +18 -17
  204. package/dist/components/segmented-trigger/index.d.ts.map +1 -0
  205. package/dist/components/segmented-trigger/index.js +45 -36
  206. package/dist/components/segmented-trigger/index.js.map +1 -1
  207. package/dist/components/segmented-trigger/style.js +3 -4
  208. package/dist/components/segmented-trigger/style.js.map +1 -1
  209. package/dist/components/select/index.d.ts +450 -448
  210. package/dist/components/select/index.d.ts.map +1 -0
  211. package/dist/components/select/index.js +342 -188
  212. package/dist/components/select/index.js.map +1 -1
  213. package/dist/components/select/style.js +3 -4
  214. package/dist/components/select/style.js.map +1 -1
  215. package/dist/components/slider/index.d.ts +428 -427
  216. package/dist/components/slider/index.d.ts.map +1 -0
  217. package/dist/components/slider/index.js +308 -216
  218. package/dist/components/slider/index.js.map +1 -1
  219. package/dist/components/slider/style.js +3 -4
  220. package/dist/components/slider/style.js.map +1 -1
  221. package/dist/components/spinner/index.d.ts +39 -38
  222. package/dist/components/spinner/index.d.ts.map +1 -0
  223. package/dist/components/spinner/index.js +118 -65
  224. package/dist/components/spinner/index.js.map +1 -1
  225. package/dist/components/spinner/style.js +3 -4
  226. package/dist/components/spinner/style.js.map +1 -1
  227. package/dist/components/svg-draw-lines/index.d.ts +40 -39
  228. package/dist/components/svg-draw-lines/index.d.ts.map +1 -0
  229. package/dist/components/svg-draw-lines/index.js +189 -106
  230. package/dist/components/svg-draw-lines/index.js.map +1 -1
  231. package/dist/components/svg-draw-lines/style.js +3 -4
  232. package/dist/components/svg-draw-lines/style.js.map +1 -1
  233. package/dist/components/switch/index.d.ts +411 -409
  234. package/dist/components/switch/index.d.ts.map +1 -0
  235. package/dist/components/switch/index.js +193 -106
  236. package/dist/components/switch/index.js.map +1 -1
  237. package/dist/components/switch/style.js +3 -4
  238. package/dist/components/switch/style.js.map +1 -1
  239. package/dist/components/textarea/index.d.ts +430 -425
  240. package/dist/components/textarea/index.d.ts.map +1 -0
  241. package/dist/components/textarea/index.js +187 -100
  242. package/dist/components/textarea/index.js.map +1 -1
  243. package/dist/components/textarea/style.js +3 -4
  244. package/dist/components/textarea/style.js.map +1 -1
  245. package/dist/components/theme/index.d.ts +45 -44
  246. package/dist/components/theme/index.d.ts.map +1 -0
  247. package/dist/components/theme/index.js +268 -161
  248. package/dist/components/theme/index.js.map +1 -1
  249. package/dist/components/theme/style.js +3 -4
  250. package/dist/components/theme/style.js.map +1 -1
  251. package/dist/components/toast/index.d.ts +4 -3
  252. package/dist/components/toast/index.js +3 -3
  253. package/dist/components/toast/manager.d.ts +9 -8
  254. package/dist/components/toast/manager.d.ts.map +1 -0
  255. package/dist/components/toast/manager.js +215 -119
  256. package/dist/components/toast/manager.js.map +1 -1
  257. package/dist/components/toast/style.js +3 -4
  258. package/dist/components/toast/style.js.map +1 -1
  259. package/dist/components/toast/toast.d.ts +75 -71
  260. package/dist/components/toast/toast.d.ts.map +1 -0
  261. package/dist/components/toast/toast.js +203 -96
  262. package/dist/components/toast/toast.js.map +1 -1
  263. package/dist/components/toast/types.d.ts +10 -9
  264. package/dist/components/toast/types.d.ts.map +1 -0
  265. package/dist/components/tooltip/index.d.ts +72 -62
  266. package/dist/components/tooltip/index.d.ts.map +1 -0
  267. package/dist/components/tooltip/index.js +251 -93
  268. package/dist/components/tooltip/index.js.map +1 -1
  269. package/dist/components/tooltip/style.js +3 -4
  270. package/dist/components/tooltip/style.js.map +1 -1
  271. package/dist/icons/generated/akar-icons-check.d.ts +5 -4
  272. package/dist/icons/generated/akar-icons-check.d.ts.map +1 -0
  273. package/dist/icons/generated/akar-icons-check.js +3 -4
  274. package/dist/icons/generated/akar-icons-check.js.map +1 -1
  275. package/dist/icons/generated/akar-icons-circle-check.d.ts +5 -4
  276. package/dist/icons/generated/akar-icons-circle-check.d.ts.map +1 -0
  277. package/dist/icons/generated/akar-icons-circle-check.js +3 -4
  278. package/dist/icons/generated/akar-icons-circle-check.js.map +1 -1
  279. package/dist/icons/generated/andrsrxn-inbox.d.ts +5 -4
  280. package/dist/icons/generated/andrsrxn-inbox.d.ts.map +1 -0
  281. package/dist/icons/generated/andrsrxn-inbox.js +3 -4
  282. package/dist/icons/generated/andrsrxn-inbox.js.map +1 -1
  283. package/dist/icons/generated/bi-check-lg.d.ts +5 -4
  284. package/dist/icons/generated/bi-check-lg.d.ts.map +1 -0
  285. package/dist/icons/generated/bi-check-lg.js +3 -4
  286. package/dist/icons/generated/bi-check-lg.js.map +1 -1
  287. package/dist/icons/generated/bi-check.d.ts +5 -4
  288. package/dist/icons/generated/bi-check.d.ts.map +1 -0
  289. package/dist/icons/generated/bi-check.js +3 -4
  290. package/dist/icons/generated/bi-check.js.map +1 -1
  291. package/dist/icons/generated/fluent-tag-search-24-regular.d.ts +5 -4
  292. package/dist/icons/generated/fluent-tag-search-24-regular.d.ts.map +1 -0
  293. package/dist/icons/generated/fluent-tag-search-24-regular.js +3 -4
  294. package/dist/icons/generated/fluent-tag-search-24-regular.js.map +1 -1
  295. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts +5 -4
  296. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts.map +1 -0
  297. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js +3 -4
  298. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js.map +1 -1
  299. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts +5 -4
  300. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts.map +1 -0
  301. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js +3 -4
  302. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js.map +1 -1
  303. package/dist/icons/generated/heroicons-check-16-solid.d.ts +5 -4
  304. package/dist/icons/generated/heroicons-check-16-solid.d.ts.map +1 -0
  305. package/dist/icons/generated/heroicons-check-16-solid.js +3 -4
  306. package/dist/icons/generated/heroicons-check-16-solid.js.map +1 -1
  307. package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts +5 -4
  308. package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts.map +1 -0
  309. package/dist/icons/generated/heroicons-x-mark-16-solid.js +3 -4
  310. package/dist/icons/generated/heroicons-x-mark-16-solid.js.map +1 -1
  311. package/dist/icons/generated/jam-close-circle-f.d.ts +7 -6
  312. package/dist/icons/generated/jam-close-circle-f.d.ts.map +1 -0
  313. package/dist/icons/generated/jam-close-circle-f.js +3 -4
  314. package/dist/icons/generated/jam-close-circle-f.js.map +1 -1
  315. package/dist/icons/generated/lucide-arrow-down-to-line.d.ts +5 -4
  316. package/dist/icons/generated/lucide-arrow-down-to-line.d.ts.map +1 -0
  317. package/dist/icons/generated/lucide-arrow-down-to-line.js +3 -4
  318. package/dist/icons/generated/lucide-arrow-down-to-line.js.map +1 -1
  319. package/dist/icons/generated/lucide-arrow-up-to-line.d.ts +5 -4
  320. package/dist/icons/generated/lucide-arrow-up-to-line.d.ts.map +1 -0
  321. package/dist/icons/generated/lucide-arrow-up-to-line.js +3 -4
  322. package/dist/icons/generated/lucide-arrow-up-to-line.js.map +1 -1
  323. package/dist/icons/generated/lucide-bell.d.ts +5 -4
  324. package/dist/icons/generated/lucide-bell.d.ts.map +1 -0
  325. package/dist/icons/generated/lucide-bell.js +3 -4
  326. package/dist/icons/generated/lucide-bell.js.map +1 -1
  327. package/dist/icons/generated/lucide-check.d.ts +5 -4
  328. package/dist/icons/generated/lucide-check.d.ts.map +1 -0
  329. package/dist/icons/generated/lucide-check.js +3 -4
  330. package/dist/icons/generated/lucide-check.js.map +1 -1
  331. package/dist/icons/generated/lucide-chevron-down.d.ts +5 -4
  332. package/dist/icons/generated/lucide-chevron-down.d.ts.map +1 -0
  333. package/dist/icons/generated/lucide-chevron-down.js +3 -4
  334. package/dist/icons/generated/lucide-chevron-down.js.map +1 -1
  335. package/dist/icons/generated/lucide-chevron-left.d.ts +5 -4
  336. package/dist/icons/generated/lucide-chevron-left.d.ts.map +1 -0
  337. package/dist/icons/generated/lucide-chevron-left.js +3 -4
  338. package/dist/icons/generated/lucide-chevron-left.js.map +1 -1
  339. package/dist/icons/generated/lucide-chevron-right.d.ts +5 -4
  340. package/dist/icons/generated/lucide-chevron-right.d.ts.map +1 -0
  341. package/dist/icons/generated/lucide-chevron-right.js +3 -4
  342. package/dist/icons/generated/lucide-chevron-right.js.map +1 -1
  343. package/dist/icons/generated/lucide-chevron-up.d.ts +5 -4
  344. package/dist/icons/generated/lucide-chevron-up.d.ts.map +1 -0
  345. package/dist/icons/generated/lucide-chevron-up.js +3 -4
  346. package/dist/icons/generated/lucide-chevron-up.js.map +1 -1
  347. package/dist/icons/generated/lucide-circle-alert.d.ts +5 -4
  348. package/dist/icons/generated/lucide-circle-alert.d.ts.map +1 -0
  349. package/dist/icons/generated/lucide-circle-alert.js +3 -4
  350. package/dist/icons/generated/lucide-circle-alert.js.map +1 -1
  351. package/dist/icons/generated/lucide-clapperboard.d.ts +5 -4
  352. package/dist/icons/generated/lucide-clapperboard.d.ts.map +1 -0
  353. package/dist/icons/generated/lucide-clapperboard.js +3 -4
  354. package/dist/icons/generated/lucide-clapperboard.js.map +1 -1
  355. package/dist/icons/generated/lucide-clipboard-paste.d.ts +5 -4
  356. package/dist/icons/generated/lucide-clipboard-paste.d.ts.map +1 -0
  357. package/dist/icons/generated/lucide-clipboard-paste.js +3 -4
  358. package/dist/icons/generated/lucide-clipboard-paste.js.map +1 -1
  359. package/dist/icons/generated/lucide-code.d.ts +5 -4
  360. package/dist/icons/generated/lucide-code.d.ts.map +1 -0
  361. package/dist/icons/generated/lucide-code.js +3 -4
  362. package/dist/icons/generated/lucide-code.js.map +1 -1
  363. package/dist/icons/generated/lucide-copy.d.ts +5 -4
  364. package/dist/icons/generated/lucide-copy.d.ts.map +1 -0
  365. package/dist/icons/generated/lucide-copy.js +3 -4
  366. package/dist/icons/generated/lucide-copy.js.map +1 -1
  367. package/dist/icons/generated/lucide-download.d.ts +5 -4
  368. package/dist/icons/generated/lucide-download.d.ts.map +1 -0
  369. package/dist/icons/generated/lucide-download.js +3 -4
  370. package/dist/icons/generated/lucide-download.js.map +1 -1
  371. package/dist/icons/generated/lucide-ellipsis-vertical.d.ts +5 -4
  372. package/dist/icons/generated/lucide-ellipsis-vertical.d.ts.map +1 -0
  373. package/dist/icons/generated/lucide-ellipsis-vertical.js +3 -4
  374. package/dist/icons/generated/lucide-ellipsis-vertical.js.map +1 -1
  375. package/dist/icons/generated/lucide-external-link.d.ts +5 -4
  376. package/dist/icons/generated/lucide-external-link.d.ts.map +1 -0
  377. package/dist/icons/generated/lucide-external-link.js +3 -4
  378. package/dist/icons/generated/lucide-external-link.js.map +1 -1
  379. package/dist/icons/generated/lucide-eye.d.ts +5 -4
  380. package/dist/icons/generated/lucide-eye.d.ts.map +1 -0
  381. package/dist/icons/generated/lucide-eye.js +3 -4
  382. package/dist/icons/generated/lucide-eye.js.map +1 -1
  383. package/dist/icons/generated/lucide-file-text.d.ts +5 -4
  384. package/dist/icons/generated/lucide-file-text.d.ts.map +1 -0
  385. package/dist/icons/generated/lucide-file-text.js +3 -4
  386. package/dist/icons/generated/lucide-file-text.js.map +1 -1
  387. package/dist/icons/generated/lucide-file.d.ts +5 -4
  388. package/dist/icons/generated/lucide-file.d.ts.map +1 -0
  389. package/dist/icons/generated/lucide-file.js +3 -4
  390. package/dist/icons/generated/lucide-file.js.map +1 -1
  391. package/dist/icons/generated/lucide-film.d.ts +5 -4
  392. package/dist/icons/generated/lucide-film.d.ts.map +1 -0
  393. package/dist/icons/generated/lucide-film.js +3 -4
  394. package/dist/icons/generated/lucide-film.js.map +1 -1
  395. package/dist/icons/generated/lucide-folder-open.d.ts +5 -4
  396. package/dist/icons/generated/lucide-folder-open.d.ts.map +1 -0
  397. package/dist/icons/generated/lucide-folder-open.js +3 -4
  398. package/dist/icons/generated/lucide-folder-open.js.map +1 -1
  399. package/dist/icons/generated/lucide-folder.d.ts +5 -4
  400. package/dist/icons/generated/lucide-folder.d.ts.map +1 -0
  401. package/dist/icons/generated/lucide-folder.js +3 -4
  402. package/dist/icons/generated/lucide-folder.js.map +1 -1
  403. package/dist/icons/generated/lucide-globe.d.ts +5 -4
  404. package/dist/icons/generated/lucide-globe.d.ts.map +1 -0
  405. package/dist/icons/generated/lucide-globe.js +3 -4
  406. package/dist/icons/generated/lucide-globe.js.map +1 -1
  407. package/dist/icons/generated/lucide-headphones.d.ts +5 -4
  408. package/dist/icons/generated/lucide-headphones.d.ts.map +1 -0
  409. package/dist/icons/generated/lucide-headphones.js +3 -4
  410. package/dist/icons/generated/lucide-headphones.js.map +1 -1
  411. package/dist/icons/generated/lucide-heart.d.ts +5 -4
  412. package/dist/icons/generated/lucide-heart.d.ts.map +1 -0
  413. package/dist/icons/generated/lucide-heart.js +3 -4
  414. package/dist/icons/generated/lucide-heart.js.map +1 -1
  415. package/dist/icons/generated/lucide-image.d.ts +5 -4
  416. package/dist/icons/generated/lucide-image.d.ts.map +1 -0
  417. package/dist/icons/generated/lucide-image.js +3 -4
  418. package/dist/icons/generated/lucide-image.js.map +1 -1
  419. package/dist/icons/generated/lucide-inbox.d.ts +5 -4
  420. package/dist/icons/generated/lucide-inbox.d.ts.map +1 -0
  421. package/dist/icons/generated/lucide-inbox.js +3 -4
  422. package/dist/icons/generated/lucide-inbox.js.map +1 -1
  423. package/dist/icons/generated/lucide-info.d.ts +5 -4
  424. package/dist/icons/generated/lucide-info.d.ts.map +1 -0
  425. package/dist/icons/generated/lucide-info.js +3 -4
  426. package/dist/icons/generated/lucide-info.js.map +1 -1
  427. package/dist/icons/generated/lucide-layout-grid.d.ts +5 -4
  428. package/dist/icons/generated/lucide-layout-grid.d.ts.map +1 -0
  429. package/dist/icons/generated/lucide-layout-grid.js +3 -4
  430. package/dist/icons/generated/lucide-layout-grid.js.map +1 -1
  431. package/dist/icons/generated/lucide-link.d.ts +5 -4
  432. package/dist/icons/generated/lucide-link.d.ts.map +1 -0
  433. package/dist/icons/generated/lucide-link.js +3 -4
  434. package/dist/icons/generated/lucide-link.js.map +1 -1
  435. package/dist/icons/generated/lucide-list-filter.d.ts +5 -4
  436. package/dist/icons/generated/lucide-list-filter.d.ts.map +1 -0
  437. package/dist/icons/generated/lucide-list-filter.js +3 -4
  438. package/dist/icons/generated/lucide-list-filter.js.map +1 -1
  439. package/dist/icons/generated/lucide-list-restart.d.ts +5 -4
  440. package/dist/icons/generated/lucide-list-restart.d.ts.map +1 -0
  441. package/dist/icons/generated/lucide-list-restart.js +3 -4
  442. package/dist/icons/generated/lucide-list-restart.js.map +1 -1
  443. package/dist/icons/generated/lucide-loader-circle.d.ts +5 -4
  444. package/dist/icons/generated/lucide-loader-circle.d.ts.map +1 -0
  445. package/dist/icons/generated/lucide-loader-circle.js +3 -4
  446. package/dist/icons/generated/lucide-loader-circle.js.map +1 -1
  447. package/dist/icons/generated/lucide-mail.d.ts +5 -4
  448. package/dist/icons/generated/lucide-mail.d.ts.map +1 -0
  449. package/dist/icons/generated/lucide-mail.js +3 -4
  450. package/dist/icons/generated/lucide-mail.js.map +1 -1
  451. package/dist/icons/generated/lucide-minus.d.ts +5 -4
  452. package/dist/icons/generated/lucide-minus.d.ts.map +1 -0
  453. package/dist/icons/generated/lucide-minus.js +3 -4
  454. package/dist/icons/generated/lucide-minus.js.map +1 -1
  455. package/dist/icons/generated/lucide-music.d.ts +5 -4
  456. package/dist/icons/generated/lucide-music.d.ts.map +1 -0
  457. package/dist/icons/generated/lucide-music.js +3 -4
  458. package/dist/icons/generated/lucide-music.js.map +1 -1
  459. package/dist/icons/generated/lucide-package.d.ts +5 -4
  460. package/dist/icons/generated/lucide-package.d.ts.map +1 -0
  461. package/dist/icons/generated/lucide-package.js +3 -4
  462. package/dist/icons/generated/lucide-package.js.map +1 -1
  463. package/dist/icons/generated/lucide-pen-line.d.ts +5 -4
  464. package/dist/icons/generated/lucide-pen-line.d.ts.map +1 -0
  465. package/dist/icons/generated/lucide-pen-line.js +3 -4
  466. package/dist/icons/generated/lucide-pen-line.js.map +1 -1
  467. package/dist/icons/generated/lucide-pencil.d.ts +5 -4
  468. package/dist/icons/generated/lucide-pencil.d.ts.map +1 -0
  469. package/dist/icons/generated/lucide-pencil.js +3 -4
  470. package/dist/icons/generated/lucide-pencil.js.map +1 -1
  471. package/dist/icons/generated/lucide-play.d.ts +5 -4
  472. package/dist/icons/generated/lucide-play.d.ts.map +1 -0
  473. package/dist/icons/generated/lucide-play.js +3 -4
  474. package/dist/icons/generated/lucide-play.js.map +1 -1
  475. package/dist/icons/generated/lucide-plus.d.ts +5 -4
  476. package/dist/icons/generated/lucide-plus.d.ts.map +1 -0
  477. package/dist/icons/generated/lucide-plus.js +3 -4
  478. package/dist/icons/generated/lucide-plus.js.map +1 -1
  479. package/dist/icons/generated/lucide-printer.d.ts +5 -4
  480. package/dist/icons/generated/lucide-printer.d.ts.map +1 -0
  481. package/dist/icons/generated/lucide-printer.js +3 -4
  482. package/dist/icons/generated/lucide-printer.js.map +1 -1
  483. package/dist/icons/generated/lucide-redo-2.d.ts +5 -4
  484. package/dist/icons/generated/lucide-redo-2.d.ts.map +1 -0
  485. package/dist/icons/generated/lucide-redo-2.js +3 -4
  486. package/dist/icons/generated/lucide-redo-2.js.map +1 -1
  487. package/dist/icons/generated/lucide-refresh-cw.d.ts +5 -4
  488. package/dist/icons/generated/lucide-refresh-cw.d.ts.map +1 -0
  489. package/dist/icons/generated/lucide-refresh-cw.js +3 -4
  490. package/dist/icons/generated/lucide-refresh-cw.js.map +1 -1
  491. package/dist/icons/generated/lucide-scissors.d.ts +5 -4
  492. package/dist/icons/generated/lucide-scissors.d.ts.map +1 -0
  493. package/dist/icons/generated/lucide-scissors.js +3 -4
  494. package/dist/icons/generated/lucide-scissors.js.map +1 -1
  495. package/dist/icons/generated/lucide-search.d.ts +5 -4
  496. package/dist/icons/generated/lucide-search.d.ts.map +1 -0
  497. package/dist/icons/generated/lucide-search.js +3 -4
  498. package/dist/icons/generated/lucide-search.js.map +1 -1
  499. package/dist/icons/generated/lucide-settings.d.ts +5 -4
  500. package/dist/icons/generated/lucide-settings.d.ts.map +1 -0
  501. package/dist/icons/generated/lucide-settings.js +3 -4
  502. package/dist/icons/generated/lucide-settings.js.map +1 -1
  503. package/dist/icons/generated/lucide-sliders-horizontal.d.ts +5 -4
  504. package/dist/icons/generated/lucide-sliders-horizontal.d.ts.map +1 -0
  505. package/dist/icons/generated/lucide-sliders-horizontal.js +3 -4
  506. package/dist/icons/generated/lucide-sliders-horizontal.js.map +1 -1
  507. package/dist/icons/generated/lucide-star.d.ts +5 -4
  508. package/dist/icons/generated/lucide-star.d.ts.map +1 -0
  509. package/dist/icons/generated/lucide-star.js +3 -4
  510. package/dist/icons/generated/lucide-star.js.map +1 -1
  511. package/dist/icons/generated/lucide-tag.d.ts +5 -4
  512. package/dist/icons/generated/lucide-tag.d.ts.map +1 -0
  513. package/dist/icons/generated/lucide-tag.js +3 -4
  514. package/dist/icons/generated/lucide-tag.js.map +1 -1
  515. package/dist/icons/generated/lucide-tags.d.ts +5 -4
  516. package/dist/icons/generated/lucide-tags.d.ts.map +1 -0
  517. package/dist/icons/generated/lucide-tags.js +3 -4
  518. package/dist/icons/generated/lucide-tags.js.map +1 -1
  519. package/dist/icons/generated/lucide-trash-2.d.ts +5 -4
  520. package/dist/icons/generated/lucide-trash-2.d.ts.map +1 -0
  521. package/dist/icons/generated/lucide-trash-2.js +3 -4
  522. package/dist/icons/generated/lucide-trash-2.js.map +1 -1
  523. package/dist/icons/generated/lucide-triangle-alert.d.ts +5 -4
  524. package/dist/icons/generated/lucide-triangle-alert.d.ts.map +1 -0
  525. package/dist/icons/generated/lucide-triangle-alert.js +3 -4
  526. package/dist/icons/generated/lucide-triangle-alert.js.map +1 -1
  527. package/dist/icons/generated/lucide-undo-2.d.ts +5 -4
  528. package/dist/icons/generated/lucide-undo-2.d.ts.map +1 -0
  529. package/dist/icons/generated/lucide-undo-2.js +3 -4
  530. package/dist/icons/generated/lucide-undo-2.js.map +1 -1
  531. package/dist/icons/generated/lucide-upload.d.ts +5 -4
  532. package/dist/icons/generated/lucide-upload.d.ts.map +1 -0
  533. package/dist/icons/generated/lucide-upload.js +3 -4
  534. package/dist/icons/generated/lucide-upload.js.map +1 -1
  535. package/dist/icons/generated/lucide-user.d.ts +5 -4
  536. package/dist/icons/generated/lucide-user.d.ts.map +1 -0
  537. package/dist/icons/generated/lucide-user.js +3 -4
  538. package/dist/icons/generated/lucide-user.js.map +1 -1
  539. package/dist/icons/generated/lucide-wrench.d.ts +5 -4
  540. package/dist/icons/generated/lucide-wrench.d.ts.map +1 -0
  541. package/dist/icons/generated/lucide-wrench.js +3 -4
  542. package/dist/icons/generated/lucide-wrench.js.map +1 -1
  543. package/dist/icons/generated/lucide-x.d.ts +5 -4
  544. package/dist/icons/generated/lucide-x.d.ts.map +1 -0
  545. package/dist/icons/generated/lucide-x.js +3 -4
  546. package/dist/icons/generated/lucide-x.js.map +1 -1
  547. package/dist/icons/generated/mdi-tag-search-outline.d.ts +5 -4
  548. package/dist/icons/generated/mdi-tag-search-outline.d.ts.map +1 -0
  549. package/dist/icons/generated/mdi-tag-search-outline.js +3 -4
  550. package/dist/icons/generated/mdi-tag-search-outline.js.map +1 -1
  551. package/dist/icons/generated/ooui-close.d.ts +5 -4
  552. package/dist/icons/generated/ooui-close.d.ts.map +1 -0
  553. package/dist/icons/generated/ooui-close.js +3 -4
  554. package/dist/icons/generated/ooui-close.js.map +1 -1
  555. package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts +5 -4
  556. package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts.map +1 -0
  557. package/dist/icons/generated/radix-icons-panel-left-minimized.js +3 -4
  558. package/dist/icons/generated/radix-icons-panel-left-minimized.js.map +1 -1
  559. package/dist/icons/generated/radix-icons-reset.d.ts +5 -4
  560. package/dist/icons/generated/radix-icons-reset.d.ts.map +1 -0
  561. package/dist/icons/generated/radix-icons-reset.js +3 -4
  562. package/dist/icons/generated/radix-icons-reset.js.map +1 -1
  563. package/dist/icons/generated/tabler-sort-ascending-letters.d.ts +5 -4
  564. package/dist/icons/generated/tabler-sort-ascending-letters.d.ts.map +1 -0
  565. package/dist/icons/generated/tabler-sort-ascending-letters.js +3 -4
  566. package/dist/icons/generated/tabler-sort-ascending-letters.js.map +1 -1
  567. package/dist/icons/index.d.ts +75 -74
  568. package/dist/icons/index.js +75 -75
  569. package/dist/shared/element-height/index.js +51 -25
  570. package/dist/shared/element-height/index.js.map +1 -1
  571. package/dist/shared/element-width/index.js +39 -24
  572. package/dist/shared/element-width/index.js.map +1 -1
  573. package/dist/shared/events/user-change.js +14 -8
  574. package/dist/shared/events/user-change.js.map +1 -1
  575. package/dist/shared/focus/pointer-focus.js +56 -30
  576. package/dist/shared/focus/pointer-focus.js.map +1 -1
  577. package/dist/shared/focus/tabbable.js +96 -0
  578. package/dist/shared/focus/tabbable.js.map +1 -0
  579. package/dist/shared/form-association/field-id.js +13 -6
  580. package/dist/shared/form-association/field-id.js.map +1 -1
  581. package/dist/shared/form-association/index.js +75 -42
  582. package/dist/shared/form-association/index.js.map +1 -1
  583. package/dist/shared/gesture/drag-gesture.js +239 -99
  584. package/dist/shared/gesture/drag-gesture.js.map +1 -1
  585. package/dist/shared/gesture/physics.js +49 -16
  586. package/dist/shared/gesture/physics.js.map +1 -1
  587. package/dist/shared/gesture/pinch-gesture.js +111 -60
  588. package/dist/shared/gesture/pinch-gesture.js.map +1 -1
  589. package/dist/shared/group-management/index.js +181 -84
  590. package/dist/shared/group-management/index.js.map +1 -1
  591. package/dist/shared/label-emptiness/index.js +45 -26
  592. package/dist/shared/label-emptiness/index.js.map +1 -1
  593. package/dist/shared/locale/builtin-labels.js +38 -0
  594. package/dist/shared/locale/builtin-labels.js.map +1 -0
  595. package/dist/shared/menu-behavior/index.js +113 -60
  596. package/dist/shared/menu-behavior/index.js.map +1 -1
  597. package/dist/shared/menu-portal/menu-portal.js +47 -26
  598. package/dist/shared/menu-portal/menu-portal.js.map +1 -1
  599. package/dist/shared/menu-portal/menu-tree.js +132 -75
  600. package/dist/shared/menu-portal/menu-tree.js.map +1 -1
  601. package/dist/shared/normalize/index.js +16 -7
  602. package/dist/shared/normalize/index.js.map +1 -1
  603. package/dist/shared/open-state/index.js +7 -8
  604. package/dist/shared/open-state/index.js.map +1 -1
  605. package/dist/shared/option-portal/combobox-shell.js +121 -56
  606. package/dist/shared/option-portal/combobox-shell.js.map +1 -1
  607. package/dist/shared/option-portal/index.js +65 -44
  608. package/dist/shared/option-portal/index.js.map +1 -1
  609. package/dist/shared/overlay/anchored-panel.js +75 -40
  610. package/dist/shared/overlay/anchored-panel.js.map +1 -1
  611. package/dist/shared/overlay/native-dialog-presence.js +116 -52
  612. package/dist/shared/overlay/native-dialog-presence.js.map +1 -1
  613. package/dist/shared/overlay/nested-drawer-layers.js +76 -46
  614. package/dist/shared/overlay/nested-drawer-layers.js.map +1 -1
  615. package/dist/shared/overlay/open-overlay.js +240 -136
  616. package/dist/shared/overlay/open-overlay.js.map +1 -1
  617. package/dist/shared/overlay/overlay-root.js +33 -24
  618. package/dist/shared/overlay/overlay-root.js.map +1 -1
  619. package/dist/shared/overlay/overlay.js +109 -66
  620. package/dist/shared/overlay/overlay.js.map +1 -1
  621. package/dist/shared/overlay/placement-props.js +9 -4
  622. package/dist/shared/overlay/placement-props.js.map +1 -1
  623. package/dist/shared/overlay/portal.d.ts +2 -0
  624. package/dist/shared/overlay/portal.d.ts.map +1 -0
  625. package/dist/shared/overlay/portal.js +202 -117
  626. package/dist/shared/overlay/portal.js.map +1 -1
  627. package/dist/shared/overlay/positioning-generation.js +9 -10
  628. package/dist/shared/overlay/positioning-generation.js.map +1 -1
  629. package/dist/shared/overlay/presence.js +43 -21
  630. package/dist/shared/overlay/presence.js.map +1 -1
  631. package/dist/shared/overlay/theme-overlay-scope.js +22 -19
  632. package/dist/shared/overlay/theme-overlay-scope.js.map +1 -1
  633. package/dist/shared/scroll-lock/scroll-lock.js +49 -15
  634. package/dist/shared/scroll-lock/scroll-lock.js.map +1 -1
  635. package/dist/shared/theme/duration.js +13 -6
  636. package/dist/shared/theme/duration.js.map +1 -1
  637. package/dist/shared/theme/reduced-motion.js +14 -9
  638. package/dist/shared/theme/reduced-motion.js.map +1 -1
  639. package/dist/shared/theme/root-sync.js +85 -32
  640. package/dist/shared/theme/root-sync.js.map +1 -1
  641. package/dist/shared/visible-area/index.js +81 -37
  642. package/dist/shared/visible-area/index.js.map +1 -1
  643. package/dist/types/iconify.d.ts +1 -1
  644. package/dist/types/iconify.js +0 -0
  645. package/dist/types/react.d.ts +8 -10
  646. package/dist/types/react.d.ts.map +1 -0
  647. package/dist/types/react.js +0 -0
  648. package/dist/types/utils.d.ts +8 -13
  649. package/dist/types/utils.d.ts.map +1 -0
  650. package/dist/types/utils.js +0 -0
  651. package/dist/types/vue.d.ts +9 -13
  652. package/dist/types/vue.d.ts.map +1 -0
  653. package/dist/types/vue.js +0 -0
  654. package/dist/vite/index.d.ts +1 -0
  655. package/dist/vite/index.d.ts.map +1 -0
  656. package/dist/vite/index.js +30 -4
  657. package/dist/vite/index.js.map +1 -1
  658. package/package.json +10 -23
  659. package/dist/_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js +0 -9
  660. package/dist/components/middle-ellipsis/truncate.d.ts +0 -62
  661. package/dist/components/radio/interaction.d.ts +0 -4
  662. package/dist/scrollbars/index.d.ts +0 -33
  663. package/dist/scrollbars/index.js +0 -18
  664. package/dist/scrollbars/index.js.map +0 -1
  665. package/dist/scrollbars/internal.js +0 -6
  666. package/dist/scrollbars/internal.js.map +0 -1
  667. package/dist/scrollbars/style.css +0 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/switch/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAoBa,oBAAoB;SACf,sBAAM;UACL;;UAEA;MAEb;MAIA,QAAQ;EAO+B;EACf;EACgB;EACA;EACA;UAC3B;UACA;UACA;UACA;UAET;UACA;UACA;UACA;UACA;UACA;mBACS;mBACA;EAER;EAOA;EAQA,QAAQ,mBAAmB;UAK5B;cAuBI;mBAIK;mBAiBA;mBAEA;UAIT;UAQA;UAUA;UAOA;UAUA;UAiEA;UAIA;EAMC,wBAAM;WAuDE;IACf,OAAO;IACP,QAAQ;;;QAIJ;YACI;IACR,iBAAiB"}
@@ -1,166 +1,243 @@
1
- import e from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
2
2
  import "../icon/index.js";
3
- import t from "../../classes/glass.js";
4
- import n from "../../icons/generated/lucide-loader-circle.js";
5
- import { installPointerFocusSuppression as r } from "../../shared/focus/pointer-focus.js";
6
- import { FormAssociated as i, FormAssociationController as a, defineFormAssociation as o } from "../../shared/form-association/index.js";
7
- import { LabelEmptinessController as s } from "../../shared/label-emptiness/index.js";
8
- import { attachDragGesture as c } from "../../shared/gesture/drag-gesture.js";
9
- import { clamp as l, normalizeProgress as u } from "../../shared/gesture/physics.js";
10
- import d from "./style.js";
11
- import { LitElement as f, html as p, unsafeCSS as m } from "lit";
12
- import { customElement as h, property as g, state as _ } from "lit/decorators.js";
13
- import { classMap as v } from "lit/directives/class-map.js";
14
- import { styleMap as y } from "lit/directives/style-map.js";
15
- //#region src/components/switch/index.ts
16
- r();
17
- var b = class extends i(f) {
18
- constructor(...e) {
19
- super(...e), this._checked = !1, this._labelEmpty = !1, this.name = "", this.value = "", this.disabled = !1, this.required = !1, this.loading = !1, this._pressed = !1, this._isDragging = !1, this._dragOffset = 0, this._dragProgress = 0, this._dragged = !1, this._maxTravel = 20, this._startOffset = 0, this._dragGestureHandle = null, this._tabIndexBeforeDisabled = null, this._isTabIndexSuppressed = !1, this._handleHostClick = () => this.handleClick(), this._handleHostKeydown = (e) => this.handleKeydown(e), this._formAssociation = o({
3
+ import glass_default from "../../classes/glass.js";
4
+ import lucide_loader_circle_default from "../../icons/generated/lucide-loader-circle.js";
5
+ import { installPointerFocusSuppression } from "../../shared/focus/pointer-focus.js";
6
+ import { FormAssociated, FormAssociationController, defineFormAssociation } from "../../shared/form-association/index.js";
7
+ import { LabelEmptinessController } from "../../shared/label-emptiness/index.js";
8
+ import { attachDragGesture } from "../../shared/gesture/drag-gesture.js";
9
+ import { clamp, normalizeProgress } from "../../shared/gesture/physics.js";
10
+ import style_default from "./style.js";
11
+ import { LitElement, html, unsafeCSS } from "lit";
12
+ import { customElement, property, state } from "lit/decorators.js";
13
+ import { classMap } from "lit/directives/class-map.js";
14
+ import { styleMap } from "lit/directives/style-map.js";
15
+ // src/components/switch/index.ts
16
+ installPointerFocusSuppression();
17
+ let WebUiSwitch = class WebUiSwitch extends FormAssociated(LitElement) {
18
+ constructor(..._args) {
19
+ super(..._args);
20
+ this._checked = false;
21
+ this._labelEmpty = false;
22
+ this.name = "";
23
+ this.value = "";
24
+ this.disabled = false;
25
+ this.required = false;
26
+ this.loading = false;
27
+ this._pressed = false;
28
+ this._isDragging = false;
29
+ this._dragOffset = 0;
30
+ this._dragProgress = 0;
31
+ this._dragged = false;
32
+ this._maxTravel = 20;
33
+ this._startOffset = 0;
34
+ this._dragGestureHandle = null;
35
+ this._tabIndexBeforeDisabled = null;
36
+ this._isTabIndexSuppressed = false;
37
+ this._handleHostClick = () => this.handleClick();
38
+ this._handleHostKeydown = (event) => this.handleKeydown(event);
39
+ this._formAssociation = defineFormAssociation({
20
40
  host: this,
21
41
  initialize: () => {
22
- this.hasAttribute("checked") && (this._checked = !0);
42
+ if (this.hasAttribute("checked")) this._checked = true;
23
43
  },
24
44
  getState: () => this._checked,
25
- setState: (e) => {
26
- this.checked = e;
45
+ setState: (checked) => {
46
+ this.checked = checked;
27
47
  },
28
48
  getFormValue: () => this._checked ? this.value || "on" : null,
29
49
  getFormState: () => String(this._checked),
30
- restoreState: (e) => {
31
- typeof e == "string" && (this.checked = e === "true");
50
+ restoreState: (state) => {
51
+ if (typeof state === "string") this.checked = state === "true";
32
52
  },
33
53
  syncValidity: () => this._syncValidity()
34
- }).make(), this._formAssociationController = new a(this, this._formAssociation), this._labelEmptiness = new s(this, ".wui-switch-label", (e) => {
35
- this._labelEmpty = e;
54
+ }).make();
55
+ this._formAssociationController = new FormAssociationController(this, this._formAssociation);
56
+ this._labelEmptiness = new LabelEmptinessController(this, ".wui-switch-label", (empty) => {
57
+ this._labelEmpty = empty;
36
58
  });
37
59
  }
38
60
  static {
39
- this.styles = [m(t), m(d)];
61
+ this.styles = [unsafeCSS(glass_default), unsafeCSS(style_default)];
40
62
  }
41
63
  get checked() {
42
64
  return this._checked;
43
65
  }
44
- set checked(e) {
45
- let t = this._checked;
46
- this._checked = e, this._formAssociation.sync(), this.requestUpdate("checked", t);
66
+ set checked(v) {
67
+ const old = this._checked;
68
+ this._checked = v;
69
+ this._formAssociation.sync();
70
+ this.requestUpdate("checked", old);
47
71
  }
48
72
  connectedCallback() {
49
- super.connectedCallback(), this.addEventListener("click", this._handleHostClick), this.addEventListener("keydown", this._handleHostKeydown), this._syncAccessibility();
73
+ super.connectedCallback();
74
+ this.addEventListener("click", this._handleHostClick);
75
+ this.addEventListener("keydown", this._handleHostKeydown);
76
+ this._syncAccessibility();
50
77
  }
51
78
  disconnectedCallback() {
52
- super.disconnectedCallback(), this.removeEventListener("click", this._handleHostClick), this.removeEventListener("keydown", this._handleHostKeydown), this._dragGestureHandle?.destroy(), this._dragGestureHandle = null;
79
+ super.disconnectedCallback();
80
+ this.removeEventListener("click", this._handleHostClick);
81
+ this.removeEventListener("keydown", this._handleHostKeydown);
82
+ this._dragGestureHandle?.destroy();
83
+ this._dragGestureHandle = null;
53
84
  }
54
- updated(e) {
55
- super.updated(e), this._syncAccessibility();
85
+ updated(changedProperties) {
86
+ super.updated(changedProperties);
87
+ this._syncAccessibility();
56
88
  }
57
89
  _syncAccessibility() {
58
- this.setAttribute("role", "switch"), this.setAttribute("aria-checked", String(this._checked));
59
- let e = this._isDisabled || this.loading;
60
- this.setAttribute("aria-disabled", String(e)), e ? (this._isTabIndexSuppressed ? this.getAttribute("tabindex") !== "-1" && (this._tabIndexBeforeDisabled = this.getAttribute("tabindex")) : (this._tabIndexBeforeDisabled = this.getAttribute("tabindex"), this._isTabIndexSuppressed = !0), this.tabIndex = -1) : this._isTabIndexSuppressed ? (this._tabIndexBeforeDisabled === null ? this.tabIndex = 0 : this.setAttribute("tabindex", this._tabIndexBeforeDisabled), this._isTabIndexSuppressed = !1) : this.hasAttribute("tabindex") || (this.tabIndex = 0);
90
+ this.setAttribute("role", "switch");
91
+ this.setAttribute("aria-checked", String(this._checked));
92
+ const isDisabled = this._isDisabled || this.loading;
93
+ this.setAttribute("aria-disabled", String(isDisabled));
94
+ if (isDisabled) {
95
+ if (!this._isTabIndexSuppressed) {
96
+ this._tabIndexBeforeDisabled = this.getAttribute("tabindex");
97
+ this._isTabIndexSuppressed = true;
98
+ } else if (this.getAttribute("tabindex") !== "-1") this._tabIndexBeforeDisabled = this.getAttribute("tabindex");
99
+ this.tabIndex = -1;
100
+ } else if (this._isTabIndexSuppressed) {
101
+ if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0;
102
+ else this.setAttribute("tabindex", this._tabIndexBeforeDisabled);
103
+ this._isTabIndexSuppressed = false;
104
+ } else if (!this.hasAttribute("tabindex")) this.tabIndex = 0;
61
105
  }
62
106
  get _isDisabled() {
63
107
  return this.disabled || this._formAssociation.isFormDisabled();
64
108
  }
65
109
  _syncValidity() {
66
- let e = this._formAssociation.getInternals();
67
- e && typeof e.setValidity == "function" && (this._isDisabled || !this.required || this._checked ? e.setValidity({}) : e.setValidity({ valueMissing: !0 }, "Enable this option"));
110
+ const internals = this._formAssociation.getInternals();
111
+ if (!internals || typeof internals.setValidity !== "function") return;
112
+ if (this._isDisabled || !this.required || this._checked) internals.setValidity({});
113
+ else internals.setValidity({ valueMissing: true }, "Enable this option");
68
114
  }
69
115
  handleClick() {
70
116
  if (this._dragged) {
71
- this._dragged = !1;
117
+ this._dragged = false;
72
118
  return;
73
119
  }
74
- this._isDisabled || this.loading || this._applyChecked(!this._checked);
120
+ if (this._isDisabled || this.loading) return;
121
+ this._applyChecked(!this._checked);
75
122
  }
76
123
  handleKeydown(e) {
77
- (e.key === " " || e.key === "Enter") && (e.preventDefault(), !(e.repeat || this._isDisabled || this.loading) && this._applyChecked(!this._checked));
78
- }
79
- _applyChecked(e, t = !0) {
80
- let n = this._checked;
81
- e !== n && (this._checked = e, this._formAssociation.sync(), this.requestUpdate("checked", n), t && this.dispatchEvent(new Event("input", {
82
- bubbles: !0,
83
- composed: !0
84
- })), this.dispatchEvent(new Event("change", {
85
- bubbles: !0,
86
- composed: !0
87
- })));
124
+ if (e.key !== " " && e.key !== "Enter") return;
125
+ e.preventDefault();
126
+ if (e.repeat || this._isDisabled || this.loading) return;
127
+ this._applyChecked(!this._checked);
128
+ }
129
+ _applyChecked(next, emitInput = true) {
130
+ const old = this._checked;
131
+ if (next === old) return;
132
+ this._checked = next;
133
+ this._formAssociation.sync();
134
+ this.requestUpdate("checked", old);
135
+ if (emitInput) this.dispatchEvent(new Event("input", {
136
+ bubbles: true,
137
+ composed: true
138
+ }));
139
+ this.dispatchEvent(new Event("change", {
140
+ bubbles: true,
141
+ composed: true
142
+ }));
88
143
  }
89
144
  handlePointerDown(e) {
90
145
  if (this._isDisabled || this.loading) return;
91
- this._pressed = !0;
92
- let t = this.renderRoot.querySelector(".wui-switch-track");
93
- if (t) {
94
- let e = t.getBoundingClientRect().width || 40;
95
- this._maxTravel = Math.max(1, e - 4 - 20);
146
+ this._pressed = true;
147
+ const track = this.renderRoot.querySelector(".wui-switch-track");
148
+ if (track) {
149
+ const trackWidth = track.getBoundingClientRect().width || 40;
150
+ this._maxTravel = Math.max(1, trackWidth - 4 - 20);
96
151
  } else this._maxTravel = 16;
97
- this._startOffset = this._checked ? this._maxTravel : 0, this._dragOffset = this._startOffset, this._dragProgress = +!!this._checked, this._dragGestureHandle?.destroy(), this._dragGestureHandle = c(e, {
152
+ this._startOffset = this._checked ? this._maxTravel : 0;
153
+ this._dragOffset = this._startOffset;
154
+ this._dragProgress = this._checked ? 1 : 0;
155
+ this._dragGestureHandle?.destroy();
156
+ this._dragGestureHandle = attachDragGesture(e, {
98
157
  axis: "x",
99
158
  threshold: 6,
100
- onMove: (e) => {
101
- this._isDragging = !0;
102
- let t = l(this._startOffset + e.deltaX, 0, this._maxTravel);
103
- this._dragOffset = t, this._dragProgress = u(t, 0, this._maxTravel), this.requestUpdate();
159
+ onMove: (info) => {
160
+ this._isDragging = true;
161
+ const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel);
162
+ this._dragOffset = current;
163
+ this._dragProgress = normalizeProgress(current, 0, this._maxTravel);
164
+ this.requestUpdate();
104
165
  },
105
- onEnd: (e) => {
106
- let t = this._isDragging;
107
- if (this._isDragging = !1, this._pressed = !1, t) {
108
- this._dragged = !0;
109
- let t = this._checked;
110
- if (t = e.velocityX > 300 ? !0 : e.velocityX < -300 ? !1 : this._dragProgress >= .5, t !== this._checked) {
111
- let e = this._checked;
112
- this._checked = t, this._formAssociation.sync(), this.requestUpdate("checked", e), this.dispatchEvent(new Event("input", {
113
- bubbles: !0,
114
- composed: !0
115
- })), this.dispatchEvent(new Event("change", {
116
- bubbles: !0,
117
- composed: !0
166
+ onEnd: (info) => {
167
+ const wasDragging = this._isDragging;
168
+ this._isDragging = false;
169
+ this._pressed = false;
170
+ if (wasDragging) {
171
+ this._dragged = true;
172
+ let targetChecked = this._checked;
173
+ if (info.velocityX > 300) targetChecked = true;
174
+ else if (info.velocityX < -300) targetChecked = false;
175
+ else targetChecked = this._dragProgress >= .5;
176
+ if (targetChecked !== this._checked) {
177
+ const old = this._checked;
178
+ this._checked = targetChecked;
179
+ this._formAssociation.sync();
180
+ this.requestUpdate("checked", old);
181
+ this.dispatchEvent(new Event("input", {
182
+ bubbles: true,
183
+ composed: true
184
+ }));
185
+ this.dispatchEvent(new Event("change", {
186
+ bubbles: true,
187
+ composed: true
118
188
  }));
119
189
  } else this.requestUpdate();
120
190
  }
121
191
  },
122
192
  onCancel: () => {
123
- this._isDragging = !1, this._pressed = !1, this.requestUpdate();
193
+ this._isDragging = false;
194
+ this._pressed = false;
195
+ this.requestUpdate();
124
196
  }
125
197
  });
126
198
  }
127
199
  handlePointerUp() {
128
- this._pressed = !1;
200
+ this._pressed = false;
129
201
  }
130
202
  handlePointerLeave() {
131
- this._isDragging || (this._pressed = !1);
203
+ if (!this._isDragging) this._pressed = false;
132
204
  }
133
205
  render() {
134
- let e = this._isDragging ? this._dragProgress >= .5 : this._checked, t = {
135
- "wui-switch-content": !0,
206
+ const isOpen = this._isDragging ? this._dragProgress >= .5 : this._checked;
207
+ const contentCls = {
208
+ "wui-switch-content": true,
136
209
  "is-label-empty": this._labelEmpty
137
- }, r = {
138
- "wui-switch-track": !0,
139
- "is-open": e,
210
+ };
211
+ const trackCls = {
212
+ "wui-switch-track": true,
213
+ "is-open": isOpen,
140
214
  "is-dragging": this._isDragging,
141
215
  "is-disabled": this._isDisabled || this.loading
142
- }, i = {
143
- "wui-switch-label": !0,
216
+ };
217
+ const labelCls = {
218
+ "wui-switch-label": true,
144
219
  "is-disabled": this._isDisabled || this.loading
145
- }, a = {
146
- "wui-switch-thumb": !0,
220
+ };
221
+ const thumbCls = {
222
+ "wui-switch-thumb": true,
147
223
  "wui-glass": this._pressed || this._isDragging,
148
224
  "is-pressed": this._pressed || this._isDragging
149
- }, o = this._isDragging ? { "--wui-switch-drag-offset": `${this._dragOffset}px` } : {};
150
- return p`
151
- <span class=${v(t)}>
225
+ };
226
+ const trackStyle = this._isDragging ? { "--wui-switch-drag-offset": `${this._dragOffset}px` } : {};
227
+ return html`
228
+ <span class=${classMap(contentCls)}>
152
229
  <span
153
- class=${v(r)}
154
- style=${y(o)}
230
+ class=${classMap(trackCls)}
231
+ style=${styleMap(trackStyle)}
155
232
  @pointerdown=${this.handlePointerDown}
156
233
  @pointerup=${this.handlePointerUp}
157
234
  @pointercancel=${this.handlePointerUp}
158
235
  @pointerleave=${this.handlePointerLeave}
159
236
  >
160
- <span class=${v(a)}>
161
- ${this.loading ? p`<span class="wui-switch-loading">
237
+ <span class=${classMap(thumbCls)}>
238
+ ${this.loading ? html`<span class="wui-switch-loading">
162
239
  <web-ui-icon
163
- .icon=${n}
240
+ .icon=${lucide_loader_circle_default}
164
241
  size="14"
165
242
  color="var(--wui-color-accent, #0071e3)"
166
243
  spin
@@ -168,25 +245,35 @@ var b = class extends i(f) {
168
245
  </span>` : ""}
169
246
  </span>
170
247
  </span>
171
- <span class=${v(i)}><slot></slot></span>
248
+ <span class=${classMap(labelCls)}><slot></slot></span>
172
249
  </span>
173
250
  `;
174
251
  }
175
252
  };
176
- e([_()], b.prototype, "_checked", void 0), e([_()], b.prototype, "_labelEmpty", void 0), e([g({
253
+ __decorate([state()], WebUiSwitch.prototype, "_checked", void 0);
254
+ __decorate([state()], WebUiSwitch.prototype, "_labelEmpty", void 0);
255
+ __decorate([property({
177
256
  type: String,
178
- reflect: !0
179
- })], b.prototype, "name", void 0), e([g({ type: String })], b.prototype, "value", void 0), e([g({
257
+ reflect: true
258
+ })], WebUiSwitch.prototype, "name", void 0);
259
+ __decorate([property({ type: String })], WebUiSwitch.prototype, "value", void 0);
260
+ __decorate([property({
180
261
  type: Boolean,
181
- reflect: !0
182
- })], b.prototype, "disabled", void 0), e([g({
262
+ reflect: true
263
+ })], WebUiSwitch.prototype, "disabled", void 0);
264
+ __decorate([property({
183
265
  type: Boolean,
184
- reflect: !0
185
- })], b.prototype, "required", void 0), e([g({
266
+ reflect: true
267
+ })], WebUiSwitch.prototype, "required", void 0);
268
+ __decorate([property({
186
269
  type: Boolean,
187
- reflect: !0
188
- })], b.prototype, "loading", void 0), e([_()], b.prototype, "_pressed", void 0), e([_()], b.prototype, "_isDragging", void 0), e([_()], b.prototype, "_dragOffset", void 0), e([_()], b.prototype, "_dragProgress", void 0), b = e([h("web-ui-switch")], b);
189
- //#endregion
190
- export { b as WebUiSwitch };
270
+ reflect: true
271
+ })], WebUiSwitch.prototype, "loading", void 0);
272
+ __decorate([state()], WebUiSwitch.prototype, "_pressed", void 0);
273
+ __decorate([state()], WebUiSwitch.prototype, "_isDragging", void 0);
274
+ __decorate([state()], WebUiSwitch.prototype, "_dragOffset", void 0);
275
+ __decorate([state()], WebUiSwitch.prototype, "_dragProgress", void 0);
276
+ WebUiSwitch = __decorate([customElement("web-ui-switch")], WebUiSwitch);
277
+ export { WebUiSwitch };
191
278
 
192
279
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import '@/components/icon'\n\nimport { html, LitElement, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp, normalizeProgress } from '@/shared/gesture/physics'\nimport { LabelEmptinessController } from '@/shared/label-emptiness'\n\nimport style from './style.css?inline'\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n @state() private _checked = false\n /** label 没有可渲染内容时收掉 track 与 label 之间的 gap。 */\n @state() private _labelEmpty = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private _pressed = false\n @state() private _isDragging = false\n @state() private _dragOffset = 0\n @state() private _dragProgress = 0\n\n private _dragged = false\n private _maxTravel = 20\n private _startOffset = 0\n private _dragGestureHandle: DragGestureHandle | null = null\n private _tabIndexBeforeDisabled: string | null = null\n private _isTabIndexSuppressed = false\n private readonly _handleHostClick = () => this.handleClick()\n private readonly _handleHostKeydown = (event: KeyboardEvent) => this.handleKeydown(event)\n\n override connectedCallback() {\n super.connectedCallback()\n this.addEventListener('click', this._handleHostClick)\n this.addEventListener('keydown', this._handleHostKeydown)\n this._syncAccessibility()\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('click', this._handleHostClick)\n this.removeEventListener('keydown', this._handleHostKeydown)\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n this._syncAccessibility()\n }\n\n private _syncAccessibility() {\n this.setAttribute('role', 'switch')\n this.setAttribute('aria-checked', String(this._checked))\n const isDisabled = this._isDisabled || this.loading\n this.setAttribute('aria-disabled', String(isDisabled))\n\n if (isDisabled) {\n if (!this._isTabIndexSuppressed) {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n this._isTabIndexSuppressed = true\n } else if (this.getAttribute('tabindex') !== '-1') {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n }\n this.tabIndex = -1\n } else if (this._isTabIndexSuppressed) {\n if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0\n else this.setAttribute('tabindex', this._tabIndexBeforeDisabled)\n this._isTabIndexSuppressed = false\n } else if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0\n }\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<boolean>({\n host: this,\n initialize: () => {\n if (this.hasAttribute('checked')) this._checked = true\n },\n getState: () => this._checked,\n setState: checked => {\n this.checked = checked\n },\n getFormValue: () => (this._checked ? this.value || 'on' : null),\n getFormState: () => String(this._checked),\n restoreState: state => {\n if (typeof state === 'string') this.checked = state === 'true'\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private readonly _labelEmptiness = new LabelEmptinessController(this, '.wui-switch-label', empty => {\n this._labelEmpty = empty\n })\n\n private _syncValidity() {\n const internals = this._formAssociation.getInternals()\n if (!internals || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) internals.setValidity({})\n else internals.setValidity({ valueMissing: true }, 'Enable this option')\n }\n\n // 交互由 switch host 处理,light DOM 标签文本与轨道点击都会冒泡到这里。\n private handleClick() {\n if (this._dragged) {\n this._dragged = false\n return\n }\n if (this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n // 自定义 switch host 承接焦点,Space 与 Enter 都切换状态。\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return\n e.preventDefault()\n if (e.repeat || this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n private _applyChecked(next: boolean, emitInput = true) {\n const old = this._checked\n if (next === old) return\n this._checked = next\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n if (emitInput) this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (this._isDisabled || this.loading) return\n this._pressed = true\n\n const track = this.renderRoot.querySelector<HTMLElement>('.wui-switch-track')\n if (track) {\n const trackWidth = track.getBoundingClientRect().width || 40\n // 拖拽时 thumb 的 pressed 布局盒为 20px(scale(1.5) 视觉放大),因此行程按 20px 布局盒钳制;\n // 释放后的 checked 静止位移为 20px(16px thumb),两者由 transition 衔接。\n this._maxTravel = Math.max(1, trackWidth - 4 - 20)\n } else {\n this._maxTravel = 16\n }\n\n this._startOffset = this._checked ? this._maxTravel : 0\n this._dragOffset = this._startOffset\n this._dragProgress = this._checked ? 1 : 0\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(e, {\n axis: 'x',\n threshold: 6,\n onMove: info => {\n this._isDragging = true\n const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel)\n this._dragOffset = current\n this._dragProgress = normalizeProgress(current, 0, this._maxTravel)\n this.requestUpdate()\n },\n onEnd: info => {\n const wasDragging = this._isDragging\n this._isDragging = false\n this._pressed = false\n\n if (wasDragging) {\n this._dragged = true\n let targetChecked = this._checked\n if (info.velocityX > 300) {\n targetChecked = true\n } else if (info.velocityX < -300) {\n targetChecked = false\n } else {\n targetChecked = this._dragProgress >= 0.5\n }\n\n if (targetChecked !== this._checked) {\n const old = this._checked\n this._checked = targetChecked\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else {\n this.requestUpdate()\n }\n }\n },\n onCancel: () => {\n this._isDragging = false\n this._pressed = false\n this.requestUpdate()\n }\n })\n }\n\n private handlePointerUp() {\n this._pressed = false\n }\n\n private handlePointerLeave() {\n if (!this._isDragging) {\n this._pressed = false\n }\n }\n\n override render() {\n const isOpen = this._isDragging ? this._dragProgress >= 0.5 : this._checked\n const contentCls = {\n 'wui-switch-content': true,\n 'is-label-empty': this._labelEmpty\n }\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': isOpen,\n 'is-dragging': this._isDragging,\n 'is-disabled': this._isDisabled || this.loading\n }\n const labelCls = {\n 'wui-switch-label': true,\n 'is-disabled': this._isDisabled || this.loading\n }\n // wui-glass 条件化:静止态实体白 thumb,按压/拖拽时切换为玻璃(backdrop blur +\n // 无填充 + 描边)并放大,回到最初修复不跟手问题时期的视觉结构。\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this._pressed || this._isDragging,\n 'is-pressed': this._pressed || this._isDragging\n }\n const trackStyle = this._isDragging ? { '--wui-switch-drag-offset': `${this._dragOffset}px` } : {}\n\n return html`\n <span class=${classMap(contentCls)}>\n <span\n class=${classMap(trackCls)}\n style=${styleMap(trackStyle)}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <span class=${classMap(thumbCls)}>\n ${\n this.loading\n ? html`<span class=\"wui-switch-loading\">\n <web-ui-icon\n .icon=${lucideLoaderCircle}\n size=\"14\"\n color=\"var(--wui-color-accent, #0071e3)\"\n spin\n ></web-ui-icon>\n </span>`\n : ''\n }\n </span>\n </span>\n <span class=${classMap(labelCls)}><slot></slot></span>\n </span>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["glass","style","lucideLoaderCircle"],"sources":["../../../src/components/switch/index.ts"],"sourcesContent":["import '@/components/icon'\n\nimport { html, LitElement, unsafeCSS, type PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { lucideLoaderCircle } from '@/icons'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp, normalizeProgress } from '@/shared/gesture/physics'\nimport { LabelEmptinessController } from '@/shared/label-emptiness'\n\nimport style from './style.css?inline'\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-switch')\nexport class WebUiSwitch extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n @state() private _checked = false\n /** label 没有可渲染内容时收掉 track 与 label 之间的 gap。 */\n @state() private _labelEmpty = false\n\n get checked(): boolean {\n return this._checked\n }\n\n set checked(v: boolean) {\n const old = this._checked\n this._checked = v\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n }\n\n @property({ type: String, reflect: true }) name = ''\n @property({ type: String }) value = ''\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: Boolean, reflect: true }) loading = false\n @state() private _pressed = false\n @state() private _isDragging = false\n @state() private _dragOffset = 0\n @state() private _dragProgress = 0\n\n private _dragged = false\n private _maxTravel = 20\n private _startOffset = 0\n private _dragGestureHandle: DragGestureHandle | null = null\n private _tabIndexBeforeDisabled: string | null = null\n private _isTabIndexSuppressed = false\n private readonly _handleHostClick = () => this.handleClick()\n private readonly _handleHostKeydown = (event: KeyboardEvent) => this.handleKeydown(event)\n\n override connectedCallback() {\n super.connectedCallback()\n this.addEventListener('click', this._handleHostClick)\n this.addEventListener('keydown', this._handleHostKeydown)\n this._syncAccessibility()\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this.removeEventListener('click', this._handleHostClick)\n this.removeEventListener('keydown', this._handleHostKeydown)\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties)\n this._syncAccessibility()\n }\n\n private _syncAccessibility() {\n this.setAttribute('role', 'switch')\n this.setAttribute('aria-checked', String(this._checked))\n const isDisabled = this._isDisabled || this.loading\n this.setAttribute('aria-disabled', String(isDisabled))\n\n if (isDisabled) {\n if (!this._isTabIndexSuppressed) {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n this._isTabIndexSuppressed = true\n } else if (this.getAttribute('tabindex') !== '-1') {\n this._tabIndexBeforeDisabled = this.getAttribute('tabindex')\n }\n this.tabIndex = -1\n } else if (this._isTabIndexSuppressed) {\n if (this._tabIndexBeforeDisabled === null) this.tabIndex = 0\n else this.setAttribute('tabindex', this._tabIndexBeforeDisabled)\n this._isTabIndexSuppressed = false\n } else if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0\n }\n }\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n private readonly _formAssociation = defineFormAssociation<boolean>({\n host: this,\n initialize: () => {\n if (this.hasAttribute('checked')) this._checked = true\n },\n getState: () => this._checked,\n setState: checked => {\n this.checked = checked\n },\n getFormValue: () => (this._checked ? this.value || 'on' : null),\n getFormState: () => String(this._checked),\n restoreState: state => {\n if (typeof state === 'string') this.checked = state === 'true'\n },\n syncValidity: () => this._syncValidity()\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private readonly _labelEmptiness = new LabelEmptinessController(this, '.wui-switch-label', empty => {\n this._labelEmpty = empty\n })\n\n private _syncValidity() {\n const internals = this._formAssociation.getInternals()\n if (!internals || typeof internals.setValidity !== 'function') return\n if (this._isDisabled || !this.required || this._checked) internals.setValidity({})\n else internals.setValidity({ valueMissing: true }, 'Enable this option')\n }\n\n // 交互由 switch host 处理,light DOM 标签文本与轨道点击都会冒泡到这里。\n private handleClick() {\n if (this._dragged) {\n this._dragged = false\n return\n }\n if (this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n // 自定义 switch host 承接焦点,Space 与 Enter 都切换状态。\n private handleKeydown(e: KeyboardEvent) {\n if (e.key !== ' ' && e.key !== 'Enter') return\n e.preventDefault()\n if (e.repeat || this._isDisabled || this.loading) return\n this._applyChecked(!this._checked)\n }\n\n private _applyChecked(next: boolean, emitInput = true) {\n const old = this._checked\n if (next === old) return\n this._checked = next\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n if (emitInput) this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n private handlePointerDown(e: PointerEvent) {\n if (this._isDisabled || this.loading) return\n this._pressed = true\n\n const track = this.renderRoot.querySelector<HTMLElement>('.wui-switch-track')\n if (track) {\n const trackWidth = track.getBoundingClientRect().width || 40\n // 拖拽时 thumb 的 pressed 布局盒为 20px(scale(1.5) 视觉放大),因此行程按 20px 布局盒钳制;\n // 释放后的 checked 静止位移为 20px(16px thumb),两者由 transition 衔接。\n this._maxTravel = Math.max(1, trackWidth - 4 - 20)\n } else {\n this._maxTravel = 16\n }\n\n this._startOffset = this._checked ? this._maxTravel : 0\n this._dragOffset = this._startOffset\n this._dragProgress = this._checked ? 1 : 0\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(e, {\n axis: 'x',\n threshold: 6,\n onMove: info => {\n this._isDragging = true\n const current = clamp(this._startOffset + info.deltaX, 0, this._maxTravel)\n this._dragOffset = current\n this._dragProgress = normalizeProgress(current, 0, this._maxTravel)\n this.requestUpdate()\n },\n onEnd: info => {\n const wasDragging = this._isDragging\n this._isDragging = false\n this._pressed = false\n\n if (wasDragging) {\n this._dragged = true\n let targetChecked = this._checked\n if (info.velocityX > 300) {\n targetChecked = true\n } else if (info.velocityX < -300) {\n targetChecked = false\n } else {\n targetChecked = this._dragProgress >= 0.5\n }\n\n if (targetChecked !== this._checked) {\n const old = this._checked\n this._checked = targetChecked\n this._formAssociation.sync()\n this.requestUpdate('checked', old)\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n } else {\n this.requestUpdate()\n }\n }\n },\n onCancel: () => {\n this._isDragging = false\n this._pressed = false\n this.requestUpdate()\n }\n })\n }\n\n private handlePointerUp() {\n this._pressed = false\n }\n\n private handlePointerLeave() {\n if (!this._isDragging) {\n this._pressed = false\n }\n }\n\n override render() {\n const isOpen = this._isDragging ? this._dragProgress >= 0.5 : this._checked\n const contentCls = {\n 'wui-switch-content': true,\n 'is-label-empty': this._labelEmpty\n }\n const trackCls = {\n 'wui-switch-track': true,\n 'is-open': isOpen,\n 'is-dragging': this._isDragging,\n 'is-disabled': this._isDisabled || this.loading\n }\n const labelCls = {\n 'wui-switch-label': true,\n 'is-disabled': this._isDisabled || this.loading\n }\n // wui-glass 条件化:静止态实体白 thumb,按压/拖拽时切换为玻璃(backdrop blur +\n // 无填充 + 描边)并放大。\n const thumbCls = {\n 'wui-switch-thumb': true,\n 'wui-glass': this._pressed || this._isDragging,\n 'is-pressed': this._pressed || this._isDragging\n }\n const trackStyle = this._isDragging ? { '--wui-switch-drag-offset': `${this._dragOffset}px` } : {}\n\n return html`\n <span class=${classMap(contentCls)}>\n <span\n class=${classMap(trackCls)}\n style=${styleMap(trackStyle)}\n @pointerdown=${this.handlePointerDown}\n @pointerup=${this.handlePointerUp}\n @pointercancel=${this.handlePointerUp}\n @pointerleave=${this.handlePointerLeave}\n >\n <span class=${classMap(thumbCls)}>\n ${\n this.loading\n ? html`<span class=\"wui-switch-loading\">\n <web-ui-icon\n .icon=${lucideLoaderCircle}\n size=\"14\"\n color=\"var(--wui-color-accent, #0071e3)\"\n spin\n ></web-ui-icon>\n </span>`\n : ''\n }\n </span>\n </span>\n <span class=${classMap(labelCls)}><slot></slot></span>\n </span>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-switch': WebUiSwitch\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- //#region src/components/switch/style.css?inline
2
- var e = "*,:before,:after{box-sizing:border-box}:host{display:inline-flex}:host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.wui-switch-content{align-items:center;gap:8px;display:inline-flex}.wui-switch-content.is-label-empty{gap:0}.wui-switch-label.is-disabled{opacity:.4}.wui-switch-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);outline:var(--wui-focus-ring-width,3px) solid transparent;outline-offset:2px;width:40px;height:20px;transition:background-color var(--wui-duration-trigger,.16s) ease;justify-content:space-between;align-items:center;display:flex;position:relative}.wui-switch-track.is-open{background-color:var(--wui-color-accent,#0071e3)}.wui-switch-track.is-disabled{cursor:not-allowed;opacity:.4}.wui-switch-thumb{--wui-glass-corner-radius:calc(16px / 2);transform-origin:50%;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:16px;height:16px;transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-trigger,.16s) cubic-bezier(.4, 0, .2, 1), border-radius var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;top:2px;left:2px;overflow:hidden;transform:translate(0)scale(1)}.wui-switch-thumb.is-pressed{--wui-color-glass-ring:transparent;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:20px;box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(0)scale(1.5)}.wui-switch-thumb:not(.is-pressed){background-color:var(--wui-color-on-control,#fff);box-shadow:1px 2px 6px #0003}.wui-switch-track.is-open .wui-switch-thumb{transform:translate(20px)scale(1)}.wui-switch-track.is-open .wui-switch-thumb.is-pressed{transform:translate(16px)scale(1.5)}.wui-switch-track.is-dragging{cursor:grabbing}:host(:focus-visible) .wui-switch-track{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track{outline-color:#0000}.wui-switch-track.is-dragging .wui-switch-thumb,.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed{transform:translateX(var(--wui-switch-drag-offset,0)) scale(1.5);transition:none}.wui-switch-loading{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}";
3
- //#endregion
4
- export { e as default };
1
+ // src/components/switch/style.css?inline
2
+ var style_default = "*,:before,:after{box-sizing:border-box}:host{display:inline-flex}:host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.wui-switch-content{align-items:center;gap:8px;display:inline-flex}.wui-switch-content.is-label-empty{gap:0}.wui-switch-label.is-disabled{opacity:.4}.wui-switch-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);outline:var(--wui-focus-ring-width,3px) solid transparent;outline-offset:2px;width:40px;height:20px;transition:background-color var(--wui-duration-trigger,.16s) ease;justify-content:space-between;align-items:center;display:flex;position:relative}.wui-switch-track.is-open{background-color:var(--wui-color-accent,#0071e3)}.wui-switch-track.is-disabled{cursor:not-allowed;opacity:.4}.wui-switch-thumb{--wui-glass-corner-radius:calc(16px / 2);transform-origin:50%;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:16px;height:16px;transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-trigger,.16s) cubic-bezier(.4, 0, .2, 1), border-radius var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;top:2px;left:2px;overflow:hidden;transform:translate(0)scale(1)}.wui-switch-thumb.is-pressed{--wui-color-glass-ring:transparent;border-radius:var(--wui-radius-control,calc(infinity * 1px));width:20px;box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(0)scale(1.5)}.wui-switch-thumb:not(.is-pressed){background-color:var(--wui-color-on-control,#fff);box-shadow:1px 2px 6px #0003}.wui-switch-track.is-open .wui-switch-thumb{transform:translate(20px)scale(1)}.wui-switch-track.is-open .wui-switch-thumb.is-pressed{transform:translate(16px)scale(1.5)}.wui-switch-track.is-dragging{cursor:grabbing}:host(:focus-visible) .wui-switch-track{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track{outline-color:#0000}.wui-switch-track.is-dragging .wui-switch-thumb,.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed{transform:translateX(var(--wui-switch-drag-offset,0)) scale(1.5);transition:none}.wui-switch-loading{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}\n";
3
+ export { style_default as default };
5
4
 
6
5
  //# sourceMappingURL=style.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-switch-content {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n}\n\n.wui-switch-content.is-label-empty {\n gap: 0;\n}\n\n.wui-switch-label.is-disabled {\n opacity: 0.4;\n}\n\n.wui-switch-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n width: 40px;\n height: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n outline: var(--wui-focus-ring-width, 3px) solid transparent;\n outline-offset: 2px;\n\n transition: background-color var(--wui-duration-trigger, 160ms) ease;\n\n &.is-open {\n background-color: var(--wui-color-accent, #0071e3);\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.wui-switch-thumb {\n /* 按压态 thumb 是 16px 高的 pill(is-pressed 只加宽到 20px),取短边一半 */\n --wui-glass-corner-radius: calc(16px / 2);\n\n position: absolute;\n top: 2px;\n left: 2px;\n transform-origin: center center;\n transform: translateX(0) scale(1);\n\n overflow: hidden;\n\n width: 16px;\n height: 16px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-trigger, 160ms) cubic-bezier(0.4, 0, 0.2, 1),\n border-radius var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n &.is-pressed {\n /* 环底色随按压态转 transparent:pill 的长边长不过 3R,底色不覆盖中段,\n 去掉它只是少一层均匀灰 tint(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translateX(0) scale(1.5);\n\n width: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &:not(.is-pressed) {\n background-color: var(--wui-color-on-control, #fff);\n box-shadow: 1px 2px 6px rgb(0 0 0 / 0.2);\n }\n}\n\n.wui-switch-track.is-open .wui-switch-thumb {\n transform: translateX(20px) scale(1);\n\n &.is-pressed {\n transform: translateX(16px) scale(1.5);\n }\n}\n\n.wui-switch-track.is-dragging {\n cursor: grabbing;\n}\n\n:host(:focus-visible) .wui-switch-track {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n}\n\n:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track {\n outline-color: transparent;\n}\n\n.wui-switch-track.is-dragging .wui-switch-thumb,\n.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed {\n transform: translateX(var(--wui-switch-drag-offset, 0)) scale(1.5);\n transition: none;\n}\n\n.wui-switch-loading {\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/switch/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n}\n\n:host(:focus-visible) {\n outline: none;\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-switch-content {\n display: inline-flex;\n gap: 8px;\n align-items: center;\n}\n\n.wui-switch-content.is-label-empty {\n gap: 0;\n}\n\n.wui-switch-label.is-disabled {\n opacity: 0.4;\n}\n\n.wui-switch-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n width: 40px;\n height: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n outline: var(--wui-focus-ring-width, 3px) solid transparent;\n outline-offset: 2px;\n\n transition: background-color var(--wui-duration-trigger, 160ms) ease;\n\n &.is-open {\n background-color: var(--wui-color-accent, #0071e3);\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.wui-switch-thumb {\n /* 按压态 thumb 是 16px 高的 pill(is-pressed 只加宽到 20px),取短边一半 */\n --wui-glass-corner-radius: calc(16px / 2);\n\n position: absolute;\n top: 2px;\n left: 2px;\n transform-origin: center center;\n transform: translateX(0) scale(1);\n\n overflow: hidden;\n\n width: 16px;\n height: 16px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-trigger, 160ms) cubic-bezier(0.4, 0, 0.2, 1),\n border-radius var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n &.is-pressed {\n /* 环底色随按压态转 transparent:pill 的长边长不过 3R,底色不覆盖中段,\n 去掉它只是少一层均匀灰 tint(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translateX(0) scale(1.5);\n\n width: 20px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &:not(.is-pressed) {\n background-color: var(--wui-color-on-control, #fff);\n box-shadow: 1px 2px 6px rgb(0 0 0 / 0.2);\n }\n}\n\n.wui-switch-track.is-open .wui-switch-thumb {\n transform: translateX(20px) scale(1);\n\n &.is-pressed {\n transform: translateX(16px) scale(1.5);\n }\n}\n\n.wui-switch-track.is-dragging {\n cursor: grabbing;\n}\n\n:host(:focus-visible) .wui-switch-track {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n}\n\n:host([data-wui-pointer-focus]:focus-visible) .wui-switch-track {\n outline-color: transparent;\n}\n\n.wui-switch-track.is-dragging .wui-switch-thumb,\n.wui-switch-track.is-dragging .wui-switch-thumb.is-pressed {\n transform: translateX(var(--wui-switch-drag-offset, 0)) scale(1.5);\n transition: none;\n}\n\n.wui-switch-loading {\n pointer-events: none;\n\n position: absolute;\n inset: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}