@gnome-ui/react 1.45.1 → 1.45.2

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 (574) 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.d.ts +1 -1
  4. package/dist/components/AboutDialog/AboutDialog.js +2 -3
  5. package/dist/components/AboutDialog/AboutDialog.js.map +1 -1
  6. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
  7. package/dist/components/AboutDialog/AboutDialog.module.css.js +28 -29
  8. package/dist/components/AboutDialog.cjs +1 -1
  9. package/dist/components/ActionRow/ActionRow.cjs +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 +2 -2
  13. package/dist/components/ActionRow/ActionRow.js.map +1 -1
  14. package/dist/components/ActionRow.cjs +1 -1
  15. package/dist/components/Avatar/Avatar.cjs +1 -1
  16. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  17. package/dist/components/Avatar/Avatar.d.ts +1 -1
  18. package/dist/components/Avatar/Avatar.js +2 -2
  19. package/dist/components/Avatar/Avatar.js.map +1 -1
  20. package/dist/components/Avatar.cjs +1 -1
  21. package/dist/components/AvatarRotator/AvatarRotator.cjs +1 -1
  22. package/dist/components/AvatarRotator/AvatarRotator.cjs.map +1 -1
  23. package/dist/components/AvatarRotator/AvatarRotator.d.ts +1 -1
  24. package/dist/components/AvatarRotator/AvatarRotator.js +2 -2
  25. package/dist/components/AvatarRotator/AvatarRotator.js.map +1 -1
  26. package/dist/components/AvatarRotator.cjs +1 -1
  27. package/dist/components/Badge/Badge.cjs +1 -1
  28. package/dist/components/Badge/Badge.cjs.map +1 -1
  29. package/dist/components/Badge/Badge.d.ts +1 -1
  30. package/dist/components/Badge/Badge.js +2 -2
  31. package/dist/components/Badge/Badge.js.map +1 -1
  32. package/dist/components/Badge.cjs +1 -1
  33. package/dist/components/Banner/Banner.cjs +1 -1
  34. package/dist/components/Banner/Banner.cjs.map +1 -1
  35. package/dist/components/Banner/Banner.d.ts +1 -1
  36. package/dist/components/Banner/Banner.js +34 -36
  37. package/dist/components/Banner/Banner.js.map +1 -1
  38. package/dist/components/Banner/Banner.module.css.cjs +1 -1
  39. package/dist/components/Banner/Banner.module.css.js +11 -12
  40. package/dist/components/Banner.cjs +1 -1
  41. package/dist/components/Bin/Bin.cjs +1 -1
  42. package/dist/components/Bin/Bin.cjs.map +1 -1
  43. package/dist/components/Bin/Bin.d.ts +1 -1
  44. package/dist/components/Bin/Bin.js +4 -6
  45. package/dist/components/Bin/Bin.js.map +1 -1
  46. package/dist/components/Bin.cjs +1 -1
  47. package/dist/components/Blockquote/Blockquote.cjs +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 +24 -26
  51. package/dist/components/Blockquote/Blockquote.js.map +1 -1
  52. package/dist/components/Blockquote.cjs +1 -1
  53. package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
  54. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  55. package/dist/components/BottomSheet/BottomSheet.d.ts +1 -1
  56. package/dist/components/BottomSheet/BottomSheet.js +2 -3
  57. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  58. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
  59. package/dist/components/BottomSheet/BottomSheet.module.css.js +8 -9
  60. package/dist/components/BottomSheet.cjs +1 -1
  61. package/dist/components/Box/Box.cjs +1 -1
  62. package/dist/components/Box/Box.cjs.map +1 -1
  63. package/dist/components/Box/Box.d.ts +1 -1
  64. package/dist/components/Box/Box.js +2 -2
  65. package/dist/components/Box/Box.js.map +1 -1
  66. package/dist/components/Box.cjs +1 -1
  67. package/dist/components/BoxedList/BoxedList.cjs +1 -1
  68. package/dist/components/BoxedList/BoxedList.cjs.map +1 -1
  69. package/dist/components/BoxedList/BoxedList.d.ts +1 -1
  70. package/dist/components/BoxedList/BoxedList.js +2 -2
  71. package/dist/components/BoxedList/BoxedList.js.map +1 -1
  72. package/dist/components/BoxedList.cjs +1 -1
  73. package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
  74. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
  75. package/dist/components/BreakpointBin/BreakpointBin.d.ts +1 -1
  76. package/dist/components/BreakpointBin/BreakpointBin.js +2 -2
  77. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
  78. package/dist/components/BreakpointBin.cjs +1 -1
  79. package/dist/components/Button/Button.cjs +1 -1
  80. package/dist/components/Button/Button.cjs.map +1 -1
  81. package/dist/components/Button/Button.js.map +1 -1
  82. package/dist/components/Button.cjs +1 -1
  83. package/dist/components/ButtonContent/ButtonContent.cjs +1 -1
  84. package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -1
  85. package/dist/components/ButtonContent/ButtonContent.d.ts +1 -1
  86. package/dist/components/ButtonContent/ButtonContent.js +24 -26
  87. package/dist/components/ButtonContent/ButtonContent.js.map +1 -1
  88. package/dist/components/ButtonContent.cjs +1 -1
  89. package/dist/components/ButtonRow/ButtonRow.cjs +1 -1
  90. package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -1
  91. package/dist/components/ButtonRow/ButtonRow.d.ts +1 -1
  92. package/dist/components/ButtonRow/ButtonRow.js +22 -24
  93. package/dist/components/ButtonRow/ButtonRow.js.map +1 -1
  94. package/dist/components/ButtonRow.cjs +1 -1
  95. package/dist/components/Card/Card.cjs +1 -1
  96. package/dist/components/Card/Card.cjs.map +1 -1
  97. package/dist/components/Card/Card.d.ts +1 -1
  98. package/dist/components/Card/Card.js +10 -12
  99. package/dist/components/Card/Card.js.map +1 -1
  100. package/dist/components/Card/Card.module.css.cjs +1 -1
  101. package/dist/components/Card/Card.module.css.js +4 -5
  102. package/dist/components/Card.cjs +1 -1
  103. package/dist/components/Carousel/Carousel.cjs +1 -1
  104. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  105. package/dist/components/Carousel/Carousel.d.ts +3 -3
  106. package/dist/components/Carousel/Carousel.js +28 -34
  107. package/dist/components/Carousel/Carousel.js.map +1 -1
  108. package/dist/components/Carousel.cjs +1 -1
  109. package/dist/components/CheckRow/CheckRow.cjs +1 -1
  110. package/dist/components/CheckRow/CheckRow.cjs.map +1 -1
  111. package/dist/components/CheckRow/CheckRow.d.ts +1 -1
  112. package/dist/components/CheckRow/CheckRow.js +7 -7
  113. package/dist/components/CheckRow/CheckRow.js.map +1 -1
  114. package/dist/components/CheckRow.cjs +1 -1
  115. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  116. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  117. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  118. package/dist/components/Checkbox/Checkbox.js +2 -2
  119. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  120. package/dist/components/Checkbox.cjs +1 -1
  121. package/dist/components/Chip/Chip.cjs +1 -1
  122. package/dist/components/Chip/Chip.cjs.map +1 -1
  123. package/dist/components/Chip/Chip.d.ts +1 -1
  124. package/dist/components/Chip/Chip.js +2 -2
  125. package/dist/components/Chip/Chip.js.map +1 -1
  126. package/dist/components/Chip.cjs +1 -1
  127. package/dist/components/Clamp/Clamp.cjs +1 -1
  128. package/dist/components/Clamp/Clamp.cjs.map +1 -1
  129. package/dist/components/Clamp/Clamp.d.ts +1 -1
  130. package/dist/components/Clamp/Clamp.js +9 -11
  131. package/dist/components/Clamp/Clamp.js.map +1 -1
  132. package/dist/components/Clamp.cjs +1 -1
  133. package/dist/components/ColorPicker/ColorPicker.cjs +1 -1
  134. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
  135. package/dist/components/ColorPicker/ColorPicker.d.ts +2 -2
  136. package/dist/components/ColorPicker/ColorPicker.js +33 -37
  137. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  138. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
  139. package/dist/components/ColorPicker/ColorPicker.module.css.js +9 -10
  140. package/dist/components/ColorPicker.cjs +1 -1
  141. package/dist/components/ColumnView/ColumnView.cjs +1 -1
  142. package/dist/components/ColumnView/ColumnView.cjs.map +1 -1
  143. package/dist/components/ColumnView/ColumnView.d.ts +1 -1
  144. package/dist/components/ColumnView/ColumnView.js +24 -28
  145. package/dist/components/ColumnView/ColumnView.js.map +1 -1
  146. package/dist/components/ColumnView.cjs +1 -1
  147. package/dist/components/ComboRow/ComboRow.cjs +1 -1
  148. package/dist/components/ComboRow/ComboRow.cjs.map +1 -1
  149. package/dist/components/ComboRow/ComboRow.d.ts +1 -1
  150. package/dist/components/ComboRow/ComboRow.js +2 -2
  151. package/dist/components/ComboRow/ComboRow.js.map +1 -1
  152. package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
  153. package/dist/components/ComboRow/ComboRow.module.css.js +24 -25
  154. package/dist/components/ComboRow.cjs +1 -1
  155. package/dist/components/ContributionGraph/ContributionGraph.cjs +1 -1
  156. package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -1
  157. package/dist/components/ContributionGraph/ContributionGraph.d.ts +1 -1
  158. package/dist/components/ContributionGraph/ContributionGraph.js +2 -2
  159. package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -1
  160. package/dist/components/ContributionGraph.cjs +1 -1
  161. package/dist/components/CountDownTimer/CountDownTimer.cjs +1 -1
  162. package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -1
  163. package/dist/components/CountDownTimer/CountDownTimer.d.ts +1 -1
  164. package/dist/components/CountDownTimer/CountDownTimer.js +2 -2
  165. package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -1
  166. package/dist/components/CountDownTimer.cjs +1 -1
  167. package/dist/components/Dialog/Dialog.cjs +1 -1
  168. package/dist/components/Dialog/Dialog.cjs.map +1 -1
  169. package/dist/components/Dialog/Dialog.d.ts +1 -1
  170. package/dist/components/Dialog/Dialog.js +2 -2
  171. package/dist/components/Dialog/Dialog.js.map +1 -1
  172. package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
  173. package/dist/components/Dialog/Dialog.module.css.js +8 -9
  174. package/dist/components/Dialog/dialogUtils.cjs +1 -1
  175. package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
  176. package/dist/components/Dialog/dialogUtils.js.map +1 -1
  177. package/dist/components/Dialog.cjs +1 -1
  178. package/dist/components/Drawer/Drawer.cjs +1 -1
  179. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  180. package/dist/components/Drawer/Drawer.d.ts +1 -1
  181. package/dist/components/Drawer/Drawer.js +2 -2
  182. package/dist/components/Drawer/Drawer.js.map +1 -1
  183. package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
  184. package/dist/components/Drawer/Drawer.module.css.js +11 -12
  185. package/dist/components/Drawer.cjs +1 -1
  186. package/dist/components/Dropdown/Dropdown.cjs +1 -1
  187. package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
  188. package/dist/components/Dropdown/Dropdown.d.ts +1 -1
  189. package/dist/components/Dropdown/Dropdown.js +2 -2
  190. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  191. package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
  192. package/dist/components/Dropdown/Dropdown.module.css.js +20 -21
  193. package/dist/components/Dropdown.cjs +1 -1
  194. package/dist/components/EntryRow/EntryRow.cjs +1 -1
  195. package/dist/components/EntryRow/EntryRow.cjs.map +1 -1
  196. package/dist/components/EntryRow/EntryRow.d.ts +1 -1
  197. package/dist/components/EntryRow/EntryRow.js +2 -2
  198. package/dist/components/EntryRow/EntryRow.js.map +1 -1
  199. package/dist/components/EntryRow.cjs +1 -1
  200. package/dist/components/ExpanderRow/ExpanderRow.cjs +1 -1
  201. package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -1
  202. package/dist/components/ExpanderRow/ExpanderRow.d.ts +1 -1
  203. package/dist/components/ExpanderRow/ExpanderRow.js +2 -2
  204. package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -1
  205. package/dist/components/ExpanderRow.cjs +1 -1
  206. package/dist/components/Footer/Footer.cjs +1 -1
  207. package/dist/components/Footer/Footer.cjs.map +1 -1
  208. package/dist/components/Footer/Footer.d.ts +1 -1
  209. package/dist/components/Footer/Footer.js +22 -24
  210. package/dist/components/Footer/Footer.js.map +1 -1
  211. package/dist/components/Footer.cjs +1 -1
  212. package/dist/components/Frame/Frame.cjs +1 -1
  213. package/dist/components/Frame/Frame.cjs.map +1 -1
  214. package/dist/components/Frame/Frame.d.ts +1 -1
  215. package/dist/components/Frame/Frame.js +5 -7
  216. package/dist/components/Frame/Frame.js.map +1 -1
  217. package/dist/components/Frame.cjs +1 -1
  218. package/dist/components/GnomeProvider/GnomeContext.cjs +1 -1
  219. package/dist/components/GnomeProvider/GnomeContext.cjs.map +1 -1
  220. package/dist/components/GnomeProvider/GnomeContext.js.map +1 -1
  221. package/dist/components/GnomeProvider/GnomeProvider.cjs +1 -1
  222. package/dist/components/GnomeProvider/GnomeProvider.cjs.map +1 -1
  223. package/dist/components/GnomeProvider/GnomeProvider.d.ts +1 -1
  224. package/dist/components/GnomeProvider/GnomeProvider.js +2 -2
  225. package/dist/components/GnomeProvider/GnomeProvider.js.map +1 -1
  226. package/dist/components/HeaderBar/HeaderBar.cjs +1 -1
  227. package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -1
  228. package/dist/components/HeaderBar/HeaderBar.d.ts +1 -1
  229. package/dist/components/HeaderBar/HeaderBar.js +26 -28
  230. package/dist/components/HeaderBar/HeaderBar.js.map +1 -1
  231. package/dist/components/HeaderBar.cjs +1 -1
  232. package/dist/components/Icon/Icon.cjs +1 -1
  233. package/dist/components/Icon/Icon.cjs.map +1 -1
  234. package/dist/components/Icon/Icon.d.ts +1 -1
  235. package/dist/components/Icon/Icon.js +2 -2
  236. package/dist/components/Icon/Icon.js.map +1 -1
  237. package/dist/components/Icon.cjs +1 -1
  238. package/dist/components/IconButton/IconButton.cjs +1 -1
  239. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  240. package/dist/components/IconButton/IconButton.js +4 -4
  241. package/dist/components/IconButton/IconButton.js.map +1 -1
  242. package/dist/components/IconButton.cjs +1 -1
  243. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
  244. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
  245. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +1 -1
  246. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +2 -2
  247. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
  248. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs +1 -1
  249. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -1
  250. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +1 -1
  251. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js +2 -2
  252. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -1
  253. package/dist/components/InlineViewSwitcher.cjs +1 -1
  254. package/dist/components/Link/Link.cjs +1 -1
  255. package/dist/components/Link/Link.cjs.map +1 -1
  256. package/dist/components/Link/Link.d.ts +1 -1
  257. package/dist/components/Link/Link.js +2 -2
  258. package/dist/components/Link/Link.js.map +1 -1
  259. package/dist/components/Link.cjs +1 -1
  260. package/dist/components/LinkedGroup/LinkedGroup.cjs +1 -1
  261. package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -1
  262. package/dist/components/LinkedGroup/LinkedGroup.d.ts +1 -1
  263. package/dist/components/LinkedGroup/LinkedGroup.js +9 -11
  264. package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -1
  265. package/dist/components/LinkedGroup.cjs +1 -1
  266. package/dist/components/NavigationSplitView/NavigationSplitView.cjs +1 -1
  267. package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -1
  268. package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +1 -1
  269. package/dist/components/NavigationSplitView/NavigationSplitView.js +2 -2
  270. package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -1
  271. package/dist/components/NavigationSplitView.cjs +1 -1
  272. package/dist/components/NavigationView/NavigationView.cjs +1 -1
  273. package/dist/components/NavigationView/NavigationView.cjs.map +1 -1
  274. package/dist/components/NavigationView/NavigationView.d.ts +2 -2
  275. package/dist/components/NavigationView/NavigationView.js +3 -4
  276. package/dist/components/NavigationView/NavigationView.js.map +1 -1
  277. package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
  278. package/dist/components/NavigationView/NavigationView.module.css.js +9 -10
  279. package/dist/components/NavigationView.cjs +1 -1
  280. package/dist/components/OverlaySplitView/OverlaySplitView.cjs +1 -1
  281. package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -1
  282. package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +1 -1
  283. package/dist/components/OverlaySplitView/OverlaySplitView.js +2 -2
  284. package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -1
  285. package/dist/components/OverlaySplitView.cjs +1 -1
  286. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs +1 -1
  287. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -1
  288. package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +1 -1
  289. package/dist/components/PasswordEntryRow/PasswordEntryRow.js +2 -2
  290. package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -1
  291. package/dist/components/PasswordEntryRow.cjs +1 -1
  292. package/dist/components/PathBar/PathBar.cjs +1 -1
  293. package/dist/components/PathBar/PathBar.cjs.map +1 -1
  294. package/dist/components/PathBar/PathBar.d.ts +1 -1
  295. package/dist/components/PathBar/PathBar.js +48 -50
  296. package/dist/components/PathBar/PathBar.js.map +1 -1
  297. package/dist/components/PathBar.cjs +1 -1
  298. package/dist/components/Popover/Popover.cjs +1 -1
  299. package/dist/components/Popover/Popover.cjs.map +1 -1
  300. package/dist/components/Popover/Popover.d.ts +1 -1
  301. package/dist/components/Popover/Popover.js +5 -5
  302. package/dist/components/Popover/Popover.js.map +1 -1
  303. package/dist/components/Popover.cjs +1 -1
  304. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
  305. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
  306. package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +1 -1
  307. package/dist/components/PreferencesDialog/PreferencesDialog.js +2 -2
  308. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
  309. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
  310. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +18 -19
  311. package/dist/components/PreferencesDialog.cjs +1 -1
  312. package/dist/components/PreferencesGroup/PreferencesGroup.cjs +1 -1
  313. package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -1
  314. package/dist/components/PreferencesGroup/PreferencesGroup.d.ts +1 -1
  315. package/dist/components/PreferencesGroup/PreferencesGroup.js +2 -2
  316. package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -1
  317. package/dist/components/PreferencesGroup.cjs +1 -1
  318. package/dist/components/PreferencesPage/PreferencesPage.cjs +1 -1
  319. package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -1
  320. package/dist/components/PreferencesPage/PreferencesPage.d.ts +1 -1
  321. package/dist/components/PreferencesPage/PreferencesPage.js +9 -11
  322. package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -1
  323. package/dist/components/PreferencesPage.cjs +1 -1
  324. package/dist/components/ProgressBar/ProgressBar.cjs +1 -1
  325. package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -1
  326. package/dist/components/ProgressBar/ProgressBar.d.ts +1 -1
  327. package/dist/components/ProgressBar/ProgressBar.js +2 -2
  328. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  329. package/dist/components/ProgressBar.cjs +1 -1
  330. package/dist/components/RadioButton/RadioButton.cjs +1 -1
  331. package/dist/components/RadioButton/RadioButton.cjs.map +1 -1
  332. package/dist/components/RadioButton/RadioButton.d.ts +1 -1
  333. package/dist/components/RadioButton/RadioButton.js +5 -7
  334. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  335. package/dist/components/RadioButton.cjs +1 -1
  336. package/dist/components/SearchBar/SearchBar.cjs +1 -1
  337. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  338. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  339. package/dist/components/SearchBar/SearchBar.js +2 -2
  340. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  341. package/dist/components/SearchBar.cjs +1 -1
  342. package/dist/components/SegmentedBar/SegmentedBar.cjs +1 -1
  343. package/dist/components/SegmentedBar/SegmentedBar.cjs.map +1 -1
  344. package/dist/components/SegmentedBar/SegmentedBar.js.map +1 -1
  345. package/dist/components/SegmentedBar.cjs +1 -1
  346. package/dist/components/Separator/Separator.cjs +1 -1
  347. package/dist/components/Separator/Separator.cjs.map +1 -1
  348. package/dist/components/Separator/Separator.d.ts +1 -1
  349. package/dist/components/Separator/Separator.js +2 -2
  350. package/dist/components/Separator/Separator.js.map +1 -1
  351. package/dist/components/Separator.cjs +1 -1
  352. package/dist/components/ShortcutLabel/ShortcutLabel.cjs +1 -1
  353. package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -1
  354. package/dist/components/ShortcutLabel/ShortcutLabel.d.ts +1 -1
  355. package/dist/components/ShortcutLabel/ShortcutLabel.js +2 -3
  356. package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -1
  357. package/dist/components/ShortcutLabel.cjs +1 -1
  358. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
  359. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
  360. package/dist/components/ShortcutsDialog/ShortcutsDialog.d.ts +1 -1
  361. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +2 -3
  362. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
  363. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
  364. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +21 -22
  365. package/dist/components/ShortcutsDialog.cjs +1 -1
  366. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  367. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  368. package/dist/components/Sidebar/Sidebar.d.ts +1 -1
  369. package/dist/components/Sidebar/Sidebar.js +2 -3
  370. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  371. package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
  372. package/dist/components/Sidebar/Sidebar.module.css.js +33 -34
  373. package/dist/components/Sidebar/SidebarItem.cjs +1 -1
  374. package/dist/components/Sidebar/SidebarItem.cjs.map +1 -1
  375. package/dist/components/Sidebar/SidebarItem.d.ts +1 -1
  376. package/dist/components/Sidebar/SidebarItem.js +16 -16
  377. package/dist/components/Sidebar/SidebarItem.js.map +1 -1
  378. package/dist/components/Sidebar/SidebarSection.cjs +1 -1
  379. package/dist/components/Sidebar/SidebarSection.cjs.map +1 -1
  380. package/dist/components/Sidebar/SidebarSection.js.map +1 -1
  381. package/dist/components/Sidebar.cjs +1 -1
  382. package/dist/components/Skeleton/Skeleton.cjs +1 -1
  383. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  384. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  385. package/dist/components/Skeleton/Skeleton.js +9 -10
  386. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  387. package/dist/components/Skeleton.cjs +1 -1
  388. package/dist/components/Slider/Slider.cjs +1 -1
  389. package/dist/components/Slider/Slider.cjs.map +1 -1
  390. package/dist/components/Slider/Slider.d.ts +1 -1
  391. package/dist/components/Slider/Slider.js +2 -2
  392. package/dist/components/Slider/Slider.js.map +1 -1
  393. package/dist/components/Slider.cjs +1 -1
  394. package/dist/components/SpinButton/SpinButton.cjs +1 -1
  395. package/dist/components/SpinButton/SpinButton.cjs.map +1 -1
  396. package/dist/components/SpinButton/SpinButton.d.ts +1 -1
  397. package/dist/components/SpinButton/SpinButton.js +2 -2
  398. package/dist/components/SpinButton/SpinButton.js.map +1 -1
  399. package/dist/components/SpinButton.cjs +1 -1
  400. package/dist/components/SpinRow/SpinRow.cjs +1 -1
  401. package/dist/components/SpinRow/SpinRow.cjs.map +1 -1
  402. package/dist/components/SpinRow/SpinRow.d.ts +1 -1
  403. package/dist/components/SpinRow/SpinRow.js +2 -2
  404. package/dist/components/SpinRow/SpinRow.js.map +1 -1
  405. package/dist/components/SpinRow.cjs +1 -1
  406. package/dist/components/Spinner/Spinner.cjs +1 -1
  407. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  408. package/dist/components/Spinner/Spinner.d.ts +1 -1
  409. package/dist/components/Spinner/Spinner.js +2 -2
  410. package/dist/components/Spinner/Spinner.js.map +1 -1
  411. package/dist/components/Spinner.cjs +1 -1
  412. package/dist/components/SplitButton/SplitButton.cjs +1 -1
  413. package/dist/components/SplitButton/SplitButton.cjs.map +1 -1
  414. package/dist/components/SplitButton/SplitButton.d.ts +1 -1
  415. package/dist/components/SplitButton/SplitButton.js +2 -2
  416. package/dist/components/SplitButton/SplitButton.js.map +1 -1
  417. package/dist/components/SplitButton.cjs +1 -1
  418. package/dist/components/StatusBadge/StatusBadge.cjs +1 -1
  419. package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -1
  420. package/dist/components/StatusBadge/StatusBadge.d.ts +1 -1
  421. package/dist/components/StatusBadge/StatusBadge.js +9 -11
  422. package/dist/components/StatusBadge/StatusBadge.js.map +1 -1
  423. package/dist/components/StatusBadge.cjs +1 -1
  424. package/dist/components/StatusPage/StatusPage.cjs +1 -1
  425. package/dist/components/StatusPage/StatusPage.cjs.map +1 -1
  426. package/dist/components/StatusPage/StatusPage.d.ts +1 -1
  427. package/dist/components/StatusPage/StatusPage.js +2 -2
  428. package/dist/components/StatusPage/StatusPage.js.map +1 -1
  429. package/dist/components/StatusPage.cjs +1 -1
  430. package/dist/components/Switch/Switch.cjs +1 -1
  431. package/dist/components/Switch/Switch.cjs.map +1 -1
  432. package/dist/components/Switch/Switch.d.ts +1 -1
  433. package/dist/components/Switch/Switch.js +6 -8
  434. package/dist/components/Switch/Switch.js.map +1 -1
  435. package/dist/components/Switch.cjs +1 -1
  436. package/dist/components/SwitchRow/SwitchRow.cjs +1 -1
  437. package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -1
  438. package/dist/components/SwitchRow/SwitchRow.d.ts +1 -1
  439. package/dist/components/SwitchRow/SwitchRow.js +7 -7
  440. package/dist/components/SwitchRow/SwitchRow.js.map +1 -1
  441. package/dist/components/SwitchRow.cjs +1 -1
  442. package/dist/components/Tabs/TabBar.cjs +1 -1
  443. package/dist/components/Tabs/TabBar.cjs.map +1 -1
  444. package/dist/components/Tabs/TabBar.d.ts +1 -1
  445. package/dist/components/Tabs/TabBar.js +2 -2
  446. package/dist/components/Tabs/TabBar.js.map +1 -1
  447. package/dist/components/Tabs/TabItem.cjs +1 -1
  448. package/dist/components/Tabs/TabItem.cjs.map +1 -1
  449. package/dist/components/Tabs/TabItem.js.map +1 -1
  450. package/dist/components/Tabs/TabPanel.cjs +1 -1
  451. package/dist/components/Tabs/TabPanel.cjs.map +1 -1
  452. package/dist/components/Tabs/TabPanel.d.ts +1 -1
  453. package/dist/components/Tabs/TabPanel.js +8 -10
  454. package/dist/components/Tabs/TabPanel.js.map +1 -1
  455. package/dist/components/Tabs.cjs +1 -1
  456. package/dist/components/TerminalView/TerminalView.cjs +1 -1
  457. package/dist/components/TerminalView/TerminalView.cjs.map +1 -1
  458. package/dist/components/TerminalView/TerminalView.d.ts +1 -1
  459. package/dist/components/TerminalView/TerminalView.js +2 -2
  460. package/dist/components/TerminalView/TerminalView.js.map +1 -1
  461. package/dist/components/TerminalView.cjs +1 -1
  462. package/dist/components/Text/Text.cjs +1 -1
  463. package/dist/components/Text/Text.cjs.map +1 -1
  464. package/dist/components/Text/Text.d.ts +1 -1
  465. package/dist/components/Text/Text.js +10 -13
  466. package/dist/components/Text/Text.js.map +1 -1
  467. package/dist/components/Text/Text.module.css.cjs +1 -1
  468. package/dist/components/Text/Text.module.css.js +9 -10
  469. package/dist/components/Text.cjs +1 -1
  470. package/dist/components/TextField/TextField.cjs +1 -1
  471. package/dist/components/TextField/TextField.cjs.map +1 -1
  472. package/dist/components/TextField/TextField.d.ts +1 -1
  473. package/dist/components/TextField/TextField.js +2 -2
  474. package/dist/components/TextField/TextField.js.map +1 -1
  475. package/dist/components/TextField.cjs +1 -1
  476. package/dist/components/Timeline/Timeline.cjs +1 -1
  477. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  478. package/dist/components/Timeline/Timeline.d.ts +1 -1
  479. package/dist/components/Timeline/Timeline.js +2 -2
  480. package/dist/components/Timeline/Timeline.js.map +1 -1
  481. package/dist/components/Timeline.cjs +1 -1
  482. package/dist/components/Toast/Toast.cjs +1 -1
  483. package/dist/components/Toast/Toast.cjs.map +1 -1
  484. package/dist/components/Toast/Toast.d.ts +1 -1
  485. package/dist/components/Toast/Toast.js +2 -2
  486. package/dist/components/Toast/Toast.js.map +1 -1
  487. package/dist/components/Toast/Toast.module.css.cjs +1 -1
  488. package/dist/components/Toast/Toast.module.css.js +10 -11
  489. package/dist/components/Toast/Toaster.cjs +1 -1
  490. package/dist/components/Toast/Toaster.cjs.map +1 -1
  491. package/dist/components/Toast/Toaster.d.ts +1 -1
  492. package/dist/components/Toast/Toaster.js +2 -2
  493. package/dist/components/Toast/Toaster.js.map +1 -1
  494. package/dist/components/Toast.cjs +1 -1
  495. package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
  496. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  497. package/dist/components/ToggleGroup/ToggleGroup.d.ts +1 -1
  498. package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
  499. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  500. package/dist/components/ToggleGroup/ToggleGroupItem.cjs +1 -1
  501. package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  502. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  503. package/dist/components/ToggleGroup/ToggleGroupItem.js +2 -2
  504. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  505. package/dist/components/ToggleGroup.cjs +1 -1
  506. package/dist/components/Toolbar/Spacer.cjs +1 -1
  507. package/dist/components/Toolbar/Spacer.cjs.map +1 -1
  508. package/dist/components/Toolbar/Spacer.d.ts +1 -1
  509. package/dist/components/Toolbar/Spacer.js +5 -7
  510. package/dist/components/Toolbar/Spacer.js.map +1 -1
  511. package/dist/components/Toolbar/Toolbar.cjs +1 -1
  512. package/dist/components/Toolbar/Toolbar.cjs.map +1 -1
  513. package/dist/components/Toolbar/Toolbar.d.ts +1 -1
  514. package/dist/components/Toolbar/Toolbar.js +5 -7
  515. package/dist/components/Toolbar/Toolbar.js.map +1 -1
  516. package/dist/components/Toolbar.cjs +1 -1
  517. package/dist/components/ToolbarView/ToolbarView.cjs +1 -1
  518. package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -1
  519. package/dist/components/ToolbarView/ToolbarView.d.ts +1 -1
  520. package/dist/components/ToolbarView/ToolbarView.js +18 -20
  521. package/dist/components/ToolbarView/ToolbarView.js.map +1 -1
  522. package/dist/components/ToolbarView.cjs +1 -1
  523. package/dist/components/Tooltip/Tooltip.cjs +1 -1
  524. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  525. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  526. package/dist/components/Tooltip/Tooltip.js +2 -2
  527. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  528. package/dist/components/Tooltip.cjs +1 -1
  529. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
  530. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
  531. package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +1 -1
  532. package/dist/components/ViewSwitcher/ViewSwitcher.js +2 -2
  533. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
  534. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs +1 -1
  535. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -1
  536. package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +1 -1
  537. package/dist/components/ViewSwitcher/ViewSwitcherItem.js +24 -26
  538. package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -1
  539. package/dist/components/ViewSwitcher.cjs +1 -1
  540. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs +1 -1
  541. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -1
  542. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.d.ts +1 -1
  543. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js +7 -9
  544. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -1
  545. package/dist/components/ViewSwitcherBar.cjs +1 -1
  546. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
  547. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
  548. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +1 -1
  549. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +2 -2
  550. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
  551. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs +1 -1
  552. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -1
  553. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +1 -1
  554. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js +2 -2
  555. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -1
  556. package/dist/components/ViewSwitcherSidebar.cjs +1 -1
  557. package/dist/components/WindowTitle/WindowTitle.cjs +1 -1
  558. package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -1
  559. package/dist/components/WindowTitle/WindowTitle.d.ts +1 -1
  560. package/dist/components/WindowTitle/WindowTitle.js +11 -13
  561. package/dist/components/WindowTitle/WindowTitle.js.map +1 -1
  562. package/dist/components/WindowTitle.cjs +1 -1
  563. package/dist/components/WrapBox/WrapBox.cjs +1 -1
  564. package/dist/components/WrapBox/WrapBox.cjs.map +1 -1
  565. package/dist/components/WrapBox/WrapBox.d.ts +1 -1
  566. package/dist/components/WrapBox/WrapBox.js +5 -5
  567. package/dist/components/WrapBox/WrapBox.js.map +1 -1
  568. package/dist/components/WrapBox.cjs +1 -1
  569. package/dist/hooks/useBreakpoint.cjs +1 -1
  570. package/dist/hooks/useBreakpoint.cjs.map +1 -1
  571. package/dist/hooks/useBreakpoint.js.map +1 -1
  572. package/dist/hooks.cjs +1 -1
  573. package/dist/index.cjs +1 -1
  574. package/package.json +2 -2
