@gnome-ui/react 1.45.0 → 1.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/dist/components/AboutDialog/AboutDialog.cjs +1 -1
  2. package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -1
  3. package/dist/components/AboutDialog/AboutDialog.js +1 -1
  4. package/dist/components/AboutDialog/AboutDialog.js.map +1 -1
  5. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
  6. package/dist/components/AboutDialog/AboutDialog.module.css.cjs.map +1 -1
  7. package/dist/components/AboutDialog/AboutDialog.module.css.js +3 -3
  8. package/dist/components/AboutDialog/AboutDialog.module.css.js.map +1 -1
  9. package/dist/components/AboutDialog/index.d.ts +1 -1
  10. package/dist/components/ActionRow/ActionRow.cjs.map +1 -1
  11. package/dist/components/ActionRow/ActionRow.d.ts +1 -1
  12. package/dist/components/ActionRow/ActionRow.js.map +1 -1
  13. package/dist/components/ActionRow/ActionRow.module.css.cjs +1 -1
  14. package/dist/components/ActionRow/ActionRow.module.css.cjs.map +1 -1
  15. package/dist/components/ActionRow/ActionRow.module.css.js +9 -9
  16. package/dist/components/ActionRow/ActionRow.module.css.js.map +1 -1
  17. package/dist/components/ActionRow/index.d.ts +1 -1
  18. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  19. package/dist/components/Avatar/Avatar.d.ts +2 -2
  20. package/dist/components/Avatar/Avatar.js.map +1 -1
  21. package/dist/components/Avatar/Avatar.module.css.cjs +1 -1
  22. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -1
  23. package/dist/components/Avatar/Avatar.module.css.js +16 -16
  24. package/dist/components/Avatar/Avatar.module.css.js.map +1 -1
  25. package/dist/components/Avatar/index.d.ts +1 -1
  26. package/dist/components/AvatarRotator/AvatarRotator.cjs.map +1 -1
  27. package/dist/components/AvatarRotator/AvatarRotator.js.map +1 -1
  28. package/dist/components/AvatarRotator/index.d.ts +1 -1
  29. package/dist/components/Badge/Badge.cjs.map +1 -1
  30. package/dist/components/Badge/Badge.d.ts +1 -1
  31. package/dist/components/Badge/Badge.js.map +1 -1
  32. package/dist/components/Badge/Badge.module.css.cjs +1 -1
  33. package/dist/components/Badge/Badge.module.css.cjs.map +1 -1
  34. package/dist/components/Badge/Badge.module.css.js +9 -9
  35. package/dist/components/Badge/Badge.module.css.js.map +1 -1
  36. package/dist/components/Badge/index.d.ts +1 -1
  37. package/dist/components/Banner/Banner.cjs.map +1 -1
  38. package/dist/components/Banner/Banner.d.ts +1 -1
  39. package/dist/components/Banner/Banner.js.map +1 -1
  40. package/dist/components/Banner/Banner.module.css.cjs +1 -1
  41. package/dist/components/Banner/Banner.module.css.cjs.map +1 -1
  42. package/dist/components/Banner/Banner.module.css.js +5 -5
  43. package/dist/components/Banner/Banner.module.css.js.map +1 -1
  44. package/dist/components/Banner/index.d.ts +1 -1
  45. package/dist/components/Bin/Bin.cjs.map +1 -1
  46. package/dist/components/Bin/Bin.js.map +1 -1
  47. package/dist/components/Bin/index.d.ts +1 -1
  48. package/dist/components/Blockquote/Blockquote.cjs.map +1 -1
  49. package/dist/components/Blockquote/Blockquote.d.ts +1 -1
  50. package/dist/components/Blockquote/Blockquote.js.map +1 -1
  51. package/dist/components/Blockquote/Blockquote.module.css.cjs +1 -1
  52. package/dist/components/Blockquote/Blockquote.module.css.cjs.map +1 -1
  53. package/dist/components/Blockquote/Blockquote.module.css.js +11 -11
  54. package/dist/components/Blockquote/Blockquote.module.css.js.map +1 -1
  55. package/dist/components/Blockquote/index.d.ts +1 -1
  56. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  57. package/dist/components/BottomSheet/BottomSheet.d.ts +1 -1
  58. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  59. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
  60. package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -1
  61. package/dist/components/BottomSheet/BottomSheet.module.css.js +3 -3
  62. package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -1
  63. package/dist/components/BottomSheet/index.d.ts +1 -1
  64. package/dist/components/Box/Box.cjs.map +1 -1
  65. package/dist/components/Box/Box.d.ts +3 -3
  66. package/dist/components/Box/Box.js.map +1 -1
  67. package/dist/components/Box/index.d.ts +1 -1
  68. package/dist/components/BoxedList/BoxedList.cjs +1 -1
  69. package/dist/components/BoxedList/BoxedList.cjs.map +1 -1
  70. package/dist/components/BoxedList/BoxedList.d.ts +1 -1
  71. package/dist/components/BoxedList/BoxedList.js +0 -1
  72. package/dist/components/BoxedList/BoxedList.js.map +1 -1
  73. package/dist/components/BoxedList/BoxedList.module.css.cjs +1 -1
  74. package/dist/components/BoxedList/BoxedList.module.css.cjs.map +1 -1
  75. package/dist/components/BoxedList/BoxedList.module.css.js +5 -5
  76. package/dist/components/BoxedList/BoxedList.module.css.js.map +1 -1
  77. package/dist/components/BoxedList/index.d.ts +1 -1
  78. package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
  79. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
  80. package/dist/components/BreakpointBin/BreakpointBin.d.ts +1 -1
  81. package/dist/components/BreakpointBin/BreakpointBin.js +1 -1
  82. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
  83. package/dist/components/BreakpointBin/index.d.ts +1 -1
  84. package/dist/components/Button/Button.cjs.map +1 -1
  85. package/dist/components/Button/Button.d.ts +3 -3
  86. package/dist/components/Button/Button.js.map +1 -1
  87. package/dist/components/Button/Button.module.css.cjs +1 -1
  88. package/dist/components/Button/Button.module.css.cjs.map +1 -1
  89. package/dist/components/Button/Button.module.css.js +11 -11
  90. package/dist/components/Button/Button.module.css.js.map +1 -1
  91. package/dist/components/Button/index.d.ts +1 -1
  92. package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -1
  93. package/dist/components/ButtonContent/ButtonContent.d.ts +1 -1
  94. package/dist/components/ButtonContent/ButtonContent.js.map +1 -1
  95. package/dist/components/ButtonContent/index.d.ts +1 -1
  96. package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -1
  97. package/dist/components/ButtonRow/ButtonRow.d.ts +1 -1
  98. package/dist/components/ButtonRow/ButtonRow.js.map +1 -1
  99. package/dist/components/ButtonRow/ButtonRow.module.css.cjs +1 -1
  100. package/dist/components/ButtonRow/ButtonRow.module.css.cjs.map +1 -1
  101. package/dist/components/ButtonRow/ButtonRow.module.css.js +7 -7
  102. package/dist/components/ButtonRow/ButtonRow.module.css.js.map +1 -1
  103. package/dist/components/ButtonRow/index.d.ts +1 -1
  104. package/dist/components/Card/Card.cjs.map +1 -1
  105. package/dist/components/Card/Card.d.ts +1 -1
  106. package/dist/components/Card/Card.js.map +1 -1
  107. package/dist/components/Card/Card.module.css.cjs +1 -1
  108. package/dist/components/Card/Card.module.css.cjs.map +1 -1
  109. package/dist/components/Card/Card.module.css.js +5 -5
  110. package/dist/components/Card/Card.module.css.js.map +1 -1
  111. package/dist/components/Card/index.d.ts +1 -1
  112. package/dist/components/Carousel/Carousel.cjs +1 -1
  113. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  114. package/dist/components/Carousel/Carousel.d.ts +1 -1
  115. package/dist/components/Carousel/Carousel.js +7 -6
  116. package/dist/components/Carousel/Carousel.js.map +1 -1
  117. package/dist/components/Carousel/Carousel.module.css.cjs +1 -1
  118. package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -1
  119. package/dist/components/Carousel/Carousel.module.css.js +10 -10
  120. package/dist/components/Carousel/Carousel.module.css.js.map +1 -1
  121. package/dist/components/Carousel/index.d.ts +1 -1
  122. package/dist/components/CheckRow/CheckRow.cjs.map +1 -1
  123. package/dist/components/CheckRow/CheckRow.d.ts +1 -1
  124. package/dist/components/CheckRow/CheckRow.js.map +1 -1
  125. package/dist/components/CheckRow/CheckRow.module.css.cjs +1 -1
  126. package/dist/components/CheckRow/CheckRow.module.css.cjs.map +1 -1
  127. package/dist/components/CheckRow/CheckRow.module.css.js +10 -10
  128. package/dist/components/CheckRow/CheckRow.module.css.js.map +1 -1
  129. package/dist/components/CheckRow/index.d.ts +1 -1
  130. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  131. package/dist/components/Checkbox/Checkbox.d.ts +2 -2
  132. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  133. package/dist/components/Checkbox/Checkbox.module.css.cjs +1 -1
  134. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -1
  135. package/dist/components/Checkbox/Checkbox.module.css.js +1 -1
  136. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -1
  137. package/dist/components/Checkbox/index.d.ts +1 -1
  138. package/dist/components/Chip/Chip.cjs.map +1 -1
  139. package/dist/components/Chip/Chip.d.ts +1 -1
  140. package/dist/components/Chip/Chip.js.map +1 -1
  141. package/dist/components/Chip/Chip.module.css.cjs +1 -1
  142. package/dist/components/Chip/Chip.module.css.cjs.map +1 -1
  143. package/dist/components/Chip/Chip.module.css.js +7 -7
  144. package/dist/components/Chip/Chip.module.css.js.map +1 -1
  145. package/dist/components/Chip/index.d.ts +1 -1
  146. package/dist/components/Clamp/Clamp.cjs.map +1 -1
  147. package/dist/components/Clamp/Clamp.js.map +1 -1
  148. package/dist/components/Clamp/index.d.ts +1 -1
  149. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
  150. package/dist/components/ColorPicker/ColorPicker.d.ts +6 -6
  151. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  152. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
  153. package/dist/components/ColorPicker/ColorPicker.module.css.cjs.map +1 -1
  154. package/dist/components/ColorPicker/ColorPicker.module.css.js +4 -4
  155. package/dist/components/ColorPicker/ColorPicker.module.css.js.map +1 -1
  156. package/dist/components/ColorPicker/index.d.ts +1 -1
  157. package/dist/components/ColumnView/ColumnView.cjs +1 -1
  158. package/dist/components/ColumnView/ColumnView.cjs.map +1 -1
  159. package/dist/components/ColumnView/ColumnView.d.ts +3 -3
  160. package/dist/components/ColumnView/ColumnView.js +2 -5
  161. package/dist/components/ColumnView/ColumnView.js.map +1 -1
  162. package/dist/components/ColumnView/ColumnView.module.css.cjs +1 -1
  163. package/dist/components/ColumnView/ColumnView.module.css.cjs.map +1 -1
  164. package/dist/components/ColumnView/ColumnView.module.css.js +22 -22
  165. package/dist/components/ColumnView/ColumnView.module.css.js.map +1 -1
  166. package/dist/components/ColumnView/index.d.ts +1 -1
  167. package/dist/components/ComboRow/ComboRow.cjs +1 -1
  168. package/dist/components/ComboRow/ComboRow.cjs.map +1 -1
  169. package/dist/components/ComboRow/ComboRow.d.ts +1 -1
  170. package/dist/components/ComboRow/ComboRow.js +0 -2
  171. package/dist/components/ComboRow/ComboRow.js.map +1 -1
  172. package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
  173. package/dist/components/ComboRow/ComboRow.module.css.cjs.map +1 -1
  174. package/dist/components/ComboRow/ComboRow.module.css.js +3 -3
  175. package/dist/components/ComboRow/ComboRow.module.css.js.map +1 -1
  176. package/dist/components/ComboRow/index.d.ts +1 -1
  177. package/dist/components/ContributionGraph/ContributionGraph.cjs +1 -1
  178. package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -1
  179. package/dist/components/ContributionGraph/ContributionGraph.js +41 -41
  180. package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -1
  181. package/dist/components/ContributionGraph/index.d.ts +1 -1
  182. package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -1
  183. package/dist/components/CountDownTimer/CountDownTimer.d.ts +3 -3
  184. package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -1
  185. package/dist/components/CountDownTimer/index.d.ts +1 -1
  186. package/dist/components/Dialog/Dialog.cjs.map +1 -1
  187. package/dist/components/Dialog/Dialog.d.ts +4 -4
  188. package/dist/components/Dialog/Dialog.js.map +1 -1
  189. package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
  190. package/dist/components/Dialog/Dialog.module.css.cjs.map +1 -1
  191. package/dist/components/Dialog/Dialog.module.css.js +6 -6
  192. package/dist/components/Dialog/Dialog.module.css.js.map +1 -1
  193. package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
  194. package/dist/components/Dialog/dialogUtils.js.map +1 -1
  195. package/dist/components/Dialog/index.d.ts +1 -1
  196. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  197. package/dist/components/Drawer/Drawer.d.ts +3 -3
  198. package/dist/components/Drawer/Drawer.js.map +1 -1
  199. package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
  200. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -1
  201. package/dist/components/Drawer/Drawer.module.css.js +4 -4
  202. package/dist/components/Drawer/Drawer.module.css.js.map +1 -1
  203. package/dist/components/Drawer/index.d.ts +1 -1
  204. package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
  205. package/dist/components/Dropdown/Dropdown.d.ts +2 -2
  206. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  207. package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
  208. package/dist/components/Dropdown/Dropdown.module.css.cjs.map +1 -1
  209. package/dist/components/Dropdown/Dropdown.module.css.js +3 -3
  210. package/dist/components/Dropdown/Dropdown.module.css.js.map +1 -1
  211. package/dist/components/Dropdown/index.d.ts +1 -1
  212. package/dist/components/EntryRow/EntryRow.cjs.map +1 -1
  213. package/dist/components/EntryRow/EntryRow.js.map +1 -1
  214. package/dist/components/EntryRow/EntryRow.module.css.cjs +1 -1
  215. package/dist/components/EntryRow/EntryRow.module.css.cjs.map +1 -1
  216. package/dist/components/EntryRow/EntryRow.module.css.js +10 -10
  217. package/dist/components/EntryRow/EntryRow.module.css.js.map +1 -1
  218. package/dist/components/EntryRow/index.d.ts +1 -1
  219. package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -1
  220. package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -1
  221. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs +1 -1
  222. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs.map +1 -1
  223. package/dist/components/ExpanderRow/ExpanderRow.module.css.js +14 -14
  224. package/dist/components/ExpanderRow/ExpanderRow.module.css.js.map +1 -1
  225. package/dist/components/ExpanderRow/index.d.ts +1 -1
  226. package/dist/components/Footer/Footer.cjs.map +1 -1
  227. package/dist/components/Footer/Footer.js.map +1 -1
  228. package/dist/components/Footer/index.d.ts +1 -1
  229. package/dist/components/Frame/Frame.cjs.map +1 -1
  230. package/dist/components/Frame/Frame.js.map +1 -1
  231. package/dist/components/Frame/index.d.ts +1 -1
  232. package/dist/components/GnomeProvider/GnomeContext.cjs.map +1 -1
  233. package/dist/components/GnomeProvider/GnomeContext.d.ts +5 -5
  234. package/dist/components/GnomeProvider/GnomeContext.js.map +1 -1
  235. package/dist/components/GnomeProvider/GnomeProvider.cjs.map +1 -1
  236. package/dist/components/GnomeProvider/GnomeProvider.js.map +1 -1
  237. package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -1
  238. package/dist/components/HeaderBar/HeaderBar.d.ts +1 -1
  239. package/dist/components/HeaderBar/HeaderBar.js.map +1 -1
  240. package/dist/components/HeaderBar/index.d.ts +1 -1
  241. package/dist/components/Icon/Icon.cjs.map +1 -1
  242. package/dist/components/Icon/Icon.d.ts +2 -2
  243. package/dist/components/Icon/Icon.js.map +1 -1
  244. package/dist/components/Icon/index.d.ts +1 -1
  245. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  246. package/dist/components/IconButton/IconButton.d.ts +2 -2
  247. package/dist/components/IconButton/IconButton.js.map +1 -1
  248. package/dist/components/IconButton/index.d.ts +1 -1
  249. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
  250. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
  251. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +3 -3
  252. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +8 -8
  253. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
  254. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs +1 -1
  255. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs.map +1 -1
  256. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js +10 -10
  257. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js.map +1 -1
  258. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -1
  259. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +1 -1
  260. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -1
  261. package/dist/components/InlineViewSwitcher/index.d.ts +2 -2
  262. package/dist/components/Link/Link.cjs.map +1 -1
  263. package/dist/components/Link/Link.js.map +1 -1
  264. package/dist/components/Link/Link.module.css.cjs +1 -1
  265. package/dist/components/Link/Link.module.css.cjs.map +1 -1
  266. package/dist/components/Link/Link.module.css.js +2 -2
  267. package/dist/components/Link/Link.module.css.js.map +1 -1
  268. package/dist/components/Link/index.d.ts +1 -1
  269. package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -1
  270. package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -1
  271. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs +1 -1
  272. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs.map +1 -1
  273. package/dist/components/LinkedGroup/LinkedGroup.module.css.js +2 -2
  274. package/dist/components/LinkedGroup/LinkedGroup.module.css.js.map +1 -1
  275. package/dist/components/LinkedGroup/index.d.ts +1 -1
  276. package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -1
  277. package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +1 -1
  278. package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -1
  279. package/dist/components/NavigationSplitView/index.d.ts +1 -1
  280. package/dist/components/NavigationView/NavigationView.cjs.map +1 -1
  281. package/dist/components/NavigationView/NavigationView.d.ts +2 -2
  282. package/dist/components/NavigationView/NavigationView.js.map +1 -1
  283. package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
  284. package/dist/components/NavigationView/NavigationView.module.css.cjs.map +1 -1
  285. package/dist/components/NavigationView/NavigationView.module.css.js +3 -3
  286. package/dist/components/NavigationView/NavigationView.module.css.js.map +1 -1
  287. package/dist/components/NavigationView/index.d.ts +2 -2
  288. package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -1
  289. package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +2 -2
  290. package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -1
  291. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs +1 -1
  292. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs.map +1 -1
  293. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js +12 -12
  294. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js.map +1 -1
  295. package/dist/components/OverlaySplitView/index.d.ts +1 -1
  296. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -1
  297. package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +1 -1
  298. package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -1
  299. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs +1 -1
  300. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs.map +1 -1
  301. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js +1 -1
  302. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js.map +1 -1
  303. package/dist/components/PasswordEntryRow/index.d.ts +1 -1
  304. package/dist/components/PathBar/PathBar.cjs.map +1 -1
  305. package/dist/components/PathBar/PathBar.js.map +1 -1
  306. package/dist/components/PathBar/PathBar.module.css.cjs +1 -1
  307. package/dist/components/PathBar/PathBar.module.css.cjs.map +1 -1
  308. package/dist/components/PathBar/PathBar.module.css.js +7 -7
  309. package/dist/components/PathBar/PathBar.module.css.js.map +1 -1
  310. package/dist/components/PathBar/index.d.ts +1 -1
  311. package/dist/components/Popover/Popover.cjs.map +1 -1
  312. package/dist/components/Popover/Popover.d.ts +2 -2
  313. package/dist/components/Popover/Popover.js.map +1 -1
  314. package/dist/components/Popover/Popover.module.css.cjs +1 -1
  315. package/dist/components/Popover/Popover.module.css.cjs.map +1 -1
  316. package/dist/components/Popover/Popover.module.css.js +7 -7
  317. package/dist/components/Popover/Popover.module.css.js.map +1 -1
  318. package/dist/components/Popover/index.d.ts +1 -1
  319. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
  320. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
  321. package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +1 -1
  322. package/dist/components/PreferencesDialog/PreferencesDialog.js +0 -1
  323. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
  324. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
  325. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs.map +1 -1
  326. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +3 -3
  327. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js.map +1 -1
  328. package/dist/components/PreferencesDialog/index.d.ts +1 -1
  329. package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -1
  330. package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -1
  331. package/dist/components/PreferencesGroup/index.d.ts +1 -1
  332. package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -1
  333. package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -1
  334. package/dist/components/PreferencesPage/index.d.ts +1 -1
  335. package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -1
  336. package/dist/components/ProgressBar/ProgressBar.d.ts +4 -4
  337. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  338. package/dist/components/ProgressBar/ProgressBar.module.css.cjs +1 -1
  339. package/dist/components/ProgressBar/ProgressBar.module.css.cjs.map +1 -1
  340. package/dist/components/ProgressBar/ProgressBar.module.css.js +8 -8
  341. package/dist/components/ProgressBar/ProgressBar.module.css.js.map +1 -1
  342. package/dist/components/ProgressBar/index.d.ts +1 -1
  343. package/dist/components/RadioButton/RadioButton.cjs.map +1 -1
  344. package/dist/components/RadioButton/RadioButton.d.ts +2 -2
  345. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  346. package/dist/components/RadioButton/RadioButton.module.css.cjs +1 -1
  347. package/dist/components/RadioButton/RadioButton.module.css.cjs.map +1 -1
  348. package/dist/components/RadioButton/RadioButton.module.css.js +1 -1
  349. package/dist/components/RadioButton/RadioButton.module.css.js.map +1 -1
  350. package/dist/components/RadioButton/index.d.ts +1 -1
  351. package/dist/components/SearchBar/SearchBar.cjs +1 -1
  352. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  353. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  354. package/dist/components/SearchBar/SearchBar.js +1 -3
  355. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  356. package/dist/components/SearchBar/SearchBar.module.css.cjs +1 -1
  357. package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -1
  358. package/dist/components/SearchBar/SearchBar.module.css.js +13 -13
  359. package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -1
  360. package/dist/components/SearchBar/index.d.ts +1 -1
  361. package/dist/components/SegmentedBar/SegmentedBar.cjs.map +1 -1
  362. package/dist/components/SegmentedBar/SegmentedBar.d.ts +1 -1
  363. package/dist/components/SegmentedBar/SegmentedBar.js.map +1 -1
  364. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs +1 -1
  365. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs.map +1 -1
  366. package/dist/components/SegmentedBar/SegmentedBar.module.css.js +12 -12
  367. package/dist/components/SegmentedBar/SegmentedBar.module.css.js.map +1 -1
  368. package/dist/components/SegmentedBar/index.d.ts +1 -1
  369. package/dist/components/Separator/Separator.cjs.map +1 -1
  370. package/dist/components/Separator/Separator.d.ts +1 -1
  371. package/dist/components/Separator/Separator.js.map +1 -1
  372. package/dist/components/Separator/index.d.ts +1 -1
  373. package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -1
  374. package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -1
  375. package/dist/components/ShortcutLabel/index.d.ts +1 -1
  376. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
  377. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
  378. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +0 -1
  379. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
  380. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
  381. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs.map +1 -1
  382. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +3 -3
  383. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js.map +1 -1
  384. package/dist/components/ShortcutsDialog/index.d.ts +1 -1
  385. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  386. package/dist/components/Sidebar/Sidebar.d.ts +2 -2
  387. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  388. package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
  389. package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -1
  390. package/dist/components/Sidebar/Sidebar.module.css.js +2 -2
  391. package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -1
  392. package/dist/components/Sidebar/SidebarItem.cjs.map +1 -1
  393. package/dist/components/Sidebar/SidebarItem.d.ts +1 -1
  394. package/dist/components/Sidebar/SidebarItem.js.map +1 -1
  395. package/dist/components/Sidebar/SidebarSection.cjs +1 -1
  396. package/dist/components/Sidebar/SidebarSection.cjs.map +1 -1
  397. package/dist/components/Sidebar/SidebarSection.d.ts +1 -1
  398. package/dist/components/Sidebar/SidebarSection.js +0 -1
  399. package/dist/components/Sidebar/SidebarSection.js.map +1 -1
  400. package/dist/components/Sidebar/index.d.ts +4 -4
  401. package/dist/components/Sidebar.cjs +1 -1
  402. package/dist/components/Sidebar.js +3 -3
  403. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  404. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  405. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  406. package/dist/components/Skeleton/Skeleton.module.css.cjs +1 -1
  407. package/dist/components/Skeleton/Skeleton.module.css.cjs.map +1 -1
  408. package/dist/components/Skeleton/Skeleton.module.css.js +7 -7
  409. package/dist/components/Skeleton/Skeleton.module.css.js.map +1 -1
  410. package/dist/components/Skeleton/index.d.ts +1 -1
  411. package/dist/components/Slider/Slider.cjs.map +1 -1
  412. package/dist/components/Slider/Slider.d.ts +5 -5
  413. package/dist/components/Slider/Slider.js.map +1 -1
  414. package/dist/components/Slider/Slider.module.css.cjs +1 -1
  415. package/dist/components/Slider/Slider.module.css.cjs.map +1 -1
  416. package/dist/components/Slider/Slider.module.css.js +9 -9
  417. package/dist/components/Slider/Slider.module.css.js.map +1 -1
  418. package/dist/components/Slider/index.d.ts +1 -1
  419. package/dist/components/SpinButton/SpinButton.cjs.map +1 -1
  420. package/dist/components/SpinButton/SpinButton.d.ts +4 -4
  421. package/dist/components/SpinButton/SpinButton.js.map +1 -1
  422. package/dist/components/SpinButton/SpinButton.module.css.cjs +1 -1
  423. package/dist/components/SpinButton/SpinButton.module.css.cjs.map +1 -1
  424. package/dist/components/SpinButton/SpinButton.module.css.js +4 -4
  425. package/dist/components/SpinButton/SpinButton.module.css.js.map +1 -1
  426. package/dist/components/SpinButton/index.d.ts +1 -1
  427. package/dist/components/SpinRow/SpinRow.cjs.map +1 -1
  428. package/dist/components/SpinRow/SpinRow.d.ts +1 -1
  429. package/dist/components/SpinRow/SpinRow.js.map +1 -1
  430. package/dist/components/SpinRow/SpinRow.module.css.cjs +1 -1
  431. package/dist/components/SpinRow/SpinRow.module.css.cjs.map +1 -1
  432. package/dist/components/SpinRow/SpinRow.module.css.js +9 -9
  433. package/dist/components/SpinRow/SpinRow.module.css.js.map +1 -1
  434. package/dist/components/SpinRow/index.d.ts +1 -1
  435. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  436. package/dist/components/Spinner/Spinner.d.ts +1 -1
  437. package/dist/components/Spinner/Spinner.js.map +1 -1
  438. package/dist/components/Spinner/Spinner.module.css.cjs +1 -1
  439. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -1
  440. package/dist/components/Spinner/Spinner.module.css.js +5 -5
  441. package/dist/components/Spinner/Spinner.module.css.js.map +1 -1
  442. package/dist/components/Spinner/index.d.ts +1 -1
  443. package/dist/components/SplitButton/SplitButton.cjs.map +1 -1
  444. package/dist/components/SplitButton/SplitButton.d.ts +2 -2
  445. package/dist/components/SplitButton/SplitButton.js.map +1 -1
  446. package/dist/components/SplitButton/SplitButton.module.css.cjs +1 -1
  447. package/dist/components/SplitButton/SplitButton.module.css.cjs.map +1 -1
  448. package/dist/components/SplitButton/SplitButton.module.css.js +10 -10
  449. package/dist/components/SplitButton/SplitButton.module.css.js.map +1 -1
  450. package/dist/components/SplitButton/index.d.ts +1 -1
  451. package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -1
  452. package/dist/components/StatusBadge/StatusBadge.d.ts +1 -1
  453. package/dist/components/StatusBadge/StatusBadge.js.map +1 -1
  454. package/dist/components/StatusBadge/index.d.ts +1 -1
  455. package/dist/components/StatusPage/StatusPage.cjs.map +1 -1
  456. package/dist/components/StatusPage/StatusPage.d.ts +1 -1
  457. package/dist/components/StatusPage/StatusPage.js.map +1 -1
  458. package/dist/components/StatusPage/index.d.ts +1 -1
  459. package/dist/components/Switch/Switch.cjs.map +1 -1
  460. package/dist/components/Switch/Switch.d.ts +2 -2
  461. package/dist/components/Switch/Switch.js.map +1 -1
  462. package/dist/components/Switch/Switch.module.css.cjs +1 -1
  463. package/dist/components/Switch/Switch.module.css.cjs.map +1 -1
  464. package/dist/components/Switch/Switch.module.css.js +1 -1
  465. package/dist/components/Switch/Switch.module.css.js.map +1 -1
  466. package/dist/components/Switch/index.d.ts +1 -1
  467. package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -1
  468. package/dist/components/SwitchRow/SwitchRow.d.ts +1 -1
  469. package/dist/components/SwitchRow/SwitchRow.js.map +1 -1
  470. package/dist/components/SwitchRow/SwitchRow.module.css.cjs +1 -1
  471. package/dist/components/SwitchRow/SwitchRow.module.css.cjs.map +1 -1
  472. package/dist/components/SwitchRow/SwitchRow.module.css.js +9 -9
  473. package/dist/components/SwitchRow/SwitchRow.module.css.js.map +1 -1
  474. package/dist/components/SwitchRow/index.d.ts +1 -1
  475. package/dist/components/Tabs/TabBar.cjs +1 -1
  476. package/dist/components/Tabs/TabBar.cjs.map +1 -1
  477. package/dist/components/Tabs/TabBar.d.ts +2 -2
  478. package/dist/components/Tabs/TabBar.js +8 -8
  479. package/dist/components/Tabs/TabBar.js.map +1 -1
  480. package/dist/components/Tabs/TabItem.cjs.map +1 -1
  481. package/dist/components/Tabs/TabItem.d.ts +1 -1
  482. package/dist/components/Tabs/TabItem.js.map +1 -1
  483. package/dist/components/Tabs/TabPanel.cjs +1 -1
  484. package/dist/components/Tabs/TabPanel.cjs.map +1 -1
  485. package/dist/components/Tabs/TabPanel.js +0 -1
  486. package/dist/components/Tabs/TabPanel.js.map +1 -1
  487. package/dist/components/Tabs/Tabs.module.css.cjs +1 -1
  488. package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -1
  489. package/dist/components/Tabs/Tabs.module.css.js +10 -10
  490. package/dist/components/Tabs/Tabs.module.css.js.map +1 -1
  491. package/dist/components/Tabs/index.d.ts +3 -3
  492. package/dist/components/TerminalView/TerminalView.cjs +1 -1
  493. package/dist/components/TerminalView/TerminalView.cjs.map +1 -1
  494. package/dist/components/TerminalView/TerminalView.d.ts +1 -1
  495. package/dist/components/TerminalView/TerminalView.js +1 -1
  496. package/dist/components/TerminalView/TerminalView.js.map +1 -1
  497. package/dist/components/TerminalView/index.d.ts +1 -1
  498. package/dist/components/Text/Text.cjs.map +1 -1
  499. package/dist/components/Text/Text.d.ts +2 -2
  500. package/dist/components/Text/Text.js.map +1 -1
  501. package/dist/components/Text/index.d.ts +1 -1
  502. package/dist/components/TextField/TextField.cjs.map +1 -1
  503. package/dist/components/TextField/TextField.d.ts +1 -1
  504. package/dist/components/TextField/TextField.js.map +1 -1
  505. package/dist/components/TextField/TextField.module.css.cjs +1 -1
  506. package/dist/components/TextField/TextField.module.css.cjs.map +1 -1
  507. package/dist/components/TextField/TextField.module.css.js +7 -7
  508. package/dist/components/TextField/TextField.module.css.js.map +1 -1
  509. package/dist/components/TextField/index.d.ts +1 -1
  510. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  511. package/dist/components/Timeline/Timeline.d.ts +2 -2
  512. package/dist/components/Timeline/Timeline.js.map +1 -1
  513. package/dist/components/Timeline/index.d.ts +1 -1
  514. package/dist/components/Toast/Toast.cjs +1 -1
  515. package/dist/components/Toast/Toast.cjs.map +1 -1
  516. package/dist/components/Toast/Toast.d.ts +1 -1
  517. package/dist/components/Toast/Toast.js +39 -35
  518. package/dist/components/Toast/Toast.js.map +1 -1
  519. package/dist/components/Toast/Toast.module.css.cjs +1 -1
  520. package/dist/components/Toast/Toast.module.css.cjs.map +1 -1
  521. package/dist/components/Toast/Toast.module.css.js +2 -2
  522. package/dist/components/Toast/Toast.module.css.js.map +1 -1
  523. package/dist/components/Toast/Toaster.cjs.map +1 -1
  524. package/dist/components/Toast/Toaster.d.ts +1 -1
  525. package/dist/components/Toast/Toaster.js.map +1 -1
  526. package/dist/components/Toast/index.d.ts +2 -2
  527. package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
  528. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  529. package/dist/components/ToggleGroup/ToggleGroup.d.ts +2 -2
  530. package/dist/components/ToggleGroup/ToggleGroup.js +8 -8
  531. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  532. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +1 -1
  533. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -1
  534. package/dist/components/ToggleGroup/ToggleGroup.module.css.js +6 -6
  535. package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -1
  536. package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  537. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  538. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  539. package/dist/components/ToggleGroup/index.d.ts +2 -2
  540. package/dist/components/Toolbar/Spacer.cjs.map +1 -1
  541. package/dist/components/Toolbar/Spacer.d.ts +1 -2
  542. package/dist/components/Toolbar/Spacer.js.map +1 -1
  543. package/dist/components/Toolbar/Toolbar.cjs.map +1 -1
  544. package/dist/components/Toolbar/Toolbar.js.map +1 -1
  545. package/dist/components/Toolbar/index.d.ts +3 -3
  546. package/dist/components/Toolbar.cjs +1 -1
  547. package/dist/components/Toolbar.js +3 -3
  548. package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -1
  549. package/dist/components/ToolbarView/ToolbarView.js.map +1 -1
  550. package/dist/components/ToolbarView/index.d.ts +1 -1
  551. package/dist/components/Tooltip/Tooltip.cjs +1 -1
  552. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  553. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  554. package/dist/components/Tooltip/Tooltip.js +4 -4
  555. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  556. package/dist/components/Tooltip/Tooltip.module.css.cjs +1 -1
  557. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -1
  558. package/dist/components/Tooltip/Tooltip.module.css.js +6 -6
  559. package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -1
  560. package/dist/components/Tooltip/index.d.ts +1 -1
  561. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
  562. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
  563. package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +2 -2
  564. package/dist/components/ViewSwitcher/ViewSwitcher.js +8 -8
  565. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
  566. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs +1 -1
  567. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs.map +1 -1
  568. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js +5 -5
  569. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js.map +1 -1
  570. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -1
  571. package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +1 -1
  572. package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -1
  573. package/dist/components/ViewSwitcher/index.d.ts +2 -2
  574. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -1
  575. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -1
  576. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs +1 -1
  577. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs.map +1 -1
  578. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js +1 -1
  579. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js.map +1 -1
  580. package/dist/components/ViewSwitcherBar/index.d.ts +1 -1
  581. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
  582. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
  583. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +2 -2
  584. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +8 -8
  585. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
  586. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs +1 -1
  587. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs.map +1 -1
  588. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js +14 -14
  589. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js.map +1 -1
  590. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -1
  591. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +1 -1
  592. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -1
  593. package/dist/components/ViewSwitcherSidebar/index.d.ts +2 -2
  594. package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -1
  595. package/dist/components/WindowTitle/WindowTitle.js.map +1 -1
  596. package/dist/components/WindowTitle/index.d.ts +1 -1
  597. package/dist/components/WrapBox/WrapBox.cjs.map +1 -1
  598. package/dist/components/WrapBox/WrapBox.d.ts +2 -2
  599. package/dist/components/WrapBox/WrapBox.js.map +1 -1
  600. package/dist/components/WrapBox/index.d.ts +1 -1
  601. package/dist/hooks/index.d.ts +3 -3
  602. package/dist/hooks/useBreakpoint.cjs +1 -1
  603. package/dist/hooks/useBreakpoint.cjs.map +1 -1
  604. package/dist/hooks/useBreakpoint.js +12 -12
  605. package/dist/hooks/useBreakpoint.js.map +1 -1
  606. package/dist/index.cjs +1 -1
  607. package/dist/index.d.ts +153 -153
  608. package/dist/index.js +5 -5
  609. package/dist/style.css +1 -1
  610. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.cjs","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n type PointerEvent,\n type KeyboardEvent,\n type HTMLAttributes,\n} from \"react\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current value. Must be between `min` and `max`. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum value. Defaults to `0`. */\n min?: number;\n /** Maximum value. Defaults to `100`. */\n max?: number;\n /**\n * Granularity of each step.\n * - Arrow keys move by one step.\n * - Page Up/Down move by 10 steps.\n * Defaults to `1`.\n */\n step?: number;\n /** Disables the control. */\n disabled?: boolean;\n /**\n * Marks to display along the track.\n * Each mark can have an optional label rendered below the track.\n */\n marks?: Array<{ value: number; label?: string }>;\n /** Accessible label. Required when no visible `<label>` is present. */\n \"aria-label\"?: string;\n /** Associates the control with a visible label element. */\n \"aria-labelledby\"?: string;\n /** `id` of an element that describes the current value (e.g. a live region). */\n \"aria-describedby\"?: string;\n}\n\nfunction clamp(v: number, min: number, max: number) {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction snapToStep(v: number, min: number, step: number, decimals: number) {\n return parseFloat((Math.round((v - min) / step) * step + min).toFixed(decimals));\n}\n\nfunction countDecimals(n: number) {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\n/**\n * Draggable range slider following the Adwaita `GtkScale` pattern.\n *\n * - Pointer (mouse / touch / pen) drag to set value continuously.\n * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.\n * - Optional tick marks with labels.\n * - Fills the track from the left up to the thumb (accent colour).\n *\n * @see https://developer.gnome.org/hig/patterns/controls/sliders.html\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n marks,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const dp = countDecimals(step);\n\n const pct = ((clamp(value, min, max) - min) / (max - min)) * 100;\n\n const setFromX = useCallback(\n (clientX: number) => {\n if (!trackRef.current) return;\n const { left, width } = trackRef.current.getBoundingClientRect();\n const raw = ((clientX - left) / width) * (max - min) + min;\n onChange(clamp(snapToStep(raw, min, step, dp), min, max));\n },\n [min, max, step, dp, onChange]\n );\n\n // Pointer drag — capture on the thumb, move anywhere\n const handlePointerDown = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromX(e.clientX);\n },\n [disabled, setFromX]\n );\n\n const handlePointerMove = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (!e.currentTarget.hasPointerCapture(e.pointerId)) return;\n setFromX(e.clientX);\n },\n [setFromX]\n );\n\n // Keyboard\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n const set = (next: number) => {\n e.preventDefault();\n onChange(clamp(snapToStep(next, min, step, dp), min, max));\n };\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n set(value + step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n set(value - step);\n break;\n case \"PageUp\":\n set(value + step * 10);\n break;\n case \"PageDown\":\n set(value - step * 10);\n break;\n case \"Home\":\n set(min);\n break;\n case \"End\":\n set(max);\n break;\n }\n },\n [value, step, min, max, dp, onChange]\n );\n\n const hasMarks = marks && marks.length > 0;\n const hasLabels = hasMarks && marks.some((m) => m.label);\n\n return (\n <div\n className={[\n styles.wrapper,\n hasLabels ? styles.hasLabels : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {/* Accessible slider */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={disabled || undefined}\n className={[styles.track, disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(\" \")}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={disabled ? undefined : handleKeyDown}\n >\n {/* Filled portion */}\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n\n {/* Thumb */}\n <div\n className={styles.thumb}\n style={{ left: `${pct}%` }}\n aria-hidden=\"true\"\n />\n\n {/* Tick marks */}\n {hasMarks &&\n marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <div\n key={m.value}\n className={styles.tick}\n style={{ left: `${mPct}%` }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n\n {/* Mark labels */}\n {hasLabels && (\n <div className={styles.labels} aria-hidden=\"true\">\n {marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <span\n key={m.value}\n className={styles.markLabel}\n style={{ left: `${mPct}%` }}\n >\n {m.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.cjs","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import {\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent,\n useCallback,\n useRef,\n} from 'react';\n\nimport styles from './Slider.module.css';\n\nexport interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value. Must be between `min` and `max`. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum value. Defaults to `0`. */\n min?: number;\n /** Maximum value. Defaults to `100`. */\n max?: number;\n /**\n * Granularity of each step.\n * - Arrow keys move by one step.\n * - Page Up/Down move by 10 steps.\n * Defaults to `1`.\n */\n step?: number;\n /** Disables the control. */\n disabled?: boolean;\n /**\n * Marks to display along the track.\n * Each mark can have an optional label rendered below the track.\n */\n marks?: Array<{ value: number; label?: string }>;\n /** Accessible label. Required when no visible `<label>` is present. */\n 'aria-label'?: string;\n /** Associates the control with a visible label element. */\n 'aria-labelledby'?: string;\n /** `id` of an element that describes the current value (e.g. a live region). */\n 'aria-describedby'?: string;\n}\n\nfunction clamp(v: number, min: number, max: number) {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction snapToStep(v: number, min: number, step: number, decimals: number) {\n return parseFloat((Math.round((v - min) / step) * step + min).toFixed(decimals));\n}\n\nfunction countDecimals(n: number) {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\n/**\n * Draggable range slider following the Adwaita `GtkScale` pattern.\n *\n * - Pointer (mouse / touch / pen) drag to set value continuously.\n * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.\n * - Optional tick marks with labels.\n * - Fills the track from the left up to the thumb (accent colour).\n *\n * @see https://developer.gnome.org/hig/patterns/controls/sliders.html\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n marks,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const dp = countDecimals(step);\n\n const pct = ((clamp(value, min, max) - min) / (max - min)) * 100;\n\n const setFromX = useCallback(\n (clientX: number) => {\n if (!trackRef.current) {\n return;\n }\n\n const { left, width } = trackRef.current.getBoundingClientRect();\n const raw = ((clientX - left) / width) * (max - min) + min;\n\n onChange(clamp(snapToStep(raw, min, step, dp), min, max));\n },\n [min, max, step, dp, onChange],\n );\n\n // Pointer drag — capture on the thumb, move anywhere\n const handlePointerDown = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromX(e.clientX);\n },\n [disabled, setFromX],\n );\n\n const handlePointerMove = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (!e.currentTarget.hasPointerCapture(e.pointerId)) {\n return;\n }\n\n setFromX(e.clientX);\n },\n [setFromX],\n );\n\n // Keyboard\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n const set = (next: number) => {\n e.preventDefault();\n onChange(clamp(snapToStep(next, min, step, dp), min, max));\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n set(value + step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n set(value - step);\n break;\n case 'PageUp':\n set(value + step * 10);\n break;\n case 'PageDown':\n set(value - step * 10);\n break;\n case 'Home':\n set(min);\n break;\n case 'End':\n set(max);\n break;\n }\n },\n [value, step, min, max, dp, onChange],\n );\n\n const hasMarks = marks && marks.length > 0;\n const hasLabels = hasMarks && marks.some((m) => m.label);\n\n return (\n <div\n className={[styles.wrapper, hasLabels ? styles.hasLabels : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {/* Accessible slider */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={disabled || undefined}\n className={[styles.track, disabled ? styles.disabled : null].filter(Boolean).join(' ')}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={disabled ? undefined : handleKeyDown}\n >\n {/* Filled portion */}\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n\n {/* Thumb */}\n <div className={styles.thumb} style={{ left: `${pct}%` }} aria-hidden=\"true\" />\n\n {/* Tick marks */}\n {hasMarks &&\n marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n\n return (\n <div\n key={m.value}\n className={styles.tick}\n style={{ left: `${mPct}%` }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n\n {/* Mark labels */}\n {hasLabels && (\n <div className={styles.labels} aria-hidden=\"true\">\n {marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n\n return (\n <span key={m.value} className={styles.markLabel} style={{ left: `${mPct}%` }}>\n {m.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
