@warp-ds/elements 2.2.0-next.2 → 2.2.0-next.21

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 (516) hide show
  1. package/README.md +228 -28
  2. package/dist/.storybook/utilities.d.ts +28 -0
  3. package/dist/.storybook/utilities.js +52 -0
  4. package/dist/api.js +1 -49
  5. package/dist/api.js.map +4 -4
  6. package/dist/custom-elements.json +7146 -0
  7. package/dist/index.d.ts +1847 -18
  8. package/dist/packages/affix/affix.react.stories.d.ts +9 -0
  9. package/dist/packages/affix/affix.react.stories.js +10 -0
  10. package/dist/packages/affix/affix.stories.d.ts +10 -0
  11. package/dist/packages/affix/affix.stories.js +25 -0
  12. package/dist/packages/affix/affix.test.d.ts +1 -0
  13. package/dist/packages/affix/affix.test.js +9 -0
  14. package/dist/packages/affix/index.d.ts +47 -24
  15. package/dist/packages/affix/index.js +2448 -2240
  16. package/dist/packages/affix/index.js.map +4 -4
  17. package/dist/packages/affix/react.d.ts +2 -0
  18. package/dist/packages/affix/react.js +15 -0
  19. package/dist/packages/affix/styles.d.ts +1 -0
  20. package/dist/packages/affix/styles.js +2 -0
  21. package/dist/packages/alert/alert.react.stories.d.ts +13 -0
  22. package/dist/packages/alert/alert.react.stories.js +44 -0
  23. package/dist/packages/alert/alert.stories.d.ts +15 -0
  24. package/dist/packages/alert/alert.stories.js +68 -0
  25. package/dist/packages/alert/alert.test.d.ts +1 -0
  26. package/dist/packages/alert/alert.test.js +18 -0
  27. package/dist/packages/alert/index.d.ts +21 -16
  28. package/dist/packages/alert/index.js +2452 -2446
  29. package/dist/packages/alert/index.js.map +4 -4
  30. package/dist/packages/alert/react.d.ts +2 -0
  31. package/dist/packages/alert/react.js +11 -0
  32. package/dist/packages/alert/styles.d.ts +1 -0
  33. package/dist/packages/alert/styles.js +2 -0
  34. package/dist/packages/attention/attention.react.stories.d.ts +15 -0
  35. package/dist/packages/attention/attention.react.stories.js +92 -0
  36. package/dist/packages/attention/attention.stories.d.ts +15 -0
  37. package/dist/packages/attention/attention.stories.js +173 -0
  38. package/dist/packages/attention/attention.test.d.ts +1 -0
  39. package/dist/packages/attention/attention.test.js +11 -0
  40. package/dist/packages/attention/index.d.ts +62 -89
  41. package/dist/packages/attention/index.js +3521 -3924
  42. package/dist/packages/attention/index.js.map +4 -4
  43. package/dist/packages/attention/layout-styles.d.ts +1 -0
  44. package/dist/packages/attention/layout-styles.js +905 -0
  45. package/dist/packages/attention/locales/da/messages.mjs +1 -0
  46. package/dist/packages/attention/locales/en/messages.mjs +1 -0
  47. package/dist/packages/attention/locales/fi/messages.mjs +1 -0
  48. package/dist/packages/attention/locales/nb/messages.mjs +1 -0
  49. package/dist/packages/attention/locales/sv/messages.mjs +1 -0
  50. package/dist/packages/attention/react.d.ts +15 -0
  51. package/dist/packages/attention/react.js +17 -0
  52. package/dist/packages/attention/styles.d.ts +1 -0
  53. package/dist/packages/attention/styles.js +2 -0
  54. package/dist/packages/badge/badge.react.stories.d.ts +18 -0
  55. package/dist/packages/badge/badge.react.stories.js +60 -0
  56. package/dist/packages/badge/badge.stories.d.ts +17 -0
  57. package/dist/packages/badge/badge.stories.js +68 -0
  58. package/dist/packages/badge/badge.test.d.ts +1 -0
  59. package/dist/packages/badge/badge.test.js +9 -0
  60. package/dist/packages/badge/index.d.ts +12 -11
  61. package/dist/packages/badge/index.js +2441 -300
  62. package/dist/packages/badge/index.js.map +4 -4
  63. package/dist/packages/badge/react.d.ts +2 -0
  64. package/dist/packages/badge/react.js +11 -0
  65. package/dist/packages/badge/styles.d.ts +1 -0
  66. package/dist/packages/badge/styles.js +2 -0
  67. package/dist/packages/box/box.react.stories.d.ts +15 -0
  68. package/dist/packages/box/box.react.stories.js +45 -0
  69. package/dist/packages/box/box.stories.d.ts +14 -0
  70. package/dist/packages/box/box.stories.js +59 -0
  71. package/dist/packages/box/box.test.d.ts +1 -0
  72. package/dist/packages/box/box.test.js +9 -0
  73. package/dist/packages/box/index.d.ts +17 -20
  74. package/dist/packages/box/index.js +2443 -299
  75. package/dist/packages/box/index.js.map +4 -4
  76. package/dist/packages/box/react.d.ts +2 -0
  77. package/dist/packages/box/react.js +11 -0
  78. package/dist/packages/box/slot.test.d.ts +1 -0
  79. package/dist/packages/box/slot.test.js +9 -0
  80. package/dist/packages/box/styles.d.ts +1 -0
  81. package/dist/packages/box/styles.js +2 -0
  82. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.d.ts +13 -0
  83. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.js +40 -0
  84. package/dist/packages/breadcrumbs/breadcrumbs.stories.d.ts +12 -0
  85. package/dist/packages/breadcrumbs/breadcrumbs.stories.js +60 -0
  86. package/dist/packages/breadcrumbs/breadcrumbs.test.d.ts +1 -0
  87. package/dist/packages/breadcrumbs/breadcrumbs.test.js +16 -0
  88. package/dist/packages/breadcrumbs/index.d.ts +19 -16
  89. package/dist/packages/breadcrumbs/index.js +2402 -2051
  90. package/dist/packages/breadcrumbs/index.js.map +4 -4
  91. package/dist/packages/breadcrumbs/locales/da/messages.mjs +1 -0
  92. package/dist/packages/breadcrumbs/locales/en/messages.mjs +1 -0
  93. package/dist/packages/breadcrumbs/locales/fi/messages.mjs +1 -0
  94. package/dist/packages/breadcrumbs/locales/nb/messages.mjs +1 -0
  95. package/dist/packages/breadcrumbs/locales/sv/messages.mjs +1 -0
  96. package/dist/packages/breadcrumbs/react.d.ts +2 -0
  97. package/dist/packages/breadcrumbs/react.js +11 -0
  98. package/dist/packages/breadcrumbs/styles.d.ts +1 -0
  99. package/dist/packages/breadcrumbs/styles.js +2 -0
  100. package/dist/packages/button/button.react.stories.d.ts +22 -0
  101. package/dist/packages/button/button.react.stories.js +102 -0
  102. package/dist/packages/button/button.stories.d.ts +21 -0
  103. package/dist/packages/button/button.stories.js +119 -0
  104. package/dist/packages/button/button.test.d.ts +1 -0
  105. package/dist/packages/button/button.test.js +25 -0
  106. package/dist/packages/button/index.d.ts +106 -56
  107. package/dist/packages/button/index.js +2618 -2130
  108. package/dist/packages/button/index.js.map +4 -4
  109. package/dist/packages/button/locales/da/messages.mjs +1 -0
  110. package/dist/packages/button/locales/en/messages.mjs +1 -0
  111. package/dist/packages/button/locales/fi/messages.mjs +1 -0
  112. package/dist/packages/button/locales/nb/messages.mjs +1 -0
  113. package/dist/packages/button/locales/sv/messages.mjs +1 -0
  114. package/dist/packages/button/react.d.ts +2 -0
  115. package/dist/packages/button/react.js +11 -0
  116. package/dist/packages/button/styles.d.ts +1 -0
  117. package/dist/packages/button/styles.js +2 -0
  118. package/dist/packages/card/card.react.stories.d.ts +16 -0
  119. package/dist/packages/card/card.react.stories.js +63 -0
  120. package/dist/packages/card/card.stories.d.ts +15 -0
  121. package/dist/packages/card/card.stories.js +82 -0
  122. package/dist/packages/card/card.test.d.ts +1 -0
  123. package/dist/packages/card/card.test.js +9 -0
  124. package/dist/packages/card/index.d.ts +27 -15
  125. package/dist/packages/card/index.js +2403 -2067
  126. package/dist/packages/card/index.js.map +4 -4
  127. package/dist/packages/card/locales/da/messages.mjs +1 -0
  128. package/dist/packages/card/locales/en/messages.mjs +1 -0
  129. package/dist/packages/card/locales/fi/messages.mjs +1 -0
  130. package/dist/packages/card/locales/nb/messages.mjs +1 -0
  131. package/dist/packages/card/locales/sv/messages.mjs +1 -0
  132. package/dist/packages/card/react.d.ts +2 -0
  133. package/dist/packages/card/react.js +11 -0
  134. package/dist/packages/card/styles.d.ts +1 -0
  135. package/dist/packages/card/styles.js +2 -0
  136. package/dist/packages/combobox/combobox.react.stories.d.ts +28 -0
  137. package/dist/packages/combobox/combobox.react.stories.js +90 -0
  138. package/dist/packages/combobox/combobox.stories.d.ts +18 -0
  139. package/dist/packages/combobox/combobox.stories.js +117 -0
  140. package/dist/packages/combobox/index.d.ts +95 -0
  141. package/dist/packages/combobox/index.js +2492 -0
  142. package/dist/packages/combobox/index.js.map +7 -0
  143. package/dist/packages/combobox/locales/da/messages.d.mts +1 -0
  144. package/dist/packages/combobox/locales/da/messages.mjs +1 -0
  145. package/dist/packages/combobox/locales/en/messages.d.mts +1 -0
  146. package/dist/packages/combobox/locales/en/messages.mjs +1 -0
  147. package/dist/packages/combobox/locales/fi/messages.d.mts +1 -0
  148. package/dist/packages/combobox/locales/fi/messages.mjs +1 -0
  149. package/dist/packages/combobox/locales/nb/messages.d.mts +1 -0
  150. package/dist/packages/combobox/locales/nb/messages.mjs +1 -0
  151. package/dist/packages/combobox/locales/sv/messages.d.mts +1 -0
  152. package/dist/packages/combobox/locales/sv/messages.mjs +1 -0
  153. package/dist/packages/combobox/react.d.ts +7 -0
  154. package/dist/packages/combobox/react.js +17 -0
  155. package/dist/packages/combobox/styles.d.ts +1 -0
  156. package/dist/packages/combobox/styles.js +2 -0
  157. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -0
  158. package/dist/packages/datepicker/DatePicker.test.js +69 -0
  159. package/dist/packages/datepicker/datepicker.d.ts +102 -0
  160. package/dist/packages/datepicker/datepicker.js +2785 -0
  161. package/dist/packages/datepicker/datepicker.js.map +7 -0
  162. package/dist/packages/datepicker/datepicker.react.stories.d.ts +18 -0
  163. package/dist/packages/datepicker/datepicker.react.stories.js +26 -0
  164. package/dist/packages/datepicker/datepicker.stories.d.ts +12 -0
  165. package/dist/packages/datepicker/datepicker.stories.js +51 -0
  166. package/dist/packages/datepicker/datepicker.test.d.ts +2 -0
  167. package/dist/packages/datepicker/datepicker.test.js +62 -0
  168. package/dist/packages/datepicker/index.d.ts +1 -0
  169. package/dist/packages/datepicker/index.js +2785 -0
  170. package/dist/packages/datepicker/index.js.map +7 -0
  171. package/dist/packages/datepicker/locales/da/messages.d.mts +1 -0
  172. package/dist/packages/datepicker/locales/da/messages.mjs +1 -0
  173. package/dist/packages/datepicker/locales/en/messages.d.mts +1 -0
  174. package/dist/packages/datepicker/locales/en/messages.mjs +1 -0
  175. package/dist/packages/datepicker/locales/fi/messages.d.mts +1 -0
  176. package/dist/packages/datepicker/locales/fi/messages.mjs +1 -0
  177. package/dist/packages/datepicker/locales/nb/messages.d.mts +1 -0
  178. package/dist/packages/datepicker/locales/nb/messages.mjs +1 -0
  179. package/dist/packages/datepicker/locales/sv/messages.d.mts +1 -0
  180. package/dist/packages/datepicker/locales/sv/messages.mjs +1 -0
  181. package/dist/packages/datepicker/react.d.ts +5 -0
  182. package/dist/packages/datepicker/react.js +15 -0
  183. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.d.ts +1 -0
  184. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +15 -0
  185. package/dist/packages/datepicker/styles/w-datepicker-day.styles.d.ts +1 -0
  186. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +64 -0
  187. package/dist/packages/datepicker/styles/w-datepicker-month.styles.d.ts +1 -0
  188. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +72 -0
  189. package/dist/packages/datepicker/styles/w-datepicker.styles.d.ts +1 -0
  190. package/dist/packages/datepicker/styles/w-datepicker.styles.js +101 -0
  191. package/dist/packages/datepicker/utils.d.ts +13 -0
  192. package/dist/packages/datepicker/utils.js +28 -0
  193. package/dist/packages/dead-toggle/dead-toggle.react.stories.d.ts +15 -0
  194. package/dist/packages/dead-toggle/dead-toggle.react.stories.js +34 -0
  195. package/dist/packages/dead-toggle/dead-toggle.stories.d.ts +14 -0
  196. package/dist/packages/dead-toggle/dead-toggle.stories.js +45 -0
  197. package/dist/packages/dead-toggle/dead-toggle.test.d.ts +1 -0
  198. package/dist/packages/dead-toggle/dead-toggle.test.js +9 -0
  199. package/dist/packages/dead-toggle/index.d.ts +16 -0
  200. package/dist/packages/dead-toggle/index.js +2487 -0
  201. package/dist/packages/dead-toggle/index.js.map +7 -0
  202. package/dist/packages/dead-toggle/react.d.ts +2 -0
  203. package/dist/packages/dead-toggle/react.js +11 -0
  204. package/dist/packages/expandable/expandable.react.stories.d.ts +18 -0
  205. package/dist/packages/expandable/expandable.react.stories.js +103 -0
  206. package/dist/packages/expandable/expandable.stories.d.ts +19 -0
  207. package/dist/packages/expandable/expandable.stories.js +133 -0
  208. package/dist/packages/expandable/expandable.test.d.ts +1 -0
  209. package/dist/packages/expandable/expandable.test.js +24 -0
  210. package/dist/packages/expandable/index.d.ts +52 -50
  211. package/dist/packages/expandable/index.js +2424 -2286
  212. package/dist/packages/expandable/index.js.map +4 -4
  213. package/dist/packages/expandable/react.d.ts +2 -0
  214. package/dist/packages/expandable/react.js +11 -0
  215. package/dist/packages/expandable/styles.d.ts +1 -0
  216. package/dist/packages/expandable/styles.js +2 -0
  217. package/dist/packages/i18n.js +45 -0
  218. package/dist/packages/link/index.d.ts +34 -0
  219. package/dist/packages/link/index.js +2646 -0
  220. package/dist/packages/link/index.js.map +7 -0
  221. package/dist/packages/link/link.react.stories.d.ts +21 -0
  222. package/dist/packages/link/link.react.stories.js +96 -0
  223. package/dist/packages/link/link.stories.d.ts +20 -0
  224. package/dist/packages/link/link.stories.js +110 -0
  225. package/dist/packages/link/link.test.d.ts +1 -0
  226. package/dist/packages/link/link.test.js +9 -0
  227. package/dist/packages/link/react.d.ts +2 -0
  228. package/dist/packages/link/react.js +11 -0
  229. package/dist/packages/link/styles.d.ts +1 -0
  230. package/dist/packages/link/styles.js +200 -0
  231. package/dist/packages/modal/index.d.ts +4 -5
  232. package/dist/packages/modal/index.js +2649 -2575
  233. package/dist/packages/modal/index.js.map +4 -4
  234. package/dist/packages/modal/locales/da/messages.mjs +1 -0
  235. package/dist/packages/modal/locales/en/messages.mjs +1 -0
  236. package/dist/packages/modal/locales/fi/messages.mjs +1 -0
  237. package/dist/packages/modal/locales/nb/messages.mjs +1 -0
  238. package/dist/packages/modal/locales/sv/messages.mjs +1 -0
  239. package/dist/packages/modal/modal-footer.d.ts +13 -11
  240. package/dist/packages/modal/modal-footer.js +2460 -0
  241. package/dist/packages/modal/modal-footer.js.map +7 -0
  242. package/dist/packages/modal/modal-header.d.ts +25 -31
  243. package/dist/packages/modal/modal-header.js +2584 -0
  244. package/dist/packages/modal/modal-header.js.map +7 -0
  245. package/dist/packages/modal/modal-main.d.ts +27 -31
  246. package/dist/packages/modal/modal-main.js +2572 -0
  247. package/dist/packages/modal/modal-main.js.map +7 -0
  248. package/dist/packages/modal/modal.react.stories.d.ts +14 -0
  249. package/dist/packages/modal/modal.react.stories.js +27 -0
  250. package/dist/packages/modal/modal.stories.d.ts +19 -0
  251. package/dist/packages/modal/modal.stories.js +160 -0
  252. package/dist/packages/modal/react.d.ts +12 -0
  253. package/dist/packages/modal/react.js +31 -0
  254. package/dist/packages/modal/util.d.ts +7 -17
  255. package/dist/packages/modal/util.js +21 -0
  256. package/dist/packages/pageindicator/index.d.ts +10 -0
  257. package/dist/packages/pageindicator/index.js +32 -0
  258. package/dist/packages/pageindicator/index.js.map +7 -0
  259. package/dist/packages/pageindicator/pageindicator.react.stories.d.ts +19 -0
  260. package/dist/packages/pageindicator/pageindicator.react.stories.js +20 -0
  261. package/dist/packages/pageindicator/pageindicator.stories.d.ts +32 -0
  262. package/dist/packages/pageindicator/pageindicator.stories.js +71 -0
  263. package/dist/packages/pageindicator/react.d.ts +2 -0
  264. package/dist/packages/pageindicator/react.js +11 -0
  265. package/dist/packages/pageindicator/style.d.ts +1 -0
  266. package/dist/packages/pageindicator/style.js +26 -0
  267. package/dist/packages/pagination/index.d.ts +32 -0
  268. package/dist/packages/pagination/index.js +2500 -0
  269. package/dist/packages/pagination/index.js.map +7 -0
  270. package/dist/packages/pagination/locales/da/messages.d.mts +1 -0
  271. package/dist/packages/pagination/locales/da/messages.mjs +1 -0
  272. package/dist/packages/pagination/locales/en/messages.d.mts +1 -0
  273. package/dist/packages/pagination/locales/en/messages.mjs +1 -0
  274. package/dist/packages/pagination/locales/fi/messages.d.mts +1 -0
  275. package/dist/packages/pagination/locales/fi/messages.mjs +1 -0
  276. package/dist/packages/pagination/locales/nb/messages.d.mts +1 -0
  277. package/dist/packages/pagination/locales/nb/messages.mjs +1 -0
  278. package/dist/packages/pagination/locales/sv/messages.d.mts +1 -0
  279. package/dist/packages/pagination/locales/sv/messages.mjs +1 -0
  280. package/dist/packages/pagination/pagination.react.stories.d.ts +21 -0
  281. package/dist/packages/pagination/pagination.react.stories.js +45 -0
  282. package/dist/packages/pagination/pagination.stories.d.ts +14 -0
  283. package/dist/packages/pagination/pagination.stories.js +56 -0
  284. package/dist/packages/pagination/pagination.test.d.ts +1 -0
  285. package/dist/packages/pagination/pagination.test.js +76 -0
  286. package/dist/packages/pagination/react.d.ts +5 -0
  287. package/dist/packages/pagination/react.js +15 -0
  288. package/dist/packages/pagination/styles.d.ts +1 -0
  289. package/dist/packages/pagination/styles.js +2 -0
  290. package/dist/packages/pill/index.d.ts +39 -23
  291. package/dist/packages/pill/index.js +2408 -2175
  292. package/dist/packages/pill/index.js.map +4 -4
  293. package/dist/packages/pill/locales/da/messages.mjs +1 -0
  294. package/dist/packages/pill/locales/en/messages.mjs +1 -0
  295. package/dist/packages/pill/locales/fi/messages.mjs +1 -0
  296. package/dist/packages/pill/locales/nb/messages.mjs +1 -0
  297. package/dist/packages/pill/locales/sv/messages.mjs +1 -0
  298. package/dist/packages/pill/pill.react.stories.d.ts +23 -0
  299. package/dist/packages/pill/pill.react.stories.js +22 -0
  300. package/dist/packages/pill/pill.stories.d.ts +12 -0
  301. package/dist/packages/pill/pill.stories.js +33 -0
  302. package/dist/packages/pill/pill.test.d.ts +1 -0
  303. package/dist/packages/pill/pill.test.js +25 -0
  304. package/dist/packages/pill/react.d.ts +7 -0
  305. package/dist/packages/pill/react.js +17 -0
  306. package/dist/packages/pill/styles.d.ts +1 -0
  307. package/dist/packages/pill/styles.js +2 -0
  308. package/dist/packages/rip-and-tear-checkbox/checkbox.d.ts +64 -0
  309. package/dist/packages/rip-and-tear-checkbox/checkbox.js +160 -0
  310. package/dist/packages/rip-and-tear-checkbox/checkbox.js.map +7 -0
  311. package/dist/packages/rip-and-tear-checkbox/checkbox.stories.d.ts +8 -0
  312. package/dist/packages/rip-and-tear-checkbox/checkbox.stories.js +11 -0
  313. package/dist/packages/rip-and-tear-checkbox/index.d.ts +1 -0
  314. package/dist/packages/rip-and-tear-checkbox/index.js +160 -0
  315. package/dist/packages/rip-and-tear-checkbox/index.js.map +7 -0
  316. package/dist/packages/rip-and-tear-checkbox/react.d.ts +5 -0
  317. package/dist/packages/rip-and-tear-checkbox/react.js +15 -0
  318. package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.d.ts +12 -0
  319. package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.js +10 -0
  320. package/dist/packages/rip-and-tear-checkbox/styles.d.ts +1 -0
  321. package/dist/packages/rip-and-tear-checkbox/styles.js +116 -0
  322. package/dist/packages/rip-and-tear-radio/base-element.d.ts +46 -0
  323. package/dist/packages/rip-and-tear-radio/base-element.js +100 -0
  324. package/dist/packages/rip-and-tear-radio/custom-error-validator.d.ts +6 -0
  325. package/dist/packages/rip-and-tear-radio/custom-error-validator.js +22 -0
  326. package/dist/packages/rip-and-tear-radio/form-associated-element.d.ts +103 -0
  327. package/dist/packages/rip-and-tear-radio/form-associated-element.js +282 -0
  328. package/dist/packages/rip-and-tear-radio/host-styles.d.ts +1 -0
  329. package/dist/packages/rip-and-tear-radio/host-styles.js +12 -0
  330. package/dist/packages/rip-and-tear-radio/index.d.ts +1 -0
  331. package/dist/packages/rip-and-tear-radio/index.js +270 -0
  332. package/dist/packages/rip-and-tear-radio/index.js.map +7 -0
  333. package/dist/packages/rip-and-tear-radio/invalid.d.ts +8 -0
  334. package/dist/packages/rip-and-tear-radio/invalid.js +5 -0
  335. package/dist/packages/rip-and-tear-radio/math.d.ts +1 -0
  336. package/dist/packages/rip-and-tear-radio/math.js +4 -0
  337. package/dist/packages/rip-and-tear-radio/radio-group-styles.d.ts +1 -0
  338. package/dist/packages/rip-and-tear-radio/radio-group-styles.js +60 -0
  339. package/dist/packages/rip-and-tear-radio/radio-group-styles.js.map +7 -0
  340. package/dist/packages/rip-and-tear-radio/radio-group.d.ts +72 -0
  341. package/dist/packages/rip-and-tear-radio/radio-group.js +270 -0
  342. package/dist/packages/rip-and-tear-radio/radio-group.js.map +7 -0
  343. package/dist/packages/rip-and-tear-radio/radio-styles.d.ts +1 -0
  344. package/dist/packages/rip-and-tear-radio/radio-styles.js +170 -0
  345. package/dist/packages/rip-and-tear-radio/radio-styles.js.map +7 -0
  346. package/dist/packages/rip-and-tear-radio/radio.d.ts +38 -0
  347. package/dist/packages/rip-and-tear-radio/radio.js +183 -0
  348. package/dist/packages/rip-and-tear-radio/radio.js.map +7 -0
  349. package/dist/packages/rip-and-tear-radio/radio.stories.d.ts +8 -0
  350. package/dist/packages/rip-and-tear-radio/radio.stories.js +275 -0
  351. package/dist/packages/rip-and-tear-radio/radio.stories.js.map +7 -0
  352. package/dist/packages/rip-and-tear-radio/react.d.ts +9 -0
  353. package/dist/packages/rip-and-tear-radio/react.js +22 -0
  354. package/dist/packages/rip-and-tear-radio/required-validator.d.ts +11 -0
  355. package/dist/packages/rip-and-tear-radio/required-validator.js +34 -0
  356. package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.d.ts +9 -0
  357. package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.js +10 -0
  358. package/dist/packages/rip-and-tear-radio/slot.d.ts +20 -0
  359. package/dist/packages/rip-and-tear-radio/slot.js +71 -0
  360. package/dist/packages/rip-and-tear-radio/watch.d.ts +26 -0
  361. package/dist/packages/rip-and-tear-radio/watch.js +39 -0
  362. package/dist/packages/select/index.d.ts +56 -50
  363. package/dist/packages/select/index.js +2421 -2236
  364. package/dist/packages/select/index.js.map +4 -4
  365. package/dist/packages/select/locales/da/messages.mjs +1 -0
  366. package/dist/packages/select/locales/en/messages.mjs +1 -0
  367. package/dist/packages/select/locales/fi/messages.mjs +1 -0
  368. package/dist/packages/select/locales/nb/messages.mjs +1 -0
  369. package/dist/packages/select/locales/sv/messages.mjs +1 -0
  370. package/dist/packages/select/react.d.ts +6 -0
  371. package/dist/packages/select/react.js +20 -0
  372. package/dist/packages/select/select.react.stories.d.ts +18 -0
  373. package/dist/packages/select/select.react.stories.js +28 -0
  374. package/dist/packages/select/select.stories.d.ts +10 -0
  375. package/dist/packages/select/select.stories.js +31 -0
  376. package/dist/packages/select/select.test.d.ts +1 -0
  377. package/dist/packages/select/select.test.js +31 -0
  378. package/dist/packages/select/styles.d.ts +1 -0
  379. package/dist/packages/select/styles.js +2 -0
  380. package/dist/packages/slider/Slider.d.ts +2 -0
  381. package/dist/packages/slider/Slider.js +8 -0
  382. package/dist/packages/slider/SliderThumb.d.ts +2 -0
  383. package/dist/packages/slider/SliderThumb.js +8 -0
  384. package/dist/packages/slider/index.d.ts +2 -0
  385. package/dist/packages/slider/index.js +2791 -0
  386. package/dist/packages/slider/index.js.map +7 -0
  387. package/dist/packages/slider/oddbird-css-anchor-positioning.d.ts +2 -0
  388. package/dist/packages/slider/oddbird-css-anchor-positioning.js +3 -0
  389. package/dist/packages/slider/react.d.ts +8 -0
  390. package/dist/packages/slider/react.js +20 -0
  391. package/dist/packages/slider/slider-thumb.d.ts +57 -0
  392. package/dist/packages/slider/slider-thumb.js +2663 -0
  393. package/dist/packages/slider/slider-thumb.js.map +7 -0
  394. package/dist/packages/slider/slider.d.ts +46 -0
  395. package/dist/packages/slider/slider.js +2569 -0
  396. package/dist/packages/slider/slider.js.map +7 -0
  397. package/dist/packages/slider/slider.react.stories.d.ts +18 -0
  398. package/dist/packages/slider/slider.react.stories.js +119 -0
  399. package/dist/packages/slider/slider.stories.d.ts +17 -0
  400. package/dist/packages/slider/slider.stories.js +203 -0
  401. package/dist/packages/slider/slider.test.d.ts +4 -0
  402. package/dist/packages/slider/slider.test.js +83 -0
  403. package/dist/packages/slider/styles/w-slider-thumb.styles.d.ts +1 -0
  404. package/dist/packages/slider/styles/w-slider-thumb.styles.js +132 -0
  405. package/dist/packages/slider/styles/w-slider.styles.d.ts +1 -0
  406. package/dist/packages/slider/styles/w-slider.styles.js +118 -0
  407. package/dist/packages/slider/styles.d.ts +1 -0
  408. package/dist/packages/slider/styles.js +2 -0
  409. package/dist/packages/steps/index.d.ts +36 -0
  410. package/dist/packages/steps/index.js +2465 -0
  411. package/dist/packages/steps/index.js.map +7 -0
  412. package/dist/packages/steps/locales/da/messages.d.mts +1 -0
  413. package/dist/packages/steps/locales/da/messages.mjs +1 -0
  414. package/dist/packages/steps/locales/en/messages.d.mts +1 -0
  415. package/dist/packages/steps/locales/en/messages.mjs +1 -0
  416. package/dist/packages/steps/locales/fi/messages.d.mts +1 -0
  417. package/dist/packages/steps/locales/fi/messages.mjs +1 -0
  418. package/dist/packages/steps/locales/nb/messages.d.mts +1 -0
  419. package/dist/packages/steps/locales/nb/messages.mjs +1 -0
  420. package/dist/packages/steps/locales/sv/messages.d.mts +1 -0
  421. package/dist/packages/steps/locales/sv/messages.mjs +1 -0
  422. package/dist/packages/steps/react.d.ts +3 -0
  423. package/dist/packages/steps/react.js +16 -0
  424. package/dist/packages/steps/steps.react.stories.d.ts +15 -0
  425. package/dist/packages/steps/steps.react.stories.js +112 -0
  426. package/dist/packages/steps/steps.stories.d.ts +12 -0
  427. package/dist/packages/steps/steps.stories.js +172 -0
  428. package/dist/packages/steps/styles.d.ts +1 -0
  429. package/dist/packages/steps/styles.js +2 -0
  430. package/dist/packages/styles.d.ts +2 -0
  431. package/dist/packages/styles.js +2442 -0
  432. package/dist/packages/switch/index.d.ts +15 -0
  433. package/dist/packages/switch/index.js +2455 -0
  434. package/dist/packages/switch/index.js.map +7 -0
  435. package/dist/packages/switch/react.d.ts +5 -0
  436. package/dist/packages/switch/react.js +15 -0
  437. package/dist/packages/switch/styles.d.ts +1 -0
  438. package/dist/packages/switch/styles.js +2 -0
  439. package/dist/packages/switch/switch.react.stories.d.ts +15 -0
  440. package/dist/packages/switch/switch.react.stories.js +29 -0
  441. package/dist/packages/switch/switch.stories.d.ts +9 -0
  442. package/dist/packages/switch/switch.stories.js +34 -0
  443. package/dist/packages/tabs/index.d.ts +4 -0
  444. package/dist/packages/tabs/index.js +2470 -0
  445. package/dist/packages/tabs/index.js.map +7 -0
  446. package/dist/packages/tabs/react.d.ts +12 -0
  447. package/dist/packages/tabs/react.js +31 -0
  448. package/dist/packages/tabs/styles.d.ts +1 -0
  449. package/dist/packages/tabs/styles.js +2 -0
  450. package/dist/packages/tabs/tab-panel.d.ts +20 -0
  451. package/dist/packages/tabs/tab-panel.js +2441 -0
  452. package/dist/packages/tabs/tab-panel.js.map +7 -0
  453. package/dist/packages/tabs/tab.d.ts +18 -0
  454. package/dist/packages/tabs/tab.js +2463 -0
  455. package/dist/packages/tabs/tab.js.map +7 -0
  456. package/dist/packages/tabs/tabs.d.ts +40 -0
  457. package/dist/packages/tabs/tabs.js +2448 -0
  458. package/dist/packages/tabs/tabs.js.map +7 -0
  459. package/dist/packages/tabs/tabs.react.stories.d.ts +15 -0
  460. package/dist/packages/tabs/tabs.react.stories.js +51 -0
  461. package/dist/packages/tabs/tabs.stories.d.ts +8 -0
  462. package/dist/packages/tabs/tabs.stories.js +2545 -0
  463. package/dist/packages/tabs/tabs.stories.js.map +7 -0
  464. package/dist/packages/textfield/index.d.ts +78 -74
  465. package/dist/packages/textfield/index.js +2514 -422
  466. package/dist/packages/textfield/index.js.map +4 -4
  467. package/dist/packages/textfield/react.d.ts +11 -0
  468. package/dist/packages/textfield/react.js +21 -0
  469. package/dist/packages/textfield/styles/w-textfield.styles.d.ts +1 -0
  470. package/dist/packages/textfield/styles/w-textfield.styles.js +46 -0
  471. package/dist/packages/textfield/styles.d.ts +1 -0
  472. package/dist/packages/textfield/styles.js +2 -0
  473. package/dist/packages/textfield/textfield.react.stories.d.ts +37 -0
  474. package/dist/packages/textfield/textfield.react.stories.js +88 -0
  475. package/dist/packages/textfield/textfield.stories.d.ts +18 -0
  476. package/dist/packages/textfield/textfield.stories.js +105 -0
  477. package/dist/packages/textfield/textfield.test.d.ts +2 -0
  478. package/dist/packages/textfield/textfield.test.js +68 -0
  479. package/dist/packages/toast/api.d.ts +4 -45
  480. package/dist/packages/toast/api.js +41 -0
  481. package/dist/packages/toast/index.d.ts +3 -0
  482. package/dist/packages/toast/index.js +2466 -2787
  483. package/dist/packages/toast/index.js.map +4 -4
  484. package/dist/packages/toast/locales/da/messages.mjs +1 -0
  485. package/dist/packages/toast/locales/en/messages.mjs +1 -0
  486. package/dist/packages/toast/locales/fi/messages.mjs +1 -0
  487. package/dist/packages/toast/locales/nb/messages.mjs +1 -0
  488. package/dist/packages/toast/locales/sv/messages.mjs +1 -0
  489. package/dist/packages/toast/styles.d.ts +1 -0
  490. package/dist/packages/toast/styles.js +2 -0
  491. package/dist/packages/toast/toast-container.d.ts +12 -63
  492. package/dist/packages/toast/toast-container.js +2458 -0
  493. package/dist/packages/toast/toast-container.js.map +7 -0
  494. package/dist/packages/toast/toast.d.ts +34 -29
  495. package/dist/packages/toast/toast.js +2466 -0
  496. package/dist/packages/toast/toast.js.map +7 -0
  497. package/dist/packages/toast/toast.stories.d.ts +12 -0
  498. package/dist/packages/toast/toast.stories.js +50 -0
  499. package/dist/packages/toast/types.d.ts +15 -0
  500. package/dist/packages/toast/types.js +1 -0
  501. package/dist/packages/utils/expand-transition.d.ts +3 -2
  502. package/dist/packages/utils/expand-transition.js +59 -0
  503. package/dist/packages/utils/index.d.ts +1 -1
  504. package/dist/packages/utils/index.js +2 -0
  505. package/dist/packages/utils/index.js.map +7 -0
  506. package/dist/packages/utils/unstyled-heading.d.ts +3 -3
  507. package/dist/packages/utils/unstyled-heading.js +22 -0
  508. package/dist/packages/utils/window-exists.js +1 -0
  509. package/dist/setup-tests.d.ts +1 -0
  510. package/dist/setup-tests.js +1 -0
  511. package/dist/vscode.css-custom-data.json +6 -0
  512. package/dist/vscode.html-custom-data.json +738 -0
  513. package/dist/web-types.json +1693 -0
  514. package/package.json +93 -37
  515. package/dist/index.js +0 -6838
  516. package/dist/index.js.map +0 -7
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/.pnpm/@open-wc+form-control@1.0.0/node_modules/@open-wc/form-control/src/FormControlMixin.ts", "../../../packages/slider/slider.ts", "../../../packages/styles.ts", "../../../packages/slider/styles/w-slider.styles.ts", "../../../packages/slider/slider-thumb.ts", "../../../packages/slider/styles/w-slider-thumb.styles.ts", "../../../packages/slider/styles.ts"],
4
+ "sourcesContent": ["import { Constructor, CustomValidityState, FormControlInterface, FormValue, IControlHost, validationMessageCallback, Validator } from './types.js';\n\nexport function FormControlMixin<\n TBase extends Constructor<HTMLElement & IControlHost> & { observedAttributes?: string [] }\n>(SuperClass: TBase) {\n class FormControl extends SuperClass {\n /** Wires up control instances to be form associated */\n static get formAssociated(): boolean {\n return true;\n }\n\n /**\n * A list of Validator objects that will be evaluated when a control's form\n * value is modified or optionally when a given attribute changes.\n *\n * When a Validator's callback returns false, the entire form control will\n * be set to an invalid state.\n */\n declare static formControlValidators: Validator[];\n\n /**\n * If set to true the control described should be evaluated and validated\n * as part of a group. Like a radio, if any member of the group's validity\n * changes the the other members should update as well.\n */\n declare static formControlValidationGroup: boolean;\n\n private static get validators(): Validator[] {\n return this.formControlValidators || [];\n }\n\n /**\n * Allows the FormControl instance to respond to Validator attributes.\n * For instance, if a given Validator has a `required` attribute, that\n * validator will be evaluated whenever the host's required attribute\n * is updated.\n */\n static get observedAttributes(): string[] {\n const validatorAttributes = this.validators.map((validator) => validator.attribute).flat();\n\n const observedAttributes = super.observedAttributes || [];\n\n /** Make sure there are no duplicates inside the attributes list */\n const attributeSet = new Set([...observedAttributes, ...validatorAttributes]);\n return [...attributeSet] as string[];\n }\n\n /**\n * Return the validator associated with a given attribute. If no\n * Validator is associated with the attribute, it will return null.\n */\n static getValidator(attribute: string): Validator | null {\n return this.validators.find((validator) => validator.attribute === attribute) || null;\n }\n\n /**\n * Get all validators that are set to react to a given attribute\n * @param {string} attribute - The attribute that has changed\n * @returns {Validator[]}\n */\n static getValidators(attribute: string): Validator[] | null {\n return this.validators.filter(validator => {\n if (validator.attribute === attribute || validator.attribute?.includes(attribute)) {\n return true;\n }\n });\n }\n\n /** The ElementInternals instance for the control. */\n internals = this.attachInternals();\n\n /**\n * Keep track of if the control has focus\n * @private\n */\n #focused = false;\n\n /**\n * Exists to control when an error should be displayed\n * @private\n */\n #forceError = false;\n\n /**\n * Toggles to true whenever the element has been focused. This property\n * will reset whenever the control's formResetCallback is called.\n * @private\n */\n #touched = false;\n\n /** An internal abort controller for cancelling pending async validation */\n #abortController?: AbortController;\n #previousAbortController?: AbortController;\n\n /**\n * Used for tracking if a validation target has been set to manage focus\n * when the control's validity is reported\n */\n #awaitingValidationTarget = true;\n\n /** All of the controls within a root with a matching local name and form name */\n get #formValidationGroup(): NodeListOf<FormControl> {\n const rootNode = this.getRootNode() as HTMLElement;\n const selector = `${this.localName}[name=\"${this.getAttribute('name')}\"]`;\n return rootNode.querySelectorAll<FormControl>(selector);\n }\n\n /**\n * Acts as a cache for the current value so the value can be re-evaluated\n * whenever an attribute changes or on some other event.\n */\n #value: FormValue = '';\n\n /**\n * Set this[touched] and this[focused]\n * to true when the element is focused\n * @private\n */\n #onFocus = (): void => {\n this.#touched = true;\n this.#focused = true;\n this.#shouldShowError();\n };\n\n /**\n * Reset this[focused] on blur\n * @private\n */\n #onBlur = (): void => {\n this.#focused = false;\n\n this.#runValidators(this.shouldFormValueUpdate() ? this.#value : '');\n\n /**\n * Set forceError to ensure error messages persist until\n * the value is changed.\n */\n if (!this.validity.valid && this.#touched) {\n this.#forceError = true;\n }\n const showError = this.#shouldShowError();\n if (this.validationMessageCallback) {\n this.validationMessageCallback(showError ? this.internals.validationMessage : '');\n }\n };\n\n /**\n * For the show error state on invalid\n * @private\n */\n #onInvalid = (): void => {\n if (this.#awaitingValidationTarget && this.validationTarget) {\n this.internals.setValidity(\n this.validity,\n this.validationMessage,\n this.validationTarget\n );\n this.#awaitingValidationTarget = false;\n }\n this.#touched = true;\n this.#forceError = true;\n this.#shouldShowError();\n this?.validationMessageCallback?.(this.showError ? this.internals.validationMessage : '');\n };\n\n /** Return a reference to the control's form */\n get form(): HTMLFormElement {\n return this.internals.form;\n }\n\n /**\n * Will return true if it is recommended that the control shows an internal\n * error. If using this property, it is wise to listen for 'invalid' events\n * on the element host and call preventDefault on the event. Doing this will\n * prevent browsers from showing a validation popup.\n */\n get showError(): boolean {\n return this.#shouldShowError();\n }\n\n /**\n * Forward the internals checkValidity method\n * will return the valid state of the control.\n */\n checkValidity(): boolean {\n return this.internals.checkValidity();\n }\n\n /** The element's validity state */\n get validity(): ValidityState {\n return this.internals.validity;\n }\n\n /**\n * The validation message shown by a given Validator object. If the control\n * is in a valid state this should be falsy.\n */\n get validationMessage(): string {\n return this.internals.validationMessage;\n }\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n constructor(...args: any[]) {\n super(...args);\n this.addEventListener?.('focus', this.#onFocus);\n this.addEventListener?.('blur', this.#onBlur);\n this.addEventListener?.('invalid', this.#onInvalid);\n this.setValue(null);\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n super.attributeChangedCallback?.(name, oldValue, newValue);\n\n /**\n * Check to see if a Validator is associated with the changed attribute.\n * If one exists, call control's validate function which will perform\n * control validation.\n */\n const proto = this.constructor as typeof FormControl;\n const validators = proto.getValidators(name);\n\n if (validators?.length && this.validationTarget) {\n this.setValue(this.#value);\n }\n }\n\n /** PUBLIC LIFECYCLE METHODS */\n\n /**\n * Sets the control's form value if the call to `shouldFormValueUpdate`\n * returns `true`.\n * @param value {FormValue} - The value to pass to the form\n */\n setValue(value: FormValue): void {\n this.#forceError = false;\n this.validationMessageCallback?.('');\n this.#value = value;\n const valueShouldUpdate = this.shouldFormValueUpdate();\n const valueToUpdate = valueShouldUpdate ? value : null;\n this.internals.setFormValue(valueToUpdate as string);\n this.#runValidators(valueToUpdate);\n if (this.valueChangedCallback) {\n this.valueChangedCallback(valueToUpdate);\n }\n this.#shouldShowError();\n }\n\n /**\n * This method can be overridden to determine if the control's form value\n * should be set on a call to `setValue`. An example of when a user might want\n * to skip this step is when implementing checkbox-like behavior, first checking\n * to see if `this.checked` is set to a truthy value. By default this returns\n * `true`.\n */\n shouldFormValueUpdate(): boolean {\n return true;\n }\n\n /** Save a reference to the validation complete resolver */\n #validationCompleteResolver?: (value: void | PromiseLike<void>) => void;\n\n /** When true validation will be pending */\n #isValidationPending = false;\n\n #validationComplete = Promise.resolve();\n\n /** A promise that will resolve when all pending validations are complete */\n get validationComplete(): Promise<void> {\n return new Promise(resolve => resolve(this.#validationComplete));\n }\n\n /** DECLARED INSTANCE METHODS AND PROPERTIES*/\n\n /**\n * Resets a form control to its initial state\n */\n declare resetFormControl: () => void;\n\n /**\n * This method is used to override the controls' validity message\n * for a given Validator key. This has the highest level of priority when\n * setting a validationMessage, so use this method wisely.\n *\n * The returned value will be used as the validationMessage for the given key.\n * @param validationKey {string} - The key that has returned invalid\n */\n declare validityCallback: (validationKey: string) => string | void;\n\n /**\n * Called when the control's validationMessage should be changed\n * @param message { string } - The new validation message\n */\n declare validationMessageCallback: (message: string) => void;\n\n /**\n * A callback for when the controls' form value changes. The value\n * passed to this function should not be confused with the control's\n * value property, this is the value that will appear on the form.\n *\n * In cases where `checked` did not exist on the control's prototype\n * upon initialization, this value and the value property will be identical;\n * in cases where `checked` is present upon initialization, this will be\n * effectively `this.checked && this.value`.\n */\n declare valueChangedCallback: (value: FormValue) => void;\n\n /**\n * The element that will receive focus when the control's validity\n * state is reported either by a form submission or via API\n *\n * We use declare since this is optional and we don't particularly\n * care how the consuming component implements this (as a field, member\n * or getter/setter)\n */\n declare validationTarget: HTMLElement | null;\n\n /** PRIVATE LIFECYCLE METHODS */\n\n /**\n * Check to see if an error should be shown. This method will also\n * update the internals state object with the --show-error state\n * if necessary.\n * @private\n */\n #shouldShowError(): boolean {\n if (this.hasAttribute('disabled')) {\n return false;\n }\n\n const showError = this.#forceError || (this.#touched && !this.validity.valid && !this.#focused);\n\n /**\n * At the time of writing Firefox doesn't support states\n * TODO: Remove when check for states when fully support is in place\n */\n if (showError && this.internals.states) {\n this.internals.states.add('--show-error');\n } else if (this.internals.states) {\n this.internals.states.delete('--show-error');\n }\n\n return showError;\n }\n\n #runValidators(value: FormValue): void {\n const proto = this.constructor as typeof FormControl;\n const validity: CustomValidityState = {};\n const validators = proto.validators;\n const asyncValidators: Promise<boolean|void>[] = [];\n const hasAsyncValidators = validators.some((validator) => validator.isValid instanceof Promise)\n\n if (!this.#isValidationPending) {\n this.#validationComplete = new Promise(resolve => {\n this.#validationCompleteResolver = resolve\n });\n this.#isValidationPending = true;\n }\n\n /**\n * If an abort controller exists from a previous validation step\n * notify still-running async validators that we are requesting they\n * discontinue any work.\n */\n if (this.#abortController) {\n this.#abortController.abort();\n this.#previousAbortController = this.#abortController;\n }\n\n /**\n * Create a new abort controller and replace the instance reference\n * so we can clean it up for next time\n */\n const abortController = new AbortController();\n this.#abortController = abortController;\n let validationMessage: string | undefined = undefined;\n\n /** Track to see if any validity key has changed */\n let hasChange = false;\n\n if (!validators.length) {\n return;\n }\n\n validators.forEach(validator => {\n const key = validator.key || 'customError';\n const isValid = validator.isValid(this, value, abortController.signal);\n const isAsyncValidator = isValid instanceof Promise;\n\n if (isAsyncValidator) {\n asyncValidators.push(isValid);\n\n isValid.then(isValidatorValid => {\n if (isValidatorValid === undefined || isValidatorValid === null) {\n return;\n }\n /** Invert the validity state to correspond to the ValidityState API */\n validity[key] = !isValidatorValid;\n\n validationMessage = this.#getValidatorMessageForValue(validator, value);\n this.#setValidityWithOptionalTarget(validity, validationMessage);\n });\n } else {\n /** Invert the validity state to correspond to the ValidityState API */\n validity[key] = !isValid;\n\n if (this.validity[key] !== !isValid) {\n hasChange = true;\n }\n\n // only update the validationMessage for the first invalid scenario\n // so that earlier invalid validators dont get their messages overwritten by later ones\n // in the validators array\n if (!isValid && !validationMessage) {\n validationMessage = this.#getValidatorMessageForValue(validator, value);\n }\n }\n });\n\n /** Once all the async validators have settled, resolve validationComplete */\n Promise.allSettled(asyncValidators)\n .then(() => {\n /** Don't resolve validations if the signal is aborted */\n if (!abortController?.signal.aborted) {\n this.#isValidationPending = false;\n this.#validationCompleteResolver?.();\n }\n });\n\n /**\n * If async validators are present:\n * Only run updates when a sync validator has a change. This is to prevent\n * situations where running sync validators can override async validators\n * that are still in progress\n *\n * If async validators are not present, always update validity\n */\n if (hasChange || !hasAsyncValidators) {\n this.#setValidityWithOptionalTarget(validity, validationMessage);\n }\n }\n\n /**\n * If the validationTarget is not set, the user can decide how they would\n * prefer to handle focus when the field is validated.\n */\n #setValidityWithOptionalTarget(validity: Partial<ValidityState>, validationMessage: string|undefined): void {\n if (this.validationTarget) {\n this.internals.setValidity(validity, validationMessage, this.validationTarget);\n this.#awaitingValidationTarget = false;\n } else {\n this.internals.setValidity(validity, validationMessage);\n\n if (this.internals.validity.valid) {\n return;\n }\n\n /**\n * Sets mark the component as awaiting a validation target\n * if the element dispatches an invalid event, the #onInvalid listener\n * will check to see if the validation target has been set since this call\n * has run. This useful in cases like Lit's use of the query\n * decorator for setting the validationTarget or any scenario\n * where the validationTarget isn't available upon construction\n */\n this.#awaitingValidationTarget = true;\n }\n }\n\n /** Process the validator message attribute */\n #getValidatorMessageForValue(validator: Validator, value: FormValue): string {\n /** If the validity callback exists and returns, use that as the result */\n if (this.validityCallback) {\n const message = this.validityCallback(validator.key || 'customError');\n\n if (message) {\n return message;\n }\n }\n\n if (validator.message instanceof Function) {\n return (validator.message as validationMessageCallback)(this, value);\n } else {\n return validator.message as string;\n }\n }\n\n /** Reset control state when the form is reset */\n formResetCallback() {\n this.#touched = false;\n this.#forceError = false;\n this.#shouldShowError();\n this.resetFormControl?.();\n\n this.validationMessageCallback?.(\n this.#shouldShowError() ? this.validationMessage : ''\n );\n }\n }\n\n return FormControl as Constructor<FormControlInterface> & TBase;\n}\n", "import { FormControlMixin } from '@open-wc/form-control';\nimport { html, LitElement, nothing, PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { reset } from '../styles.js';\n\nimport type { WarpSliderThumb } from './slider-thumb.js';\nimport { wSliderStyles } from './styles/w-slider.styles.js';\n\n// Inspo:\n// https://css-tricks.com/multi-thumb-sliders-particular-two-thumb-case/\n// https://css-tricks.com/multi-thumb-sliders-general-case/\n// https://css-tricks.com/lets-make-a-multi-thumb-slider-that-calculates-the-width-between-thumbs/\n\n/**\n * Parent component for sliders (both single and range sliders). Used in combination with a `<w-slider-thumb>`.\n *\n * [See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/forms-slider-and-range-slider--docs)\n *\n * @slot - For single sliders place a `<w-slider-thumb>` in the default slot.\n * @slot label - Label for the slider or range slider as a whole.\n * @slot description - Optional description between the label and slider.\n * @slot from - Range sliders need to place a `<w-slider-thumb>` in the from and to slots.\n * @slot to - Range sliders need to place a `<w-slider-thumb>` in the from and to slots.\n */\nclass WarpSlider extends FormControlMixin(LitElement) {\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static styles = [reset, wSliderStyles];\n\n /**\n * The slider fieldset label. Required for proper accessibility.\n *\n * If you need to display HTML, use the `label` slot instead.\n */\n @property({ reflect: true })\n label: string;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /** Ensures a child slider thumb has a value before allowing the containing form to submit. */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n @property({ reflect: true })\n min: string;\n\n @property({ reflect: true })\n max: string;\n\n /** Pass a value similar to step to create visual markers at that interval */\n @property({ type: Number, reflect: true })\n markers: number;\n\n @property({ type: Number, reflect: true })\n step: number;\n\n /** Suffix used in text input fields and for the min and max values of the slider. */\n @property({ reflect: true })\n suffix: string;\n\n /** Function to format the to- and from labels and value in the slider thumb tooltip. */\n @property({ attribute: false })\n formatter: (value: string) => string;\n\n #thumbSize: number;\n\n #syncSliderThumbs(): void {\n const sliderThumbs = this.querySelectorAll<WarpSliderThumb>('w-slider-thumb');\n for (const thumb of sliderThumbs.values()) {\n // Set attributes that should be in sync between slider thumbs\n thumb.min = this.min;\n thumb.max = this.max;\n thumb.step = this.step;\n thumb.suffix = this.suffix;\n thumb.required = this.required;\n thumb.formatter = this.formatter;\n\n if (!thumb.ariaLabel) {\n if (!thumb.slot) {\n thumb.ariaLabel = this.label;\n }\n if (thumb.slot === 'from') {\n thumb.ariaLabel = `${this.label} min`;\n }\n if (thumb.slot === 'to') {\n thumb.ariaLabel = `${this.label} max`;\n }\n }\n\n // Set forceDisabled state based on slider component disabled state\n thumb.forceDisabled = this.disabled;\n thumb.forceInvalid = this.invalid;\n\n this.#updateActiveTrack(thumb);\n }\n }\n\n async connectedCallback() {\n super.connectedCallback();\n await this.updateComplete;\n this.style.setProperty('--min', this.min);\n this.style.setProperty('--max', this.max);\n if (this.markers) {\n this.style.setProperty('--markers', String(this.markers));\n }\n\n const sliderStyles = getComputedStyle(this.shadowRoot.querySelector('.w-slider'));\n this.#thumbSize = Number.parseFloat(sliderStyles.getPropertyValue('--w-slider-thumb-size').replace('px', ''));\n\n this.#syncSliderThumbs();\n }\n\n updated(changedProperties: PropertyValues<this>) {\n if (\n changedProperties.has('disabled') ||\n changedProperties.has('invalid') ||\n changedProperties.has('required') ||\n changedProperties.has('min') ||\n changedProperties.has('step') ||\n changedProperties.has('max') ||\n changedProperties.has('suffix') ||\n changedProperties.has('formatter')\n ) {\n this.#syncSliderThumbs();\n }\n }\n\n #onInput(e: InputEvent) {\n const input = e.target as WarpSliderThumb;\n this.#updateActiveTrack(input);\n }\n\n #onSliderValidity(e: CustomEvent) {\n e.stopPropagation();\n this.invalid = e.detail.invalid;\n }\n\n /**\n * We use CSS variables to fill the active track with a background color.\n */\n #updateActiveTrack(input: WarpSliderThumb) {\n const slotName = input.slot;\n\n if (slotName) {\n // To avoid visually overlapping the two thumbs we measure the width of the active range,\n // and if it's about to become narrower than the width of a thumb we add enough margin to\n // where they don't visually overlap. This is only relevant for range sliders (using named\n // slots), so save the call to getComputedStyle for simple sliders.\n const activeRangeWidth: number = this.#getActiveRangeWidth();\n const threshold = this.#thumbSize;\n const diff = threshold - activeRangeWidth;\n if (activeRangeWidth <= threshold) {\n this.style.setProperty('--thumb-offset', String(diff));\n }\n }\n\n if (!slotName) {\n this.style.setProperty('--from', '0');\n }\n\n if (slotName === 'from') {\n // Default to the minimum value if no value has been chosen yet.\n const from = (input.value ??= this.min);\n this.style.setProperty('--from', from);\n }\n\n if (!slotName || slotName === 'to') {\n // Default to the maximum value if no value has been chosen yet.\n const to = (input.value ??= this.max);\n this.style.setProperty('--to', to);\n }\n }\n\n #getActiveRangeWidth(): number {\n const widthPxString = window.getComputedStyle(\n this.shadowRoot.querySelector('.w-slider__active-range'),\n '::before',\n ).width;\n const width = Number.parseFloat(widthPxString.replace('px', ''));\n return width;\n }\n\n render() {\n return html`\n <fieldset id=\"fieldset\" class=\"w-slider\" @input=\"${this.#onInput}\" @slidervalidity=\"${this.#onSliderValidity}\">\n <legend class=\"w-slider__label\">\n <slot id=\"label\" name=\"label\">${this.label}</slot>\n </legend>\n <slot class=\"w-slider__description\" name=\"description\"></slot>\n ${this.markers ? html`<div class=\"w-slider__markers\"></div>` : nothing}\n <div class=\"w-slider__active-range\"></div>\n <slot class=\"w-slider__slider\" @slotchange=${this.#syncSliderThumbs}></slot>\n <slot class=\"w-slider__slider\" name=\"from\" @slotchange=${this.#syncSliderThumbs}></slot>\n <slot class=\"w-slider__slider\" name=\"to\" @slotchange=${this.#syncSliderThumbs}></slot>\n </fieldset>\n `;\n }\n}\n\nif (!customElements.get('w-slider')) {\n customElements.define('w-slider', WarpSlider);\n}\n\nexport { WarpSlider };\n", "import { css } from 'lit';\n\nexport const reset = css`\n *,\n :before,\n :after {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n border-color: var(--w-s-color-border);\n }\n html {\n font-size: 62.5%;\n }\n body {\n background-color: var(--w-s-color-background);\n min-height: 100%;\n margin: 0;\n overflow-y: scroll;\n }\n body,\n :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n -webkit-tap-highlight-color: transparent;\n font-family: var(--w-font-family);\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m);\n color: var(--w-s-color-text);\n }\n hr {\n color: inherit;\n border-top-width: 1px;\n height: 0;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: 700;\n }\n a {\n cursor: pointer;\n color: var(--w-s-color-text-link);\n text-decoration: none;\n }\n a:hover,\n a:focus,\n a:active {\n text-decoration: underline;\n }\n a:focus-visible {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: 1px;\n }\n b,\n strong {\n font-weight: 700;\n }\n code,\n kbd,\n samp,\n pre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n Liberation Mono,\n Courier New,\n monospace;\n font-size: 1em;\n }\n sub,\n sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n font-family: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n :-moz-focusring {\n outline: auto;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n progress {\n vertical-align: baseline;\n }\n ::-webkit-inner-spin-button {\n height: auto;\n }\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [type='search'] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n }\n summary {\n display: list-item;\n }\n blockquote,\n dl,\n dd,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n hr,\n figure,\n p,\n pre {\n margin: 0;\n }\n fieldset {\n margin: 0;\n padding: 0;\n }\n legend {\n padding: 0;\n }\n ol,\n ul,\n menu {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n textarea {\n resize: vertical;\n }\n input::placeholder,\n textarea::placeholder {\n opacity: 1;\n color: var(--w-s-color-text-placeholder);\n }\n button,\n [role='button'] {\n cursor: pointer;\n }\n :disabled {\n cursor: default;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n vertical-align: middle;\n display: block;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n h1 {\n font-size: var(--w-font-size-xxl);\n line-height: var(--w-line-height-xxl);\n }\n h2 {\n font-size: var(--w-font-size-xl);\n line-height: var(--w-line-height-xl);\n }\n h3 {\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l);\n }\n h4 {\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m);\n }\n h5 {\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s);\n }\n dt,\n dd {\n margin: 0 16px;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n ul,\n ol,\n dl,\n p,\n blockquote {\n margin: 0 0 8px;\n }\n [hidden] {\n display: none !important;\n }\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: none;\n }\n legend {\n float: left;\n width: 100%;\n margin: 0;\n padding: 0;\n display: table;\n }\n legend + * {\n clear: both;\n }\n fieldset {\n border: 0;\n min-width: 0;\n margin: 0;\n padding: 0.01em 0 0;\n }\n body:not(:-moz-handler-blocked) fieldset {\n display: table-cell;\n }\n svg {\n pointer-events: none;\n }\n`;\nexport const components = css`*, :before, :after {\n --w-rotate: 0;\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-scale-x: 1;\n --w-scale-y: 1;\n --w-scale-z: 1;\n --w-skew-x: 0;\n --w-skew-y: 0;\n --w-translate-x: 0;\n --w-translate-y: 0;\n --w-translate-z: 0\n }\n\n .h4, .t4 {\n font-weight: 700;\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m)\n }\n\n .t3 {\n font-weight: 700;\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l)\n }\n\n @media (min-width: 480px) {\n .sm\\\\:h3 {\n font-weight: 700;\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l)\n }\n }\n\n .text-center {\n text-align: center\n }\n\n .before\\\\:text-center:before {\n text-align: center\n }\n\n .text-left {\n text-align: left\n }\n\n .text-right {\n text-align: right\n }\n\n .align-middle {\n vertical-align: middle\n }\n\n .animate-inprogress {\n background-image: linear-gradient(135deg, rgba(0, 0, 0, .05) 25%, transparent 0, transparent 50%, rgba(0, 0, 0, .05) 0, rgba(0, 0, 0, .05) 75%, transparent 0, transparent) !important;\n background-size: 30px 30px;\n animation: animate-inprogress 3s linear infinite\n }\n\n @keyframes animate-inprogress {\n 0% {\n background-position: 0 0\n }\n to {\n background-position: 60px 0\n }\n }\n\n .\\\\[--w-modal-max-height\\\\:80\\\\%\\\\] {\n --w-modal-max-height: 80%\n }\n\n .\\\\[--w-modal-width\\\\:640px\\\\] {\n --w-modal-width: 640px\n }\n\n .focus\\\\:\\\\[--w-outline-offset\\\\:-2px\\\\]:focus {\n --w-outline-offset: -2px\n }\n\n .backdrop-blur {\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:bg-center:before {\n background-position: center\n }\n\n .hover\\\\:bg-clip-padding:hover {\n -webkit-background-clip: padding-box;\n background-clip: padding-box\n }\n\n .bg-transparent, .group\\\\/steph:first-child .group-first\\\\/steph\\\\:bg-transparent, .group\\\\/steph:last-child .group-last\\\\/steph\\\\:bg-transparent {\n background-color: transparent\n }\n\n .bg-\\\\[--w-black\\\\/25\\\\] {\n background-color: rgba(var(--w-rgb-black), .25)\n }\n\n .bg-\\\\[--w-black\\\\/70\\\\], .bg-\\\\[var\\\\(--w-black\\\\)\\\\/70\\\\] {\n background-color: rgba(var(--w-rgb-black), .7)\n }\n\n .bg-\\\\[--w-color-badge-info-background\\\\] {\n background-color: var(--w-color-badge-info-background)\n }\n\n .bg-\\\\[--w-color-badge-negative-background\\\\] {\n background-color: var(--w-color-badge-negative-background)\n }\n\n .bg-\\\\[--w-color-badge-neutral-background\\\\] {\n background-color: var(--w-color-badge-neutral-background)\n }\n\n .bg-\\\\[--w-color-badge-positive-background\\\\] {\n background-color: var(--w-color-badge-positive-background)\n }\n\n .bg-\\\\[--w-color-badge-sponsored-background\\\\] {\n background-color: var(--w-color-badge-sponsored-background)\n }\n\n .bg-\\\\[--w-color-badge-warning-background\\\\] {\n background-color: var(--w-color-badge-warning-background)\n }\n\n .bg-\\\\[--w-color-button-primary-background\\\\] {\n background-color: var(--w-color-button-primary-background)\n }\n\n .bg-\\\\[--w-color-buttongroup-utility-background-selected\\\\] {\n background-color: var(--w-color-buttongroup-utility-background-selected)\n }\n\n .bg-\\\\[--w-color-callout-background\\\\] {\n background-color: var(--w-color-callout-background)\n }\n\n .bg-\\\\[--w-color-pill-suggestion-background\\\\] {\n background-color: var(--w-color-pill-suggestion-background)\n }\n\n .bg-\\\\[--w-color-switch-track-background\\\\] {\n background-color: var(--w-color-switch-track-background)\n }\n\n .bg-\\\\[--w-s-color-surface-elevated-100\\\\] {\n background-color: var(--w-s-color-surface-elevated-100)\n }\n\n .bg-\\\\[--w-s-color-surface-elevated-300\\\\] {\n background-color: var(--w-s-color-surface-elevated-300)\n }\n\n .bg-\\\\[--w-s-icon-selected\\\\] {\n background-color: var(--w-s-icon-selected)\n }\n\n .group:hover .group-hover\\\\:bg-\\\\[--w-color-switch-track-background-hover\\\\] {\n background-color: var(--w-color-switch-track-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-button-pill-background-hover\\\\]:hover {\n background-color: var(--w-color-button-pill-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-button-primary-background-hover\\\\]:hover {\n background-color: var(--w-color-button-primary-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-buttongroup-utility-background-hover\\\\]:hover {\n background-color: var(--w-color-buttongroup-utility-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-pill-suggestion-background-hover\\\\]:hover {\n background-color: var(--w-color-pill-suggestion-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-s-icon-subtle\\\\]:hover {\n background-color: var(--w-s-icon-subtle)\n }\n\n .hover\\\\:bg-\\\\[var\\\\(--w-black\\\\)\\\\/85\\\\]:hover {\n background-color: rgba(var(--w-rgb-black), .85)\n }\n\n .active\\\\:bg-\\\\[--w-color-button-pill-background-active\\\\]:active {\n background-color: var(--w-color-button-pill-background-active)\n }\n\n .active\\\\:bg-\\\\[--w-color-button-primary-background-active\\\\]:active {\n background-color: var(--w-color-button-primary-background-active)\n }\n\n .active\\\\:bg-\\\\[--w-color-buttongroup-utility-background-selected\\\\]:active {\n background-color: var(--w-color-buttongroup-utility-background-selected)\n }\n\n .active\\\\:bg-\\\\[--w-color-pill-suggestion-background-active\\\\]:active {\n background-color: var(--w-color-pill-suggestion-background-active)\n }\n\n .active\\\\:bg-\\\\[var\\\\(--w-black\\\\)\\\\]:active {\n background-color: var(--w-black)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:bg-\\\\[url\\\\(var\\\\(--w-icon-toggle-checked\\\\)\\\\)\\\\]:before {\n background-image: var(--w-icon-toggle-checked)\n }\n\n .appearance-none {\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none\n }\n\n .will-change-height {\n will-change: height\n }\n\n .border, .border-1 {\n border-width: 1px\n }\n\n .border-b {\n border-bottom-width: 1px\n }\n\n .before\\\\:border:before {\n border-width: 1px\n }\n\n .border-0 {\n border-width: 0\n }\n\n .border-2 {\n border-width: 2px\n }\n\n .border-b-0 {\n border-bottom-width: 0\n }\n\n .border-b-4 {\n border-bottom-width: 4px\n }\n\n .border-l-4 {\n border-left-width: 4px\n }\n\n .border-r-0, .group:not(:last-of-type) .group-not-last-of-type\\\\:border-r-0 {\n border-right-width: 0\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:border-\\\\[6\\\\]:before {\n border-width: .6rem\n }\n\n .border-transparent {\n border-color: transparent\n }\n\n .border-\\\\[--w-color-buttongroup-utility-border\\\\] {\n border-color: var(--w-color-buttongroup-utility-border)\n }\n\n .border-\\\\[--w-color-callout-border\\\\] {\n border-color: var(--w-color-callout-border)\n }\n\n .border-\\\\[--w-s-color-background-inverted\\\\] {\n border-color: var(--w-s-color-background-inverted)\n }\n\n .border-\\\\[--w-s-color-surface-elevated-300\\\\] {\n border-color: var(--w-s-color-surface-elevated-300)\n }\n\n .active\\\\:border-\\\\[--w-color-buttongroup-utility-border-selected\\\\]:active {\n border-color: var(--w-color-buttongroup-utility-border-selected)\n }\n\n .divide-x > * + * {\n --w-divide-x-reverse: 0;\n border-left-width: calc(1px * calc(1 - var(--w-divide-x-reverse)));\n border-right-width: calc(1px * var(--w-divide-x-reverse))\n }\n\n .divide-y > * + * {\n --w-divide-y-reverse: 0;\n border-top-width: calc(1px * calc(1 - var(--w-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--w-divide-y-reverse))\n }\n\n .rounded-4 {\n border-radius: 4px\n }\n\n .rounded-8 {\n border-radius: 8px\n }\n\n .rounded-full {\n border-radius: 9999px\n }\n\n .before\\\\:rounded-2:before {\n border-radius: 2px\n }\n\n .before\\\\:rounded-full:before {\n border-radius: 9999px\n }\n\n .rounded-b-0 {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0\n }\n\n .rounded-bl-0 {\n border-bottom-left-radius: 0\n }\n\n .rounded-br-0 {\n border-bottom-right-radius: 0\n }\n\n .rounded-l-0 {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0\n }\n\n .rounded-l-full {\n border-top-left-radius: 9999px;\n border-bottom-left-radius: 9999px\n }\n\n .rounded-r-0 {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0\n }\n\n .rounded-r-full {\n border-top-right-radius: 9999px;\n border-bottom-right-radius: 9999px\n }\n\n .rounded-tl-0 {\n border-top-left-radius: 0\n }\n\n .rounded-tl-4 {\n border-top-left-radius: 4px\n }\n\n .rounded-tr-0 {\n border-top-right-radius: 0\n }\n\n .group:first-of-type .group-first-of-type\\\\:rounded-bl-8 {\n border-bottom-left-radius: 8px\n }\n\n .group:first-of-type .group-first-of-type\\\\:rounded-tl-8 {\n border-top-left-radius: 8px\n }\n\n .first\\\\:rounded-lb-4:first-child {\n border-bottom-left-radius: 4px\n }\n\n .first\\\\:rounded-lt-4:first-child {\n border-top-left-radius: 4px\n }\n\n .first\\\\:rounded-rt-4:first-child {\n border-top-right-radius: 4px\n }\n\n .group:last-of-type .group-last-of-type\\\\:rounded-br-8 {\n border-bottom-right-radius: 8px\n }\n\n .group:last-of-type .group-last-of-type\\\\:rounded-tr-8 {\n border-top-right-radius: 8px\n }\n\n .last\\\\:rounded-lb-4:last-child {\n border-bottom-left-radius: 4px\n }\n\n .last\\\\:rounded-rb-4:last-child {\n border-bottom-right-radius: 4px\n }\n\n .last\\\\:rounded-rt-4:last-child {\n border-top-right-radius: 4px\n }\n\n .caret-current {\n caret-color: currentColor\n }\n\n .opacity-25 {\n opacity: 25%\n }\n\n .block {\n display: block\n }\n\n .before\\\\:block:before {\n display: block\n }\n\n .inline-block {\n display: inline-block\n }\n\n .inline {\n display: inline\n }\n\n .flex, .open\\\\:flex[open] {\n display: flex\n }\n\n .inline-flex {\n display: inline-flex\n }\n\n .grid {\n display: grid\n }\n\n .inline-grid {\n display: inline-grid\n }\n\n .hidden, .group\\\\/stepv:last-child .group-last\\\\/stepv\\\\:hidden {\n display: none\n }\n\n .before\\\\:hidden:before {\n display: none\n }\n\n .hover\\\\:underline:hover {\n text-decoration-line: underline\n }\n\n .focus\\\\:underline:focus {\n text-decoration-line: underline\n }\n\n .focus-visible\\\\:underline:focus-visible {\n text-decoration-line: underline\n }\n\n .active\\\\:underline:active {\n text-decoration-line: underline\n }\n\n .hover\\\\:no-underline:hover {\n text-decoration: none\n }\n\n .focus\\\\:no-underline:focus {\n text-decoration: none\n }\n\n .active\\\\:no-underline:active {\n text-decoration: none\n }\n\n .flex-1 {\n flex: 1 1 0%\n }\n\n .shrink {\n flex-shrink: 1\n }\n\n .shrink-0 {\n flex-shrink: 0\n }\n\n .shrink-0\\\\! {\n flex-shrink: 0 !important\n }\n\n .grow, .grow-1 {\n flex-grow: 1\n }\n\n .basis-auto {\n flex-basis: auto\n }\n\n .flex-col {\n flex-direction: column\n }\n\n .focus-within\\\\:focusable:focus-within {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .focusable:focus, .focusable:focus-visible {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .focusable:not(:focus-visible) {\n outline: none\n }\n\n .peer:focus ~ .peer-focus\\\\:focusable, .peer:focus-visible ~ .peer-focus\\\\:focusable {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .peer:not(:focus-visible) ~ .peer-focus\\\\:focusable {\n outline: none\n }\n\n .focusable-inset {\n --w-outline-offset: -3px\n }\n\n .gap-12 {\n gap: 1.2rem\n }\n\n .gap-8 {\n gap: .8rem\n }\n\n .gap-x-16 {\n column-gap: 1.6rem\n }\n\n .gap-y-16 {\n row-gap: 1.6rem\n }\n\n .row-span-2 {\n grid-row: span 2/span 2\n }\n\n .col-span-2 {\n grid-column: span 2/span 2\n }\n\n .col-span-3 {\n grid-column: span 3/span 3\n }\n\n .row-start-1 {\n grid-row-start: 1\n }\n\n .row-start-2 {\n grid-row-start: 2\n }\n\n .col-start-2 {\n grid-column-start: 2\n }\n\n .auto-rows-auto {\n grid-auto-rows: auto\n }\n\n .grid-flow-col {\n grid-auto-flow: column\n }\n\n .grid-rows-\\\\[20px_auto\\\\] {\n grid-template-rows:20px auto\n }\n\n .grid-rows-\\\\[auto_20px\\\\] {\n grid-template-rows:auto 20px\n }\n\n .grid-cols-\\\\[1fr_20px_1fr\\\\] {\n grid-template-columns:1fr 20px 1fr\n }\n\n .grid-cols-\\\\[1fr_20px\\\\] {\n grid-template-columns:1fr 20px\n }\n\n .grid-cols-\\\\[20px_1fr\\\\] {\n grid-template-columns:20px 1fr\n }\n\n .grid-cols-\\\\[auto_1fr_auto\\\\] {\n grid-template-columns:auto 1fr auto\n }\n\n .grid-cols-1 {\n grid-template-columns:repeat(1, minmax(0, 1fr))\n }\n\n .grid-cols-2 {\n grid-template-columns:repeat(2, minmax(0, 1fr))\n }\n\n .grid-cols-3 {\n grid-template-columns:repeat(3, minmax(0, 1fr))\n }\n\n .grid-cols-4 {\n grid-template-columns:repeat(4, minmax(0, 1fr))\n }\n\n .grid-cols-5 {\n grid-template-columns:repeat(5, minmax(0, 1fr))\n }\n\n .grid-cols-6 {\n grid-template-columns:repeat(6, minmax(0, 1fr))\n }\n\n .grid-cols-7 {\n grid-template-columns:repeat(7, minmax(0, 1fr))\n }\n\n .grid-cols-8 {\n grid-template-columns:repeat(8, minmax(0, 1fr))\n }\n\n .grid-cols-9 {\n grid-template-columns:repeat(9, minmax(0, 1fr))\n }\n\n .overflow-hidden {\n overflow: hidden\n }\n\n .overflow-x-hidden {\n overflow-x: hidden\n }\n\n .overflow-y-auto {\n overflow-y: auto\n }\n\n .list-none {\n list-style-type: none\n }\n\n .outline-\\\\[--w-s-color-border-negative\\\\]\\\\! {\n outline-color: var(--w-s-color-border-negative) !important\n }\n\n .outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px\n }\n\n .focus\\\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px\n }\n\n .items-start {\n align-items: flex-start\n }\n\n .items-end {\n align-items: flex-end\n }\n\n .items-center {\n align-items: center\n }\n\n .self-center {\n align-self: center\n }\n\n .inset-0 {\n top: 0rem;\n right: 0rem;\n bottom: 0rem;\n left: 0rem\n }\n\n .-bottom-0 {\n bottom: -0rem\n }\n\n .bottom-0 {\n bottom: 0rem\n }\n\n .bottom-10 {\n bottom: 1rem\n }\n\n .bottom-16 {\n bottom: 1.6rem\n }\n\n .left-0 {\n left: 0rem\n }\n\n .left-4 {\n left: .4rem\n }\n\n .right-0 {\n right: 0rem\n }\n\n .right-8 {\n right: .8rem\n }\n\n .top-\\\\[1\\\\.92rem\\\\] {\n top: 1.92rem\n }\n\n .top-0 {\n top: 0rem\n }\n\n .top-20 {\n top: 2rem\n }\n\n .top-4 {\n top: .4rem\n }\n\n .top-8 {\n top: .8rem\n }\n\n .before\\\\:bottom-0:before {\n bottom: 0rem\n }\n\n .before\\\\:left-0:before {\n left: 0rem\n }\n\n .before\\\\:right-0:before {\n right: 0rem\n }\n\n .before\\\\:top-2:before {\n top: .2rem\n }\n\n .-bottom-\\\\[8px\\\\] {\n bottom: -8px\n }\n\n .-left-\\\\[8px\\\\] {\n left: -8px\n }\n\n .-right-\\\\[8px\\\\] {\n right: -8px\n }\n\n .-top-\\\\[8px\\\\] {\n top: -8px\n }\n\n .top-\\\\[19px\\\\] {\n top: 19px\n }\n\n .top-\\\\[30\\\\%\\\\] {\n top: 30%\n }\n\n .justify-end {\n justify-content: flex-end\n }\n\n .justify-center {\n justify-content: center\n }\n\n .justify-between {\n justify-content: space-between\n }\n\n .justify-items-center {\n justify-items: center\n }\n\n .justify-self-start {\n justify-self: start\n }\n\n .justify-self-end {\n justify-self: end\n }\n\n .justify-self-center {\n justify-self: center\n }\n\n .absolute {\n position: absolute\n }\n\n .fixed {\n position: fixed\n }\n\n .relative {\n position: relative\n }\n\n .open\\\\:fixed[open] {\n position: fixed\n }\n\n .before\\\\:absolute:before {\n position: absolute\n }\n\n .z-10, .peer:checked ~ .peer-checked\\\\:z-10 {\n z-index: 10\n }\n\n .z-30 {\n z-index: 30\n }\n\n .z-50 {\n z-index: 50\n }\n\n .hover\\\\:z-30:hover {\n z-index: 30\n }\n\n .\\\\!s-bg-selected {\n background-color: var(--w-s-color-background-selected) !important\n }\n\n .s-bg {\n background-color: var(--w-s-color-background)\n }\n\n .s-bg-disabled {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .s-bg-disabled-subtle {\n background-color: var(--w-s-color-background-disabled-subtle)\n }\n\n .s-bg-info-subtle {\n background-color: var(--w-s-color-background-info-subtle)\n }\n\n .s-bg-inverted {\n background-color: var(--w-s-color-background-inverted)\n }\n\n .s-bg-negative {\n background-color: var(--w-s-color-background-negative)\n }\n\n .s-bg-negative-subtle {\n background-color: var(--w-s-color-background-negative-subtle)\n }\n\n .s-bg-positive-subtle {\n background-color: var(--w-s-color-background-positive-subtle)\n }\n\n .s-bg-primary, .peer:checked ~ .peer-checked\\\\:s-bg-primary {\n background-color: var(--w-s-color-background-primary)\n }\n\n .s-bg-selected {\n background-color: var(--w-s-color-background-selected)\n }\n\n .s-bg-subtle {\n background-color: var(--w-s-color-background-subtle)\n }\n\n .s-bg-warning-subtle {\n background-color: var(--w-s-color-background-warning-subtle)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-bg-negative-hover:before {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-bg-primary-hover:before {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-disabled:before {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-negative:before {\n background-color: var(--w-s-color-background-negative)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-primary:before {\n background-color: var(--w-s-color-background-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-disabled:before {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-negative:before {\n background-color: var(--w-s-color-background-negative)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-primary:before {\n background-color: var(--w-s-color-background-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-bg-negative-hover:hover:before {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-bg-primary-hover:hover:before {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .\\\\!hover\\\\:s-bg-selected-hover:hover {\n background-color: var(--w-s-color-background-selected-hover) !important\n }\n\n .group:hover .group-hover\\\\:s-bg-primary-hover {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .hover\\\\:before\\\\:s-bg-hover:hover:before {\n background-color: var(--w-s-color-background-hover)\n }\n\n .hover\\\\:before\\\\:s-bg-negative-subtle-hover:hover:before {\n background-color: var(--w-s-color-background-negative-subtle-hover)\n }\n\n .hover\\\\:s-bg-hover:hover {\n background-color: var(--w-s-color-background-hover)\n }\n\n .hover\\\\:s-bg-negative-hover:hover {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .hover\\\\:s-bg-negative-subtle-hover:hover {\n background-color: var(--w-s-color-background-negative-subtle-hover)\n }\n\n .hover\\\\:s-bg-primary-hover:hover {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .hover\\\\:s-bg-selected-hover:hover {\n background-color: var(--w-s-color-background-selected-hover)\n }\n\n .peer:hover:not(:checked) ~ .peer-hover\\\\:peer-not-checked\\\\:s-bg-hover {\n background-color: var(--w-s-color-background-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-bg-hover:before {\n background-color: var(--w-s-color-background-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-bg-negative-subtle:before {\n background-color: var(--w-s-color-background-negative-subtle)\n }\n\n .focus\\\\:s-bg-primary-hover:focus {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .\\\\!active\\\\:s-bg-selected-active:active {\n background-color: var(--w-s-color-background-selected-active) !important\n }\n\n .active\\\\:s-bg-active:active {\n background-color: var(--w-s-color-background-active)\n }\n\n .active\\\\:s-bg-negative-active:active {\n background-color: var(--w-s-color-background-negative-active)\n }\n\n .active\\\\:s-bg-negative-subtle-active:active {\n background-color: var(--w-s-color-background-negative-subtle-active)\n }\n\n .active\\\\:s-bg-primary-active:active {\n background-color: var(--w-s-color-background-primary-active)\n }\n\n .active\\\\:s-bg-selected-active:active {\n background-color: var(--w-s-color-background-selected-active)\n }\n\n .before\\\\:s-bg-disabled-subtle:before {\n background-color: var(--w-s-color-background-disabled-subtle)\n }\n\n .before\\\\:s-bg:before {\n background-color: var(--w-s-color-background)\n }\n\n .s-text {\n color: var(--w-s-color-text)\n }\n\n .s-text-disabled {\n color: var(--w-s-color-text-disabled)\n }\n\n .s-text-inverted, .peer:checked ~ .peer-checked\\\\:s-text-inverted {\n color: var(--w-s-color-text-inverted)\n }\n\n .s-text-inverted-static {\n color: var(--w-s-color-text-inverted-static)\n }\n\n .s-text-link {\n color: var(--w-s-color-text-link)\n }\n\n .s-text-negative {\n color: var(--w-s-color-text-negative)\n }\n\n .s-text-subtle {\n color: var(--w-s-color-text-subtle)\n }\n\n .hover\\\\:s-text-link:hover {\n color: var(--w-s-color-text-link)\n }\n\n .active\\\\:s-text:active {\n color: var(--w-s-color-text)\n }\n\n .placeholder\\\\:s-text-placeholder::placeholder {\n color: var(--w-s-color-text-placeholder)\n }\n\n .s-icon {\n color: var(--w-s-color-icon)\n }\n\n .s-icon-info {\n color: var(--w-s-color-icon-info)\n }\n\n .s-icon-inverted {\n color: var(--w-s-color-icon-inverted)\n }\n\n .s-icon-negative {\n color: var(--w-s-color-icon-negative)\n }\n\n .s-icon-positive {\n color: var(--w-s-color-icon-positive)\n }\n\n .s-icon-warning {\n color: var(--w-s-color-icon-warning)\n }\n\n .hover\\\\:s-icon-hover:hover {\n color: var(--w-s-color-icon-hover)\n }\n\n .active\\\\:s-icon-active:active {\n color: var(--w-s-color-icon-active)\n }\n\n .before\\\\:s-icon-inverted:before {\n color: var(--w-s-color-icon-inverted)\n }\n\n .s-border {\n border-color: var(--w-s-color-border)\n }\n\n .s-border-disabled {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .s-border-info-subtle {\n border-color: var(--w-s-color-border-info-subtle)\n }\n\n .s-border-l-info {\n border-left-color: var(--w-s-color-border-info)\n }\n\n .s-border-l-negative {\n border-left-color: var(--w-s-color-border-negative)\n }\n\n .s-border-l-positive {\n border-left-color: var(--w-s-color-border-positive)\n }\n\n .s-border-l-warning {\n border-left-color: var(--w-s-color-border-warning)\n }\n\n .s-border-negative {\n border-color: var(--w-s-color-border-negative)\n }\n\n .s-border-negative-subtle {\n border-color: var(--w-s-color-border-negative-subtle)\n }\n\n .s-border-positive-subtle {\n border-color: var(--w-s-color-border-positive-subtle)\n }\n\n .s-border-primary, .peer:checked ~ .peer-checked\\\\:s-border-primary {\n border-color: var(--w-s-color-border-primary)\n }\n\n .s-border-selected {\n border-color: var(--w-s-color-border-selected)\n }\n\n .s-border-warning-subtle {\n border-color: var(--w-s-color-border-warning-subtle)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-negative-hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-primary-hover:before {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-selected-hover:before {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-selected:before {\n border-color: var(--w-s-color-border-selected)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-border-negative-hover:hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-border-primary-hover:hover:before {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .group:hover .group-hover\\\\:s-border-selected-hover {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .hover\\\\:before\\\\:s-border-negative-hover:hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .hover\\\\:before\\\\:s-border-primary:hover:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .hover\\\\:s-border-disabled:hover {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .hover\\\\:s-border-hover:hover {\n border-color: var(--w-s-color-border-hover)\n }\n\n .hover\\\\:s-border-negative-hover:hover {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .hover\\\\:s-border-primary-hover:hover {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .hover\\\\:s-border-primary:hover {\n border-color: var(--w-s-color-border-primary)\n }\n\n .hover\\\\:s-border-selected-hover:hover {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-border-negative-hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .focus\\\\:s-border-primary-hover:focus {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .active\\\\:s-border-active:active {\n border-color: var(--w-s-color-border-active)\n }\n\n .active\\\\:s-border-disabled:active {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .active\\\\:s-border-primary-active:active {\n border-color: var(--w-s-color-border-primary-active)\n }\n\n .active\\\\:s-border-selected-active:active {\n border-color: var(--w-s-color-border-selected-active)\n }\n\n .active\\\\:s-border-selected:active {\n border-color: var(--w-s-color-border-selected)\n }\n\n .group:active .group-active\\\\:s-border-active {\n border-color: var(--w-s-color-border-active)\n }\n\n .group:active .group-active\\\\:s-border-selected-active {\n border-color: var(--w-s-color-border-selected-active)\n }\n\n .before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .s-surface-sunken {\n background-color: var(--w-s-color-surface-sunken)\n }\n\n .s-surface-elevated-200 {\n background-color: var(--w-s-color-surface-elevated-200);\n box-shadow: var(--w-s-shadow-surface-elevated-200)\n }\n\n .hover\\\\:s-surface-elevated-200-hover:hover {\n background-color: var(--w-s-color-surface-elevated-200-hover);\n box-shadow: var(--w-s-shadow-surface-elevated-200-hover)\n }\n\n .active\\\\:s-surface-elevated-200-active:active {\n background-color: var(--w-s-color-surface-elevated-200-active);\n box-shadow: var(--w-s-shadow-surface-elevated-200-active)\n }\n\n .drop-shadow-m {\n filter: drop-shadow(rgba(64, 64, 64, .24) 0 3px 8px) drop-shadow(rgba(64, 64, 64, .16) 0 3px 6px)\n }\n\n .shadow-m {\n box-shadow: var(--w-shadow-m)\n }\n\n .shadow-s {\n box-shadow: var(--w-shadow-s)\n }\n\n .shadow-\\\\[--w-shadow-slider\\\\] {\n box-shadow: var(--w-shadow-slider)\n }\n\n .hover\\\\:shadow-\\\\[--w-shadow-slider-handle-hover\\\\]:hover {\n box-shadow: var(--w-shadow-slider-handle-hover)\n }\n\n .focus\\\\:shadow-\\\\[--w-shadow-slider-handle-hover\\\\]:focus {\n box-shadow: var(--w-shadow-slider-handle-hover)\n }\n\n .active\\\\:shadow-\\\\[--w-shadow-slider-handle-active\\\\]:active {\n box-shadow: var(--w-shadow-slider-handle-active)\n }\n\n .h-0 {\n height: 0rem\n }\n\n .h-16 {\n height: 1.6rem\n }\n\n .h-2 {\n height: .2rem\n }\n\n .h-20 {\n height: 2rem\n }\n\n .h-24 {\n height: 2.4rem\n }\n\n .h-4 {\n height: .4rem\n }\n\n .h-44 {\n height: 4.4rem\n }\n\n .h-6 {\n height: .6rem\n }\n\n .h-8 {\n height: .8rem\n }\n\n .h-full {\n height: 100%\n }\n\n .h-unset {\n height: unset\n }\n\n .max-h-unset {\n max-height: unset\n }\n\n .max-w-full {\n max-width: 100%\n }\n\n .max-w-max {\n max-width: max-content\n }\n\n .max-w-unset {\n max-width: unset\n }\n\n .min-h-32 {\n min-height: 3.2rem\n }\n\n .min-h-40 {\n min-height: 4rem\n }\n\n .min-w-16 {\n min-width: 1.6rem\n }\n\n .min-w-32 {\n min-width: 3.2rem\n }\n\n .w-16 {\n width: 1.6rem\n }\n\n .w-2 {\n width: .2rem\n }\n\n .w-20 {\n width: 2rem\n }\n\n .w-24 {\n width: 2.4rem\n }\n\n .w-32 {\n width: 3.2rem\n }\n\n .w-40 {\n width: 4rem\n }\n\n .w-44 {\n width: 4.4rem\n }\n\n .w-8 {\n width: .8rem\n }\n\n .w-full {\n width: 100%\n }\n\n .w-max {\n width: max-content\n }\n\n .w-unset {\n width: unset\n }\n\n .before\\\\:h-20:before {\n height: 2rem\n }\n\n .before\\\\:h-full:before {\n height: 100%\n }\n\n .before\\\\:w-20:before {\n width: 2rem\n }\n\n .before\\\\:w-32:before {\n width: 3.2rem\n }\n\n .h-\\\\[--w-modal-height\\\\] {\n height: var(--w-modal-height)\n }\n\n .h-\\\\[14px\\\\] {\n height: 14px\n }\n\n .h-\\\\[16px\\\\] {\n height: 16px\n }\n\n .max-h-\\\\[--w-modal-max-height\\\\] {\n max-height: var(--w-modal-max-height)\n }\n\n .min-h-\\\\[--w-modal-min-height\\\\] {\n min-height: var(--w-modal-min-height)\n }\n\n .min-h-\\\\[32px\\\\] {\n min-height: 32px\n }\n\n .min-h-\\\\[40px\\\\] {\n min-height: 40px\n }\n\n .min-h-\\\\[42\\\\] {\n min-height: 4.2rem\n }\n\n .min-h-\\\\[44px\\\\] {\n min-height: 44px\n }\n\n .min-w-\\\\[32px\\\\] {\n min-width: 32px\n }\n\n .min-w-\\\\[40px\\\\] {\n min-width: 40px\n }\n\n .min-w-\\\\[44px\\\\] {\n min-width: 44px\n }\n\n .w-\\\\[--w-modal-width\\\\] {\n width: var(--w-modal-width)\n }\n\n .w-\\\\[14px\\\\] {\n width: 14px\n }\n\n .w-\\\\[16px\\\\] {\n width: 16px\n }\n\n .space-x-8 > :not([hidden]) ~ :not([hidden]) {\n --w-space-x-reverse: 0;\n margin-left: calc(.8rem * calc(1 - var(--w-space-x-reverse)));\n margin-right: calc(.8rem * var(--w-space-x-reverse))\n }\n\n .space-y-16 > :not([hidden]) ~ :not([hidden]) {\n --w-space-y-reverse: 0;\n margin-top: calc(1.6rem * calc(1 - var(--w-space-y-reverse)));\n margin-bottom: calc(1.6rem * var(--w-space-y-reverse))\n }\n\n .m-0 {\n margin: 0rem\n }\n\n .m-auto {\n margin: auto\n }\n\n .-mx-16 {\n margin-left: -1.6rem;\n margin-right: -1.6rem\n }\n\n .mx-0 {\n margin-left: 0rem;\n margin-right: 0rem\n }\n\n .mx-8 {\n margin-left: .8rem;\n margin-right: .8rem\n }\n\n .mx-auto {\n margin-left: auto;\n margin-right: auto\n }\n\n .-mb-1 {\n margin-bottom: -.1rem\n }\n\n .-ml-8 {\n margin-left: -.8rem\n }\n\n .-mr-1 {\n margin-right: -.1rem\n }\n\n .-mr-8 {\n margin-right: -.8rem\n }\n\n .-mt-2 {\n margin-top: -.2rem\n }\n\n .-mt-4 {\n margin-top: -.4rem\n }\n\n .last-child\\\\:mb-0 > :last-child, .mb-0 {\n margin-bottom: 0rem\n }\n\n .mb-32 {\n margin-bottom: 3.2rem\n }\n\n .ml-8 {\n margin-left: .8rem\n }\n\n .ml-auto {\n margin-left: auto\n }\n\n .mr-8 {\n margin-right: .8rem\n }\n\n .mt-16 {\n margin-top: 1.6rem\n }\n\n .mt-4 {\n margin-top: .4rem\n }\n\n .group:not(:first-child) .group-not-first\\\\:-ml-2 {\n margin-left: -.2rem\n }\n\n .last\\\\:mb-0:last-child {\n margin-bottom: 0rem\n }\n\n .last\\\\:mr-0:last-child {\n margin-right: 0rem\n }\n\n .m-\\\\[8px\\\\] {\n margin: 8px\n }\n\n .p-0 {\n padding: 0rem\n }\n\n .p-16 {\n padding: 1.6rem\n }\n\n .p-4 {\n padding: .4rem\n }\n\n .p-8 {\n padding: .8rem\n }\n\n .px-0 {\n padding-left: 0rem;\n padding-right: 0rem\n }\n\n .px-1 {\n padding-left: .1rem;\n padding-right: .1rem\n }\n\n .px-12 {\n padding-left: 1.2rem;\n padding-right: 1.2rem\n }\n\n .px-14 {\n padding-left: 1.4rem;\n padding-right: 1.4rem\n }\n\n .px-16 {\n padding-left: 1.6rem;\n padding-right: 1.6rem\n }\n\n .px-8 {\n padding-left: .8rem;\n padding-right: .8rem\n }\n\n .py-0 {\n padding-top: 0rem;\n padding-bottom: 0rem\n }\n\n .py-1 {\n padding-top: .1rem;\n padding-bottom: .1rem\n }\n\n .py-10 {\n padding-top: 1rem;\n padding-bottom: 1rem\n }\n\n .py-12 {\n padding-top: 1.2rem;\n padding-bottom: 1.2rem\n }\n\n .py-2 {\n padding-top: .2rem;\n padding-bottom: .2rem\n }\n\n .py-4 {\n padding-top: .4rem;\n padding-bottom: .4rem\n }\n\n .py-6 {\n padding-top: .6rem;\n padding-bottom: .6rem\n }\n\n .py-8 {\n padding-top: .8rem;\n padding-bottom: .8rem\n }\n\n .pb-0 {\n padding-bottom: 0rem\n }\n\n .pb-32 {\n padding-bottom: 3.2rem\n }\n\n .pb-4 {\n padding-bottom: .4rem\n }\n\n .pb-8 {\n padding-bottom: .8rem\n }\n\n .pl-0 {\n padding-left: 0rem\n }\n\n .pl-1 {\n padding-left: .1rem\n }\n\n .pl-12 {\n padding-left: 1.2rem\n }\n\n .pl-28 {\n padding-left: 2.8rem\n }\n\n .pl-4 {\n padding-left: .4rem\n }\n\n .pl-8 {\n padding-left: .8rem\n }\n\n .pr-12 {\n padding-right: 1.2rem\n }\n\n .pr-14 {\n padding-right: 1.4rem\n }\n\n .pr-2 {\n padding-right: .2rem\n }\n\n .pr-32 {\n padding-right: 3.2rem\n }\n\n .pr-40 {\n padding-right: 4rem\n }\n\n .pt-0 {\n padding-top: 0rem\n }\n\n .pt-1 {\n padding-top: .1rem\n }\n\n .pt-16 {\n padding-top: 1.6rem\n }\n\n .pt-24 {\n padding-top: 2.4rem\n }\n\n .pt-8 {\n padding-top: .8rem\n }\n\n .group\\\\/step:last-child .group-last\\\\/step\\\\:last\\\\:pb-0:last-child {\n padding-bottom: 0rem\n }\n\n .last\\\\:pb-1:last-child {\n padding-bottom: .1rem\n }\n\n .last\\\\:pr-1:last-child {\n padding-right: .1rem\n }\n\n .p-\\\\[8px\\\\] {\n padding: 8px\n }\n\n .px-\\\\[15px\\\\] {\n padding-left: 15px;\n padding-right: 15px\n }\n\n .px-\\\\[8px\\\\] {\n padding-left: 8px;\n padding-right: 8px\n }\n\n .py-\\\\[11px\\\\] {\n padding-top: 11px;\n padding-bottom: 11px\n }\n\n .py-\\\\[5px\\\\] {\n padding-top: 5px;\n padding-bottom: 5px\n }\n\n .py-\\\\[7px\\\\] {\n padding-top: 7px;\n padding-bottom: 7px\n }\n\n .pl-\\\\[var\\\\(--w-prefix-width\\\\,_40px\\\\)\\\\] {\n padding-left: var(--w-prefix-width, 40px)\n }\n\n .invisible {\n visibility: hidden\n }\n\n .backface-hidden {\n backface-visibility: hidden\n }\n\n .break-words {\n overflow-wrap: break-word\n }\n\n .before\\\\:content-\\\\[\\\\\"\u00E2\u20AC\u201C\\\\\"\\\\]:before {\n content: \"\u00E2\u20AC\u201C\"\n }\n\n .before\\\\:content-\\\\[\\\\\"\\\\\"\\\\]:before {\n content: \"\"\n }\n\n .cursor-default {\n cursor: default\n }\n\n .cursor-pointer {\n cursor: pointer\n }\n\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-smoothing: grayscale\n }\n\n .font-bold {\n font-weight: 700\n }\n\n .before\\\\:font-bold:before {\n font-weight: 700\n }\n\n .font-normal {\n font-weight: 400\n }\n\n .pointer-events-auto {\n pointer-events: auto\n }\n\n .pointer-events-none {\n pointer-events: none\n }\n\n .before\\\\:pointer-events-none:before {\n pointer-events: none\n }\n\n .pb-safe-\\\\[32\\\\] {\n padding-bottom: calc(32px + env(safe-area-inset-bottom, 0px))\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0\n }\n\n .touch-pan-y {\n touch-action: pan-y\n }\n\n .select-none {\n -webkit-user-select: none;\n user-select: none\n }\n\n .translate-x-20 {\n --w-translate-x: 2rem;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .translate-z-0 {\n --w-translate-z: 0rem;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .-rotate-180, .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:-rotate-180::part(w-icon-chevron-down-16-part) {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: -180deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:rotate-180::part(w-icon-chevron-up-16-part), .rotate-180 {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: 180deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .rotate-90 {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: 90deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transform::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transform::part(w-icon-chevron-up-16-part), .transform {\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transform-gpu::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transform-gpu::part(w-icon-chevron-up-16-part), .transform-gpu {\n transform: translate3d(var(--w-translate-x), var(--w-translate-y), var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transition-transform::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transition-transform::part(w-icon-chevron-up-16-part), .transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-300 {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .3s\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .before\\\\:transition-all:before {\n transition-property: all;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .duration-300 {\n transition-duration: .3s\n }\n\n .ease-in-out, .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:ease-in-out::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:ease-in-out::part(w-icon-chevron-up-16-part) {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1)\n }\n\n .text-m {\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m)\n }\n\n .text-s {\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s)\n }\n\n .text-xs {\n font-size: var(--w-font-size-xs);\n line-height: var(--w-line-height-xs)\n }\n\n .leading-m {\n line-height: var(--w-line-height-m)\n }\n\n .before\\\\:leading-xs:before {\n line-height: var(--w-line-height-xs)\n }\n\n .leading-\\\\[24\\\\] {\n line-height: 2.4rem\n }\n\n @media (max-width: 479.9px) {\n .lt-sm\\\\:rounded-b-0 {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0\n }\n }\n @media (min-width: 480px) {\n .sm\\\\:border-b-0 {\n border-bottom-width: 0\n }\n\n .sm\\\\:rounded-8 {\n border-radius: 8px\n }\n\n .sm\\\\:rounded-b-8 {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px\n }\n\n .sm\\\\:gap-16 {\n gap: 1.6rem\n }\n\n .sm\\\\:place-content-center {\n place-content: center\n }\n\n .sm\\\\:place-items-center {\n place-items: center\n }\n\n .sm\\\\:h-24 {\n height: 2.4rem\n }\n\n .sm\\\\:min-h-48 {\n min-height: 4.8rem\n }\n\n .sm\\\\:w-24 {\n width: 2.4rem\n }\n\n .sm\\\\:min-h-\\\\[32px\\\\] {\n min-height: 32px\n }\n\n .sm\\\\:min-h-\\\\[44px\\\\] {\n min-height: 44px\n }\n\n .sm\\\\:min-h-\\\\[45\\\\] {\n min-height: 4.5rem\n }\n\n .sm\\\\:min-w-\\\\[32px\\\\] {\n min-width: 32px\n }\n\n .sm\\\\:min-w-\\\\[44px\\\\] {\n min-width: 44px\n }\n\n .sm\\\\:mx-0 {\n margin-left: 0rem;\n margin-right: 0rem\n }\n\n .sm\\\\:mx-16 {\n margin-left: 1.6rem;\n margin-right: 1.6rem\n }\n\n .sm\\\\:-ml-12 {\n margin-left: -1.2rem\n }\n\n .sm\\\\:-mr-12 {\n margin-right: -1.2rem\n }\n\n .sm\\\\:-mt-8 {\n margin-top: -.8rem\n }\n\n .sm\\\\:px-32 {\n padding-left: 3.2rem;\n padding-right: 3.2rem\n }\n\n .sm\\\\:py-0 {\n padding-top: 0rem;\n padding-bottom: 0rem\n }\n\n .sm\\\\:pb-32 {\n padding-bottom: 3.2rem\n }\n\n .sm\\\\:pt-24 {\n padding-top: 2.4rem\n }\n\n .sm\\\\:pt-32 {\n padding-top: 3.2rem\n }\n }\n @media (min-width: 768px) {\n .md\\\\:block {\n display: block\n }\n\n .md\\\\:hidden {\n display: none\n }\n }\n `;\n", "import { css } from 'lit';\n\nexport const wSliderStyles = css`\n .w-slider {\n position: relative;\n border: none;\n padding: 0;\n margin: 0;\n display: grid;\n width: 100%;\n grid-template-areas:\n 'label'\n 'description'\n 'slider';\n grid-template-columns: 1fr;\n\n --w-slider-track-background: var(--w-s-color-background-disabled-subtle);\n --w-slider-track-active-background: var(--w-s-color-background-primary);\n --w-slider-track-height: 4px;\n --w-slider-track-active-height: 6px;\n --w-slider-thumb-background: var(--w-s-color-background-primary);\n --w-slider-thumb-background-hover: var(--w-s-color-background-primary-hover);\n --w-slider-thumb-size: 28px;\n --w-slider-thumb-offset: calc(var(--w-slider-thumb-size) / 2);\n --w-slider-marker-color: var(--w-s-color-border);\n\n /* Math corner to calculate the fill of the slider and placement of markers. */\n\n /* The --min value can be non-zero, f. ex. choosing a year from 1950 to 2025. Normalize the values so we start at 0 and run to max - min. */\n --_value-range: calc(var(--max) - var(--min));\n --_from-in-range: max(calc(var(--from) - var(--min)), 0);\n\n /* limit to maximum value in range so typing a value larger than max doesn't explode layouts */\n --_to-in-range: min(calc(var(--to) - var(--min)), var(--_value-range));\n\n /* Position the starting point of the fill in the case of a non-zero --from value in a range slider.\n * In other words, given a width of 100% how many percent should be left unfilled/blank\n * at the beginning of the range slider (dashes in this ASCII-range-slider: |---O******O|) */\n --_from-as-percent-of-max: calc(var(--_from-in-range) / var(--_value-range) * 100);\n --_blank-values-before: var(--_from-as-percent-of-max);\n\n /* Set the width of the fill as a percentage.\n * In other words, given a width of 100% how many percent should be left unfilled/blank\n * at the end of the slider (dashes in this ASCII-slider: |******O---|) */\n --_to-as-percent-of-max: calc(var(--_to-in-range) / var(--_value-range) * 100);\n --_filled-values: calc(var(--_to-as-percent-of-max) - var(--_blank-values-before));\n\n /* Vertical position of range and markers */\n --_range-top: calc(\n var(--w-slider-thumb-size) / 2 + calc(var(--w-slider-track-active-height) - calc(var(--w-slider-track-height) / 2) + 1px)\n );\n }\n\n .w-slider__label {\n grid-area: label;\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s);\n font-weight: bold;\n padding-bottom: 8px;\n color: var(--w-s-color-text);\n }\n\n .w-slider__description {\n grid-area: description;\n }\n\n .w-slider__active-range {\n align-self: center;\n background: var(--w-slider-track-background);\n border-radius: 4px;\n position: absolute;\n top: var(--_range-top);\n left: 0;\n right: 0;\n grid-area: slider;\n }\n\n .w-slider__markers {\n --_marker-height: 7px;\n --_marker-width: 1px;\n\n align-self: center;\n\n /* Creates a linear gradient with --_marker-width wide markers\n followed by enough transparent that we can repeat the gradient\n along the X axis and have markers visible where we want them. */\n background: linear-gradient(to right, var(--w-slider-marker-color) var(--_marker-width), rgba(0, 0, 0, 0) 1px) repeat-x;\n --_step-width-as-percent: calc(var(--markers) / var(--_value-range) * 100);\n background-size: calc(var(--_step-width-as-percent) * 1% - 0.1%) var(--_marker-height);\n\n background-position: bottom 0 left 8px right 8px;\n position: absolute;\n top: calc(var(--_range-top) + 2px);\n left: 1px;\n right: 1px;\n grid-area: slider;\n height: var(--_marker-height);\n }\n\n .w-slider__active-range::before {\n background: var(--w-slider-track-active-background);\n border-radius: 4px;\n content: '';\n display: block;\n height: var(--w-slider-track-active-height);\n\n margin-left: calc(var(--_blank-values-before) * 1%);\n width: calc(var(--_filled-values) * 1%);\n }\n\n slot::slotted(w-slider-thumb) {\n position: static;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n grid-area: slider;\n }\n`;\n", "// @warp-css;\n\nimport { FormControlMixin } from '@open-wc/form-control';\nimport { html, LitElement, nothing, PropertyValues } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { reset } from '../styles.js';\nimport type { WarpTextField } from '../textfield/index.js';\n\nimport { wSliderThumbStyles } from './styles/w-slider-thumb.styles.js';\nimport { styles as unoStyles } from './styles.js';\n\n/**\n * Component to place inside a `<w-slider>`.\n *\n * [See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/forms-slider-and-range-slider--docs)\n */\nclass WarpSliderThumb extends FormControlMixin(LitElement) {\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static styles = [reset, unoStyles, wSliderThumbStyles];\n\n @property({ attribute: 'aria-label', reflect: true })\n ariaLabel: string;\n\n @property({ attribute: 'aria-description', reflect: true })\n ariaDescription: string;\n\n @property({ reflect: true })\n label: string;\n\n @property({ reflect: true })\n name: string;\n\n @property({ reflect: true })\n value: string;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean;\n\n /** Set by `<w-slider>` */\n @state()\n markers: string;\n\n /** Set by `<w-slider>` */\n @state()\n required: boolean;\n\n /** Set by `<w-slider>` */\n @state()\n step: number;\n\n /** Set by `<w-slider>` */\n @state()\n min: string;\n\n /** Set by `<w-slider>` */\n @state()\n max: string;\n\n /** Set by `<w-slider>` */\n @state()\n suffix: string;\n\n /** @internal */\n @state()\n forceDisabled: boolean;\n\n /** @internal */\n @state()\n forceInvalid: boolean;\n\n /** JS hook to help you format the numeric value how you want. */\n @state()\n formatter: (value: string) => string;\n\n @query('input[type=\"range\"]')\n range: HTMLInputElement;\n\n @query('w-textfield')\n textfield: WarpTextField;\n\n /** @internal */\n @state()\n _invalid = false;\n\n /** @internal */\n @state()\n _showTooltip = false;\n\n /**\n * Reference to the anchor positioning style element used by the polyfill.\n * @internal\n */\n anchorPositioningStyleElement: HTMLStyleElement | null = null;\n\n #showTooltip(): void {\n this._showTooltip = true;\n }\n\n #hideTooltip(): void {\n this._showTooltip = false;\n }\n\n #onInput(e: InputEvent | CustomEvent): boolean {\n const isFromTextInput = (e.currentTarget as HTMLElement).tagName === 'W-TEXTFIELD';\n if (e instanceof CustomEvent) return; // We rely on the InputEvent event that fires right after the CustomEvent\n\n const value = (e.currentTarget as HTMLInputElement).value;\n if (value === '') {\n if (this.required) {\n this._invalid = true;\n }\n return false;\n }\n\n if (isFromTextInput && this._invalid) this._invalid = false;\n const valueNum = Number.parseInt(value);\n\n // Update validation state\n // Check that the user hasn't typed in a value beyond max or min\n const maxNum = Number.parseInt(this.max);\n const minNum = Number.parseInt(this.min);\n if (valueNum > maxNum || valueNum < minNum) {\n this._invalid = true;\n }\n\n // Stop a range slider's from value from reaching past the to value and vice versa\n // by updating the other component's min and max values.\n let shouldCancel = false;\n if (this.slot) {\n const computedStyle = getComputedStyle(this);\n if (this.slot === 'from') {\n const toValue = computedStyle.getPropertyValue('--to');\n // Check that the from value is not about to go past the --to value\n if (valueNum > Number.parseInt(toValue)) {\n if (isFromTextInput) {\n this._invalid = true;\n return false;\n }\n shouldCancel = true;\n // The user might have moved the slider so fast that this.value is far away from overlapping.\n // Set it to be equal to the to/from value, depending on what slider the user's moving.\n this.value = toValue;\n }\n } else {\n const fromValue = computedStyle.getPropertyValue('--from');\n // Check that the to value is not about to go past the --from value\n if (valueNum < Number.parseInt(fromValue)) {\n if (isFromTextInput) {\n this._invalid = true;\n return false;\n }\n shouldCancel = true;\n // The user might have moved the slider so fast that this.value is far away from overlapping.\n // Set it to be equal to the to/from value, depending on what slider the user's moving.\n this.value = fromValue;\n }\n }\n }\n\n if (shouldCancel) {\n e.preventDefault();\n // Needed to stop slider from moving independendtly of the value when we cancel the event\n this.range.value = this.value;\n return false;\n }\n this.value = value;\n return true;\n }\n\n async connectedCallback() {\n super.connectedCallback();\n if (!('anchorName' in document.documentElement.style)) {\n // Load the polyfill for CSS anchor positioning by @oddbird for browsers without native support.\n const dirname = import.meta.url.substring(0, import.meta.url.lastIndexOf('/'));\n try {\n const [{ default: polyfill }] = await Promise.all([\n import(\n /* @vite-ignore */\n `${dirname}/oddbird-css-anchor-positioning.js`\n ),\n this.updateComplete,\n ]);\n\n // We need to work around a limitation in the polyfill. It doesn't support constructed stylesheets.\n // This is based on the approach in Fluent UI: https://github.com/microsoft/fluentui/pull/32852/files#diff-7b316dca1b4391eae93d5edf48e9689e83d39f1c82cb3f8d61450dfad6f3c59eR73\n if (!this.anchorPositioningStyleElement) {\n this.anchorPositioningStyleElement = document.createElement('style');\n this.shadowRoot.prepend(this.anchorPositioningStyleElement);\n }\n\n this.anchorPositioningStyleElement.textContent = `\n /*\n * The polyfill can only anchor to ::before and ::after pseudo elements.\n * We work around that by recreating a transparent version of the active range\n * so that we can position relative to that, without crossing the shadow root boundary.\n */\n #anchor {\n anchor-name: --polyfilled-thumb;\n\n /* We have to compensate for the width of the thumb inside the track to find its center. */\n --_value: var(--_to-as-percent-of-max);\n --_offset-origin: 50; /* at this point the offset is zero */\n --_thumb-offset-percent: calc(var(--_value) - var(--_offset-origin));\n --_thumb-offset-pixels: calc(var(--w-slider-thumb-size) * calc(var(--_thumb-offset-percent) / 100));\n\n align-self: center;\n background: transparent;\n position: absolute;\n top: var(--_range-top);\n height: var(--w-slider-track-active-height);\n left: 0;\n right: 0;\n grid-area: slider;\n margin-left: calc(var(--_blank-values-before) * 1%);\n width: calc(calc(var(--_filled-values) * 1%) - var(--_thumb-offset-pixels));\n }\n\n #target {\n position: absolute;\n\n position-anchor: --polyfilled-thumb;\n bottom: calc(anchor(top) + 16px);\n left: anchor(--polyfilled-thumb right);\n }\n\n :host([name='from']) #anchor {\n --_value: var(--_from-as-percent-of-max);\n\n margin-left: calc(calc(var(--_blank-values-before) * 1%) - var(--_thumb-offset-pixels));\n width: calc(calc(var(--_filled-values) * 1%) - var(--w-slider-thumb-size));\n }\n\n :host([name='from']) #target {\n left: anchor(--polyfilled-thumb left);\n }\n `;\n\n await polyfill({ roots: [this.shadowRoot], elements: [this.anchorPositioningStyleElement] });\n } catch (e) {\n console.error(\n new Error('Error registering the CSS anchor positioning polyfill. The UI will look broken.', { cause: e }),\n );\n }\n } else {\n await this.updateComplete;\n }\n this.range.value = this.value ?? this.max;\n }\n\n updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has('value')) {\n this.setValue(this.value);\n if (!('anchorName' in document.documentElement.style)) {\n // Center the tooltip visually since the polyfill workaround doesn't let us do that.\n // Calculate the width of the tooltip and set a negative left margin of half that.\n const target = this.shadowRoot.querySelector('#target') as HTMLOutputElement;\n const computedWidthPx = getComputedStyle(target).getPropertyValue('width');\n const margin = Number.parseFloat(computedWidthPx.replace('px', '')) / 2;\n target.style.setProperty('margin-left', `-${margin}px`);\n }\n }\n if (changedProperties.has('_invalid')) {\n this.dispatchEvent(new CustomEvent('slidervalidity', { bubbles: true, detail: { invalid: this._invalid } }));\n }\n }\n\n render() {\n return html`\n <div class=\"w-slider-thumb\">\n <label for=\"range\">${this.label}</label>\n ${!('anchorName' in document.documentElement.style) ? html`<div id=\"anchor\"></div>` : nothing}\n <input\n id=\"range\"\n aria-label=\"${this.ariaLabel}\"\n aria-describedby=\"${ifDefined(this.ariaDescription ? 'aria-description' : undefined)}\"\n class=\"w-slider-thumb__range\"\n type=\"range\"\n .value=\"${this.value}\"\n min=\"${this.min}\"\n max=\"${this.max}\"\n name=\"${this.name}\"\n step=\"${ifDefined(this.step ? this.step : undefined)}\"\n ?disabled=\"${this.disabled || this.forceDisabled}\"\n @mousedown=\"${this.#showTooltip}\"\n @mouseup=\"${this.#hideTooltip}\"\n @touchstart=\"${this.#showTooltip}\"\n @touchend=\"${this.#hideTooltip}\"\n @focus=\"${this.#showTooltip}\"\n @blur=\"${this.#hideTooltip}\"\n @input=\"${this.#onInput}\" />\n\n <span class=\"w-slider-thumb__from-marker\">${this.formatter ? this.formatter(this.min) : this.min} ${this.suffix}</span>\n <span class=\"w-slider-thumb__to-marker\">${this.formatter ? this.formatter(this.max) : this.max} ${this.suffix}</span>\n\n <w-textfield\n aria-label=\"${this.ariaLabel}\"\n aria-description=\"${ifDefined(this.ariaDescription)}\"\n class=\"w-slider-thumb__textfield\"\n type=\"number\"\n min=\"${this.min}\"\n max=\"${this.max}\"\n .formatter=${this.formatter}\n .value=\"${this.value}\"\n ?invalid=\"${this.forceInvalid || this._invalid}\"\n @input=\"${this.#onInput}\">\n ${this.suffix ? html`<w-affix slot=\"suffix\" label=\"${this.suffix}\"></w-affix>` : nothing}\n </w-textfield>\n\n <div id=\"target\" class=\"${classMap({ 'w-slider-thumb__tooltip': true, 'w-slider-thumb__tooltip--visible': this._showTooltip })}\">\n ${this.value ? (this.formatter ? this.formatter(this.value) : this.value) : 0}${\n this.suffix ? html`&nbsp;${this.suffix}` : nothing\n }\n </div>\n\n <!-- aria-description is still not recommended for general use, so make a visually hidden element and refer to it with aria-describedby -->\n <span class=\"sr-only\" id=\"aria-description\">${this.ariaDescription}</span>\n </div>\n `;\n }\n}\n\nif (!customElements.get('w-slider-thumb')) {\n customElements.define('w-slider-thumb', WarpSliderThumb);\n}\n\nexport { WarpSliderThumb };\n", "import { css } from 'lit';\n\n/* For some reason the pseudoselectors for webkit and moz must be separate blocks :shrug: */\n\nexport const wSliderThumbStyles = css`\n .w-slider-thumb {\n position: relative;\n display: grid;\n pointer-events: none; /* For range inputs we position two of these on top of each other. Let clicks go through the top one. */\n grid-template-areas:\n 'slider slider slider'\n 'frommarker . tomarker'\n 'fromtextfield . totextfield';\n grid-template-columns: 1fr 24px 1fr;\n }\n\n .w-slider-thumb__range {\n appearance: none;\n background-color: transparent;\n grid-area: slider;\n height: 44px; /* touch target */\n pointer-events: none; /* let clicks pass through for range slider where we place two inputs over each other */\n }\n\n .w-slider-thumb__range::-webkit-slider-runnable-track {\n box-shadow: none;\n color: var(--w-s-color-text);\n height: var(--w-slider-track-height);\n }\n\n .w-slider-thumb__range:hover::-webkit-slider-thumb {\n background: var(--w-s-color-background-primary-hover);\n }\n\n .w-slider-thumb__range:hover::-moz-range-thumb {\n background: var(--w-s-color-background-primary-hover);\n }\n\n /*\n Use anchor positioning to place the tooltip target in relation to the slider thumb.\n We use a polyfill to bring support to older Safari, Firefox at time of writing.\n */\n .w-slider-thumb__range::-webkit-slider-thumb {\n anchor-name: --thumb;\n\n appearance: none;\n background: var(--w-s-color-background-primary);\n border-radius: 50%;\n height: var(--w-slider-thumb-size);\n margin-top: calc(-1 * calc(var(--w-slider-thumb-offset) - calc(var(--w-slider-track-height) / 2)));\n pointer-events: auto;\n width: var(--w-slider-thumb-size);\n z-index: 1;\n }\n\n .w-slider-thumb__range::-moz-range-thumb {\n anchor-name: --thumb;\n\n appearance: none;\n background: var(--w-s-color-background-primary);\n border-radius: 50%;\n border-color: transparent;\n height: var(--w-slider-thumb-size);\n margin-top: calc(-1 * calc(var(--w-slider-thumb-offset) - calc(var(--w-slider-track-height) / 2)));\n pointer-events: initial;\n width: var(--w-slider-thumb-size);\n z-index: 1;\n }\n\n .w-slider-thumb__tooltip {\n display: none;\n position: absolute;\n\n background-color: var(--w-s-color-background-inverted);\n color: var(--w-s-color-text-inverted-static);\n border-color: var(--w-s-color-background-inverted);\n\n padding: 4px 8px;\n border-radius: 4px;\n font-size: 12px;\n white-space: nowrap;\n z-index: 1;\n\n position-anchor: --thumb;\n\n bottom: calc(anchor(top) + 5px);\n justify-self: anchor-center;\n }\n\n .w-slider-thumb__tooltip--visible {\n display: block;\n }\n\n .w-slider-thumb__from-marker,\n .w-slider-thumb__to-marker {\n margin-inline: 2px; /* visual alignment with input border, slider thumb */\n color: var(--w-s-color-text-subtle);\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s);\n }\n\n .w-slider-thumb__from-marker {\n grid-area: frommarker;\n }\n\n .w-slider-thumb__to-marker {\n grid-area: tomarker;\n text-align: right;\n }\n\n .w-slider-thumb__textfield {\n margin-top: 10px;\n pointer-events: auto;\n grid-row: 3 / 4;\n grid-column: 1 / 3; /* Single sliders should have the text field use the fromtextfield _and_ gap portion of the CSS grid. */\n }\n\n :host([name='from']) .w-slider-thumb__textfield {\n grid-column: 1 / 2; /* Range sliders should leave the gap empty. */\n }\n\n :host([name='from']) .w-slider-thumb__range::-webkit-slider-thumb {\n margin-left: calc(-1px * var(--thumb-offset) / 2);\n }\n\n :host([name='to']) .w-slider-thumb__textfield {\n grid-row: 3 / 4;\n grid-column: 3 / 4;\n }\n\n :host([name='to']) .w-slider-thumb__range::-webkit-slider-thumb {\n margin-left: calc(1px * var(--thumb-offset) / 2);\n }\n`;\n", "import { css } from 'lit';\nexport const styles = css`*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.hidden{display:none}.static{position:static}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}`;\n"],
5
+ "mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkRRE,GAAaF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;UCpR1B,OAAS,OAAAG,OAAW,MAEb,IAAMC,GAAgBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
6
+ "names": ["FormControlMixin", "SuperClass", "FormControl", "args", "_FormControl_focused", "_FormControl_forceError", "_FormControl_touched", "_FormControl_abortController", "_FormControl_previousAbortController", "_FormControl_awaitingValidationTarget", "_FormControl_value", "_FormControl_onFocus", "__classPrivateFieldSet", "__classPrivateFieldGet", "_FormControl_instances", "_FormControl_shouldShowError", "_FormControl_onBlur", "_FormControl_runValidators", "showError", "_FormControl_onInvalid", "_a", "_FormControl_validationCompleteResolver", "_FormControl_isValidationPending", "_FormControl_validationComplete", "_b", "_c", "validatorAttributes", "validator", "observedAttributes", "attribute", "name", "oldValue", "newValue", "validators", "value", "valueToUpdate", "resolve", "rootNode", "selector", "proto", "validity", "asyncValidators", "hasAsyncValidators", "abortController", "validationMessage", "hasChange", "key", "isValid", "isValidatorValid", "_FormControl_getValidatorMessageForValue", "_FormControl_setValidityWithOptionalTarget", "message", "html", "LitElement", "nothing", "property", "css", "reset", "components", "css", "wSliderStyles", "_thumbSize", "_WarpSlider_instances", "syncSliderThumbs_fn", "onInput_fn", "onSliderValidity_fn", "updateActiveTrack_fn", "getActiveRangeWidth_fn", "WarpSlider", "FormControlMixin", "LitElement", "__privateAdd", "sliderStyles", "__privateSet", "__privateMethod", "changedProperties", "html", "nothing", "sliderThumbs", "thumb", "input", "_a", "_b", "slotName", "activeRangeWidth", "threshold", "__privateGet", "diff", "from", "to", "widthPxString", "reset", "wSliderStyles", "__decorateClass", "property", "html", "LitElement", "nothing", "property", "query", "state", "classMap", "ifDefined", "css", "wSliderThumbStyles", "css", "styles", "import_meta", "_WarpSliderThumb_instances", "showTooltip_fn", "hideTooltip_fn", "onInput_fn", "WarpSliderThumb", "FormControlMixin", "LitElement", "__privateAdd", "_a", "dirname", "import_meta", "polyfill", "e", "changedProperties", "target", "computedWidthPx", "margin", "html", "nothing", "ifDefined", "__privateMethod", "classMap", "isFromTextInput", "value", "valueNum", "maxNum", "minNum", "shouldCancel", "computedStyle", "toValue", "fromValue", "reset", "styles", "wSliderThumbStyles", "__decorateClass", "property", "state", "query"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import polyfill from '@oddbird/css-anchor-positioning/fn';
2
+ export default polyfill;
@@ -0,0 +1,3 @@
1
+ // This file is only here to give the Storybook Vite dev server a target
2
+ import polyfill from '@oddbird/css-anchor-positioning/fn';
3
+ export default polyfill;
@@ -0,0 +1,8 @@
1
+ import { EventName } from '@lit/react';
2
+ import { WarpSlider } from './slider';
3
+ import { WarpSliderThumb } from './slider-thumb';
4
+ export declare const Slider: import("@lit/react").ReactWebComponent<WarpSlider, {}>;
5
+ export declare const SliderThumb: import("@lit/react").ReactWebComponent<WarpSliderThumb, {
6
+ onSliderValidity: EventName<CustomEvent>;
7
+ 'onslider-validity': EventName<CustomEvent>;
8
+ }>;
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ import React from 'react';
3
+ import { createComponent } from '@lit/react';
4
+ // decouple from CDN by providing a dummy class
5
+ class Component extends LitElement {
6
+ }
7
+ export const Slider = createComponent({
8
+ tagName: 'w-slider',
9
+ elementClass: Component,
10
+ react: React,
11
+ });
12
+ export const SliderThumb = createComponent({
13
+ tagName: 'w-slider-thumb',
14
+ elementClass: Component,
15
+ react: React,
16
+ events: {
17
+ onSliderValidity: 'slidervalidity',
18
+ 'onslider-validity': 'slidervalidity', // should be slider-validity
19
+ },
20
+ });
@@ -0,0 +1,57 @@
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ import type { WarpTextField } from '../textfield/index.js';
3
+ declare const WarpSliderThumb_base: import("@open-wc/form-control").Constructor<import("@open-wc/form-control").FormControlInterface> & typeof LitElement;
4
+ /**
5
+ * Component to place inside a `<w-slider>`.
6
+ *
7
+ * [See Storybook for usage examples](https://warp-ds.github.io/elements/?path=/docs/forms-slider-and-range-slider--docs)
8
+ */
9
+ declare class WarpSliderThumb extends WarpSliderThumb_base {
10
+ #private;
11
+ static shadowRootOptions: {
12
+ delegatesFocus: boolean;
13
+ mode: ShadowRootMode;
14
+ serializable?: boolean;
15
+ slotAssignment?: SlotAssignmentMode;
16
+ };
17
+ static styles: import("lit").CSSResult[];
18
+ ariaLabel: string;
19
+ ariaDescription: string;
20
+ label: string;
21
+ name: string;
22
+ value: string;
23
+ disabled: boolean;
24
+ /** Set by `<w-slider>` */
25
+ markers: string;
26
+ /** Set by `<w-slider>` */
27
+ required: boolean;
28
+ /** Set by `<w-slider>` */
29
+ step: number;
30
+ /** Set by `<w-slider>` */
31
+ min: string;
32
+ /** Set by `<w-slider>` */
33
+ max: string;
34
+ /** Set by `<w-slider>` */
35
+ suffix: string;
36
+ /** @internal */
37
+ forceDisabled: boolean;
38
+ /** @internal */
39
+ forceInvalid: boolean;
40
+ /** JS hook to help you format the numeric value how you want. */
41
+ formatter: (value: string) => string;
42
+ range: HTMLInputElement;
43
+ textfield: WarpTextField;
44
+ /** @internal */
45
+ _invalid: boolean;
46
+ /** @internal */
47
+ _showTooltip: boolean;
48
+ /**
49
+ * Reference to the anchor positioning style element used by the polyfill.
50
+ * @internal
51
+ */
52
+ anchorPositioningStyleElement: HTMLStyleElement | null;
53
+ connectedCallback(): Promise<void>;
54
+ updated(changedProperties: PropertyValues<this>): void;
55
+ render(): import("lit").TemplateResult<1>;
56
+ }
57
+ export { WarpSliderThumb };