@@ -11,7 +11,7 @@ function p(e, t) {
11
11
  let r = n[0], i = n[n.length - 1];
12
12
  e.shiftKey ? document.activeElement === r && (e.preventDefault(), i.focus()) : document.activeElement === i && (e.preventDefault(), r.focus());
13
13
  }
14
- function m({ open: m, onClose: h, children: g, searchable: _ = !0, className: v, ...y }) {
14
+ var m = ({ open: m, onClose: h, children: g, searchable: _ = !0, className: v, ...y }) => {
15
15
  let b = s(null), x = s(null), S = o(), C = t.toArray(g).filter((e) => r(e)), [w, T] = c(0), [E, D] = c("");
16
16
  a(() => {
17
17
  if (m) {
@@ -111,7 +111,7 @@ function m({ open: m, onClose: h, children: g, searchable: _ = !0, className: v,
111
111
  })]
112
112
  })
113
113
  }), document.body) : null;
114
- }
114
+ };
115
115
  //#endregion
116
116
  export { m as PreferencesDialog };
117
117
 
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesDialog.js","names":[],"sources":["../../../src/components/PreferencesDialog/PreferencesDialog.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport type { PreferencesPageProps } from '../PreferencesPage/PreferencesPage';\n\nimport styles from './PreferencesDialog.module.css';\n\n// ─── Focus trap ───────────────────────────────────────────────────────────────\n\nconst FOCUSABLE =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction trapFocus(e: KeyboardEvent<HTMLDivElement>, ref: RefObject<HTMLDivElement | null>) {\n if (e.key !== 'Tab') {\n return;\n }\n\n const focusable = Array.from(ref.current?.querySelectorAll<HTMLElement>(FOCUSABLE) ?? []);\n\n if (!focusable.length) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface PreferencesDialogProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Whether the dialog is open. */\n open: boolean;\n /** Called when the user requests to close the dialog. */\n onClose: () => void;\n /**\n * `PreferencesPage` children. Each page appears as a sidebar entry.\n * When only one page is provided the sidebar is hidden.\n */\n children?: ReactNode;\n /**\n * Whether to show a search bar in the header.\n * When `true` the user can filter group/row content by typing.\n * Defaults to `true`.\n */\n searchable?: boolean;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Multi-page settings dialog using `PreferencesPage` tabs.\n *\n * Renders a wide modal with an optional sidebar listing pages. Each\n * `PreferencesPage` child becomes a navigation entry. Supports built-in\n * search when `searchable` is `true` (the default).\n *\n * Mirrors `AdwPreferencesDialog`.\n *\n * @example\n * ```tsx\n * <PreferencesDialog open={open} onClose={() => setOpen(false)}>\n * <PreferencesPage title=\"General\" iconName=\"preferences-system-symbolic\">\n * <PreferencesGroup title=\"Appearance\">\n * <BoxedList>\n * <SwitchRow title=\"Dark mode\" />\n * </BoxedList>\n * </PreferencesGroup>\n * </PreferencesPage>\n * </PreferencesDialog>\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesDialog.html\n */\nexport function PreferencesDialog({\n open,\n onClose,\n children,\n searchable = true,\n className,\n ...props\n}: PreferencesDialogProps) {\n const dialogRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const titleId = useId();\n\n const pages = Children.toArray(children).filter((c): c is ReactElement<PreferencesPageProps> =>\n isValidElement(c),\n ) as ReactElement<PreferencesPageProps>[];\n\n const [activeIndex, setActiveIndex] = useState(0);\n const [searchQuery, setSearchQuery] = useState('');\n\n // Reset state when dialog opens\n useEffect(() => {\n if (open) {\n setActiveIndex(0);\n setSearchQuery('');\n // Focus search or first focusable after open animation\n const id = requestAnimationFrame(() => {\n if (searchable && searchRef.current) {\n searchRef.current.focus();\n } else {\n const first = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n first?.focus();\n }\n });\n\n return () => cancelAnimationFrame(id);\n }\n }, [open, searchable]);\n\n // Close on Escape\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n const multiPage = pages.length > 1;\n const activePage = pages[activeIndex] ?? pages[0];\n\n // Filter content by search query\n const query = searchQuery.trim().toLowerCase();\n\n if (!open) {\n return null;\n }\n\n return createPortal(\n <div\n className={styles.backdrop}\n onClick={(e) => {\n if (e.target === e.currentTarget) {\n onClose();\n }\n }}\n role=\"presentation\"\n >\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={[styles.dialog, multiPage ? styles.dialogMulti : null, className]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* ── Header ─────────────────────────────────────────────────────── */}\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.closeBtn}\n onClick={onClose}\n aria-label=\"Close preferences\"\n >\n ✕\n </button>\n <span id={titleId} className={styles.title}>\n Preferences\n </span>\n {searchable && (\n <div className={styles.searchWrap}>\n <input\n ref={searchRef}\n type=\"search\"\n placeholder=\"Search…\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className={styles.searchInput}\n aria-label=\"Search preferences\"\n />\n </div>\n )}\n </div>\n\n {/* ── Body ───────────────────────────────────────────────────────── */}\n <div className={styles.body}>\n {/* Sidebar — only shown when there are multiple pages */}\n {multiPage && (\n <nav className={styles.sidebar} aria-label=\"Preferences pages\">\n <ul className={styles.navList}>\n {pages.map((page, i) => (\n <li key={i} role=\"presentation\">\n <button\n role=\"tab\"\n type=\"button\"\n aria-selected={i === activeIndex}\n className={[styles.navItem, i === activeIndex ? styles.navItemActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveIndex(i)}\n >\n {page.props.iconName && (\n <span\n className={[styles.navIcon, 'icon', page.props.iconName].join(' ')}\n aria-hidden=\"true\"\n />\n )}\n <span className={styles.navLabel}>{page.props.title}</span>\n </button>\n </li>\n ))}\n </ul>\n </nav>\n )}\n\n {/* Page content */}\n <div className={styles.pageWrap}>\n {activePage &&\n cloneElement(activePage, {\n 'data-search-query': query || undefined,\n } as Partial<PreferencesPageProps>)}\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PreferencesDialog.js","names":[],"sources":["../../../src/components/PreferencesDialog/PreferencesDialog.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n type RefObject,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport type { PreferencesPageProps } from '../PreferencesPage/PreferencesPage';\n\nimport styles from './PreferencesDialog.module.css';\n\n// ─── Focus trap ───────────────────────────────────────────────────────────────\n\nconst FOCUSABLE =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nfunction trapFocus(e: KeyboardEvent<HTMLDivElement>, ref: RefObject<HTMLDivElement | null>) {\n if (e.key !== 'Tab') {\n return;\n }\n\n const focusable = Array.from(ref.current?.querySelectorAll<HTMLElement>(FOCUSABLE) ?? []);\n\n if (!focusable.length) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n}\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport interface PreferencesDialogProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Whether the dialog is open. */\n open: boolean;\n /** Called when the user requests to close the dialog. */\n onClose: () => void;\n /**\n * `PreferencesPage` children. Each page appears as a sidebar entry.\n * When only one page is provided the sidebar is hidden.\n */\n children?: ReactNode;\n /**\n * Whether to show a search bar in the header.\n * When `true` the user can filter group/row content by typing.\n * Defaults to `true`.\n */\n searchable?: boolean;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * Multi-page settings dialog using `PreferencesPage` tabs.\n *\n * Renders a wide modal with an optional sidebar listing pages. Each\n * `PreferencesPage` child becomes a navigation entry. Supports built-in\n * search when `searchable` is `true` (the default).\n *\n * Mirrors `AdwPreferencesDialog`.\n *\n * @example\n * ```tsx\n * <PreferencesDialog open={open} onClose={() => setOpen(false)}>\n * <PreferencesPage title=\"General\" iconName=\"preferences-system-symbolic\">\n * <PreferencesGroup title=\"Appearance\">\n * <BoxedList>\n * <SwitchRow title=\"Dark mode\" />\n * </BoxedList>\n * </PreferencesGroup>\n * </PreferencesPage>\n * </PreferencesDialog>\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesDialog.html\n */\nexport const PreferencesDialog = ({\n open,\n onClose,\n children,\n searchable = true,\n className,\n ...props\n}: PreferencesDialogProps) => {\n const dialogRef = useRef<HTMLDivElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const titleId = useId();\n\n const pages = Children.toArray(children).filter((c): c is ReactElement<PreferencesPageProps> =>\n isValidElement(c),\n ) as ReactElement<PreferencesPageProps>[];\n\n const [activeIndex, setActiveIndex] = useState(0);\n const [searchQuery, setSearchQuery] = useState('');\n\n // Reset state when dialog opens\n useEffect(() => {\n if (open) {\n setActiveIndex(0);\n setSearchQuery('');\n // Focus search or first focusable after open animation\n const id = requestAnimationFrame(() => {\n if (searchable && searchRef.current) {\n searchRef.current.focus();\n } else {\n const first = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n\n first?.focus();\n }\n });\n\n return () => cancelAnimationFrame(id);\n }\n }, [open, searchable]);\n\n // Close on Escape\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n onClose();\n\n return;\n }\n\n trapFocus(e, dialogRef);\n },\n [onClose],\n );\n\n const multiPage = pages.length > 1;\n const activePage = pages[activeIndex] ?? pages[0];\n\n // Filter content by search query\n const query = searchQuery.trim().toLowerCase();\n\n if (!open) {\n return null;\n }\n\n return createPortal(\n <div\n className={styles.backdrop}\n onClick={(e) => {\n if (e.target === e.currentTarget) {\n onClose();\n }\n }}\n role=\"presentation\"\n >\n <div\n ref={dialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={[styles.dialog, multiPage ? styles.dialogMulti : null, className]\n .filter(Boolean)\n .join(' ')}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* ── Header ─────────────────────────────────────────────────────── */}\n <div className={styles.header}>\n <button\n type=\"button\"\n className={styles.closeBtn}\n onClick={onClose}\n aria-label=\"Close preferences\"\n >\n ✕\n </button>\n <span id={titleId} className={styles.title}>\n Preferences\n </span>\n {searchable && (\n <div className={styles.searchWrap}>\n <input\n ref={searchRef}\n type=\"search\"\n placeholder=\"Search…\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className={styles.searchInput}\n aria-label=\"Search preferences\"\n />\n </div>\n )}\n </div>\n\n {/* ── Body ───────────────────────────────────────────────────────── */}\n <div className={styles.body}>\n {/* Sidebar — only shown when there are multiple pages */}\n {multiPage && (\n <nav className={styles.sidebar} aria-label=\"Preferences pages\">\n <ul className={styles.navList}>\n {pages.map((page, i) => (\n <li key={i} role=\"presentation\">\n <button\n role=\"tab\"\n type=\"button\"\n aria-selected={i === activeIndex}\n className={[styles.navItem, i === activeIndex ? styles.navItemActive : null]\n .filter(Boolean)\n .join(' ')}\n onClick={() => setActiveIndex(i)}\n >\n {page.props.iconName && (\n <span\n className={[styles.navIcon, 'icon', page.props.iconName].join(' ')}\n aria-hidden=\"true\"\n />\n )}\n <span className={styles.navLabel}>{page.props.title}</span>\n </button>\n </li>\n ))}\n </ul>\n </nav>\n )}\n\n {/* Page content */}\n <div className={styles.pageWrap}>\n {activePage &&\n cloneElement(activePage, {\n 'data-search-query': query || undefined,\n } as Partial<PreferencesPageProps>)}\n </div>\n </div>\n </div>\n </div>,\n document.body,\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=`_backdrop_1k5wp_3`,t=`_dialog_1k5wp_30`,n=`_dialogMulti_1k5wp_50`,r=`_header_1k5wp_67`,i=`_closeBtn_1k5wp_78`,a=`_title_1k5wp_108`,o=`_searchWrap_1k5wp_118`,s=`_searchInput_1k5wp_122`,c=`_body_1k5wp_151`,l=`_sidebar_1k5wp_160`,u=`_navList_1k5wp_168`,d=`_navItem_1k5wp_177`,f=`_navItemActive_1k5wp_198`,p=`_navIcon_1k5wp_213`,m=`_navLabel_1k5wp_219`,h=`_pageWrap_1k5wp_229`,g={backdrop:e,"backdrop-in":`_backdrop-in_1k5wp_1`,dialog:t,"dialog-in":`_dialog-in_1k5wp_1`,dialogMulti:n,header:r,closeBtn:i,title:a,searchWrap:o,searchInput:s,body:c,sidebar:l,navList:u,navItem:d,navItemActive:f,navIcon:p,navLabel:m,pageWrap:h};exports.default=g;
1
+ var e={backdrop:`_backdrop_1k5wp_3`,"backdrop-in":`_backdrop-in_1k5wp_1`,dialog:`_dialog_1k5wp_30`,"dialog-in":`_dialog-in_1k5wp_1`,dialogMulti:`_dialogMulti_1k5wp_50`,header:`_header_1k5wp_67`,closeBtn:`_closeBtn_1k5wp_78`,title:`_title_1k5wp_108`,searchWrap:`_searchWrap_1k5wp_118`,searchInput:`_searchInput_1k5wp_122`,body:`_body_1k5wp_151`,sidebar:`_sidebar_1k5wp_160`,navList:`_navList_1k5wp_168`,navItem:`_navItem_1k5wp_177`,navItemActive:`_navItemActive_1k5wp_198`,navIcon:`_navIcon_1k5wp_213`,navLabel:`_navLabel_1k5wp_219`,pageWrap:`_pageWrap_1k5wp_229`};exports.default=e;
2
2
  //# sourceMappingURL=PreferencesDialog.module.css.cjs.map