- export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
2
+ export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
3
  /** Current value. Must be between `min` and `max`. */
4
4
  value: number;
5
5
  /** Called when the value changes. */
@@ -26,11 +26,11 @@ export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onCha
26
26
  label?: string;
27
27
  }>;
28
28
  /** Accessible label. Required when no visible `<label>` is present. */
29
- "aria-label"?: string;
29
+ 'aria-label'?: string;
30
30
  /** Associates the control with a visible label element. */
31
- "aria-labelledby"?: string;
31
+ 'aria-labelledby'?: string;
32
32
  /** `id` of an element that describes the current value (e.g. a live region). */
33
- "aria-describedby"?: string;
33
+ 'aria-describedby'?: string;
34
34
  }
35
35
  /**
36
36
  * Draggable range slider following the Adwaita `GtkScale` pattern.
@@ -42,4 +42,4 @@ export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onCha
42
42
  *
43
43
  * @see https://developer.gnome.org/hig/patterns/controls/sliders.html
44
44
  */
45
- export declare function Slider({ value, onChange, min, max, step, disabled, marks, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: SliderProps): import("react/jsx-runtime").JSX.Element;
45
+ export declare function Slider({ value, onChange, min, max, step, disabled, marks, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...props }: SliderProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n type PointerEvent,\n type KeyboardEvent,\n type HTMLAttributes,\n} from \"react\";\nimport styles from \"./Slider.module.css\";\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current value. Must be between `min` and `max`. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum value. Defaults to `0`. */\n min?: number;\n /** Maximum value. Defaults to `100`. */\n max?: number;\n /**\n * Granularity of each step.\n * - Arrow keys move by one step.\n * - Page Up/Down move by 10 steps.\n * Defaults to `1`.\n */\n step?: number;\n /** Disables the control. */\n disabled?: boolean;\n /**\n * Marks to display along the track.\n * Each mark can have an optional label rendered below the track.\n */\n marks?: Array<{ value: number; label?: string }>;\n /** Accessible label. Required when no visible `<label>` is present. */\n \"aria-label\"?: string;\n /** Associates the control with a visible label element. */\n \"aria-labelledby\"?: string;\n /** `id` of an element that describes the current value (e.g. a live region). */\n \"aria-describedby\"?: string;\n}\n\nfunction clamp(v: number, min: number, max: number) {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction snapToStep(v: number, min: number, step: number, decimals: number) {\n return parseFloat((Math.round((v - min) / step) * step + min).toFixed(decimals));\n}\n\nfunction countDecimals(n: number) {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\n/**\n * Draggable range slider following the Adwaita `GtkScale` pattern.\n *\n * - Pointer (mouse / touch / pen) drag to set value continuously.\n * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.\n * - Optional tick marks with labels.\n * - Fills the track from the left up to the thumb (accent colour).\n *\n * @see https://developer.gnome.org/hig/patterns/controls/sliders.html\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n marks,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const dp = countDecimals(step);\n\n const pct = ((clamp(value, min, max) - min) / (max - min)) * 100;\n\n const setFromX = useCallback(\n (clientX: number) => {\n if (!trackRef.current) return;\n const { left, width } = trackRef.current.getBoundingClientRect();\n const raw = ((clientX - left) / width) * (max - min) + min;\n onChange(clamp(snapToStep(raw, min, step, dp), min, max));\n },\n [min, max, step, dp, onChange]\n );\n\n // Pointer drag — capture on the thumb, move anywhere\n const handlePointerDown = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromX(e.clientX);\n },\n [disabled, setFromX]\n );\n\n const handlePointerMove = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (!e.currentTarget.hasPointerCapture(e.pointerId)) return;\n setFromX(e.clientX);\n },\n [setFromX]\n );\n\n // Keyboard\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n const set = (next: number) => {\n e.preventDefault();\n onChange(clamp(snapToStep(next, min, step, dp), min, max));\n };\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n set(value + step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n set(value - step);\n break;\n case \"PageUp\":\n set(value + step * 10);\n break;\n case \"PageDown\":\n set(value - step * 10);\n break;\n case \"Home\":\n set(min);\n break;\n case \"End\":\n set(max);\n break;\n }\n },\n [value, step, min, max, dp, onChange]\n );\n\n const hasMarks = marks && marks.length > 0;\n const hasLabels = hasMarks && marks.some((m) => m.label);\n\n return (\n <div\n className={[\n styles.wrapper,\n hasLabels ? styles.hasLabels : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {/* Accessible slider */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={disabled || undefined}\n className={[styles.track, disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(\" \")}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={disabled ? undefined : handleKeyDown}\n >\n {/* Filled portion */}\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n\n {/* Thumb */}\n <div\n className={styles.thumb}\n style={{ left: `${pct}%` }}\n aria-hidden=\"true\"\n />\n\n {/* Tick marks */}\n {hasMarks &&\n marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <div\n key={m.value}\n className={styles.tick}\n style={{ left: `${mPct}%` }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n\n {/* Mark labels */}\n {hasLabels && (\n <div className={styles.labels} aria-hidden=\"true\">\n {marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n return (\n <span\n key={m.value}\n className={styles.markLabel}\n style={{ left: `${mPct}%` }}\n >\n {m.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.js","names":[],"sources":["../../../src/components/Slider/Slider.tsx"],"sourcesContent":["import {\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent,\n useCallback,\n useRef,\n} from 'react';\n\nimport styles from './Slider.module.css';\n\nexport interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value. Must be between `min` and `max`. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum value. Defaults to `0`. */\n min?: number;\n /** Maximum value. Defaults to `100`. */\n max?: number;\n /**\n * Granularity of each step.\n * - Arrow keys move by one step.\n * - Page Up/Down move by 10 steps.\n * Defaults to `1`.\n */\n step?: number;\n /** Disables the control. */\n disabled?: boolean;\n /**\n * Marks to display along the track.\n * Each mark can have an optional label rendered below the track.\n */\n marks?: Array<{ value: number; label?: string }>;\n /** Accessible label. Required when no visible `<label>` is present. */\n 'aria-label'?: string;\n /** Associates the control with a visible label element. */\n 'aria-labelledby'?: string;\n /** `id` of an element that describes the current value (e.g. a live region). */\n 'aria-describedby'?: string;\n}\n\nfunction clamp(v: number, min: number, max: number) {\n return Math.min(max, Math.max(min, v));\n}\n\nfunction snapToStep(v: number, min: number, step: number, decimals: number) {\n return parseFloat((Math.round((v - min) / step) * step + min).toFixed(decimals));\n}\n\nfunction countDecimals(n: number) {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\n/**\n * Draggable range slider following the Adwaita `GtkScale` pattern.\n *\n * - Pointer (mouse / touch / pen) drag to set value continuously.\n * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.\n * - Optional tick marks with labels.\n * - Fills the track from the left up to the thumb (accent colour).\n *\n * @see https://developer.gnome.org/hig/patterns/controls/sliders.html\n */\nexport function Slider({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n marks,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: SliderProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const dp = countDecimals(step);\n\n const pct = ((clamp(value, min, max) - min) / (max - min)) * 100;\n\n const setFromX = useCallback(\n (clientX: number) => {\n if (!trackRef.current) {\n return;\n }\n\n const { left, width } = trackRef.current.getBoundingClientRect();\n const raw = ((clientX - left) / width) * (max - min) + min;\n\n onChange(clamp(snapToStep(raw, min, step, dp), min, max));\n },\n [min, max, step, dp, onChange],\n );\n\n // Pointer drag — capture on the thumb, move anywhere\n const handlePointerDown = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (disabled) {\n return;\n }\n\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromX(e.clientX);\n },\n [disabled, setFromX],\n );\n\n const handlePointerMove = useCallback(\n (e: PointerEvent<HTMLDivElement>) => {\n if (!e.currentTarget.hasPointerCapture(e.pointerId)) {\n return;\n }\n\n setFromX(e.clientX);\n },\n [setFromX],\n );\n\n // Keyboard\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n const set = (next: number) => {\n e.preventDefault();\n onChange(clamp(snapToStep(next, min, step, dp), min, max));\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n set(value + step);\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n set(value - step);\n break;\n case 'PageUp':\n set(value + step * 10);\n break;\n case 'PageDown':\n set(value - step * 10);\n break;\n case 'Home':\n set(min);\n break;\n case 'End':\n set(max);\n break;\n }\n },\n [value, step, min, max, dp, onChange],\n );\n\n const hasMarks = marks && marks.length > 0;\n const hasLabels = hasMarks && marks.some((m) => m.label);\n\n return (\n <div\n className={[styles.wrapper, hasLabels ? styles.hasLabels : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {/* Accessible slider */}\n <div\n ref={trackRef}\n role=\"slider\"\n tabIndex={disabled ? -1 : 0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={disabled || undefined}\n className={[styles.track, disabled ? styles.disabled : null].filter(Boolean).join(' ')}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onKeyDown={disabled ? undefined : handleKeyDown}\n >\n {/* Filled portion */}\n <div className={styles.fill} style={{ width: `${pct}%` }} />\n\n {/* Thumb */}\n <div className={styles.thumb} style={{ left: `${pct}%` }} aria-hidden=\"true\" />\n\n {/* Tick marks */}\n {hasMarks &&\n marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n\n return (\n <div\n key={m.value}\n className={styles.tick}\n style={{ left: `${mPct}%` }}\n aria-hidden=\"true\"\n />\n );\n })}\n </div>\n\n {/* Mark labels */}\n {hasLabels && (\n <div className={styles.labels} aria-hidden=\"true\">\n {marks.map((m) => {\n const mPct = ((clamp(m.value, min, max) - min) / (max - min)) * 100;\n\n return (\n <span key={m.value} className={styles.markLabel} style={{ left: `${mPct}%` }}>\n {m.label}\n </span>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e={wrapper:`_wrapper_11zhs_3`,hasLabels:`_hasLabels_11zhs_11`,track:`_track_11zhs_17`,disabled:`_disabled_11zhs_42`,fill:`_fill_11zhs_50`,thumb:`_thumb_11zhs_64`,tick:`_tick_11zhs_97`,labels:`_labels_11zhs_112`,markLabel:`_markLabel_11zhs_119`};exports.default=e;
1
+ var e={wrapper:`_wrapper_qpwn3_3`,hasLabels:`_hasLabels_qpwn3_11`,track:`_track_qpwn3_17`,disabled:`_disabled_qpwn3_42`,fill:`_fill_qpwn3_50`,thumb:`_thumb_qpwn3_64`,tick:`_tick_qpwn3_97`,labels:`_labels_qpwn3_112`,markLabel:`_markLabel_qpwn3_119`};exports.default=e;
2
2
  //# sourceMappingURL=Slider.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.module.css.cjs","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":["/* ─── Outer wrapper ──────────────────────────────────────────────────────────── */\n\n.wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Vertical space for thumb overflow */\n padding: 10px 0;\n}\n\n.hasLabels {\n padding-bottom: 0;\n}\n\n/* ─── Track ──────────────────────────────────────────────────────────────────── */\n\n.track {\n position: relative;\n width: 100%;\n height: 6px;\n\n background-color: var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-pill, 9999px);\n\n cursor: pointer;\n touch-action: none; /* prevent scroll interference during drag */\n user-select: none;\n\n outline: none;\n}\n\n.track:focus-visible {\n /* Focus ring on the track itself as a fallback */\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ───────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Filled section (left of thumb) ────────────────────────────────────────── */\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n\n pointer-events: none;\n}\n\n/* ─── Thumb ──────────────────────────────────────────────────────────────────── */\n\n.thumb {\n position: absolute;\n top: 50%;\n /* Translate left by half thumb width so it centres on the left edge of .fill */\n transform: translate(-50%, -50%);\n\n width: 22px;\n height: 22px;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n\n pointer-events: none;\n\n transition:\n transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n/* Slightly larger thumb on focus / active drag */\n.track:focus-visible .thumb,\n.track:active .thumb {\n transform: translate(-50%, -50%) scale(1.18);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.3),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n}\n\n/* ─── Tick marks ─────────────────────────────────────────────────────────────── */\n\n.tick {\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n\n width: 4px;\n height: 4px;\n border-radius: 50%;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n pointer-events: none;\n}\n\n/* ─── Labels row ─────────────────────────────────────────────────────────────── */\n\n.labels {\n position: relative;\n width: 100%;\n height: 20px;\n margin-top: var(--gnome-space-1, 6px);\n}\n\n.markLabel {\n position: absolute;\n transform: translateX(-50%);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n line-height: 1;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .track {\n background-color: rgba(255, 255, 255, 0.15);\n }\n\n .thumb {\n box-shadow:\n 0 1px 4px rgba(0, 0, 0, 0.5),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .track:focus-visible .thumb,\n .track:active .thumb {\n box-shadow:\n 0 2px 8px rgba(0, 0, 0, 0.6),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .tick {\n background-color: var(--gnome-window-bg-color, #242424);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .thumb {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Slider.module.css.cjs","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":["/* ─── Outer wrapper ──────────────────────────────────────────────────────────── */\n\n.wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Vertical space for thumb overflow */\n padding: 10px 0;\n}\n\n.hasLabels {\n padding-bottom: 0;\n}\n\n/* ─── Track ──────────────────────────────────────────────────────────────────── */\n\n.track {\n position: relative;\n width: 100%;\n height: 6px;\n\n background-color: var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-pill, 9999px);\n\n cursor: pointer;\n touch-action: none; /* prevent scroll interference during drag */\n user-select: none;\n\n outline: none;\n}\n\n.track:focus-visible {\n /* Focus ring on the track itself as a fallback */\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ───────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Filled section (left of thumb) ────────────────────────────────────────── */\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n\n pointer-events: none;\n}\n\n/* ─── Thumb ──────────────────────────────────────────────────────────────────── */\n\n.thumb {\n position: absolute;\n top: 50%;\n /* Translate left by half thumb width so it centres on the left edge of .fill */\n transform: translate(-50%, -50%);\n\n width: 22px;\n height: 22px;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n\n pointer-events: none;\n\n transition:\n transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n/* Slightly larger thumb on focus / active drag */\n.track:focus-visible .thumb,\n.track:active .thumb {\n transform: translate(-50%, -50%) scale(1.18);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.3),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n}\n\n/* ─── Tick marks ─────────────────────────────────────────────────────────────── */\n\n.tick {\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n\n width: 4px;\n height: 4px;\n border-radius: 50%;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n pointer-events: none;\n}\n\n/* ─── Labels row ─────────────────────────────────────────────────────────────── */\n\n.labels {\n position: relative;\n width: 100%;\n height: 20px;\n margin-top: var(--gnome-space-1, 6px);\n}\n\n.markLabel {\n position: absolute;\n transform: translateX(-50%);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n line-height: 1;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .track {\n background-color: rgba(255, 255, 255, 0.15);\n }\n\n .thumb {\n box-shadow:\n 0 1px 4px rgba(0, 0, 0, 0.5),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .track:focus-visible .thumb,\n .track:active .thumb {\n box-shadow:\n 0 2px 8px rgba(0, 0, 0, 0.6),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .tick {\n background-color: var(--gnome-window-bg-color, #242424);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .thumb {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,13 +1,13 @@
1
1
  var e = {
2
- wrapper: "_wrapper_11zhs_3",
3
- hasLabels: "_hasLabels_11zhs_11",
4
- track: "_track_11zhs_17",
5
- disabled: "_disabled_11zhs_42",
6
- fill: "_fill_11zhs_50",
7
- thumb: "_thumb_11zhs_64",
8
- tick: "_tick_11zhs_97",
9
- labels: "_labels_11zhs_112",
10
- markLabel: "_markLabel_11zhs_119"
2
+ wrapper: "_wrapper_qpwn3_3",
3
+ hasLabels: "_hasLabels_qpwn3_11",
4
+ track: "_track_qpwn3_17",
5
+ disabled: "_disabled_qpwn3_42",
6
+ fill: "_fill_qpwn3_50",
7
+ thumb: "_thumb_qpwn3_64",
8
+ tick: "_tick_qpwn3_97",
9
+ labels: "_labels_qpwn3_112",
10
+ markLabel: "_markLabel_qpwn3_119"
11
11
  };
12
12
  //#endregion
13
13
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.module.css.js","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":["/* ─── Outer wrapper ──────────────────────────────────────────────────────────── */\n\n.wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Vertical space for thumb overflow */\n padding: 10px 0;\n}\n\n.hasLabels {\n padding-bottom: 0;\n}\n\n/* ─── Track ──────────────────────────────────────────────────────────────────── */\n\n.track {\n position: relative;\n width: 100%;\n height: 6px;\n\n background-color: var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-pill, 9999px);\n\n cursor: pointer;\n touch-action: none; /* prevent scroll interference during drag */\n user-select: none;\n\n outline: none;\n}\n\n.track:focus-visible {\n /* Focus ring on the track itself as a fallback */\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ───────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Filled section (left of thumb) ────────────────────────────────────────── */\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n\n pointer-events: none;\n}\n\n/* ─── Thumb ──────────────────────────────────────────────────────────────────── */\n\n.thumb {\n position: absolute;\n top: 50%;\n /* Translate left by half thumb width so it centres on the left edge of .fill */\n transform: translate(-50%, -50%);\n\n width: 22px;\n height: 22px;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n\n pointer-events: none;\n\n transition:\n transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n/* Slightly larger thumb on focus / active drag */\n.track:focus-visible .thumb,\n.track:active .thumb {\n transform: translate(-50%, -50%) scale(1.18);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.3),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n}\n\n/* ─── Tick marks ─────────────────────────────────────────────────────────────── */\n\n.tick {\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n\n width: 4px;\n height: 4px;\n border-radius: 50%;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n pointer-events: none;\n}\n\n/* ─── Labels row ─────────────────────────────────────────────────────────────── */\n\n.labels {\n position: relative;\n width: 100%;\n height: 20px;\n margin-top: var(--gnome-space-1, 6px);\n}\n\n.markLabel {\n position: absolute;\n transform: translateX(-50%);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n line-height: 1;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .track {\n background-color: rgba(255, 255, 255, 0.15);\n }\n\n .thumb {\n box-shadow:\n 0 1px 4px rgba(0, 0, 0, 0.5),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .track:focus-visible .thumb,\n .track:active .thumb {\n box-shadow:\n 0 2px 8px rgba(0, 0, 0, 0.6),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .tick {\n background-color: var(--gnome-window-bg-color, #242424);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .thumb {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Slider.module.css.js","names":[],"sources":["../../../src/components/Slider/Slider.module.css"],"sourcesContent":["/* ─── Outer wrapper ──────────────────────────────────────────────────────────── */\n\n.wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Vertical space for thumb overflow */\n padding: 10px 0;\n}\n\n.hasLabels {\n padding-bottom: 0;\n}\n\n/* ─── Track ──────────────────────────────────────────────────────────────────── */\n\n.track {\n position: relative;\n width: 100%;\n height: 6px;\n\n background-color: var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-pill, 9999px);\n\n cursor: pointer;\n touch-action: none; /* prevent scroll interference during drag */\n user-select: none;\n\n outline: none;\n}\n\n.track:focus-visible {\n /* Focus ring on the track itself as a fallback */\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ───────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Filled section (left of thumb) ────────────────────────────────────────── */\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n\n pointer-events: none;\n}\n\n/* ─── Thumb ──────────────────────────────────────────────────────────────────── */\n\n.thumb {\n position: absolute;\n top: 50%;\n /* Translate left by half thumb width so it centres on the left edge of .fill */\n transform: translate(-50%, -50%);\n\n width: 22px;\n height: 22px;\n border-radius: var(--gnome-radius-pill, 9999px);\n\n background-color: var(--gnome-accent-bg-color, #3584e4);\n box-shadow:\n 0 1px 3px rgba(0, 0, 0, 0.25),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n\n pointer-events: none;\n\n transition:\n transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n/* Slightly larger thumb on focus / active drag */\n.track:focus-visible .thumb,\n.track:active .thumb {\n transform: translate(-50%, -50%) scale(1.18);\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.3),\n 0 0 0 2px var(--gnome-window-bg-color, #fafafa);\n}\n\n/* ─── Tick marks ─────────────────────────────────────────────────────────────── */\n\n.tick {\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n\n width: 4px;\n height: 4px;\n border-radius: 50%;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n pointer-events: none;\n}\n\n/* ─── Labels row ─────────────────────────────────────────────────────────────── */\n\n.labels {\n position: relative;\n width: 100%;\n height: 20px;\n margin-top: var(--gnome-space-1, 6px);\n}\n\n.markLabel {\n position: absolute;\n transform: translateX(-50%);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n line-height: 1;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .track {\n background-color: rgba(255, 255, 255, 0.15);\n }\n\n .thumb {\n box-shadow:\n 0 1px 4px rgba(0, 0, 0, 0.5),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .track:focus-visible .thumb,\n .track:active .thumb {\n box-shadow:\n 0 2px 8px rgba(0, 0, 0, 0.6),\n 0 0 0 2px var(--gnome-window-bg-color, #242424);\n }\n\n .tick {\n background-color: var(--gnome-window-bg-color, #242424);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .thumb {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { Slider } from './Slider';
2
1
  export type { SliderProps } from './Slider';
2
+ export { Slider } from './Slider';
@@ -1 +1 @@
1
- {"version":3,"file":"SpinButton.cjs","names":[],"sources":["../../../src/components/SpinButton/SpinButton.tsx"],"sourcesContent":["import { useCallback, type KeyboardEvent, type HTMLAttributes } from \"react\";\nimport styles from \"./SpinButton.module.css\";\n\nexport interface SpinButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current value. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n \"aria-label\"?: string;\n /** Associates the control with a visible label element. */\n \"aria-labelledby\"?: string;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * Numeric input with − and + buttons following the Adwaita `GtkSpinButton` style.\n *\n * Supports keyboard interaction: ↑/↓ increment by one step,\n * Page Up/Down increment by 10×, Home/End jump to min/max.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/spin-buttons.html\n */\nexport function SpinButton({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n}: SpinButtonProps) {\n const dp = decimals ?? countDecimals(step);\n\n const set = useCallback(\n (next: number) => onChange(parseFloat(clamp(next, min, max).toFixed(dp))),\n [onChange, min, max, dp],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowUp\": e.preventDefault(); set(value + step); break;\n case \"ArrowDown\": e.preventDefault(); set(value - step); break;\n case \"PageUp\": e.preventDefault(); set(value + step * 10); break;\n case \"PageDown\": e.preventDefault(); set(value - step * 10); break;\n case \"Home\": e.preventDefault(); set(min); break;\n case \"End\": e.preventDefault(); set(max); break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={[styles.spin, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.btn}\n onClick={() => set(value - step)}\n >\n −\n </button>\n\n <span className={styles.value} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.btn}\n onClick={() => set(value + step)}\n >\n +\n </button>\n </div>\n );\n}\n"],"mappings":"qGAyBA,SAAS,EAAc,EAAmB,CACxC,IAAM,EAAI,EAAE,UAAU,CAChB,EAAM,EAAE,QAAQ,IAAI,CAC1B,OAAO,IAAQ,GAAK,EAAI,EAAE,OAAS,EAAM,EAG3C,SAAS,EAAM,EAAe,EAAa,EAAqB,CAC9D,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,EAAM,CAAC,CAW5C,SAAgB,EAAW,CACzB,QACA,WACA,MAAM,EACN,MAAM,IACN,OAAO,EACP,WACA,WAAW,GACX,YACA,aAAc,EACd,kBAAmB,EACnB,GAAG,GACe,CAClB,IAAM,EAAK,GAAY,EAAc,EAAK,CAEpC,GAAA,EAAA,EAAA,aACH,GAAiB,EAAS,WAAW,EAAM,EAAM,EAAK,EAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,CACzE,CAAC,EAAU,EAAK,EAAK,EAAG,CACzB,CAEK,GAAA,EAAA,EAAA,aACH,GAAqC,CACpC,OAAQ,EAAE,IAAV,CACE,IAAK,UAAa,EAAE,gBAAgB,CAAE,EAAI,EAAQ,EAAK,CAAE,MACzD,IAAK,YAAa,EAAE,gBAAgB,CAAE,EAAI,EAAQ,EAAK,CAAE,MACzD,IAAK,SAAa,EAAE,gBAAgB,CAAE,EAAI,EAAQ,EAAO,GAAG,CAAE,MAC9D,IAAK,WAAa,EAAE,gBAAgB,CAAE,EAAI,EAAQ,EAAO,GAAG,CAAE,MAC9D,IAAK,OAAa,EAAE,gBAAgB,CAAE,EAAI,EAAI,CAAE,MAChD,IAAK,MAAa,EAAE,gBAAgB,CAAE,EAAI,EAAI,CAAE,QAGpD,CAAC,EAAO,EAAM,EAAK,EAAK,EAAI,CAC7B,CAED,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,aACL,gBAAe,EACf,gBAAe,EACf,gBAAe,EACf,aAAY,EACZ,kBAAiB,EACjB,gBAAe,GAAY,IAAA,GAC3B,SAAU,EAAW,GAAK,EAC1B,UAAW,EAAW,IAAA,GAAY,EAClC,UAAW,CAAC,EAAA,QAAO,KAAM,EAAW,EAAA,QAAO,SAAW,KAAM,EAAU,CACnE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,GAAI,WAbN,EAeE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAU,GACV,cAAY,OACZ,SAAU,GAAY,GAAS,EAC/B,UAAW,EAAA,QAAO,IAClB,YAAe,EAAI,EAAQ,EAAK,UACjC,IAEQ,CAAA,EAET,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAO,cAAY,gBACxC,EAAM,QAAQ,EAAG,CACb,CAAA,EAEP,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAU,GACV,cAAY,OACZ,SAAU,GAAY,GAAS,EAC/B,UAAW,EAAA,QAAO,IAClB,YAAe,EAAI,EAAQ,EAAK,UACjC,IAEQ,CAAA,CACL"}
1
+ {"version":3,"file":"SpinButton.cjs","names":[],"sources":["../../../src/components/SpinButton/SpinButton.tsx"],"sourcesContent":["import { type HTMLAttributes, type KeyboardEvent, useCallback } from 'react';\n\nimport styles from './SpinButton.module.css';\n\nexport interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n /** Associates the control with a visible label element. */\n 'aria-labelledby'?: string;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * Numeric input with − and + buttons following the Adwaita `GtkSpinButton` style.\n *\n * Supports keyboard interaction: ↑/↓ increment by one step,\n * Page Up/Down increment by 10×, Home/End jump to min/max.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/spin-buttons.html\n */\nexport function SpinButton({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: SpinButtonProps) {\n const dp = decimals ?? countDecimals(step);\n\n const set = useCallback(\n (next: number) => onChange(parseFloat(clamp(next, min, max).toFixed(dp))),\n [onChange, min, max, dp],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n set(value + step);\n break;\n case 'ArrowDown':\n e.preventDefault();\n set(value - step);\n break;\n case 'PageUp':\n e.preventDefault();\n set(value + step * 10);\n break;\n case 'PageDown':\n e.preventDefault();\n set(value - step * 10);\n break;\n case 'Home':\n e.preventDefault();\n set(min);\n break;\n case 'End':\n e.preventDefault();\n set(max);\n break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={[styles.spin, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.btn}\n onClick={() => set(value - step)}\n >\n −\n </button>\n\n <span className={styles.value} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.btn}\n onClick={() => set(value + step)}\n >\n +\n </button>\n </div>\n );\n}\n"],"mappings":"qGAyBA,SAAS,EAAc,EAAmB,CACxC,IAAM,EAAI,EAAE,UAAU,CAChB,EAAM,EAAE,QAAQ,IAAI,CAE1B,OAAO,IAAQ,GAAK,EAAI,EAAE,OAAS,EAAM,EAG3C,SAAS,EAAM,EAAe,EAAa,EAAqB,CAC9D,OAAO,KAAK,IAAI,EAAK,KAAK,IAAI,EAAK,EAAM,CAAC,CAW5C,SAAgB,EAAW,CACzB,QACA,WACA,MAAM,EACN,MAAM,IACN,OAAO,EACP,WACA,WAAW,GACX,YACA,aAAc,EACd,kBAAmB,EACnB,GAAG,GACe,CAClB,IAAM,EAAK,GAAY,EAAc,EAAK,CAEpC,GAAA,EAAA,EAAA,aACH,GAAiB,EAAS,WAAW,EAAM,EAAM,EAAK,EAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,CACzE,CAAC,EAAU,EAAK,EAAK,EAAG,CACzB,CAEK,GAAA,EAAA,EAAA,aACH,GAAqC,CACpC,OAAQ,EAAE,IAAV,CACE,IAAK,UACH,EAAE,gBAAgB,CAClB,EAAI,EAAQ,EAAK,CACjB,MACF,IAAK,YACH,EAAE,gBAAgB,CAClB,EAAI,EAAQ,EAAK,CACjB,MACF,IAAK,SACH,EAAE,gBAAgB,CAClB,EAAI,EAAQ,EAAO,GAAG,CACtB,MACF,IAAK,WACH,EAAE,gBAAgB,CAClB,EAAI,EAAQ,EAAO,GAAG,CACtB,MACF,IAAK,OACH,EAAE,gBAAgB,CAClB,EAAI,EAAI,CACR,MACF,IAAK,MACH,EAAE,gBAAgB,CAClB,EAAI,EAAI,CACR,QAGN,CAAC,EAAO,EAAM,EAAK,EAAK,EAAI,CAC7B,CAED,OACE,EAAA,EAAA,MAAC,MAAD,CACE,KAAK,aACL,gBAAe,EACf,gBAAe,EACf,gBAAe,EACf,aAAY,EACZ,kBAAiB,EACjB,gBAAe,GAAY,IAAA,GAC3B,SAAU,EAAW,GAAK,EAC1B,UAAW,EAAW,IAAA,GAAY,EAClC,UAAW,CAAC,EAAA,QAAO,KAAM,EAAW,EAAA,QAAO,SAAW,KAAM,EAAU,CACnE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,GAAI,WAbN,EAeE,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAU,GACV,cAAY,OACZ,SAAU,GAAY,GAAS,EAC/B,UAAW,EAAA,QAAO,IAClB,YAAe,EAAI,EAAQ,EAAK,UACjC,IAEQ,CAAA,EAET,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,MAAO,cAAY,gBACxC,EAAM,QAAQ,EAAG,CACb,CAAA,EAEP,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,SAAU,GACV,cAAY,OACZ,SAAU,GAAY,GAAS,EAC/B,UAAW,EAAA,QAAO,IAClB,YAAe,EAAI,EAAQ,EAAK,UACjC,IAEQ,CAAA,CACL"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
- export interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
2
+ export interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
3
  /** Current value. */
4
4
  value: number;
5
5
  /** Called when the value changes. */
@@ -15,9 +15,9 @@ export interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, "o
15
15
  /** Disables the control. */
16
16
  disabled?: boolean;
17
17
  /** Accessible label. Required when no visible `<label>` is associated. */
18
- "aria-label"?: string;
18
+ 'aria-label'?: string;
19
19
  /** Associates the control with a visible label element. */
20
- "aria-labelledby"?: string;
20
+ 'aria-labelledby'?: string;
21
21
  }
22
22
  /**
23
23
  * Numeric input with − and + buttons following the Adwaita `GtkSpinButton` style.
@@ -27,4 +27,4 @@ export interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, "o
27
27
  *
28
28
  * @see https://developer.gnome.org/hig/patterns/controls/spin-buttons.html
29
29
  */
30
- export declare function SpinButton({ value, onChange, min, max, step, decimals, disabled, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: SpinButtonProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare function SpinButton({ value, onChange, min, max, step, decimals, disabled, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }: SpinButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"SpinButton.js","names":[],"sources":["../../../src/components/SpinButton/SpinButton.tsx"],"sourcesContent":["import { useCallback, type KeyboardEvent, type HTMLAttributes } from \"react\";\nimport styles from \"./SpinButton.module.css\";\n\nexport interface SpinButtonProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Current value. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n \"aria-label\"?: string;\n /** Associates the control with a visible label element. */\n \"aria-labelledby\"?: string;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * Numeric input with − and + buttons following the Adwaita `GtkSpinButton` style.\n *\n * Supports keyboard interaction: ↑/↓ increment by one step,\n * Page Up/Down increment by 10×, Home/End jump to min/max.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/spin-buttons.html\n */\nexport function SpinButton({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n ...props\n}: SpinButtonProps) {\n const dp = decimals ?? countDecimals(step);\n\n const set = useCallback(\n (next: number) => onChange(parseFloat(clamp(next, min, max).toFixed(dp))),\n [onChange, min, max, dp],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowUp\": e.preventDefault(); set(value + step); break;\n case \"ArrowDown\": e.preventDefault(); set(value - step); break;\n case \"PageUp\": e.preventDefault(); set(value + step * 10); break;\n case \"PageDown\": e.preventDefault(); set(value - step * 10); break;\n case \"Home\": e.preventDefault(); set(min); break;\n case \"End\": e.preventDefault(); set(max); break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={[styles.spin, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.btn}\n onClick={() => set(value - step)}\n >\n −\n </button>\n\n <span className={styles.value} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.btn}\n onClick={() => set(value + step)}\n >\n +\n </button>\n </div>\n );\n}\n"],"mappings":";;;;AAyBA,SAAS,EAAc,GAAmB;CACxC,IAAM,IAAI,EAAE,UAAU,EAChB,IAAM,EAAE,QAAQ,IAAI;AAC1B,QAAO,MAAQ,KAAK,IAAI,EAAE,SAAS,IAAM;;AAG3C,SAAS,EAAM,GAAe,GAAa,GAAqB;AAC9D,QAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAM,CAAC;;AAW5C,SAAgB,EAAW,EACzB,UACA,aACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,aACA,cAAW,IACX,cACA,cAAc,GACd,mBAAmB,GACnB,GAAG,KACe;CAClB,IAAM,IAAK,KAAY,EAAc,EAAK,EAEpC,IAAM,GACT,MAAiB,EAAS,WAAW,EAAM,GAAM,GAAK,EAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,EACzE;EAAC;EAAU;EAAK;EAAK;EAAG,CACzB,EAEK,IAAgB,GACnB,MAAqC;AACpC,UAAQ,EAAE,KAAV;GACE,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,EAAK;AAAE;GACzD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,EAAK;AAAE;GACzD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,IAAO,GAAG;AAAE;GAC9D,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,IAAO,GAAG;AAAE;GAC9D,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,EAAI;AAAE;GAChD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,EAAI;AAAE;;IAGpD;EAAC;EAAO;EAAM;EAAK;EAAK;EAAI,CAC7B;AAED,QACE,kBAAC,OAAD;EACE,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAY;EACZ,mBAAiB;EACjB,iBAAe,KAAY,KAAA;EAC3B,UAAU,IAAW,KAAK;EAC1B,WAAW,IAAW,KAAA,IAAY;EAClC,WAAW;GAAC,EAAO;GAAM,IAAW,EAAO,WAAW;GAAM;GAAU,CACnE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,GAAI;YAbN;GAeE,kBAAC,UAAD;IACE,MAAK;IACL,UAAU;IACV,eAAY;IACZ,UAAU,KAAY,KAAS;IAC/B,WAAW,EAAO;IAClB,eAAe,EAAI,IAAQ,EAAK;cACjC;IAEQ,CAAA;GAET,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAO,eAAY;cACxC,EAAM,QAAQ,EAAG;IACb,CAAA;GAEP,kBAAC,UAAD;IACE,MAAK;IACL,UAAU;IACV,eAAY;IACZ,UAAU,KAAY,KAAS;IAC/B,WAAW,EAAO;IAClB,eAAe,EAAI,IAAQ,EAAK;cACjC;IAEQ,CAAA;GACL"}
1
+ {"version":3,"file":"SpinButton.js","names":[],"sources":["../../../src/components/SpinButton/SpinButton.tsx"],"sourcesContent":["import { type HTMLAttributes, type KeyboardEvent, useCallback } from 'react';\n\nimport styles from './SpinButton.module.css';\n\nexport interface SpinButtonProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value. */\n value: number;\n /** Called when the value changes. */\n onChange: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the control. */\n disabled?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n /** Associates the control with a visible label element. */\n 'aria-labelledby'?: string;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/**\n * Numeric input with − and + buttons following the Adwaita `GtkSpinButton` style.\n *\n * Supports keyboard interaction: ↑/↓ increment by one step,\n * Page Up/Down increment by 10×, Home/End jump to min/max.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/spin-buttons.html\n */\nexport function SpinButton({\n value,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: SpinButtonProps) {\n const dp = decimals ?? countDecimals(step);\n\n const set = useCallback(\n (next: number) => onChange(parseFloat(clamp(next, min, max).toFixed(dp))),\n [onChange, min, max, dp],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n set(value + step);\n break;\n case 'ArrowDown':\n e.preventDefault();\n set(value - step);\n break;\n case 'PageUp':\n e.preventDefault();\n set(value + step * 10);\n break;\n case 'PageDown':\n e.preventDefault();\n set(value - step * 10);\n break;\n case 'Home':\n e.preventDefault();\n set(min);\n break;\n case 'End':\n e.preventDefault();\n set(max);\n break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={[styles.spin, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.btn}\n onClick={() => set(value - step)}\n >\n −\n </button>\n\n <span className={styles.value} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.btn}\n onClick={() => set(value + step)}\n >\n +\n </button>\n </div>\n );\n}\n"],"mappings":";;;;AAyBA,SAAS,EAAc,GAAmB;CACxC,IAAM,IAAI,EAAE,UAAU,EAChB,IAAM,EAAE,QAAQ,IAAI;AAE1B,QAAO,MAAQ,KAAK,IAAI,EAAE,SAAS,IAAM;;AAG3C,SAAS,EAAM,GAAe,GAAa,GAAqB;AAC9D,QAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAM,CAAC;;AAW5C,SAAgB,EAAW,EACzB,UACA,aACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,aACA,cAAW,IACX,cACA,cAAc,GACd,mBAAmB,GACnB,GAAG,KACe;CAClB,IAAM,IAAK,KAAY,EAAc,EAAK,EAEpC,IAAM,GACT,MAAiB,EAAS,WAAW,EAAM,GAAM,GAAK,EAAI,CAAC,QAAQ,EAAG,CAAC,CAAC,EACzE;EAAC;EAAU;EAAK;EAAK;EAAG,CACzB,EAEK,IAAgB,GACnB,MAAqC;AACpC,UAAQ,EAAE,KAAV;GACE,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,EAAK;AACjB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,EAAK;AACjB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,IAAO,GAAG;AACtB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,IAAO,GAAG;AACtB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,EAAI;AACR;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,EAAI;AACR;;IAGN;EAAC;EAAO;EAAM;EAAK;EAAK;EAAI,CAC7B;AAED,QACE,kBAAC,OAAD;EACE,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,cAAY;EACZ,mBAAiB;EACjB,iBAAe,KAAY,KAAA;EAC3B,UAAU,IAAW,KAAK;EAC1B,WAAW,IAAW,KAAA,IAAY;EAClC,WAAW;GAAC,EAAO;GAAM,IAAW,EAAO,WAAW;GAAM;GAAU,CACnE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,GAAI;YAbN;GAeE,kBAAC,UAAD;IACE,MAAK;IACL,UAAU;IACV,eAAY;IACZ,UAAU,KAAY,KAAS;IAC/B,WAAW,EAAO;IAClB,eAAe,EAAI,IAAQ,EAAK;cACjC;IAEQ,CAAA;GAET,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAO,eAAY;cACxC,EAAM,QAAQ,EAAG;IACb,CAAA;GAEP,kBAAC,UAAD;IACE,MAAK;IACL,UAAU;IACV,eAAY;IACZ,UAAU,KAAY,KAAS;IAC/B,WAAW,EAAO;IAClB,eAAe,EAAI,IAAQ,EAAK;cACjC;IAEQ,CAAA;GACL"}
@@ -1,2 +1,2 @@
1
- var e={spin:`_spin_7d4yi_3`,disabled:`_disabled_7d4yi_36`,btn:`_btn_7d4yi_43`,value:`_value_7d4yi_96`};exports.default=e;
1
+ var e={spin:`_spin_1hjdp_3`,disabled:`_disabled_1hjdp_37`,btn:`_btn_1hjdp_44`,value:`_value_1hjdp_89`};exports.default=e;
2
2
  //# sourceMappingURL=SpinButton.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpinButton.module.css.cjs","names":[],"sources":["../../../src/components/SpinButton/SpinButton.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-view-fg-color, rgba(0, 0, 0, 0.8));\n\n transition: box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ─────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── +/− buttons ──────────────────────────────────────────────────────────── */\n\n.btn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #ffffff) 90%,\n black 10%\n );\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #ffffff) 80%,\n black 20%\n );\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* Dividers between button and value */\n.btn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.btn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n flex: 1;\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 56px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .btn:hover:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #1e1e1e) 85%,\n white 15%\n );\n }\n\n .btn:active:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #1e1e1e) 75%,\n white 25%\n );\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"SpinButton.module.css.cjs","names":[],"sources":["../../../src/components/SpinButton/SpinButton.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-view-fg-color, rgba(0, 0, 0, 0.8));\n\n transition:\n box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ─────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── +/− buttons ──────────────────────────────────────────────────────────── */\n\n.btn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 90%, black 10%);\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 80%, black 20%);\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* Dividers between button and value */\n.btn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.btn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n flex: 1;\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 56px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 85%, white 15%);\n }\n\n .btn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 75%, white 25%);\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,8 +1,8 @@
1
1
  var e = {
2
- spin: "_spin_7d4yi_3",
3
- disabled: "_disabled_7d4yi_36",
4
- btn: "_btn_7d4yi_43",
5
- value: "_value_7d4yi_96"
2
+ spin: "_spin_1hjdp_3",
3
+ disabled: "_disabled_1hjdp_37",
4
+ btn: "_btn_1hjdp_44",
5
+ value: "_value_1hjdp_89"
6
6
  };
7
7
  //#endregion
8
8
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"SpinButton.module.css.js","names":[],"sources":["../../../src/components/SpinButton/SpinButton.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-view-fg-color, rgba(0, 0, 0, 0.8));\n\n transition: box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ─────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── +/− buttons ──────────────────────────────────────────────────────────── */\n\n.btn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #ffffff) 90%,\n black 10%\n );\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #ffffff) 80%,\n black 20%\n );\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* Dividers between button and value */\n.btn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.btn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n flex: 1;\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 56px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .btn:hover:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #1e1e1e) 85%,\n white 15%\n );\n }\n\n .btn:active:not(:disabled) {\n background-color: color-mix(\n in srgb,\n var(--gnome-view-bg-color, #1e1e1e) 75%,\n white 25%\n );\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"SpinButton.module.css.js","names":[],"sources":["../../../src/components/SpinButton/SpinButton.module.css"],"sourcesContent":["/* ─── Container ────────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-view-fg-color, rgba(0, 0, 0, 0.8));\n\n transition:\n box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Disabled ─────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── +/− buttons ──────────────────────────────────────────────────────────── */\n\n.btn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 90%, black 10%);\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 80%, black 20%);\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* Dividers between button and value */\n.btn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.btn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n flex: 1;\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 56px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 85%, white 15%);\n }\n\n .btn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 75%, white 25%);\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { SpinButton } from './SpinButton';
2
1
  export type { SpinButtonProps } from './SpinButton';
2
+ export { SpinButton } from './SpinButton';
@@ -1 +1 @@
1
- {"version":3,"file":"SpinRow.cjs","names":[],"sources":["../../../src/components/SpinRow/SpinRow.tsx"],"sourcesContent":["import { useState, useId, useCallback, type HTMLAttributes, type ReactNode, type KeyboardEvent } from \"react\";\nimport styles from \"./SpinRow.module.css\";\n\nexport interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Current value (controlled). */\n value?: number;\n /** Initial value when uncontrolled. Defaults to `0`. */\n defaultValue?: number;\n /** Called when the value changes. */\n onValueChange?: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the row. */\n disabled?: boolean;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\n/**\n * Settings row with an integrated spin button for numeric values.\n *\n * Mirrors `AdwSpinRow` — a standard row layout with − / + buttons at the\n * trailing edge. Use inside a `BoxedList` for settings with numeric ranges\n * (volume, timeout duration, count limits, etc.).\n *\n * Supports both controlled (`value`) and uncontrolled (`defaultValue`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SpinRow.html\n */\nexport function SpinRow({\n title,\n subtitle,\n leading,\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n ...props\n}: SpinRowProps) {\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const dp = decimals ?? countDecimals(step);\n const spinId = useId();\n\n const set = useCallback(\n (next: number) => {\n const clamped = parseFloat(clamp(next, min, max).toFixed(dp));\n if (!isControlled) setUncontrolledValue(clamped);\n onValueChange?.(clamped);\n },\n [isControlled, min, max, dp, onValueChange],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowUp\": e.preventDefault(); set(value + step); break;\n case \"ArrowDown\": e.preventDefault(); set(value - step); break;\n case \"PageUp\": e.preventDefault(); set(value + step * 10); break;\n case \"PageDown\": e.preventDefault(); set(value - step * 10); break;\n case \"Home\": e.preventDefault(); set(min); break;\n case \"End\": e.preventDefault(); set(max); break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n\n {/* Spin button widget */}\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={spinId}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={styles.spin}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.spinBtn}\n onClick={(e) => { e.stopPropagation(); set(value - step); }}\n >\n −\n </button>\n\n <span id={spinId} className={styles.spinValue} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.spinBtn}\n onClick={(e) => { e.stopPropagation(); set(value + step); }}\n >\n +\n </button>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SpinRow.cjs","names":[],"sources":["../../../src/components/SpinRow/SpinRow.tsx"],"sourcesContent":["import {\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useId,\n useState,\n} from 'react';\n\nimport styles from './SpinRow.module.css';\n\nexport interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Current value (controlled). */\n value?: number;\n /** Initial value when uncontrolled. Defaults to `0`. */\n defaultValue?: number;\n /** Called when the value changes. */\n onValueChange?: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the row. */\n disabled?: boolean;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\n/**\n * Settings row with an integrated spin button for numeric values.\n *\n * Mirrors `AdwSpinRow` — a standard row layout with − / + buttons at the\n * trailing edge. Use inside a `BoxedList` for settings with numeric ranges\n * (volume, timeout duration, count limits, etc.).\n *\n * Supports both controlled (`value`) and uncontrolled (`defaultValue`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SpinRow.html\n */\nexport function SpinRow({\n title,\n subtitle,\n leading,\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n ...props\n}: SpinRowProps) {\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const dp = decimals ?? countDecimals(step);\n const spinId = useId();\n\n const set = useCallback(\n (next: number) => {\n const clamped = parseFloat(clamp(next, min, max).toFixed(dp));\n\n if (!isControlled) {\n setUncontrolledValue(clamped);\n }\n\n onValueChange?.(clamped);\n },\n [isControlled, min, max, dp, onValueChange],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n set(value + step);\n break;\n case 'ArrowDown':\n e.preventDefault();\n set(value - step);\n break;\n case 'PageUp':\n e.preventDefault();\n set(value + step * 10);\n break;\n case 'PageDown':\n e.preventDefault();\n set(value - step * 10);\n break;\n case 'Home':\n e.preventDefault();\n set(min);\n break;\n case 'End':\n e.preventDefault();\n set(max);\n break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n\n {/* Spin button widget */}\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={spinId}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={styles.spin}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.spinBtn}\n onClick={(e) => {\n e.stopPropagation();\n set(value - step);\n }}\n >\n −\n </button>\n\n <span id={spinId} className={styles.spinValue} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.spinBtn}\n onClick={(e) => {\n e.stopPropagation();\n set(value + step);\n }}\n >\n +\n </button>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- export interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
2
+ export interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
3
  /** Primary label. */
4
4
  title: string;
5
5
  /** Secondary line below the title. */
@@ -1 +1 @@
1
- {"version":3,"file":"SpinRow.js","names":[],"sources":["../../../src/components/SpinRow/SpinRow.tsx"],"sourcesContent":["import { useState, useId, useCallback, type HTMLAttributes, type ReactNode, type KeyboardEvent } from \"react\";\nimport styles from \"./SpinRow.module.css\";\n\nexport interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Current value (controlled). */\n value?: number;\n /** Initial value when uncontrolled. Defaults to `0`. */\n defaultValue?: number;\n /** Called when the value changes. */\n onValueChange?: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the row. */\n disabled?: boolean;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf(\".\");\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\n/**\n * Settings row with an integrated spin button for numeric values.\n *\n * Mirrors `AdwSpinRow` — a standard row layout with − / + buttons at the\n * trailing edge. Use inside a `BoxedList` for settings with numeric ranges\n * (volume, timeout duration, count limits, etc.).\n *\n * Supports both controlled (`value`) and uncontrolled (`defaultValue`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SpinRow.html\n */\nexport function SpinRow({\n title,\n subtitle,\n leading,\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n ...props\n}: SpinRowProps) {\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const dp = decimals ?? countDecimals(step);\n const spinId = useId();\n\n const set = useCallback(\n (next: number) => {\n const clamped = parseFloat(clamp(next, min, max).toFixed(dp));\n if (!isControlled) setUncontrolledValue(clamped);\n onValueChange?.(clamped);\n },\n [isControlled, min, max, dp, onValueChange],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case \"ArrowUp\": e.preventDefault(); set(value + step); break;\n case \"ArrowDown\": e.preventDefault(); set(value - step); break;\n case \"PageUp\": e.preventDefault(); set(value + step * 10); break;\n case \"PageDown\": e.preventDefault(); set(value - step * 10); break;\n case \"Home\": e.preventDefault(); set(min); break;\n case \"End\": e.preventDefault(); set(max); break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n\n {/* Spin button widget */}\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={spinId}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={styles.spin}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.spinBtn}\n onClick={(e) => { e.stopPropagation(); set(value - step); }}\n >\n −\n </button>\n\n <span id={spinId} className={styles.spinValue} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.spinBtn}\n onClick={(e) => { e.stopPropagation(); set(value + step); }}\n >\n +\n </button>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AA4BA,SAAS,EAAc,GAAmB;CACxC,IAAM,IAAI,EAAE,UAAU,EAChB,IAAM,EAAE,QAAQ,IAAI;AAC1B,QAAO,MAAQ,KAAK,IAAI,EAAE,SAAS,IAAM;;AAG3C,SAAS,EAAM,GAAW,GAAa,GAAqB;AAC1D,QAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAE,CAAC;;AAcxC,SAAgB,EAAQ,EACtB,UACA,aACA,YACA,OAAO,GACP,kBAAe,GACf,kBACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,aACA,cAAW,IACX,cACA,GAAG,KACY;CACf,IAAM,IAAe,MAAoB,KAAA,GACnC,CAAC,GAAmB,KAAwB,EAAS,EAAa,EAClE,IAAQ,IAAe,IAAkB,GAEzC,IAAK,KAAY,EAAc,EAAK,EACpC,IAAS,GAAO,EAEhB,IAAM,GACT,MAAiB;EAChB,IAAM,IAAU,WAAW,EAAM,GAAM,GAAK,EAAI,CAAC,QAAQ,EAAG,CAAC;AAE7D,EADK,KAAc,EAAqB,EAAQ,EAChD,IAAgB,EAAQ;IAE1B;EAAC;EAAc;EAAK;EAAK;EAAI;EAAc,CAC5C,EAEK,IAAgB,GACnB,MAAqC;AACpC,UAAQ,EAAE,KAAV;GACE,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,EAAK;AAAE;GACzD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,EAAK;AAAE;GACzD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,IAAO,GAAG;AAAE;GAC9D,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,IAAQ,IAAO,GAAG;AAAE;GAC9D,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,EAAI;AAAE;GAChD,KAAK;AAAiC,IAApB,EAAE,gBAAgB,EAAE,EAAI,EAAI;AAAE;;IAGpD;EAAC;EAAO;EAAM;EAAK;EAAK;EAAI,CAC7B;AAED,QACE,kBAAC,OAAD;EACE,WAAW;GAAC,EAAO;GAAK,IAAW,EAAO,WAAW;GAAM;GAAU,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,GAAI;YAJN;GAMG,KAAW,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAU;IAAe,CAAA;GAE7D,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;KAAa,CAAA,EAC5C,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAW;KAAgB,CAAA,CAC3D;;GAGP,kBAAC,OAAD;IACE,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,iBAAe;IACf,mBAAiB;IACjB,iBAAe,KAAY,KAAA;IAC3B,UAAU,IAAW,KAAK;IAC1B,WAAW,IAAW,KAAA,IAAY;IAClC,WAAW,EAAO;cATpB;KAWE,kBAAC,UAAD;MACE,MAAK;MACL,UAAU;MACV,eAAY;MACZ,UAAU,KAAY,KAAS;MAC/B,WAAW,EAAO;MAClB,UAAU,MAAM;AAAuB,OAArB,EAAE,iBAAiB,EAAE,EAAI,IAAQ,EAAK;;gBACzD;MAEQ,CAAA;KAET,kBAAC,QAAD;MAAM,IAAI;MAAQ,WAAW,EAAO;MAAW,eAAY;gBACxD,EAAM,QAAQ,EAAG;MACb,CAAA;KAEP,kBAAC,UAAD;MACE,MAAK;MACL,UAAU;MACV,eAAY;MACZ,UAAU,KAAY,KAAS;MAC/B,WAAW,EAAO;MAClB,UAAU,MAAM;AAAuB,OAArB,EAAE,iBAAiB,EAAE,EAAI,IAAQ,EAAK;;gBACzD;MAEQ,CAAA;KACL;;GACF"}
1
+ {"version":3,"file":"SpinRow.js","names":[],"sources":["../../../src/components/SpinRow/SpinRow.tsx"],"sourcesContent":["import {\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useId,\n useState,\n} from 'react';\n\nimport styles from './SpinRow.module.css';\n\nexport interface SpinRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Current value (controlled). */\n value?: number;\n /** Initial value when uncontrolled. Defaults to `0`. */\n defaultValue?: number;\n /** Called when the value changes. */\n onValueChange?: (value: number) => void;\n /** Minimum allowed value. Defaults to `0`. */\n min?: number;\n /** Maximum allowed value. Defaults to `100`. */\n max?: number;\n /** Amount to increment/decrement per step. Defaults to `1`. */\n step?: number;\n /** Number of decimal places shown. Derived from `step` when omitted. */\n decimals?: number;\n /** Disables the row. */\n disabled?: boolean;\n}\n\nfunction countDecimals(n: number): number {\n const s = n.toString();\n const dot = s.indexOf('.');\n\n return dot === -1 ? 0 : s.length - dot - 1;\n}\n\nfunction clamp(v: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, v));\n}\n\n/**\n * Settings row with an integrated spin button for numeric values.\n *\n * Mirrors `AdwSpinRow` — a standard row layout with − / + buttons at the\n * trailing edge. Use inside a `BoxedList` for settings with numeric ranges\n * (volume, timeout duration, count limits, etc.).\n *\n * Supports both controlled (`value`) and uncontrolled (`defaultValue`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SpinRow.html\n */\nexport function SpinRow({\n title,\n subtitle,\n leading,\n value: controlledValue,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n decimals,\n disabled = false,\n className,\n ...props\n}: SpinRowProps) {\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : uncontrolledValue;\n\n const dp = decimals ?? countDecimals(step);\n const spinId = useId();\n\n const set = useCallback(\n (next: number) => {\n const clamped = parseFloat(clamp(next, min, max).toFixed(dp));\n\n if (!isControlled) {\n setUncontrolledValue(clamped);\n }\n\n onValueChange?.(clamped);\n },\n [isControlled, min, max, dp, onValueChange],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n set(value + step);\n break;\n case 'ArrowDown':\n e.preventDefault();\n set(value - step);\n break;\n case 'PageUp':\n e.preventDefault();\n set(value + step * 10);\n break;\n case 'PageDown':\n e.preventDefault();\n set(value - step * 10);\n break;\n case 'Home':\n e.preventDefault();\n set(min);\n break;\n case 'End':\n e.preventDefault();\n set(max);\n break;\n }\n },\n [value, step, min, max, set],\n );\n\n return (\n <div\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n\n {/* Spin button widget */}\n <div\n role=\"spinbutton\"\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-labelledby={spinId}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : handleKeyDown}\n className={styles.spin}\n >\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value <= min}\n className={styles.spinBtn}\n onClick={(e) => {\n e.stopPropagation();\n set(value - step);\n }}\n >\n −\n </button>\n\n <span id={spinId} className={styles.spinValue} aria-hidden=\"true\">\n {value.toFixed(dp)}\n </span>\n\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled || value >= max}\n className={styles.spinBtn}\n onClick={(e) => {\n e.stopPropagation();\n set(value + step);\n }}\n >\n +\n </button>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;AAoCA,SAAS,EAAc,GAAmB;CACxC,IAAM,IAAI,EAAE,UAAU,EAChB,IAAM,EAAE,QAAQ,IAAI;AAE1B,QAAO,MAAQ,KAAK,IAAI,EAAE,SAAS,IAAM;;AAG3C,SAAS,EAAM,GAAW,GAAa,GAAqB;AAC1D,QAAO,KAAK,IAAI,GAAK,KAAK,IAAI,GAAK,EAAE,CAAC;;AAcxC,SAAgB,EAAQ,EACtB,UACA,aACA,YACA,OAAO,GACP,kBAAe,GACf,kBACA,SAAM,GACN,SAAM,KACN,UAAO,GACP,aACA,cAAW,IACX,cACA,GAAG,KACY;CACf,IAAM,IAAe,MAAoB,KAAA,GACnC,CAAC,GAAmB,KAAwB,EAAS,EAAa,EAClE,IAAQ,IAAe,IAAkB,GAEzC,IAAK,KAAY,EAAc,EAAK,EACpC,IAAS,GAAO,EAEhB,IAAM,GACT,MAAiB;EAChB,IAAM,IAAU,WAAW,EAAM,GAAM,GAAK,EAAI,CAAC,QAAQ,EAAG,CAAC;AAM7D,EAJK,KACH,EAAqB,EAAQ,EAG/B,IAAgB,EAAQ;IAE1B;EAAC;EAAc;EAAK;EAAK;EAAI;EAAc,CAC5C,EAEK,IAAgB,GACnB,MAAqC;AACpC,UAAQ,EAAE,KAAV;GACE,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,EAAK;AACjB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,EAAK;AACjB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,IAAO,GAAG;AACtB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,IAAQ,IAAO,GAAG;AACtB;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,EAAI;AACR;GACF,KAAK;AAEH,IADA,EAAE,gBAAgB,EAClB,EAAI,EAAI;AACR;;IAGN;EAAC;EAAO;EAAM;EAAK;EAAK;EAAI,CAC7B;AAED,QACE,kBAAC,OAAD;EACE,WAAW;GAAC,EAAO;GAAK,IAAW,EAAO,WAAW;GAAM;GAAU,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,GAAI;YAJN;GAMG,KAAW,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAU;IAAe,CAAA;GAE7D,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAxB,CACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;KAAa,CAAA,EAC5C,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAW;KAAgB,CAAA,CAC3D;;GAGP,kBAAC,OAAD;IACE,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,iBAAe;IACf,mBAAiB;IACjB,iBAAe,KAAY,KAAA;IAC3B,UAAU,IAAW,KAAK;IAC1B,WAAW,IAAW,KAAA,IAAY;IAClC,WAAW,EAAO;cATpB;KAWE,kBAAC,UAAD;MACE,MAAK;MACL,UAAU;MACV,eAAY;MACZ,UAAU,KAAY,KAAS;MAC/B,WAAW,EAAO;MAClB,UAAU,MAAM;AAEd,OADA,EAAE,iBAAiB,EACnB,EAAI,IAAQ,EAAK;;gBAEpB;MAEQ,CAAA;KAET,kBAAC,QAAD;MAAM,IAAI;MAAQ,WAAW,EAAO;MAAW,eAAY;gBACxD,EAAM,QAAQ,EAAG;MACb,CAAA;KAEP,kBAAC,UAAD;MACE,MAAK;MACL,UAAU;MACV,eAAY;MACZ,UAAU,KAAY,KAAS;MAC/B,WAAW,EAAO;MAClB,UAAU,MAAM;AAEd,OADA,EAAE,iBAAiB,EACnB,EAAI,IAAQ,EAAK;;gBAEpB;MAEQ,CAAA;KACL;;GACF"}
@@ -1,2 +1,2 @@
1
- var e={row:`_row_ycg6f_3`,disabled:`_disabled_ycg6f_16`,leading:`_leading_ycg6f_23`,content:`_content_ycg6f_32`,title:`_title_ycg6f_40`,subtitle:`_subtitle_ycg6f_51`,spin:`_spin_ycg6f_65`,spinBtn:`_spinBtn_ycg6f_100`,spinValue:`_spinValue_ycg6f_144`};exports.default=e;
1
+ var e={row:`_row_8oywh_3`,disabled:`_disabled_8oywh_16`,leading:`_leading_8oywh_23`,content:`_content_8oywh_32`,title:`_title_8oywh_40`,subtitle:`_subtitle_8oywh_51`,spin:`_spin_8oywh_65`,spinBtn:`_spinBtn_8oywh_100`,spinValue:`_spinValue_8oywh_144`};exports.default=e;
2
2
  //# sourceMappingURL=SpinRow.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpinRow.module.css.cjs","names":[],"sources":["../../../src/components/SpinRow/SpinRow.module.css"],"sourcesContent":["/* ─── Row container ─────────────────────────────────────────────────────────── */\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px);\n min-height: 52px;\n width: 100%;\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n text-align: start;\n}\n\n/* ─── Disabled ──────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── Leading ───────────────────────────────────────────────────────────────── */\n\n.leading {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Text content ──────────────────────────────────────────────────────────── */\n\n.content {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n\n.title {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subtitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.75rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.55));\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Spin widget ───────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n transition:\n box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── −/+ buttons ───────────────────────────────────────────────────────────── */\n\n.spinBtn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 34px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spinBtn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 90%, black 10%);\n}\n\n.spinBtn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 80%, black 20%);\n}\n\n.spinBtn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.spinBtn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.spinBtn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ─────────────────────────────────────────────────────────── */\n\n.spinValue {\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 48px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ─────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .spinBtn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 85%, white 15%);\n }\n\n .spinBtn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 75%, white 25%);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .spinBtn {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"SpinRow.module.css.cjs","names":[],"sources":["../../../src/components/SpinRow/SpinRow.module.css"],"sourcesContent":["/* ─── Row container ─────────────────────────────────────────────────────────── */\n\n.row {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px);\n min-height: 52px;\n width: 100%;\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n text-align: start;\n}\n\n/* ─── Disabled ──────────────────────────────────────────────────────────────── */\n\n.disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n pointer-events: none;\n}\n\n/* ─── Leading ───────────────────────────────────────────────────────────────── */\n\n.leading {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Text content ──────────────────────────────────────────────────────────── */\n\n.content {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n\n.title {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subtitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.75rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.55));\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Spin widget ───────────────────────────────────────────────────────────── */\n\n.spin {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n background-color: var(--gnome-view-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n transition:\n box-shadow var(--gnome-duration-fast) var(--gnome-easing-default),\n border-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spin:focus {\n outline: none;\n}\n\n.spin:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n inset 0 1px 2px rgba(0, 0, 0, 0.06),\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── −/+ buttons ───────────────────────────────────────────────────────────── */\n\n.spinBtn {\n appearance: none;\n -webkit-appearance: none;\n border: none;\n background: transparent;\n font: inherit;\n font-size: 1.1rem;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 34px;\n flex-shrink: 0;\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.spinBtn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 90%, black 10%);\n}\n\n.spinBtn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #ffffff) 80%, black 20%);\n}\n\n.spinBtn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.spinBtn:first-child {\n border-right: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n.spinBtn:last-child {\n border-left: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n}\n\n/* ─── Value display ─────────────────────────────────────────────────────────── */\n\n.spinValue {\n text-align: center;\n padding: 0 var(--gnome-space-2, 12px);\n min-width: 48px;\n font-variant-numeric: tabular-nums;\n user-select: none;\n white-space: nowrap;\n}\n\n/* ─── Dark mode ─────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .spin {\n background-color: var(--gnome-view-bg-color, #1e1e1e);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n\n .spinBtn:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 85%, white 15%);\n }\n\n .spinBtn:active:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-view-bg-color, #1e1e1e) 75%, white 25%);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .spin,\n .spinBtn {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,13 +1,13 @@
1
1
  var e = {
2
- row: "_row_ycg6f_3",
3
- disabled: "_disabled_ycg6f_16",
4
- leading: "_leading_ycg6f_23",
5
- content: "_content_ycg6f_32",
6
- title: "_title_ycg6f_40",
7
- subtitle: "_subtitle_ycg6f_51",
8
- spin: "_spin_ycg6f_65",
9
- spinBtn: "_spinBtn_ycg6f_100",
10
- spinValue: "_spinValue_ycg6f_144"
2
+ row: "_row_8oywh_3",
3
+ disabled: "_disabled_8oywh_16",
4
+ leading: "_leading_8oywh_23",
5
+ content: "_content_8oywh_32",
6
+ title: "_title_8oywh_40",
7
+ subtitle: "_subtitle_8oywh_51",
8
+ spin: "_spin_8oywh_65",
9
+ spinBtn: "_spinBtn_8oywh_100",
10
+ spinValue: "_spinValue_8oywh_144"
11
11
  };
12
12
  //#endregion
13
13
  export { e as default };