@@ -1,25 +1,24 @@
1
- //#region src/components/PreferencesDialog/PreferencesDialog.module.css
2
- var e = "_backdrop_1k5wp_3", t = "_dialog_1k5wp_30", n = "_dialogMulti_1k5wp_50", r = "_header_1k5wp_67", i = "_closeBtn_1k5wp_78", a = "_title_1k5wp_108", o = "_searchWrap_1k5wp_118", s = "_searchInput_1k5wp_122", c = "_body_1k5wp_151", l = "_sidebar_1k5wp_160", u = "_navList_1k5wp_168", d = "_navItem_1k5wp_177", f = "_navItemActive_1k5wp_198", p = "_navIcon_1k5wp_213", m = "_navLabel_1k5wp_219", h = "_pageWrap_1k5wp_229", g = {
3
- backdrop: e,
1
+ var e = {
2
+ backdrop: "_backdrop_1k5wp_3",
4
3
  "backdrop-in": "_backdrop-in_1k5wp_1",
5
- dialog: t,
4
+ dialog: "_dialog_1k5wp_30",
6
5
  "dialog-in": "_dialog-in_1k5wp_1",
7
- dialogMulti: n,
8
- header: r,
9
- closeBtn: i,
10
- title: a,
11
- searchWrap: o,
12
- searchInput: s,
13
- body: c,
14
- sidebar: l,
15
- navList: u,
16
- navItem: d,
17
- navItemActive: f,
18
- navIcon: p,
19
- navLabel: m,
20
- pageWrap: h
6
+ dialogMulti: "_dialogMulti_1k5wp_50",
7
+ header: "_header_1k5wp_67",
8
+ closeBtn: "_closeBtn_1k5wp_78",
9
+ title: "_title_1k5wp_108",
10
+ searchWrap: "_searchWrap_1k5wp_118",
11
+ searchInput: "_searchInput_1k5wp_122",
12
+ body: "_body_1k5wp_151",
13
+ sidebar: "_sidebar_1k5wp_160",
14
+ navList: "_navList_1k5wp_168",
15
+ navItem: "_navItem_1k5wp_177",
16
+ navItemActive: "_navItemActive_1k5wp_198",
17
+ navIcon: "_navIcon_1k5wp_213",
18
+ navLabel: "_navLabel_1k5wp_219",
19
+ pageWrap: "_pageWrap_1k5wp_229"
21
20
  };
22
21
  //#endregion
23
- export { g as default };
22
+ export { e as default };
24
23
 
25
24
  //# sourceMappingURL=PreferencesDialog.module.css.js.map
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./PreferencesDialog/PreferencesDialog.cjs`);exports.PreferencesDialog=e.PreferencesDialog;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./PreferencesDialog/PreferencesDialog.cjs");exports.PreferencesDialog=e.PreferencesDialog;
@@ -1,2 +1,2 @@
1
- const e=require(`./PreferencesGroup.module.css.cjs`);let t=require(`react/jsx-runtime`);function n({title:n,description:r,headerSuffix:i,children:a,className:o,...s}){let c=n||r||i;return(0,t.jsxs)(`div`,{className:[e.default.group,o].filter(Boolean).join(` `),...s,children:[c&&(0,t.jsxs)(`div`,{className:e.default.header,children:[(0,t.jsxs)(`div`,{className:e.default.headerText,children:[n&&(0,t.jsx)(`span`,{className:e.default.title,children:n}),r&&(0,t.jsx)(`span`,{className:e.default.description,children:r})]}),i&&(0,t.jsx)(`div`,{className:e.default.suffix,children:i})]}),(0,t.jsx)(`div`,{className:e.default.content,children:a})]})}exports.PreferencesGroup=n;
1
+ const e=require("./PreferencesGroup.module.css.cjs");let t=require("react/jsx-runtime");var n=({title:n,description:r,headerSuffix:i,children:a,className:o,...s})=>{let c=n||r||i;return(0,t.jsxs)(`div`,{className:[e.default.group,o].filter(Boolean).join(` `),...s,children:[c&&(0,t.jsxs)(`div`,{className:e.default.header,children:[(0,t.jsxs)(`div`,{className:e.default.headerText,children:[n&&(0,t.jsx)(`span`,{className:e.default.title,children:n}),r&&(0,t.jsx)(`span`,{className:e.default.description,children:r})]}),i&&(0,t.jsx)(`div`,{className:e.default.suffix,children:i})]}),(0,t.jsx)(`div`,{className:e.default.content,children:a})]})};exports.PreferencesGroup=n;
2
2
  //# sourceMappingURL=PreferencesGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesGroup.cjs","names":[],"sources":["../../../src/components/PreferencesGroup/PreferencesGroup.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesGroup.module.css';\n\nexport interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group heading. */\n title?: string;\n /** Optional description rendered below the title. */\n description?: string;\n /** Widget placed at the trailing edge of the title row (e.g. a reset Button). */\n headerSuffix?: ReactNode;\n /** `BoxedList` rows or any row-shaped content. */\n children?: ReactNode;\n}\n\n/**\n * Titled section that wraps a `BoxedList` with an optional description.\n *\n * Use inside a `PreferencesPage` to group related settings under a named\n * heading. The group is purely a layout and labelling wrapper — it does not\n * render the `BoxedList` itself; pass it as `children`.\n *\n * Mirrors `AdwPreferencesGroup`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html\n */\nexport function PreferencesGroup({\n title,\n description,\n headerSuffix,\n children,\n className,\n ...props\n}: PreferencesGroupProps) {\n const hasHeader = title || description || headerSuffix;\n\n return (\n <div className={[styles.group, className].filter(Boolean).join(' ')} {...props}>\n {hasHeader && (\n <div className={styles.header}>\n <div className={styles.headerText}>\n {title && <span className={styles.title}>{title}</span>}\n {description && <span className={styles.description}>{description}</span>}\n </div>\n {headerSuffix && <div className={styles.suffix}>{headerSuffix}</div>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n </div>\n );\n}\n"],"mappings":"wFA0BA,SAAgB,EAAiB,CAC/B,QACA,cACA,eACA,WACA,YACA,GAAG,GACqB,CACxB,IAAM,EAAY,GAAS,GAAe,EAE1C,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAE,GAAI,WAAzE,CACG,IACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBAAvB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,QAAO,oBAAvB,CACG,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,EAAa,CAAA,CACtD,IAAe,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,qBAAc,EAAmB,CAAA,CACrE,GACL,IAAgB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBAAS,EAAmB,CAAA,CAChE,IAER,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,WAAe,CAAA,CAC5C"}
1
+ {"version":3,"file":"PreferencesGroup.cjs","names":[],"sources":["../../../src/components/PreferencesGroup/PreferencesGroup.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesGroup.module.css';\n\nexport interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group heading. */\n title?: string;\n /** Optional description rendered below the title. */\n description?: string;\n /** Widget placed at the trailing edge of the title row (e.g. a reset Button). */\n headerSuffix?: ReactNode;\n /** `BoxedList` rows or any row-shaped content. */\n children?: ReactNode;\n}\n\n/**\n * Titled section that wraps a `BoxedList` with an optional description.\n *\n * Use inside a `PreferencesPage` to group related settings under a named\n * heading. The group is purely a layout and labelling wrapper — it does not\n * render the `BoxedList` itself; pass it as `children`.\n *\n * Mirrors `AdwPreferencesGroup`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html\n */\nexport const PreferencesGroup = ({\n title,\n description,\n headerSuffix,\n children,\n className,\n ...props\n}: PreferencesGroupProps) => {\n const hasHeader = title || description || headerSuffix;\n\n return (\n <div className={[styles.group, className].filter(Boolean).join(' ')} {...props}>\n {hasHeader && (\n <div className={styles.header}>\n <div className={styles.headerText}>\n {title && <span className={styles.title}>{title}</span>}\n {description && <span className={styles.description}>{description}</span>}\n </div>\n {headerSuffix && <div className={styles.suffix}>{headerSuffix}</div>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n </div>\n );\n};\n"],"mappings":"wFA0BA,IAAa,GAAoB,CAC/B,QACA,cACA,eACA,WACA,YACA,GAAG,KACwB,CAC3B,IAAM,EAAY,GAAS,GAAe,EAE1C,OACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,CAAC,EAAA,QAAO,MAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAG,GAAI,WAAzE,CACG,IACC,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBAAvB,EACE,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,QAAO,oBAAvB,CACG,IAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,CAAY,CAAA,EACrD,IAAe,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,qBAAc,CAAkB,CAAA,CACrE,IACJ,IAAgB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBAAS,CAAkB,CAAA,CAChE,KAEP,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,QAAU,UAAc,CAAA,CAC5C,GAET"}
@@ -20,4 +20,4 @@ export interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {
20
20
  *
21
21
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html
22
22
  */
23
- export declare function PreferencesGroup({ title, description, headerSuffix, children, className, ...props }: PreferencesGroupProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare const PreferencesGroup: ({ title, description, headerSuffix, children, className, ...props }: PreferencesGroupProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import e from "./PreferencesGroup.module.css.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  //#region src/components/PreferencesGroup/PreferencesGroup.tsx
4
- function r({ title: r, description: i, headerSuffix: a, children: o, className: s, ...c }) {
4
+ var r = ({ title: r, description: i, headerSuffix: a, children: o, className: s, ...c }) => {
5
5
  let l = r || i || a;
6
6
  return /* @__PURE__ */ n("div", {
7
7
  className: [e.group, s].filter(Boolean).join(" "),
@@ -26,7 +26,7 @@ function r({ title: r, description: i, headerSuffix: a, children: o, className:
26
26
  children: o
27
27
  })]
28
28
  });
29
- }
29
+ };
30
30
  //#endregion
31
31
  export { r as PreferencesGroup };
32
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesGroup.js","names":[],"sources":["../../../src/components/PreferencesGroup/PreferencesGroup.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesGroup.module.css';\n\nexport interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group heading. */\n title?: string;\n /** Optional description rendered below the title. */\n description?: string;\n /** Widget placed at the trailing edge of the title row (e.g. a reset Button). */\n headerSuffix?: ReactNode;\n /** `BoxedList` rows or any row-shaped content. */\n children?: ReactNode;\n}\n\n/**\n * Titled section that wraps a `BoxedList` with an optional description.\n *\n * Use inside a `PreferencesPage` to group related settings under a named\n * heading. The group is purely a layout and labelling wrapper — it does not\n * render the `BoxedList` itself; pass it as `children`.\n *\n * Mirrors `AdwPreferencesGroup`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html\n */\nexport function PreferencesGroup({\n title,\n description,\n headerSuffix,\n children,\n className,\n ...props\n}: PreferencesGroupProps) {\n const hasHeader = title || description || headerSuffix;\n\n return (\n <div className={[styles.group, className].filter(Boolean).join(' ')} {...props}>\n {hasHeader && (\n <div className={styles.header}>\n <div className={styles.headerText}>\n {title && <span className={styles.title}>{title}</span>}\n {description && <span className={styles.description}>{description}</span>}\n </div>\n {headerSuffix && <div className={styles.suffix}>{headerSuffix}</div>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n </div>\n );\n}\n"],"mappings":";;;AA0BA,SAAgB,EAAiB,EAC/B,UACA,gBACA,iBACA,aACA,cACA,GAAG,KACqB;CACxB,IAAM,IAAY,KAAS,KAAe;AAE1C,QACE,kBAAC,OAAD;EAAK,WAAW,CAAC,EAAO,OAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;YAAzE,CACG,KACC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACG,KAAS,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;KAAa,CAAA,EACtD,KAAe,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAc;KAAmB,CAAA,CACrE;OACL,KAAgB,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAS;IAAmB,CAAA,CAChE;MAER,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAU;GAAe,CAAA,CAC5C"}
1
+ {"version":3,"file":"PreferencesGroup.js","names":[],"sources":["../../../src/components/PreferencesGroup/PreferencesGroup.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesGroup.module.css';\n\nexport interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group heading. */\n title?: string;\n /** Optional description rendered below the title. */\n description?: string;\n /** Widget placed at the trailing edge of the title row (e.g. a reset Button). */\n headerSuffix?: ReactNode;\n /** `BoxedList` rows or any row-shaped content. */\n children?: ReactNode;\n}\n\n/**\n * Titled section that wraps a `BoxedList` with an optional description.\n *\n * Use inside a `PreferencesPage` to group related settings under a named\n * heading. The group is purely a layout and labelling wrapper — it does not\n * render the `BoxedList` itself; pass it as `children`.\n *\n * Mirrors `AdwPreferencesGroup`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html\n */\nexport const PreferencesGroup = ({\n title,\n description,\n headerSuffix,\n children,\n className,\n ...props\n}: PreferencesGroupProps) => {\n const hasHeader = title || description || headerSuffix;\n\n return (\n <div className={[styles.group, className].filter(Boolean).join(' ')} {...props}>\n {hasHeader && (\n <div className={styles.header}>\n <div className={styles.headerText}>\n {title && <span className={styles.title}>{title}</span>}\n {description && <span className={styles.description}>{description}</span>}\n </div>\n {headerSuffix && <div className={styles.suffix}>{headerSuffix}</div>}\n </div>\n )}\n <div className={styles.content}>{children}</div>\n </div>\n );\n};\n"],"mappings":";;;AA0BA,IAAa,KAAoB,EAC/B,UACA,gBACA,iBACA,aACA,cACA,GAAG,QACwB;CAC3B,IAAM,IAAY,KAAS,KAAe;CAE1C,OACE,kBAAC,OAAD;EAAK,WAAW,CAAC,EAAO,OAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;EAAG,GAAI;YAAzE,CACG,KACC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACG,KAAS,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;IAAY,CAAA,GACrD,KAAe,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAc;IAAkB,CAAA,CACrE;OACJ,KAAgB,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAS;GAAkB,CAAA,CAChE;MAEP,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAU;EAAc,CAAA,CAC5C;;AAET"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./PreferencesGroup/PreferencesGroup.cjs`);exports.PreferencesGroup=e.PreferencesGroup;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./PreferencesGroup/PreferencesGroup.cjs");exports.PreferencesGroup=e.PreferencesGroup;
@@ -1,2 +1,2 @@
1
- const e=require(`./PreferencesPage.module.css.cjs`);let t=require(`react/jsx-runtime`);function n({title:n,iconName:r,children:i,className:a,...o}){return(0,t.jsx)(`div`,{className:[e.default.page,a].filter(Boolean).join(` `),role:`tabpanel`,...o,children:(0,t.jsx)(`div`,{className:e.default.inner,children:i})})}exports.PreferencesPage=n;
1
+ const e=require("./PreferencesPage.module.css.cjs");let t=require("react/jsx-runtime");var n=({title:n,iconName:r,children:i,className:a,...o})=>(0,t.jsx)(`div`,{className:[e.default.page,a].filter(Boolean).join(` `),role:`tabpanel`,...o,children:(0,t.jsx)(`div`,{className:e.default.inner,children:i})});exports.PreferencesPage=n;
2
2
  //# sourceMappingURL=PreferencesPage.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesPage.cjs","names":[],"sources":["../../../src/components/PreferencesPage/PreferencesPage.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesPage.module.css';\n\nexport interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Page title shown in the sidebar / tab of a `PreferencesDialog`.\n * Required — used as the navigation label.\n */\n title: string;\n /**\n * Name of a symbolic icon displayed next to the page title in the sidebar.\n * Pass a valid icon name from the system icon theme (e.g. `\"preferences-system-symbolic\"`).\n */\n iconName?: string;\n /** `PreferencesGroup` sections. */\n children?: ReactNode;\n}\n\n/**\n * Scrollable page composed of `PreferencesGroup` sections.\n *\n * Use as a child of `PreferencesDialog`. Each page appears as a labelled\n * navigation entry in the dialog sidebar.\n *\n * Mirrors `AdwPreferencesPage`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html\n */\nexport function PreferencesPage({\n title: _title,\n iconName: _iconName,\n children,\n className,\n ...props\n}: PreferencesPageProps) {\n return (\n <div className={[styles.page, className].filter(Boolean).join(' ')} role=\"tabpanel\" {...props}>\n <div className={styles.inner}>{children}</div>\n </div>\n );\n}\n"],"mappings":"uFA6BA,SAAgB,EAAgB,CAC9B,MAAO,EACP,SAAU,EACV,WACA,YACA,GAAG,GACoB,CACvB,OACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,CAAC,EAAA,QAAO,KAAM,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAE,KAAK,WAAW,GAAI,YACtF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAQ,WAAe,CAAA,CAC1C,CAAA"}
1
+ {"version":3,"file":"PreferencesPage.cjs","names":[],"sources":["../../../src/components/PreferencesPage/PreferencesPage.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesPage.module.css';\n\nexport interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Page title shown in the sidebar / tab of a `PreferencesDialog`.\n * Required — used as the navigation label.\n */\n title: string;\n /**\n * Name of a symbolic icon displayed next to the page title in the sidebar.\n * Pass a valid icon name from the system icon theme (e.g. `\"preferences-system-symbolic\"`).\n */\n iconName?: string;\n /** `PreferencesGroup` sections. */\n children?: ReactNode;\n}\n\n/**\n * Scrollable page composed of `PreferencesGroup` sections.\n *\n * Use as a child of `PreferencesDialog`. Each page appears as a labelled\n * navigation entry in the dialog sidebar.\n *\n * Mirrors `AdwPreferencesPage`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html\n */\nexport const PreferencesPage = ({\n title: _title,\n iconName: _iconName,\n children,\n className,\n ...props\n}: PreferencesPageProps) => {\n return (\n <div className={[styles.page, className].filter(Boolean).join(' ')} role=\"tabpanel\" {...props}>\n <div className={styles.inner}>{children}</div>\n </div>\n );\n};\n"],"mappings":"uFA6BA,IAAa,GAAmB,CAC9B,MAAO,EACP,SAAU,EACV,WACA,YACA,GAAG,MAGD,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,CAAC,EAAA,QAAO,KAAM,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAG,KAAK,WAAW,GAAI,YACtF,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,MAAQ,UAAc,CAAA,CAC1C,CAAA"}
@@ -23,4 +23,4 @@ export interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {
23
23
  *
24
24
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html
25
25
  */
26
- export declare function PreferencesPage({ title: _title, iconName: _iconName, children, className, ...props }: PreferencesPageProps): import("react/jsx-runtime").JSX.Element;
26
+ export declare const PreferencesPage: ({ title: _title, iconName: _iconName, children, className, ...props }: PreferencesPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,15 @@
1
1
  import e from "./PreferencesPage.module.css.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region src/components/PreferencesPage/PreferencesPage.tsx
4
- function n({ title: n, iconName: r, children: i, className: a, ...o }) {
5
- return /* @__PURE__ */ t("div", {
6
- className: [e.page, a].filter(Boolean).join(" "),
7
- role: "tabpanel",
8
- ...o,
9
- children: /* @__PURE__ */ t("div", {
10
- className: e.inner,
11
- children: i
12
- })
13
- });
14
- }
4
+ var n = ({ title: n, iconName: r, children: i, className: a, ...o }) => /* @__PURE__ */ t("div", {
5
+ className: [e.page, a].filter(Boolean).join(" "),
6
+ role: "tabpanel",
7
+ ...o,
8
+ children: /* @__PURE__ */ t("div", {
9
+ className: e.inner,
10
+ children: i
11
+ })
12
+ });
15
13
  //#endregion
16
14
  export { n as PreferencesPage };
17
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesPage.js","names":[],"sources":["../../../src/components/PreferencesPage/PreferencesPage.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesPage.module.css';\n\nexport interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Page title shown in the sidebar / tab of a `PreferencesDialog`.\n * Required — used as the navigation label.\n */\n title: string;\n /**\n * Name of a symbolic icon displayed next to the page title in the sidebar.\n * Pass a valid icon name from the system icon theme (e.g. `\"preferences-system-symbolic\"`).\n */\n iconName?: string;\n /** `PreferencesGroup` sections. */\n children?: ReactNode;\n}\n\n/**\n * Scrollable page composed of `PreferencesGroup` sections.\n *\n * Use as a child of `PreferencesDialog`. Each page appears as a labelled\n * navigation entry in the dialog sidebar.\n *\n * Mirrors `AdwPreferencesPage`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html\n */\nexport function PreferencesPage({\n title: _title,\n iconName: _iconName,\n children,\n className,\n ...props\n}: PreferencesPageProps) {\n return (\n <div className={[styles.page, className].filter(Boolean).join(' ')} role=\"tabpanel\" {...props}>\n <div className={styles.inner}>{children}</div>\n </div>\n );\n}\n"],"mappings":";;;AA6BA,SAAgB,EAAgB,EAC9B,OAAO,GACP,UAAU,GACV,aACA,cACA,GAAG,KACoB;AACvB,QACE,kBAAC,OAAD;EAAK,WAAW,CAAC,EAAO,MAAM,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,MAAK;EAAW,GAAI;YACtF,kBAAC,OAAD;GAAK,WAAW,EAAO;GAAQ;GAAe,CAAA;EAC1C,CAAA"}
1
+ {"version":3,"file":"PreferencesPage.js","names":[],"sources":["../../../src/components/PreferencesPage/PreferencesPage.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PreferencesPage.module.css';\n\nexport interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Page title shown in the sidebar / tab of a `PreferencesDialog`.\n * Required — used as the navigation label.\n */\n title: string;\n /**\n * Name of a symbolic icon displayed next to the page title in the sidebar.\n * Pass a valid icon name from the system icon theme (e.g. `\"preferences-system-symbolic\"`).\n */\n iconName?: string;\n /** `PreferencesGroup` sections. */\n children?: ReactNode;\n}\n\n/**\n * Scrollable page composed of `PreferencesGroup` sections.\n *\n * Use as a child of `PreferencesDialog`. Each page appears as a labelled\n * navigation entry in the dialog sidebar.\n *\n * Mirrors `AdwPreferencesPage`.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html\n */\nexport const PreferencesPage = ({\n title: _title,\n iconName: _iconName,\n children,\n className,\n ...props\n}: PreferencesPageProps) => {\n return (\n <div className={[styles.page, className].filter(Boolean).join(' ')} role=\"tabpanel\" {...props}>\n <div className={styles.inner}>{children}</div>\n </div>\n );\n};\n"],"mappings":";;;AA6BA,IAAa,KAAmB,EAC9B,OAAO,GACP,UAAU,GACV,aACA,cACA,GAAG,QAGD,kBAAC,OAAD;CAAK,WAAW,CAAC,EAAO,MAAM,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;CAAG,MAAK;CAAW,GAAI;WACtF,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAQ;CAAc,CAAA;AAC1C,CAAA"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./PreferencesPage/PreferencesPage.cjs`);exports.PreferencesPage=e.PreferencesPage;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./PreferencesPage/PreferencesPage.cjs");exports.PreferencesPage=e.PreferencesPage;
@@ -1,2 +1,2 @@
1
- const e=require(`./ProgressBar.module.css.cjs`);let t=require(`react/jsx-runtime`);function n({value:n,variant:r=`accent`,className:i,"aria-label":a,"aria-labelledby":o,...s}){let c=n==null,l=c?void 0:Math.min(1,Math.max(0,n)),u=l===void 0?void 0:l*100;return(0,t.jsx)(`div`,{role:`progressbar`,"aria-label":a,"aria-labelledby":o,"aria-valuenow":l===void 0?void 0:Math.round(u),"aria-valuemin":c?void 0:0,"aria-valuemax":c?void 0:100,className:[e.default.track,i].filter(Boolean).join(` `),...s,children:(0,t.jsx)(`div`,{className:[e.default.fill,e.default[r],c?e.default.indeterminate:null].filter(Boolean).join(` `),style:c?void 0:{width:`${u}%`}})})}exports.ProgressBar=n;
1
+ const e=require("./ProgressBar.module.css.cjs");let t=require("react/jsx-runtime");var n=({value:n,variant:r=`accent`,className:i,"aria-label":a,"aria-labelledby":o,...s})=>{let c=n==null,l=c?void 0:Math.min(1,Math.max(0,n)),u=l===void 0?void 0:l*100;return(0,t.jsx)(`div`,{role:`progressbar`,"aria-label":a,"aria-labelledby":o,"aria-valuenow":l===void 0?void 0:Math.round(u),"aria-valuemin":c?void 0:0,"aria-valuemax":c?void 0:100,className:[e.default.track,i].filter(Boolean).join(` `),...s,children:(0,t.jsx)(`div`,{className:[e.default.fill,e.default[r],c?e.default.indeterminate:null].filter(Boolean).join(` `),style:c?void 0:{width:`${u}%`}})})};exports.ProgressBar=n;
2
2
  //# sourceMappingURL=ProgressBar.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.cjs","names":[],"sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './ProgressBar.module.css';\n\nexport type ProgressBarVariant = 'accent' | 'success' | 'warning' | 'error';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Current progress value between `0` and `1` (e.g. `0.6` = 60 %).\n * Omit or set to `undefined` for the indeterminate (pulsing) state.\n */\n value?: number;\n /**\n * Fill color of the progress indicator.\n * - `\"accent\"` (default) — blue, general-purpose progress.\n * - `\"success\"` — green, completed or healthy state.\n * - `\"warning\"` — yellow, approaching a limit.\n * - `\"error\"` — red, failed or critical state.\n */\n variant?: ProgressBarVariant;\n /** Accessible label describing what is loading. */\n 'aria-label'?: string;\n /** Associates the bar with a visible element that labels it. */\n 'aria-labelledby'?: string;\n}\n\n/**\n * Determinate and indeterminate progress bar following the Adwaita style.\n *\n * - **Determinate** — pass `value` (0–1) to show exact progress.\n * - **Indeterminate** — omit `value` for an animated pulse when duration is unknown.\n *\n * Renders as `role=\"progressbar\"` with `aria-valuenow` / `aria-valuemin` /\n * `aria-valuemax` for screen readers.\n *\n * @see https://developer.gnome.org/hig/patterns/feedback/progress.html\n */\nexport function ProgressBar({\n value,\n variant = 'accent',\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) {\n const isIndeterminate = value === undefined || value === null;\n const clamped = isIndeterminate ? undefined : Math.min(1, Math.max(0, value));\n const percent = clamped !== undefined ? clamped * 100 : undefined;\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuenow={clamped !== undefined ? Math.round(percent!) : undefined}\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : 100}\n className={[styles.track, className].filter(Boolean).join(' ')}\n {...props}\n >\n <div\n className={[styles.fill, styles[variant], isIndeterminate ? styles.indeterminate : null]\n .filter(Boolean)\n .join(' ')}\n style={!isIndeterminate ? { width: `${percent}%` } : undefined}\n />\n </div>\n );\n}\n"],"mappings":"mFAqCA,SAAgB,EAAY,CAC1B,QACA,UAAU,SACV,YACA,aAAc,EACd,kBAAmB,EACnB,GAAG,GACgB,CACnB,IAAM,EAAkB,GAAiC,KACnD,EAAU,EAAkB,IAAA,GAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAM,CAAC,CACvE,EAAU,IAAY,IAAA,GAA4B,IAAA,GAAhB,EAAU,IAElD,OACE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,cACL,aAAY,EACZ,kBAAiB,EACjB,gBAAe,IAAY,IAAA,GAAmC,IAAA,GAAvB,KAAK,MAAM,EAAS,CAC3D,gBAAe,EAAkB,IAAA,GAAY,EAC7C,gBAAe,EAAkB,IAAA,GAAY,IAC7C,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC9D,GAAI,YAEJ,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,KAAM,EAAA,QAAO,GAAU,EAAkB,EAAA,QAAO,cAAgB,KAAK,CACrF,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,MAAQ,EAA6C,IAAA,GAA3B,CAAE,MAAO,GAAG,EAAQ,GAAI,CAClD,CAAA,CACE,CAAA"}
1
+ {"version":3,"file":"ProgressBar.cjs","names":[],"sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './ProgressBar.module.css';\n\nexport type ProgressBarVariant = 'accent' | 'success' | 'warning' | 'error';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Current progress value between `0` and `1` (e.g. `0.6` = 60 %).\n * Omit or set to `undefined` for the indeterminate (pulsing) state.\n */\n value?: number;\n /**\n * Fill color of the progress indicator.\n * - `\"accent\"` (default) — blue, general-purpose progress.\n * - `\"success\"` — green, completed or healthy state.\n * - `\"warning\"` — yellow, approaching a limit.\n * - `\"error\"` — red, failed or critical state.\n */\n variant?: ProgressBarVariant;\n /** Accessible label describing what is loading. */\n 'aria-label'?: string;\n /** Associates the bar with a visible element that labels it. */\n 'aria-labelledby'?: string;\n}\n\n/**\n * Determinate and indeterminate progress bar following the Adwaita style.\n *\n * - **Determinate** — pass `value` (0–1) to show exact progress.\n * - **Indeterminate** — omit `value` for an animated pulse when duration is unknown.\n *\n * Renders as `role=\"progressbar\"` with `aria-valuenow` / `aria-valuemin` /\n * `aria-valuemax` for screen readers.\n *\n * @see https://developer.gnome.org/hig/patterns/feedback/progress.html\n */\nexport const ProgressBar = ({\n value,\n variant = 'accent',\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) => {\n const isIndeterminate = value === undefined || value === null;\n const clamped = isIndeterminate ? undefined : Math.min(1, Math.max(0, value));\n const percent = clamped !== undefined ? clamped * 100 : undefined;\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuenow={clamped !== undefined ? Math.round(percent!) : undefined}\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : 100}\n className={[styles.track, className].filter(Boolean).join(' ')}\n {...props}\n >\n <div\n className={[styles.fill, styles[variant], isIndeterminate ? styles.indeterminate : null]\n .filter(Boolean)\n .join(' ')}\n style={!isIndeterminate ? { width: `${percent}%` } : undefined}\n />\n </div>\n );\n};\n"],"mappings":"mFAqCA,IAAa,GAAe,CAC1B,QACA,UAAU,SACV,YACA,aAAc,EACd,kBAAmB,EACnB,GAAG,KACmB,CACtB,IAAM,EAAkB,GAAiC,KACnD,EAAU,EAAkB,IAAA,GAAY,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAK,CAAC,EACtE,EAAU,IAAY,IAAA,GAA4B,IAAA,GAAhB,EAAU,IAElD,OACE,EAAA,EAAA,KAAC,MAAD,CACE,KAAK,cACL,aAAY,EACZ,kBAAiB,EACjB,gBAAe,IAAY,IAAA,GAAmC,IAAA,GAAvB,KAAK,MAAM,CAAQ,EAC1D,gBAAe,EAAkB,IAAA,GAAY,EAC7C,gBAAe,EAAkB,IAAA,GAAY,IAC7C,UAAW,CAAC,EAAA,QAAO,MAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7D,GAAI,YAEJ,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,KAAM,EAAA,QAAO,GAAU,EAAkB,EAAA,QAAO,cAAgB,IAAI,EACpF,OAAO,OAAO,EACd,KAAK,GAAG,EACX,MAAQ,EAA6C,IAAA,GAA3B,CAAE,MAAO,GAAG,EAAQ,EAAG,CAClD,CAAA,CACE,CAAA,CAET"}
@@ -30,4 +30,4 @@ export interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
30
30
  *
31
31
  * @see https://developer.gnome.org/hig/patterns/feedback/progress.html
32
32
  */
33
- export declare function ProgressBar({ value, variant, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare const ProgressBar: ({ value, variant, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: ProgressBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import e from "./ProgressBar.module.css.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region src/components/ProgressBar/ProgressBar.tsx
4
- function n({ value: n, variant: r = "accent", className: i, "aria-label": a, "aria-labelledby": o, ...s }) {
4
+ var n = ({ value: n, variant: r = "accent", className: i, "aria-label": a, "aria-labelledby": o, ...s }) => {
5
5
  let c = n == null, l = c ? void 0 : Math.min(1, Math.max(0, n)), u = l === void 0 ? void 0 : l * 100;
6
6
  return /* @__PURE__ */ t("div", {
7
7
  role: "progressbar",
@@ -21,7 +21,7 @@ function n({ value: n, variant: r = "accent", className: i, "aria-label": a, "ar
21
21
  style: c ? void 0 : { width: `${u}%` }
22
22
  })
23
23
  });
24
- }
24
+ };
25
25
  //#endregion
26
26
  export { n as ProgressBar };
27
27
 
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","names":[],"sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './ProgressBar.module.css';\n\nexport type ProgressBarVariant = 'accent' | 'success' | 'warning' | 'error';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Current progress value between `0` and `1` (e.g. `0.6` = 60 %).\n * Omit or set to `undefined` for the indeterminate (pulsing) state.\n */\n value?: number;\n /**\n * Fill color of the progress indicator.\n * - `\"accent\"` (default) — blue, general-purpose progress.\n * - `\"success\"` — green, completed or healthy state.\n * - `\"warning\"` — yellow, approaching a limit.\n * - `\"error\"` — red, failed or critical state.\n */\n variant?: ProgressBarVariant;\n /** Accessible label describing what is loading. */\n 'aria-label'?: string;\n /** Associates the bar with a visible element that labels it. */\n 'aria-labelledby'?: string;\n}\n\n/**\n * Determinate and indeterminate progress bar following the Adwaita style.\n *\n * - **Determinate** — pass `value` (0–1) to show exact progress.\n * - **Indeterminate** — omit `value` for an animated pulse when duration is unknown.\n *\n * Renders as `role=\"progressbar\"` with `aria-valuenow` / `aria-valuemin` /\n * `aria-valuemax` for screen readers.\n *\n * @see https://developer.gnome.org/hig/patterns/feedback/progress.html\n */\nexport function ProgressBar({\n value,\n variant = 'accent',\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) {\n const isIndeterminate = value === undefined || value === null;\n const clamped = isIndeterminate ? undefined : Math.min(1, Math.max(0, value));\n const percent = clamped !== undefined ? clamped * 100 : undefined;\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuenow={clamped !== undefined ? Math.round(percent!) : undefined}\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : 100}\n className={[styles.track, className].filter(Boolean).join(' ')}\n {...props}\n >\n <div\n className={[styles.fill, styles[variant], isIndeterminate ? styles.indeterminate : null]\n .filter(Boolean)\n .join(' ')}\n style={!isIndeterminate ? { width: `${percent}%` } : undefined}\n />\n </div>\n );\n}\n"],"mappings":";;;AAqCA,SAAgB,EAAY,EAC1B,UACA,aAAU,UACV,cACA,cAAc,GACd,mBAAmB,GACnB,GAAG,KACgB;CACnB,IAAM,IAAkB,KAAiC,MACnD,IAAU,IAAkB,KAAA,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,EAAM,CAAC,EACvE,IAAU,MAAY,KAAA,IAA4B,KAAA,IAAhB,IAAU;AAElD,QACE,kBAAC,OAAD;EACE,MAAK;EACL,cAAY;EACZ,mBAAiB;EACjB,iBAAe,MAAY,KAAA,IAAmC,KAAA,IAAvB,KAAK,MAAM,EAAS;EAC3D,iBAAe,IAAkB,KAAA,IAAY;EAC7C,iBAAe,IAAkB,KAAA,IAAY;EAC7C,WAAW,CAAC,EAAO,OAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAC9D,GAAI;YAEJ,kBAAC,OAAD;GACE,WAAW;IAAC,EAAO;IAAM,EAAO;IAAU,IAAkB,EAAO,gBAAgB;IAAK,CACrF,OAAO,QAAQ,CACf,KAAK,IAAI;GACZ,OAAQ,IAA6C,KAAA,IAA3B,EAAE,OAAO,GAAG,EAAQ,IAAI;GAClD,CAAA;EACE,CAAA"}
1
+ {"version":3,"file":"ProgressBar.js","names":[],"sources":["../../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport styles from './ProgressBar.module.css';\n\nexport type ProgressBarVariant = 'accent' | 'success' | 'warning' | 'error';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Current progress value between `0` and `1` (e.g. `0.6` = 60 %).\n * Omit or set to `undefined` for the indeterminate (pulsing) state.\n */\n value?: number;\n /**\n * Fill color of the progress indicator.\n * - `\"accent\"` (default) — blue, general-purpose progress.\n * - `\"success\"` — green, completed or healthy state.\n * - `\"warning\"` — yellow, approaching a limit.\n * - `\"error\"` — red, failed or critical state.\n */\n variant?: ProgressBarVariant;\n /** Accessible label describing what is loading. */\n 'aria-label'?: string;\n /** Associates the bar with a visible element that labels it. */\n 'aria-labelledby'?: string;\n}\n\n/**\n * Determinate and indeterminate progress bar following the Adwaita style.\n *\n * - **Determinate** — pass `value` (0–1) to show exact progress.\n * - **Indeterminate** — omit `value` for an animated pulse when duration is unknown.\n *\n * Renders as `role=\"progressbar\"` with `aria-valuenow` / `aria-valuemin` /\n * `aria-valuemax` for screen readers.\n *\n * @see https://developer.gnome.org/hig/patterns/feedback/progress.html\n */\nexport const ProgressBar = ({\n value,\n variant = 'accent',\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...props\n}: ProgressBarProps) => {\n const isIndeterminate = value === undefined || value === null;\n const clamped = isIndeterminate ? undefined : Math.min(1, Math.max(0, value));\n const percent = clamped !== undefined ? clamped * 100 : undefined;\n\n return (\n <div\n role=\"progressbar\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-valuenow={clamped !== undefined ? Math.round(percent!) : undefined}\n aria-valuemin={isIndeterminate ? undefined : 0}\n aria-valuemax={isIndeterminate ? undefined : 100}\n className={[styles.track, className].filter(Boolean).join(' ')}\n {...props}\n >\n <div\n className={[styles.fill, styles[variant], isIndeterminate ? styles.indeterminate : null]\n .filter(Boolean)\n .join(' ')}\n style={!isIndeterminate ? { width: `${percent}%` } : undefined}\n />\n </div>\n );\n};\n"],"mappings":";;;AAqCA,IAAa,KAAe,EAC1B,UACA,aAAU,UACV,cACA,cAAc,GACd,mBAAmB,GACnB,GAAG,QACmB;CACtB,IAAM,IAAkB,KAAiC,MACnD,IAAU,IAAkB,KAAA,IAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAK,CAAC,GACtE,IAAU,MAAY,KAAA,IAA4B,KAAA,IAAhB,IAAU;CAElD,OACE,kBAAC,OAAD;EACE,MAAK;EACL,cAAY;EACZ,mBAAiB;EACjB,iBAAe,MAAY,KAAA,IAAmC,KAAA,IAAvB,KAAK,MAAM,CAAQ;EAC1D,iBAAe,IAAkB,KAAA,IAAY;EAC7C,iBAAe,IAAkB,KAAA,IAAY;EAC7C,WAAW,CAAC,EAAO,OAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;EAC7D,GAAI;YAEJ,kBAAC,OAAD;GACE,WAAW;IAAC,EAAO;IAAM,EAAO;IAAU,IAAkB,EAAO,gBAAgB;GAAI,EACpF,OAAO,OAAO,EACd,KAAK,GAAG;GACX,OAAQ,IAA6C,KAAA,IAA3B,EAAE,OAAO,GAAG,EAAQ,GAAG;EAClD,CAAA;CACE,CAAA;AAET"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./ProgressBar/ProgressBar.cjs`);exports.ProgressBar=e.ProgressBar;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ProgressBar/ProgressBar.cjs");exports.ProgressBar=e.ProgressBar;
@@ -1,2 +1,2 @@
1
- const e=require(`./RadioButton.module.css.cjs`);let t=require(`react/jsx-runtime`);function n({className:n,...r}){return(0,t.jsx)(`input`,{type:`radio`,className:[e.default.radio,n].filter(Boolean).join(` `),...r})}exports.RadioButton=n;
1
+ const e=require("./RadioButton.module.css.cjs");let t=require("react/jsx-runtime");var n=({className:n,...r})=>(0,t.jsx)(`input`,{type:`radio`,className:[e.default.radio,n].filter(Boolean).join(` `),...r});exports.RadioButton=n;
2
2
  //# sourceMappingURL=RadioButton.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton.cjs","names":[],"sources":["../../../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Single-selection radio button following the GNOME HIG and Adwaita style.\n *\n * Group radio buttons by giving them the same `name` attribute.\n * Renders as `<input type=\"radio\">` — natively keyboard-accessible\n * (arrow keys cycle within the group) and compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html\n */\nexport function RadioButton({ className, ...props }: RadioButtonProps) {\n return (\n <input\n type=\"radio\"\n className={[styles.radio, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n}\n"],"mappings":"mFAkBA,SAAgB,EAAY,CAAE,YAAW,GAAG,GAA2B,CACrE,OACE,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,QACL,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC9D,GAAI,EACJ,CAAA"}
1
+ {"version":3,"file":"RadioButton.cjs","names":[],"sources":["../../../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Single-selection radio button following the GNOME HIG and Adwaita style.\n *\n * Group radio buttons by giving them the same `name` attribute.\n * Renders as `<input type=\"radio\">` — natively keyboard-accessible\n * (arrow keys cycle within the group) and compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html\n */\nexport const RadioButton = ({ className, ...props }: RadioButtonProps) => {\n return (\n <input\n type=\"radio\"\n className={[styles.radio, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n};\n"],"mappings":"mFAkBA,IAAa,GAAe,CAAE,YAAW,GAAG,MAExC,EAAA,EAAA,KAAC,QAAD,CACE,KAAK,QACL,UAAW,CAAC,EAAA,QAAO,MAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7D,GAAI,CACL,CAAA"}
@@ -12,4 +12,4 @@ export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElem
12
12
  *
13
13
  * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html
14
14
  */
15
- export declare function RadioButton({ className, ...props }: RadioButtonProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare const RadioButton: ({ className, ...props }: RadioButtonProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,13 +1,11 @@
1
1
  import e from "./RadioButton.module.css.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region src/components/RadioButton/RadioButton.tsx
4
- function n({ className: n, ...r }) {
5
- return /* @__PURE__ */ t("input", {
6
- type: "radio",
7
- className: [e.radio, n].filter(Boolean).join(" "),
8
- ...r
9
- });
10
- }
4
+ var n = ({ className: n, ...r }) => /* @__PURE__ */ t("input", {
5
+ type: "radio",
6
+ className: [e.radio, n].filter(Boolean).join(" "),
7
+ ...r
8
+ });
11
9
  //#endregion
12
10
  export { n as RadioButton };
13
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton.js","names":[],"sources":["../../../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Single-selection radio button following the GNOME HIG and Adwaita style.\n *\n * Group radio buttons by giving them the same `name` attribute.\n * Renders as `<input type=\"radio\">` — natively keyboard-accessible\n * (arrow keys cycle within the group) and compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html\n */\nexport function RadioButton({ className, ...props }: RadioButtonProps) {\n return (\n <input\n type=\"radio\"\n className={[styles.radio, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n}\n"],"mappings":";;;AAkBA,SAAgB,EAAY,EAAE,cAAW,GAAG,KAA2B;AACrE,QACE,kBAAC,SAAD;EACE,MAAK;EACL,WAAW,CAAC,EAAO,OAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAC9D,GAAI;EACJ,CAAA"}
1
+ {"version":3,"file":"RadioButton.js","names":[],"sources":["../../../src/components/RadioButton/RadioButton.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\n\nimport styles from './RadioButton.module.css';\n\nexport interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Single-selection radio button following the GNOME HIG and Adwaita style.\n *\n * Group radio buttons by giving them the same `name` attribute.\n * Renders as `<input type=\"radio\">` — natively keyboard-accessible\n * (arrow keys cycle within the group) and compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html\n */\nexport const RadioButton = ({ className, ...props }: RadioButtonProps) => {\n return (\n <input\n type=\"radio\"\n className={[styles.radio, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n};\n"],"mappings":";;;AAkBA,IAAa,KAAe,EAAE,cAAW,GAAG,QAExC,kBAAC,SAAD;CACE,MAAK;CACL,WAAW,CAAC,EAAO,OAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;CAC7D,GAAI;AACL,CAAA"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./RadioButton/RadioButton.cjs`);exports.RadioButton=e.RadioButton;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./RadioButton/RadioButton.cjs");exports.RadioButton=e.RadioButton;
@@ -1,2 +1,2 @@
1
- const e=require(`../Icon/Icon.cjs`),t=require(`../Spinner/Spinner.cjs`),n=require(`./SearchBar.module.css.cjs`);let r=require(`react`),i=require(`react-dom`),a=require(`react/jsx-runtime`),o=require(`@gnome-ui/icons`);function s({open:s,onClose:c,onClear:l,children:u,value:d,onChange:f,placeholder:p=`Search…`,disabled:m,inline:h=!1,className:g,suggestions:_,onSuggestionSelect:v,loadingSuggestions:y=!1,renderSuggestion:b,suggestionsLabel:x=`Suggestions`,...S}){let C=(0,r.useRef)(null),w=(0,r.useRef)(null),T=(0,r.useRef)(null),E=(0,r.useId)(),D=(0,r.useId)(),[O,k]=(0,r.useState)(-1),[A,j]=(0,r.useState)(null),M=(_?.length??0)>0,N=s&&(y||M);(0,r.useEffect)(()=>{k(-1)},[]),(0,r.useEffect)(()=>{if(s){let e=requestAnimationFrame(()=>C.current?.focus());return()=>cancelAnimationFrame(e)}},[s]),(0,r.useEffect)(()=>{if(!N||!w.current){j(null);return}function e(){if(!w.current)return;let e=w.current.getBoundingClientRect();j({top:e.bottom,left:e.left,width:e.width})}return e(),window.addEventListener(`scroll`,e,{passive:!0,capture:!0}),window.addEventListener(`resize`,e,{passive:!0}),()=>{window.removeEventListener(`scroll`,e,{capture:!0}),window.removeEventListener(`resize`,e)}},[N]),(0,r.useEffect)(()=>{O<0||!T.current||T.current.children[O]?.scrollIntoView({block:`nearest`})},[O]);let P=(0,r.useCallback)(e=>{if(N&&M&&_){if(e.key===`ArrowDown`){e.preventDefault(),k(e=>Math.min(e+1,_.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),k(e=>Math.max(e-1,-1));return}if(e.key===`Enter`&&O>=0){e.preventDefault(),v?.(_[O]);return}}e.key===`Escape`&&(e.preventDefault(),c?.()),S.onKeyDown?.(e)},[c,S,N,M,_,O,v]),F=d!==void 0&&d!==``,I=O>=0&&_?.[O]?`${D}-${_[O].id}`:void 0,L=N&&A?(0,i.createPortal)((0,a.jsxs)(`ul`,{ref:T,"aria-label":x,id:E,className:n.default.suggestionsPanel,style:{top:A.top,left:A.left,width:A.width},onMouseDown:e=>e.preventDefault(),children:[y&&(0,a.jsx)(`li`,{role:`presentation`,className:n.default.suggestionsLoading,children:(0,a.jsx)(t.Spinner,{size:`sm`,label:`Loading suggestions…`})}),!y&&_?.map((e,t)=>(0,a.jsx)(`li`,{id:`${D}-${e.id}`,"aria-selected":t===O,className:[n.default.suggestionItem,t===O?n.default.suggestionItemActive:null].filter(Boolean).join(` `),onMouseEnter:()=>k(t),onMouseLeave:()=>k(-1),onClick:()=>v?.(e),children:b?b(e):e.label},e.id))]}),document.body):null;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(`div`,{ref:w,className:[n.default.wrapper,s?n.default.open:null,g].filter(Boolean).join(` `),"aria-hidden":!s,children:[(0,a.jsxs)(`div`,{className:[n.default.bar,h?n.default.inline:null,m?n.default.disabled:null].filter(Boolean).join(` `),children:[(0,a.jsx)(`span`,{className:n.default.searchIcon,"aria-hidden":!0,children:(0,a.jsx)(e.Icon,{icon:o.Search,size:`md`})}),(0,a.jsx)(`input`,{ref:C,type:`search`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":N,"aria-controls":N?E:void 0,"aria-activedescendant":I,value:d,onChange:f,placeholder:p,disabled:m,tabIndex:s?void 0:-1,className:n.default.input,onKeyDown:P,...S}),F&&(0,a.jsx)(`button`,{type:`button`,className:n.default.clearButton,"aria-label":`Clear search`,tabIndex:s?void 0:-1,disabled:m,onClick:()=>{l?.(),C.current?.focus()},children:(0,a.jsx)(e.Icon,{icon:o.Close,size:`md`})})]}),u&&(0,a.jsx)(`div`,{className:n.default.filterRow,children:u})]}),typeof document<`u`&&L]})}exports.SearchBar=s;
1
+ const e=require("../Icon/Icon.cjs"),t=require("../Spinner/Spinner.cjs"),n=require("./SearchBar.module.css.cjs");let r=require("react"),i=require("react-dom"),a=require("react/jsx-runtime"),o=require("@gnome-ui/icons");var s=({open:s,onClose:c,onClear:l,children:u,value:d,onChange:f,placeholder:p=`Search…`,disabled:m,inline:h=!1,className:g,suggestions:_,onSuggestionSelect:v,loadingSuggestions:y=!1,renderSuggestion:b,suggestionsLabel:x=`Suggestions`,...S})=>{let C=(0,r.useRef)(null),w=(0,r.useRef)(null),T=(0,r.useRef)(null),E=(0,r.useId)(),D=(0,r.useId)(),[O,k]=(0,r.useState)(-1),[A,j]=(0,r.useState)(null),M=(_?.length??0)>0,N=s&&(y||M);(0,r.useEffect)(()=>{k(-1)},[]),(0,r.useEffect)(()=>{if(s){let e=requestAnimationFrame(()=>C.current?.focus());return()=>cancelAnimationFrame(e)}},[s]),(0,r.useEffect)(()=>{if(!N||!w.current){j(null);return}function e(){if(!w.current)return;let e=w.current.getBoundingClientRect();j({top:e.bottom,left:e.left,width:e.width})}return e(),window.addEventListener(`scroll`,e,{passive:!0,capture:!0}),window.addEventListener(`resize`,e,{passive:!0}),()=>{window.removeEventListener(`scroll`,e,{capture:!0}),window.removeEventListener(`resize`,e)}},[N]),(0,r.useEffect)(()=>{O<0||!T.current||T.current.children[O]?.scrollIntoView({block:`nearest`})},[O]);let P=(0,r.useCallback)(e=>{if(N&&M&&_){if(e.key===`ArrowDown`){e.preventDefault(),k(e=>Math.min(e+1,_.length-1));return}if(e.key===`ArrowUp`){e.preventDefault(),k(e=>Math.max(e-1,-1));return}if(e.key===`Enter`&&O>=0){e.preventDefault(),v?.(_[O]);return}}e.key===`Escape`&&(e.preventDefault(),c?.()),S.onKeyDown?.(e)},[c,S,N,M,_,O,v]),F=d!==void 0&&d!==``,I=O>=0&&_?.[O]?`${D}-${_[O].id}`:void 0,L=N&&A?(0,i.createPortal)((0,a.jsxs)(`ul`,{ref:T,"aria-label":x,id:E,className:n.default.suggestionsPanel,style:{top:A.top,left:A.left,width:A.width},onMouseDown:e=>e.preventDefault(),children:[y&&(0,a.jsx)(`li`,{role:`presentation`,className:n.default.suggestionsLoading,children:(0,a.jsx)(t.Spinner,{size:`sm`,label:`Loading suggestions…`})}),!y&&_?.map((e,t)=>(0,a.jsx)(`li`,{id:`${D}-${e.id}`,"aria-selected":t===O,className:[n.default.suggestionItem,t===O?n.default.suggestionItemActive:null].filter(Boolean).join(` `),onMouseEnter:()=>k(t),onMouseLeave:()=>k(-1),onClick:()=>v?.(e),children:b?b(e):e.label},e.id))]}),document.body):null;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(`div`,{ref:w,className:[n.default.wrapper,s?n.default.open:null,g].filter(Boolean).join(` `),"aria-hidden":!s,children:[(0,a.jsxs)(`div`,{className:[n.default.bar,h?n.default.inline:null,m?n.default.disabled:null].filter(Boolean).join(` `),children:[(0,a.jsx)(`span`,{className:n.default.searchIcon,"aria-hidden":!0,children:(0,a.jsx)(e.Icon,{icon:o.Search,size:`md`})}),(0,a.jsx)(`input`,{ref:C,type:`search`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":N,"aria-controls":N?E:void 0,"aria-activedescendant":I,value:d,onChange:f,placeholder:p,disabled:m,tabIndex:s?void 0:-1,className:n.default.input,onKeyDown:P,...S}),F&&(0,a.jsx)(`button`,{type:`button`,className:n.default.clearButton,"aria-label":`Clear search`,tabIndex:s?void 0:-1,disabled:m,onClick:()=>{l?.(),C.current?.focus()},children:(0,a.jsx)(e.Icon,{icon:o.Close,size:`md`})})]}),u&&(0,a.jsx)(`div`,{className:n.default.filterRow,children:u})]}),typeof document<`u`&&L]})};exports.SearchBar=s;
2
2
  //# sourceMappingURL=SearchBar.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchBar.cjs","names":[],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { Close, Search } from '@gnome-ui/icons';\nimport {\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Icon } from '../Icon';\nimport { Spinner } from '../Spinner';\n\nimport styles from './SearchBar.module.css';\n\nexport interface Suggestion {\n id: string;\n label: string;\n}\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Whether the search bar is visible/expanded.\n * When `false` the bar collapses to zero height and is hidden from AT.\n */\n open: boolean;\n /** Called when the user presses Escape or clicks the clear button with empty value. */\n onClose?: () => void;\n /** Called when the clear (×) button is clicked. Also clears the input value. */\n onClear?: () => void;\n /**\n * Content to render below the search bar (e.g. filter chips).\n * Only visible while `open` is true.\n */\n children?: ReactNode;\n /**\n * Removes the header-bar background so the bar blends into any surface.\n * Mirrors the `.inline` style class.\n */\n inline?: boolean;\n /** Suggestion items to show in the autocomplete popover. */\n suggestions?: Suggestion[];\n /** Called when the user selects a suggestion. */\n onSuggestionSelect?: (item: Suggestion) => void;\n /** Shows a spinner inside the suggestions popover while fetching async results. */\n loadingSuggestions?: boolean;\n /** Custom row renderer for each suggestion. */\n renderSuggestion?: (item: Suggestion) => ReactNode;\n /** `aria-label` for the suggestions listbox. Defaults to `\"Suggestions\"`. */\n suggestionsLabel?: string;\n}\n\ninterface DropdownPos {\n top: number;\n left: number;\n width: number;\n}\n\n/**\n * Collapsible search bar following the Adwaita `AdwSearchBar` pattern.\n *\n * - Slides in/out with a CSS height transition.\n * - Auto-focuses the input when `open` becomes `true`.\n * - Escape key calls `onClose`.\n * - Shows a clear (×) button whenever the input has a value.\n * - Optional `suggestions` / `loadingSuggestions` props show an autocomplete\n * popover anchored below the bar — follows the GTK4 pattern of\n * `AdwSearchBar` + `GtkPopover` + `GtkListView` (replaces `GtkEntryCompletion`).\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SearchBar.html\n */\nexport function SearchBar({\n open,\n onClose,\n onClear,\n children,\n value,\n onChange,\n placeholder = 'Search…',\n disabled,\n inline = false,\n className,\n suggestions,\n onSuggestionSelect,\n loadingSuggestions = false,\n renderSuggestion,\n suggestionsLabel = 'Suggestions',\n ...props\n}: SearchBarProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const listboxRef = useRef<HTMLUListElement>(null);\n\n const listboxId = useId();\n const optionIdPrefix = useId();\n\n const [activeIndex, setActiveIndex] = useState(-1);\n const [dropdownPos, setDropdownPos] = useState<DropdownPos | null>(null);\n\n const hasSuggestions = (suggestions?.length ?? 0) > 0;\n const showDropdown = open && (loadingSuggestions || hasSuggestions);\n\n // Reset active index whenever the suggestion list changes\n useEffect(() => {\n setActiveIndex(-1);\n }, []);\n\n // Auto-focus when opening\n useEffect(() => {\n if (open) {\n const id = requestAnimationFrame(() => inputRef.current?.focus());\n\n return () => cancelAnimationFrame(id);\n }\n }, [open]);\n\n // Position the suggestions dropdown below the wrapper\n useEffect(() => {\n if (!showDropdown || !wrapperRef.current) {\n setDropdownPos(null);\n\n return;\n }\n\n function updatePos() {\n if (!wrapperRef.current) {\n return;\n }\n\n const r = wrapperRef.current.getBoundingClientRect();\n\n setDropdownPos({ top: r.bottom, left: r.left, width: r.width });\n }\n updatePos();\n window.addEventListener('scroll', updatePos, { passive: true, capture: true });\n window.addEventListener('resize', updatePos, { passive: true });\n\n return () => {\n window.removeEventListener('scroll', updatePos, { capture: true });\n window.removeEventListener('resize', updatePos);\n };\n }, [showDropdown]);\n\n // Scroll the active option into view\n useEffect(() => {\n if (activeIndex < 0 || !listboxRef.current) {\n return;\n }\n\n (listboxRef.current.children[activeIndex] as HTMLElement | undefined)?.scrollIntoView({\n block: 'nearest',\n });\n }, [activeIndex]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (showDropdown && hasSuggestions && suggestions) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(i + 1, suggestions.length - 1));\n\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(i - 1, -1));\n\n return;\n }\n\n if (e.key === 'Enter' && activeIndex >= 0) {\n e.preventDefault();\n onSuggestionSelect?.(suggestions[activeIndex]);\n\n return;\n }\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n }\n\n props.onKeyDown?.(e);\n },\n [onClose, props, showDropdown, hasSuggestions, suggestions, activeIndex, onSuggestionSelect],\n );\n\n const hasValue = value !== undefined && value !== '';\n const activeOptionId =\n activeIndex >= 0 && suggestions?.[activeIndex]\n ? `${optionIdPrefix}-${suggestions[activeIndex].id}`\n : undefined;\n\n const dropdown =\n showDropdown && dropdownPos\n ? createPortal(\n <ul\n ref={listboxRef}\n aria-label={suggestionsLabel}\n id={listboxId}\n className={styles.suggestionsPanel}\n style={{ top: dropdownPos.top, left: dropdownPos.left, width: dropdownPos.width }}\n onMouseDown={(e) => e.preventDefault()} // keep focus on input\n >\n {loadingSuggestions && (\n <li role=\"presentation\" className={styles.suggestionsLoading}>\n <Spinner size=\"sm\" label=\"Loading suggestions…\" />\n </li>\n )}\n {!loadingSuggestions &&\n suggestions?.map((item, index) => (\n <li\n key={item.id}\n id={`${optionIdPrefix}-${item.id}`}\n aria-selected={index === activeIndex}\n className={[\n styles.suggestionItem,\n index === activeIndex ? styles.suggestionItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseLeave={() => setActiveIndex(-1)}\n onClick={() => onSuggestionSelect?.(item)}\n >\n {renderSuggestion ? renderSuggestion(item) : item.label}\n </li>\n ))}\n </ul>,\n document.body,\n )\n : null;\n\n return (\n <>\n <div\n ref={wrapperRef}\n className={[styles.wrapper, open ? styles.open : null, className].filter(Boolean).join(' ')}\n aria-hidden={!open}\n >\n <div\n className={[styles.bar, inline ? styles.inline : null, disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(' ')}\n >\n <span className={styles.searchIcon} aria-hidden>\n <Icon icon={Search} size=\"md\" />\n </span>\n\n <input\n ref={inputRef}\n type=\"search\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? listboxId : undefined}\n aria-activedescendant={activeOptionId}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n tabIndex={open ? undefined : -1}\n className={styles.input}\n onKeyDown={handleKeyDown}\n {...props}\n />\n\n {hasValue && (\n <button\n type=\"button\"\n className={styles.clearButton}\n aria-label=\"Clear search\"\n tabIndex={open ? undefined : -1}\n disabled={disabled}\n onClick={() => {\n onClear?.();\n inputRef.current?.focus();\n }}\n >\n <Icon icon={Close} size=\"md\" />\n </button>\n )}\n </div>\n\n {children && <div className={styles.filterRow}>{children}</div>}\n </div>\n\n {typeof document !== 'undefined' && dropdown}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SearchBar.cjs","names":[],"sources":["../../../src/components/SearchBar/SearchBar.tsx"],"sourcesContent":["import { Close, Search } from '@gnome-ui/icons';\nimport {\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Icon } from '../Icon';\nimport { Spinner } from '../Spinner';\n\nimport styles from './SearchBar.module.css';\n\nexport interface Suggestion {\n id: string;\n label: string;\n}\n\nexport interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Whether the search bar is visible/expanded.\n * When `false` the bar collapses to zero height and is hidden from AT.\n */\n open: boolean;\n /** Called when the user presses Escape or clicks the clear button with empty value. */\n onClose?: () => void;\n /** Called when the clear (×) button is clicked. Also clears the input value. */\n onClear?: () => void;\n /**\n * Content to render below the search bar (e.g. filter chips).\n * Only visible while `open` is true.\n */\n children?: ReactNode;\n /**\n * Removes the header-bar background so the bar blends into any surface.\n * Mirrors the `.inline` style class.\n */\n inline?: boolean;\n /** Suggestion items to show in the autocomplete popover. */\n suggestions?: Suggestion[];\n /** Called when the user selects a suggestion. */\n onSuggestionSelect?: (item: Suggestion) => void;\n /** Shows a spinner inside the suggestions popover while fetching async results. */\n loadingSuggestions?: boolean;\n /** Custom row renderer for each suggestion. */\n renderSuggestion?: (item: Suggestion) => ReactNode;\n /** `aria-label` for the suggestions listbox. Defaults to `\"Suggestions\"`. */\n suggestionsLabel?: string;\n}\n\ninterface DropdownPos {\n top: number;\n left: number;\n width: number;\n}\n\n/**\n * Collapsible search bar following the Adwaita `AdwSearchBar` pattern.\n *\n * - Slides in/out with a CSS height transition.\n * - Auto-focuses the input when `open` becomes `true`.\n * - Escape key calls `onClose`.\n * - Shows a clear (×) button whenever the input has a value.\n * - Optional `suggestions` / `loadingSuggestions` props show an autocomplete\n * popover anchored below the bar — follows the GTK4 pattern of\n * `AdwSearchBar` + `GtkPopover` + `GtkListView` (replaces `GtkEntryCompletion`).\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SearchBar.html\n */\nexport const SearchBar = ({\n open,\n onClose,\n onClear,\n children,\n value,\n onChange,\n placeholder = 'Search…',\n disabled,\n inline = false,\n className,\n suggestions,\n onSuggestionSelect,\n loadingSuggestions = false,\n renderSuggestion,\n suggestionsLabel = 'Suggestions',\n ...props\n}: SearchBarProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const listboxRef = useRef<HTMLUListElement>(null);\n\n const listboxId = useId();\n const optionIdPrefix = useId();\n\n const [activeIndex, setActiveIndex] = useState(-1);\n const [dropdownPos, setDropdownPos] = useState<DropdownPos | null>(null);\n\n const hasSuggestions = (suggestions?.length ?? 0) > 0;\n const showDropdown = open && (loadingSuggestions || hasSuggestions);\n\n // Reset active index whenever the suggestion list changes\n useEffect(() => {\n setActiveIndex(-1);\n }, []);\n\n // Auto-focus when opening\n useEffect(() => {\n if (open) {\n const id = requestAnimationFrame(() => inputRef.current?.focus());\n\n return () => cancelAnimationFrame(id);\n }\n }, [open]);\n\n // Position the suggestions dropdown below the wrapper\n useEffect(() => {\n if (!showDropdown || !wrapperRef.current) {\n setDropdownPos(null);\n\n return;\n }\n\n function updatePos() {\n if (!wrapperRef.current) {\n return;\n }\n\n const r = wrapperRef.current.getBoundingClientRect();\n\n setDropdownPos({ top: r.bottom, left: r.left, width: r.width });\n }\n updatePos();\n window.addEventListener('scroll', updatePos, { passive: true, capture: true });\n window.addEventListener('resize', updatePos, { passive: true });\n\n return () => {\n window.removeEventListener('scroll', updatePos, { capture: true });\n window.removeEventListener('resize', updatePos);\n };\n }, [showDropdown]);\n\n // Scroll the active option into view\n useEffect(() => {\n if (activeIndex < 0 || !listboxRef.current) {\n return;\n }\n\n (listboxRef.current.children[activeIndex] as HTMLElement | undefined)?.scrollIntoView({\n block: 'nearest',\n });\n }, [activeIndex]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (showDropdown && hasSuggestions && suggestions) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setActiveIndex((i) => Math.min(i + 1, suggestions.length - 1));\n\n return;\n }\n\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActiveIndex((i) => Math.max(i - 1, -1));\n\n return;\n }\n\n if (e.key === 'Enter' && activeIndex >= 0) {\n e.preventDefault();\n onSuggestionSelect?.(suggestions[activeIndex]);\n\n return;\n }\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose?.();\n }\n\n props.onKeyDown?.(e);\n },\n [onClose, props, showDropdown, hasSuggestions, suggestions, activeIndex, onSuggestionSelect],\n );\n\n const hasValue = value !== undefined && value !== '';\n const activeOptionId =\n activeIndex >= 0 && suggestions?.[activeIndex]\n ? `${optionIdPrefix}-${suggestions[activeIndex].id}`\n : undefined;\n\n const dropdown =\n showDropdown && dropdownPos\n ? createPortal(\n <ul\n ref={listboxRef}\n aria-label={suggestionsLabel}\n id={listboxId}\n className={styles.suggestionsPanel}\n style={{ top: dropdownPos.top, left: dropdownPos.left, width: dropdownPos.width }}\n onMouseDown={(e) => e.preventDefault()} // keep focus on input\n >\n {loadingSuggestions && (\n <li role=\"presentation\" className={styles.suggestionsLoading}>\n <Spinner size=\"sm\" label=\"Loading suggestions…\" />\n </li>\n )}\n {!loadingSuggestions &&\n suggestions?.map((item, index) => (\n <li\n key={item.id}\n id={`${optionIdPrefix}-${item.id}`}\n aria-selected={index === activeIndex}\n className={[\n styles.suggestionItem,\n index === activeIndex ? styles.suggestionItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onMouseEnter={() => setActiveIndex(index)}\n onMouseLeave={() => setActiveIndex(-1)}\n onClick={() => onSuggestionSelect?.(item)}\n >\n {renderSuggestion ? renderSuggestion(item) : item.label}\n </li>\n ))}\n </ul>,\n document.body,\n )\n : null;\n\n return (\n <>\n <div\n ref={wrapperRef}\n className={[styles.wrapper, open ? styles.open : null, className].filter(Boolean).join(' ')}\n aria-hidden={!open}\n >\n <div\n className={[styles.bar, inline ? styles.inline : null, disabled ? styles.disabled : null]\n .filter(Boolean)\n .join(' ')}\n >\n <span className={styles.searchIcon} aria-hidden>\n <Icon icon={Search} size=\"md\" />\n </span>\n\n <input\n ref={inputRef}\n type=\"search\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showDropdown}\n aria-controls={showDropdown ? listboxId : undefined}\n aria-activedescendant={activeOptionId}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n tabIndex={open ? undefined : -1}\n className={styles.input}\n onKeyDown={handleKeyDown}\n {...props}\n />\n\n {hasValue && (\n <button\n type=\"button\"\n className={styles.clearButton}\n aria-label=\"Clear search\"\n tabIndex={open ? undefined : -1}\n disabled={disabled}\n onClick={() => {\n onClear?.();\n inputRef.current?.focus();\n }}\n >\n <Icon icon={Close} size=\"md\" />\n </button>\n )}\n </div>\n\n {children && <div className={styles.filterRow}>{children}</div>}\n </div>\n\n {typeof document !== 'undefined' && dropdown}\n </>\n );\n};\n"],"mappings":"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"}
@@ -47,4 +47,4 @@ export interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElemen
47
47
  *
48
48
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SearchBar.html
49
49
  */
50
- export declare function SearchBar({ open, onClose, onClear, children, value, onChange, placeholder, disabled, inline, className, suggestions, onSuggestionSelect, loadingSuggestions, renderSuggestion, suggestionsLabel, ...props }: SearchBarProps): import("react/jsx-runtime").JSX.Element;
50
+ export declare const SearchBar: ({ open, onClose, onClear, children, value, onChange, placeholder, disabled, inline, className, suggestions, onSuggestionSelect, loadingSuggestions, renderSuggestion, suggestionsLabel, ...props }: SearchBarProps) => import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@ import { createPortal as c } from "react-dom";
6
6
  import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
7
7
  import { Close as f, Search as p } from "@gnome-ui/icons";
8
8
  //#region src/components/SearchBar/SearchBar.tsx
9
- function m({ open: m, onClose: h, onClear: g, children: _, value: v, onChange: y, placeholder: b = "Search…", disabled: x, inline: S = !1, className: C, suggestions: w, onSuggestionSelect: T, loadingSuggestions: E = !1, renderSuggestion: D, suggestionsLabel: O = "Suggestions", ...k }) {
9
+ var m = ({ open: m, onClose: h, onClear: g, children: _, value: v, onChange: y, placeholder: b = "Search…", disabled: x, inline: S = !1, className: C, suggestions: w, onSuggestionSelect: T, loadingSuggestions: E = !1, renderSuggestion: D, suggestionsLabel: O = "Suggestions", ...k }) => {
10
10
  let A = o(null), j = o(null), M = o(null), N = a(), P = a(), [F, I] = s(-1), [L, R] = s(null), z = (w?.length ?? 0) > 0, B = m && (E || z);
11
11
  i(() => {
12
12
  I(-1);
@@ -150,7 +150,7 @@ function m({ open: m, onClose: h, onClear: g, children: _, value: v, onChange: y
150
150
  children: _
151
151
  })]
152
152
  }), typeof document < "u" && W] });
153
- }
153
+ };
154
154
  //#endregion
155
155
  export { m as SearchBar };
156
156