@gnome-ui/react 1.45.0 → 1.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/dist/components/AboutDialog/AboutDialog.cjs +1 -1
  2. package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -1
  3. package/dist/components/AboutDialog/AboutDialog.js +1 -1
  4. package/dist/components/AboutDialog/AboutDialog.js.map +1 -1
  5. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
  6. package/dist/components/AboutDialog/AboutDialog.module.css.cjs.map +1 -1
  7. package/dist/components/AboutDialog/AboutDialog.module.css.js +3 -3
  8. package/dist/components/AboutDialog/AboutDialog.module.css.js.map +1 -1
  9. package/dist/components/AboutDialog/index.d.ts +1 -1
  10. package/dist/components/ActionRow/ActionRow.cjs.map +1 -1
  11. package/dist/components/ActionRow/ActionRow.d.ts +1 -1
  12. package/dist/components/ActionRow/ActionRow.js.map +1 -1
  13. package/dist/components/ActionRow/ActionRow.module.css.cjs +1 -1
  14. package/dist/components/ActionRow/ActionRow.module.css.cjs.map +1 -1
  15. package/dist/components/ActionRow/ActionRow.module.css.js +9 -9
  16. package/dist/components/ActionRow/ActionRow.module.css.js.map +1 -1
  17. package/dist/components/ActionRow/index.d.ts +1 -1
  18. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  19. package/dist/components/Avatar/Avatar.d.ts +2 -2
  20. package/dist/components/Avatar/Avatar.js.map +1 -1
  21. package/dist/components/Avatar/Avatar.module.css.cjs +1 -1
  22. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -1
  23. package/dist/components/Avatar/Avatar.module.css.js +16 -16
  24. package/dist/components/Avatar/Avatar.module.css.js.map +1 -1
  25. package/dist/components/Avatar/index.d.ts +1 -1
  26. package/dist/components/AvatarRotator/AvatarRotator.cjs.map +1 -1
  27. package/dist/components/AvatarRotator/AvatarRotator.js.map +1 -1
  28. package/dist/components/AvatarRotator/index.d.ts +1 -1
  29. package/dist/components/Badge/Badge.cjs.map +1 -1
  30. package/dist/components/Badge/Badge.d.ts +1 -1
  31. package/dist/components/Badge/Badge.js.map +1 -1
  32. package/dist/components/Badge/Badge.module.css.cjs +1 -1
  33. package/dist/components/Badge/Badge.module.css.cjs.map +1 -1
  34. package/dist/components/Badge/Badge.module.css.js +9 -9
  35. package/dist/components/Badge/Badge.module.css.js.map +1 -1
  36. package/dist/components/Badge/index.d.ts +1 -1
  37. package/dist/components/Banner/Banner.cjs.map +1 -1
  38. package/dist/components/Banner/Banner.d.ts +1 -1
  39. package/dist/components/Banner/Banner.js.map +1 -1
  40. package/dist/components/Banner/Banner.module.css.cjs +1 -1
  41. package/dist/components/Banner/Banner.module.css.cjs.map +1 -1
  42. package/dist/components/Banner/Banner.module.css.js +5 -5
  43. package/dist/components/Banner/Banner.module.css.js.map +1 -1
  44. package/dist/components/Banner/index.d.ts +1 -1
  45. package/dist/components/Bin/Bin.cjs.map +1 -1
  46. package/dist/components/Bin/Bin.js.map +1 -1
  47. package/dist/components/Bin/index.d.ts +1 -1
  48. package/dist/components/Blockquote/Blockquote.cjs.map +1 -1
  49. package/dist/components/Blockquote/Blockquote.d.ts +1 -1
  50. package/dist/components/Blockquote/Blockquote.js.map +1 -1
  51. package/dist/components/Blockquote/Blockquote.module.css.cjs +1 -1
  52. package/dist/components/Blockquote/Blockquote.module.css.cjs.map +1 -1
  53. package/dist/components/Blockquote/Blockquote.module.css.js +11 -11
  54. package/dist/components/Blockquote/Blockquote.module.css.js.map +1 -1
  55. package/dist/components/Blockquote/index.d.ts +1 -1
  56. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  57. package/dist/components/BottomSheet/BottomSheet.d.ts +1 -1
  58. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  59. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
  60. package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -1
  61. package/dist/components/BottomSheet/BottomSheet.module.css.js +3 -3
  62. package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -1
  63. package/dist/components/BottomSheet/index.d.ts +1 -1
  64. package/dist/components/Box/Box.cjs.map +1 -1
  65. package/dist/components/Box/Box.d.ts +3 -3
  66. package/dist/components/Box/Box.js.map +1 -1
  67. package/dist/components/Box/index.d.ts +1 -1
  68. package/dist/components/BoxedList/BoxedList.cjs +1 -1
  69. package/dist/components/BoxedList/BoxedList.cjs.map +1 -1
  70. package/dist/components/BoxedList/BoxedList.d.ts +1 -1
  71. package/dist/components/BoxedList/BoxedList.js +0 -1
  72. package/dist/components/BoxedList/BoxedList.js.map +1 -1
  73. package/dist/components/BoxedList/BoxedList.module.css.cjs +1 -1
  74. package/dist/components/BoxedList/BoxedList.module.css.cjs.map +1 -1
  75. package/dist/components/BoxedList/BoxedList.module.css.js +5 -5
  76. package/dist/components/BoxedList/BoxedList.module.css.js.map +1 -1
  77. package/dist/components/BoxedList/index.d.ts +1 -1
  78. package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
  79. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
  80. package/dist/components/BreakpointBin/BreakpointBin.d.ts +1 -1
  81. package/dist/components/BreakpointBin/BreakpointBin.js +1 -1
  82. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
  83. package/dist/components/BreakpointBin/index.d.ts +1 -1
  84. package/dist/components/Button/Button.cjs.map +1 -1
  85. package/dist/components/Button/Button.d.ts +3 -3
  86. package/dist/components/Button/Button.js.map +1 -1
  87. package/dist/components/Button/Button.module.css.cjs +1 -1
  88. package/dist/components/Button/Button.module.css.cjs.map +1 -1
  89. package/dist/components/Button/Button.module.css.js +11 -11
  90. package/dist/components/Button/Button.module.css.js.map +1 -1
  91. package/dist/components/Button/index.d.ts +1 -1
  92. package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -1
  93. package/dist/components/ButtonContent/ButtonContent.d.ts +1 -1
  94. package/dist/components/ButtonContent/ButtonContent.js.map +1 -1
  95. package/dist/components/ButtonContent/index.d.ts +1 -1
  96. package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -1
  97. package/dist/components/ButtonRow/ButtonRow.d.ts +1 -1
  98. package/dist/components/ButtonRow/ButtonRow.js.map +1 -1
  99. package/dist/components/ButtonRow/ButtonRow.module.css.cjs +1 -1
  100. package/dist/components/ButtonRow/ButtonRow.module.css.cjs.map +1 -1
  101. package/dist/components/ButtonRow/ButtonRow.module.css.js +7 -7
  102. package/dist/components/ButtonRow/ButtonRow.module.css.js.map +1 -1
  103. package/dist/components/ButtonRow/index.d.ts +1 -1
  104. package/dist/components/Card/Card.cjs.map +1 -1
  105. package/dist/components/Card/Card.d.ts +1 -1
  106. package/dist/components/Card/Card.js.map +1 -1
  107. package/dist/components/Card/Card.module.css.cjs +1 -1
  108. package/dist/components/Card/Card.module.css.cjs.map +1 -1
  109. package/dist/components/Card/Card.module.css.js +5 -5
  110. package/dist/components/Card/Card.module.css.js.map +1 -1
  111. package/dist/components/Card/index.d.ts +1 -1
  112. package/dist/components/Carousel/Carousel.cjs +1 -1
  113. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  114. package/dist/components/Carousel/Carousel.d.ts +1 -1
  115. package/dist/components/Carousel/Carousel.js +7 -6
  116. package/dist/components/Carousel/Carousel.js.map +1 -1
  117. package/dist/components/Carousel/Carousel.module.css.cjs +1 -1
  118. package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -1
  119. package/dist/components/Carousel/Carousel.module.css.js +10 -10
  120. package/dist/components/Carousel/Carousel.module.css.js.map +1 -1
  121. package/dist/components/Carousel/index.d.ts +1 -1
  122. package/dist/components/CheckRow/CheckRow.cjs.map +1 -1
  123. package/dist/components/CheckRow/CheckRow.d.ts +1 -1
  124. package/dist/components/CheckRow/CheckRow.js.map +1 -1
  125. package/dist/components/CheckRow/CheckRow.module.css.cjs +1 -1
  126. package/dist/components/CheckRow/CheckRow.module.css.cjs.map +1 -1
  127. package/dist/components/CheckRow/CheckRow.module.css.js +10 -10
  128. package/dist/components/CheckRow/CheckRow.module.css.js.map +1 -1
  129. package/dist/components/CheckRow/index.d.ts +1 -1
  130. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  131. package/dist/components/Checkbox/Checkbox.d.ts +2 -2
  132. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  133. package/dist/components/Checkbox/Checkbox.module.css.cjs +1 -1
  134. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -1
  135. package/dist/components/Checkbox/Checkbox.module.css.js +1 -1
  136. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -1
  137. package/dist/components/Checkbox/index.d.ts +1 -1
  138. package/dist/components/Chip/Chip.cjs.map +1 -1
  139. package/dist/components/Chip/Chip.d.ts +1 -1
  140. package/dist/components/Chip/Chip.js.map +1 -1
  141. package/dist/components/Chip/Chip.module.css.cjs +1 -1
  142. package/dist/components/Chip/Chip.module.css.cjs.map +1 -1
  143. package/dist/components/Chip/Chip.module.css.js +7 -7
  144. package/dist/components/Chip/Chip.module.css.js.map +1 -1
  145. package/dist/components/Chip/index.d.ts +1 -1
  146. package/dist/components/Clamp/Clamp.cjs.map +1 -1
  147. package/dist/components/Clamp/Clamp.js.map +1 -1
  148. package/dist/components/Clamp/index.d.ts +1 -1
  149. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
  150. package/dist/components/ColorPicker/ColorPicker.d.ts +6 -6
  151. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  152. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
  153. package/dist/components/ColorPicker/ColorPicker.module.css.cjs.map +1 -1
  154. package/dist/components/ColorPicker/ColorPicker.module.css.js +4 -4
  155. package/dist/components/ColorPicker/ColorPicker.module.css.js.map +1 -1
  156. package/dist/components/ColorPicker/index.d.ts +1 -1
  157. package/dist/components/ColumnView/ColumnView.cjs +1 -1
  158. package/dist/components/ColumnView/ColumnView.cjs.map +1 -1
  159. package/dist/components/ColumnView/ColumnView.d.ts +3 -3
  160. package/dist/components/ColumnView/ColumnView.js +2 -5
  161. package/dist/components/ColumnView/ColumnView.js.map +1 -1
  162. package/dist/components/ColumnView/ColumnView.module.css.cjs +1 -1
  163. package/dist/components/ColumnView/ColumnView.module.css.cjs.map +1 -1
  164. package/dist/components/ColumnView/ColumnView.module.css.js +22 -22
  165. package/dist/components/ColumnView/ColumnView.module.css.js.map +1 -1
  166. package/dist/components/ColumnView/index.d.ts +1 -1
  167. package/dist/components/ComboRow/ComboRow.cjs +1 -1
  168. package/dist/components/ComboRow/ComboRow.cjs.map +1 -1
  169. package/dist/components/ComboRow/ComboRow.d.ts +1 -1
  170. package/dist/components/ComboRow/ComboRow.js +0 -2
  171. package/dist/components/ComboRow/ComboRow.js.map +1 -1
  172. package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
  173. package/dist/components/ComboRow/ComboRow.module.css.cjs.map +1 -1
  174. package/dist/components/ComboRow/ComboRow.module.css.js +3 -3
  175. package/dist/components/ComboRow/ComboRow.module.css.js.map +1 -1
  176. package/dist/components/ComboRow/index.d.ts +1 -1
  177. package/dist/components/ContributionGraph/ContributionGraph.cjs +1 -1
  178. package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -1
  179. package/dist/components/ContributionGraph/ContributionGraph.js +41 -41
  180. package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -1
  181. package/dist/components/ContributionGraph/index.d.ts +1 -1
  182. package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -1
  183. package/dist/components/CountDownTimer/CountDownTimer.d.ts +3 -3
  184. package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -1
  185. package/dist/components/CountDownTimer/index.d.ts +1 -1
  186. package/dist/components/Dialog/Dialog.cjs.map +1 -1
  187. package/dist/components/Dialog/Dialog.d.ts +4 -4
  188. package/dist/components/Dialog/Dialog.js.map +1 -1
  189. package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
  190. package/dist/components/Dialog/Dialog.module.css.cjs.map +1 -1
  191. package/dist/components/Dialog/Dialog.module.css.js +6 -6
  192. package/dist/components/Dialog/Dialog.module.css.js.map +1 -1
  193. package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
  194. package/dist/components/Dialog/dialogUtils.js.map +1 -1
  195. package/dist/components/Dialog/index.d.ts +1 -1
  196. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  197. package/dist/components/Drawer/Drawer.d.ts +3 -3
  198. package/dist/components/Drawer/Drawer.js.map +1 -1
  199. package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
  200. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -1
  201. package/dist/components/Drawer/Drawer.module.css.js +4 -4
  202. package/dist/components/Drawer/Drawer.module.css.js.map +1 -1
  203. package/dist/components/Drawer/index.d.ts +1 -1
  204. package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
  205. package/dist/components/Dropdown/Dropdown.d.ts +2 -2
  206. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  207. package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
  208. package/dist/components/Dropdown/Dropdown.module.css.cjs.map +1 -1
  209. package/dist/components/Dropdown/Dropdown.module.css.js +3 -3
  210. package/dist/components/Dropdown/Dropdown.module.css.js.map +1 -1
  211. package/dist/components/Dropdown/index.d.ts +1 -1
  212. package/dist/components/EntryRow/EntryRow.cjs.map +1 -1
  213. package/dist/components/EntryRow/EntryRow.js.map +1 -1
  214. package/dist/components/EntryRow/EntryRow.module.css.cjs +1 -1
  215. package/dist/components/EntryRow/EntryRow.module.css.cjs.map +1 -1
  216. package/dist/components/EntryRow/EntryRow.module.css.js +10 -10
  217. package/dist/components/EntryRow/EntryRow.module.css.js.map +1 -1
  218. package/dist/components/EntryRow/index.d.ts +1 -1
  219. package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -1
  220. package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -1
  221. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs +1 -1
  222. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs.map +1 -1
  223. package/dist/components/ExpanderRow/ExpanderRow.module.css.js +14 -14
  224. package/dist/components/ExpanderRow/ExpanderRow.module.css.js.map +1 -1
  225. package/dist/components/ExpanderRow/index.d.ts +1 -1
  226. package/dist/components/Footer/Footer.cjs.map +1 -1
  227. package/dist/components/Footer/Footer.js.map +1 -1
  228. package/dist/components/Footer/index.d.ts +1 -1
  229. package/dist/components/Frame/Frame.cjs.map +1 -1
  230. package/dist/components/Frame/Frame.js.map +1 -1
  231. package/dist/components/Frame/index.d.ts +1 -1
  232. package/dist/components/GnomeProvider/GnomeContext.cjs.map +1 -1
  233. package/dist/components/GnomeProvider/GnomeContext.d.ts +5 -5
  234. package/dist/components/GnomeProvider/GnomeContext.js.map +1 -1
  235. package/dist/components/GnomeProvider/GnomeProvider.cjs.map +1 -1
  236. package/dist/components/GnomeProvider/GnomeProvider.js.map +1 -1
  237. package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -1
  238. package/dist/components/HeaderBar/HeaderBar.d.ts +1 -1
  239. package/dist/components/HeaderBar/HeaderBar.js.map +1 -1
  240. package/dist/components/HeaderBar/index.d.ts +1 -1
  241. package/dist/components/Icon/Icon.cjs.map +1 -1
  242. package/dist/components/Icon/Icon.d.ts +2 -2
  243. package/dist/components/Icon/Icon.js.map +1 -1
  244. package/dist/components/Icon/index.d.ts +1 -1
  245. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  246. package/dist/components/IconButton/IconButton.d.ts +2 -2
  247. package/dist/components/IconButton/IconButton.js.map +1 -1
  248. package/dist/components/IconButton/index.d.ts +1 -1
  249. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
  250. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
  251. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +3 -3
  252. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +8 -8
  253. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
  254. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs +1 -1
  255. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs.map +1 -1
  256. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js +10 -10
  257. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js.map +1 -1
  258. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -1
  259. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +1 -1
  260. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -1
  261. package/dist/components/InlineViewSwitcher/index.d.ts +2 -2
  262. package/dist/components/Link/Link.cjs.map +1 -1
  263. package/dist/components/Link/Link.js.map +1 -1
  264. package/dist/components/Link/Link.module.css.cjs +1 -1
  265. package/dist/components/Link/Link.module.css.cjs.map +1 -1
  266. package/dist/components/Link/Link.module.css.js +2 -2
  267. package/dist/components/Link/Link.module.css.js.map +1 -1
  268. package/dist/components/Link/index.d.ts +1 -1
  269. package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -1
  270. package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -1
  271. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs +1 -1
  272. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs.map +1 -1
  273. package/dist/components/LinkedGroup/LinkedGroup.module.css.js +2 -2
  274. package/dist/components/LinkedGroup/LinkedGroup.module.css.js.map +1 -1
  275. package/dist/components/LinkedGroup/index.d.ts +1 -1
  276. package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -1
  277. package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +1 -1
  278. package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -1
  279. package/dist/components/NavigationSplitView/index.d.ts +1 -1
  280. package/dist/components/NavigationView/NavigationView.cjs.map +1 -1
  281. package/dist/components/NavigationView/NavigationView.d.ts +2 -2
  282. package/dist/components/NavigationView/NavigationView.js.map +1 -1
  283. package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
  284. package/dist/components/NavigationView/NavigationView.module.css.cjs.map +1 -1
  285. package/dist/components/NavigationView/NavigationView.module.css.js +3 -3
  286. package/dist/components/NavigationView/NavigationView.module.css.js.map +1 -1
  287. package/dist/components/NavigationView/index.d.ts +2 -2
  288. package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -1
  289. package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +2 -2
  290. package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -1
  291. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs +1 -1
  292. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs.map +1 -1
  293. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js +12 -12
  294. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js.map +1 -1
  295. package/dist/components/OverlaySplitView/index.d.ts +1 -1
  296. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -1
  297. package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +1 -1
  298. package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -1
  299. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs +1 -1
  300. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs.map +1 -1
  301. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js +1 -1
  302. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js.map +1 -1
  303. package/dist/components/PasswordEntryRow/index.d.ts +1 -1
  304. package/dist/components/PathBar/PathBar.cjs.map +1 -1
  305. package/dist/components/PathBar/PathBar.js.map +1 -1
  306. package/dist/components/PathBar/PathBar.module.css.cjs +1 -1
  307. package/dist/components/PathBar/PathBar.module.css.cjs.map +1 -1
  308. package/dist/components/PathBar/PathBar.module.css.js +7 -7
  309. package/dist/components/PathBar/PathBar.module.css.js.map +1 -1
  310. package/dist/components/PathBar/index.d.ts +1 -1
  311. package/dist/components/Popover/Popover.cjs.map +1 -1
  312. package/dist/components/Popover/Popover.d.ts +2 -2
  313. package/dist/components/Popover/Popover.js.map +1 -1
  314. package/dist/components/Popover/Popover.module.css.cjs +1 -1
  315. package/dist/components/Popover/Popover.module.css.cjs.map +1 -1
  316. package/dist/components/Popover/Popover.module.css.js +7 -7
  317. package/dist/components/Popover/Popover.module.css.js.map +1 -1
  318. package/dist/components/Popover/index.d.ts +1 -1
  319. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
  320. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
  321. package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +1 -1
  322. package/dist/components/PreferencesDialog/PreferencesDialog.js +0 -1
  323. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
  324. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
  325. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs.map +1 -1
  326. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +3 -3
  327. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js.map +1 -1
  328. package/dist/components/PreferencesDialog/index.d.ts +1 -1
  329. package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -1
  330. package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -1
  331. package/dist/components/PreferencesGroup/index.d.ts +1 -1
  332. package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -1
  333. package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -1
  334. package/dist/components/PreferencesPage/index.d.ts +1 -1
  335. package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -1
  336. package/dist/components/ProgressBar/ProgressBar.d.ts +4 -4
  337. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  338. package/dist/components/ProgressBar/ProgressBar.module.css.cjs +1 -1
  339. package/dist/components/ProgressBar/ProgressBar.module.css.cjs.map +1 -1
  340. package/dist/components/ProgressBar/ProgressBar.module.css.js +8 -8
  341. package/dist/components/ProgressBar/ProgressBar.module.css.js.map +1 -1
  342. package/dist/components/ProgressBar/index.d.ts +1 -1
  343. package/dist/components/RadioButton/RadioButton.cjs.map +1 -1
  344. package/dist/components/RadioButton/RadioButton.d.ts +2 -2
  345. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  346. package/dist/components/RadioButton/RadioButton.module.css.cjs +1 -1
  347. package/dist/components/RadioButton/RadioButton.module.css.cjs.map +1 -1
  348. package/dist/components/RadioButton/RadioButton.module.css.js +1 -1
  349. package/dist/components/RadioButton/RadioButton.module.css.js.map +1 -1
  350. package/dist/components/RadioButton/index.d.ts +1 -1
  351. package/dist/components/SearchBar/SearchBar.cjs +1 -1
  352. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  353. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  354. package/dist/components/SearchBar/SearchBar.js +1 -3
  355. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  356. package/dist/components/SearchBar/SearchBar.module.css.cjs +1 -1
  357. package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -1
  358. package/dist/components/SearchBar/SearchBar.module.css.js +13 -13
  359. package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -1
  360. package/dist/components/SearchBar/index.d.ts +1 -1
  361. package/dist/components/SegmentedBar/SegmentedBar.cjs.map +1 -1
  362. package/dist/components/SegmentedBar/SegmentedBar.d.ts +1 -1
  363. package/dist/components/SegmentedBar/SegmentedBar.js.map +1 -1
  364. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs +1 -1
  365. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs.map +1 -1
  366. package/dist/components/SegmentedBar/SegmentedBar.module.css.js +12 -12
  367. package/dist/components/SegmentedBar/SegmentedBar.module.css.js.map +1 -1
  368. package/dist/components/SegmentedBar/index.d.ts +1 -1
  369. package/dist/components/Separator/Separator.cjs.map +1 -1
  370. package/dist/components/Separator/Separator.d.ts +1 -1
  371. package/dist/components/Separator/Separator.js.map +1 -1
  372. package/dist/components/Separator/index.d.ts +1 -1
  373. package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -1
  374. package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -1
  375. package/dist/components/ShortcutLabel/index.d.ts +1 -1
  376. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
  377. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
  378. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +0 -1
  379. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
  380. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
  381. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs.map +1 -1
  382. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +3 -3
  383. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js.map +1 -1
  384. package/dist/components/ShortcutsDialog/index.d.ts +1 -1
  385. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  386. package/dist/components/Sidebar/Sidebar.d.ts +2 -2
  387. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  388. package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
  389. package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -1
  390. package/dist/components/Sidebar/Sidebar.module.css.js +2 -2
  391. package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -1
  392. package/dist/components/Sidebar/SidebarItem.cjs.map +1 -1
  393. package/dist/components/Sidebar/SidebarItem.d.ts +1 -1
  394. package/dist/components/Sidebar/SidebarItem.js.map +1 -1
  395. package/dist/components/Sidebar/SidebarSection.cjs +1 -1
  396. package/dist/components/Sidebar/SidebarSection.cjs.map +1 -1
  397. package/dist/components/Sidebar/SidebarSection.d.ts +1 -1
  398. package/dist/components/Sidebar/SidebarSection.js +0 -1
  399. package/dist/components/Sidebar/SidebarSection.js.map +1 -1
  400. package/dist/components/Sidebar/index.d.ts +4 -4
  401. package/dist/components/Sidebar.cjs +1 -1
  402. package/dist/components/Sidebar.js +3 -3
  403. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  404. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  405. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  406. package/dist/components/Skeleton/Skeleton.module.css.cjs +1 -1
  407. package/dist/components/Skeleton/Skeleton.module.css.cjs.map +1 -1
  408. package/dist/components/Skeleton/Skeleton.module.css.js +7 -7
  409. package/dist/components/Skeleton/Skeleton.module.css.js.map +1 -1
  410. package/dist/components/Skeleton/index.d.ts +1 -1
  411. package/dist/components/Slider/Slider.cjs.map +1 -1
  412. package/dist/components/Slider/Slider.d.ts +5 -5
  413. package/dist/components/Slider/Slider.js.map +1 -1
  414. package/dist/components/Slider/Slider.module.css.cjs +1 -1
  415. package/dist/components/Slider/Slider.module.css.cjs.map +1 -1
  416. package/dist/components/Slider/Slider.module.css.js +9 -9
  417. package/dist/components/Slider/Slider.module.css.js.map +1 -1
  418. package/dist/components/Slider/index.d.ts +1 -1
  419. package/dist/components/SpinButton/SpinButton.cjs.map +1 -1
  420. package/dist/components/SpinButton/SpinButton.d.ts +4 -4
  421. package/dist/components/SpinButton/SpinButton.js.map +1 -1
  422. package/dist/components/SpinButton/SpinButton.module.css.cjs +1 -1
  423. package/dist/components/SpinButton/SpinButton.module.css.cjs.map +1 -1
  424. package/dist/components/SpinButton/SpinButton.module.css.js +4 -4
  425. package/dist/components/SpinButton/SpinButton.module.css.js.map +1 -1
  426. package/dist/components/SpinButton/index.d.ts +1 -1
  427. package/dist/components/SpinRow/SpinRow.cjs.map +1 -1
  428. package/dist/components/SpinRow/SpinRow.d.ts +1 -1
  429. package/dist/components/SpinRow/SpinRow.js.map +1 -1
  430. package/dist/components/SpinRow/SpinRow.module.css.cjs +1 -1
  431. package/dist/components/SpinRow/SpinRow.module.css.cjs.map +1 -1
  432. package/dist/components/SpinRow/SpinRow.module.css.js +9 -9
  433. package/dist/components/SpinRow/SpinRow.module.css.js.map +1 -1
  434. package/dist/components/SpinRow/index.d.ts +1 -1
  435. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  436. package/dist/components/Spinner/Spinner.d.ts +1 -1
  437. package/dist/components/Spinner/Spinner.js.map +1 -1
  438. package/dist/components/Spinner/Spinner.module.css.cjs +1 -1
  439. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -1
  440. package/dist/components/Spinner/Spinner.module.css.js +5 -5
  441. package/dist/components/Spinner/Spinner.module.css.js.map +1 -1
  442. package/dist/components/Spinner/index.d.ts +1 -1
  443. package/dist/components/SplitButton/SplitButton.cjs.map +1 -1
  444. package/dist/components/SplitButton/SplitButton.d.ts +2 -2
  445. package/dist/components/SplitButton/SplitButton.js.map +1 -1
  446. package/dist/components/SplitButton/SplitButton.module.css.cjs +1 -1
  447. package/dist/components/SplitButton/SplitButton.module.css.cjs.map +1 -1
  448. package/dist/components/SplitButton/SplitButton.module.css.js +10 -10
  449. package/dist/components/SplitButton/SplitButton.module.css.js.map +1 -1
  450. package/dist/components/SplitButton/index.d.ts +1 -1
  451. package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -1
  452. package/dist/components/StatusBadge/StatusBadge.d.ts +1 -1
  453. package/dist/components/StatusBadge/StatusBadge.js.map +1 -1
  454. package/dist/components/StatusBadge/index.d.ts +1 -1
  455. package/dist/components/StatusPage/StatusPage.cjs.map +1 -1
  456. package/dist/components/StatusPage/StatusPage.d.ts +1 -1
  457. package/dist/components/StatusPage/StatusPage.js.map +1 -1
  458. package/dist/components/StatusPage/index.d.ts +1 -1
  459. package/dist/components/Switch/Switch.cjs.map +1 -1
  460. package/dist/components/Switch/Switch.d.ts +2 -2
  461. package/dist/components/Switch/Switch.js.map +1 -1
  462. package/dist/components/Switch/Switch.module.css.cjs +1 -1
  463. package/dist/components/Switch/Switch.module.css.cjs.map +1 -1
  464. package/dist/components/Switch/Switch.module.css.js +1 -1
  465. package/dist/components/Switch/Switch.module.css.js.map +1 -1
  466. package/dist/components/Switch/index.d.ts +1 -1
  467. package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -1
  468. package/dist/components/SwitchRow/SwitchRow.d.ts +1 -1
  469. package/dist/components/SwitchRow/SwitchRow.js.map +1 -1
  470. package/dist/components/SwitchRow/SwitchRow.module.css.cjs +1 -1
  471. package/dist/components/SwitchRow/SwitchRow.module.css.cjs.map +1 -1
  472. package/dist/components/SwitchRow/SwitchRow.module.css.js +9 -9
  473. package/dist/components/SwitchRow/SwitchRow.module.css.js.map +1 -1
  474. package/dist/components/SwitchRow/index.d.ts +1 -1
  475. package/dist/components/Tabs/TabBar.cjs +1 -1
  476. package/dist/components/Tabs/TabBar.cjs.map +1 -1
  477. package/dist/components/Tabs/TabBar.d.ts +2 -2
  478. package/dist/components/Tabs/TabBar.js +8 -8
  479. package/dist/components/Tabs/TabBar.js.map +1 -1
  480. package/dist/components/Tabs/TabItem.cjs.map +1 -1
  481. package/dist/components/Tabs/TabItem.d.ts +1 -1
  482. package/dist/components/Tabs/TabItem.js.map +1 -1
  483. package/dist/components/Tabs/TabPanel.cjs +1 -1
  484. package/dist/components/Tabs/TabPanel.cjs.map +1 -1
  485. package/dist/components/Tabs/TabPanel.js +0 -1
  486. package/dist/components/Tabs/TabPanel.js.map +1 -1
  487. package/dist/components/Tabs/Tabs.module.css.cjs +1 -1
  488. package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -1
  489. package/dist/components/Tabs/Tabs.module.css.js +10 -10
  490. package/dist/components/Tabs/Tabs.module.css.js.map +1 -1
  491. package/dist/components/Tabs/index.d.ts +3 -3
  492. package/dist/components/TerminalView/TerminalView.cjs +1 -1
  493. package/dist/components/TerminalView/TerminalView.cjs.map +1 -1
  494. package/dist/components/TerminalView/TerminalView.d.ts +1 -1
  495. package/dist/components/TerminalView/TerminalView.js +1 -1
  496. package/dist/components/TerminalView/TerminalView.js.map +1 -1
  497. package/dist/components/TerminalView/index.d.ts +1 -1
  498. package/dist/components/Text/Text.cjs.map +1 -1
  499. package/dist/components/Text/Text.d.ts +2 -2
  500. package/dist/components/Text/Text.js.map +1 -1
  501. package/dist/components/Text/index.d.ts +1 -1
  502. package/dist/components/TextField/TextField.cjs.map +1 -1
  503. package/dist/components/TextField/TextField.d.ts +1 -1
  504. package/dist/components/TextField/TextField.js.map +1 -1
  505. package/dist/components/TextField/TextField.module.css.cjs +1 -1
  506. package/dist/components/TextField/TextField.module.css.cjs.map +1 -1
  507. package/dist/components/TextField/TextField.module.css.js +7 -7
  508. package/dist/components/TextField/TextField.module.css.js.map +1 -1
  509. package/dist/components/TextField/index.d.ts +1 -1
  510. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  511. package/dist/components/Timeline/Timeline.d.ts +2 -2
  512. package/dist/components/Timeline/Timeline.js.map +1 -1
  513. package/dist/components/Timeline/index.d.ts +1 -1
  514. package/dist/components/Toast/Toast.cjs +1 -1
  515. package/dist/components/Toast/Toast.cjs.map +1 -1
  516. package/dist/components/Toast/Toast.d.ts +1 -1
  517. package/dist/components/Toast/Toast.js +39 -35
  518. package/dist/components/Toast/Toast.js.map +1 -1
  519. package/dist/components/Toast/Toast.module.css.cjs +1 -1
  520. package/dist/components/Toast/Toast.module.css.cjs.map +1 -1
  521. package/dist/components/Toast/Toast.module.css.js +2 -2
  522. package/dist/components/Toast/Toast.module.css.js.map +1 -1
  523. package/dist/components/Toast/Toaster.cjs.map +1 -1
  524. package/dist/components/Toast/Toaster.d.ts +1 -1
  525. package/dist/components/Toast/Toaster.js.map +1 -1
  526. package/dist/components/Toast/index.d.ts +2 -2
  527. package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
  528. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  529. package/dist/components/ToggleGroup/ToggleGroup.d.ts +2 -2
  530. package/dist/components/ToggleGroup/ToggleGroup.js +8 -8
  531. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  532. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +1 -1
  533. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -1
  534. package/dist/components/ToggleGroup/ToggleGroup.module.css.js +6 -6
  535. package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -1
  536. package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  537. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  538. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  539. package/dist/components/ToggleGroup/index.d.ts +2 -2
  540. package/dist/components/Toolbar/Spacer.cjs.map +1 -1
  541. package/dist/components/Toolbar/Spacer.d.ts +1 -2
  542. package/dist/components/Toolbar/Spacer.js.map +1 -1
  543. package/dist/components/Toolbar/Toolbar.cjs.map +1 -1
  544. package/dist/components/Toolbar/Toolbar.js.map +1 -1
  545. package/dist/components/Toolbar/index.d.ts +3 -3
  546. package/dist/components/Toolbar.cjs +1 -1
  547. package/dist/components/Toolbar.js +3 -3
  548. package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -1
  549. package/dist/components/ToolbarView/ToolbarView.js.map +1 -1
  550. package/dist/components/ToolbarView/index.d.ts +1 -1
  551. package/dist/components/Tooltip/Tooltip.cjs +1 -1
  552. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  553. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  554. package/dist/components/Tooltip/Tooltip.js +4 -4
  555. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  556. package/dist/components/Tooltip/Tooltip.module.css.cjs +1 -1
  557. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -1
  558. package/dist/components/Tooltip/Tooltip.module.css.js +6 -6
  559. package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -1
  560. package/dist/components/Tooltip/index.d.ts +1 -1
  561. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
  562. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
  563. package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +2 -2
  564. package/dist/components/ViewSwitcher/ViewSwitcher.js +8 -8
  565. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
  566. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs +1 -1
  567. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs.map +1 -1
  568. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js +5 -5
  569. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js.map +1 -1
  570. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -1
  571. package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +1 -1
  572. package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -1
  573. package/dist/components/ViewSwitcher/index.d.ts +2 -2
  574. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -1
  575. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -1
  576. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs +1 -1
  577. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs.map +1 -1
  578. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js +1 -1
  579. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js.map +1 -1
  580. package/dist/components/ViewSwitcherBar/index.d.ts +1 -1
  581. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
  582. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
  583. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +2 -2
  584. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +8 -8
  585. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
  586. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs +1 -1
  587. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs.map +1 -1
  588. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js +14 -14
  589. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js.map +1 -1
  590. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -1
  591. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +1 -1
  592. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -1
  593. package/dist/components/ViewSwitcherSidebar/index.d.ts +2 -2
  594. package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -1
  595. package/dist/components/WindowTitle/WindowTitle.js.map +1 -1
  596. package/dist/components/WindowTitle/index.d.ts +1 -1
  597. package/dist/components/WrapBox/WrapBox.cjs.map +1 -1
  598. package/dist/components/WrapBox/WrapBox.d.ts +2 -2
  599. package/dist/components/WrapBox/WrapBox.js.map +1 -1
  600. package/dist/components/WrapBox/index.d.ts +1 -1
  601. package/dist/hooks/index.d.ts +3 -3
  602. package/dist/hooks/useBreakpoint.cjs +1 -1
  603. package/dist/hooks/useBreakpoint.cjs.map +1 -1
  604. package/dist/hooks/useBreakpoint.js +12 -12
  605. package/dist/hooks/useBreakpoint.js.map +1 -1
  606. package/dist/index.cjs +1 -1
  607. package/dist/index.d.ts +153 -153
  608. package/dist/index.js +5 -5
  609. package/dist/style.css +1 -1
  610. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- var e=`_view_1r1om_3`,t=`_page_1r1om_12`,n=`_pageHeader_1r1om_23`,r=`_pageTitle_1r1om_34`,i=`_pageContent_1r1om_43`,a=`_enterForward_1r1om_52`,o=`_enterBack_1r1om_56`,s={view:e,page:t,pageHeader:n,pageTitle:r,pageContent:i,enterForward:a,"slide-in-right":`_slide-in-right_1r1om_1`,enterBack:o,"slide-in-left":`_slide-in-left_1r1om_1`};exports.default=s;
1
+ var e=`_view_18zs8_3`,t=`_page_18zs8_12`,n=`_pageHeader_18zs8_23`,r=`_pageTitle_18zs8_34`,i=`_pageContent_18zs8_43`,a=`_enterForward_18zs8_52`,o=`_enterBack_18zs8_57`,s={view:e,page:t,pageHeader:n,pageTitle:r,pageContent:i,enterForward:a,"slide-in-right":`_slide-in-right_18zs8_1`,enterBack:o,"slide-in-left":`_slide-in-left_18zs8_1`};exports.default=s;
2
2
  //# sourceMappingURL=NavigationView.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationView.module.css.cjs","names":[],"sources":["../../../src/components/NavigationView/NavigationView.module.css"],"sourcesContent":["/* ─── View container ────────────────────────────────────────────────────────── */\n\n.view {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* ─── Page ──────────────────────────────────────────────────────────────────── */\n\n.page {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--gnome-window-bg-color, #fafafa);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page header (title bar) ────────────────────────────────────────────────── */\n\n.pageHeader {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 47px;\n padding: 0 var(--gnome-space-4, 24px);\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n flex-shrink: 0;\n}\n\n.pageTitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page content ──────────────────────────────────────────────────────────── */\n\n.pageContent {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-3, 16px);\n}\n\n/* ─── Enter animations ──────────────────────────────────────────────────────── */\n\n.enterForward {\n animation: slide-in-right var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n.enterBack {\n animation: slide-in-left var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes slide-in-right {\n from { transform: translateX(40px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes slide-in-left {\n from { transform: translateX(-40px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .enterForward,\n .enterBack {\n animation: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"NavigationView.module.css.cjs","names":[],"sources":["../../../src/components/NavigationView/NavigationView.module.css"],"sourcesContent":["/* ─── View container ────────────────────────────────────────────────────────── */\n\n.view {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* ─── Page ──────────────────────────────────────────────────────────────────── */\n\n.page {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--gnome-window-bg-color, #fafafa);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page header (title bar) ────────────────────────────────────────────────── */\n\n.pageHeader {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 47px;\n padding: 0 var(--gnome-space-4, 24px);\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n flex-shrink: 0;\n}\n\n.pageTitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page content ──────────────────────────────────────────────────────────── */\n\n.pageContent {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-3, 16px);\n}\n\n/* ─── Enter animations ──────────────────────────────────────────────────────── */\n\n.enterForward {\n animation: slide-in-right var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease)\n both;\n}\n\n.enterBack {\n animation: slide-in-left var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease)\n both;\n}\n\n@keyframes slide-in-right {\n from {\n transform: translateX(40px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes slide-in-left {\n from {\n transform: translateX(-40px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .enterForward,\n .enterBack {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -1,14 +1,14 @@
1
1
  //#region src/components/NavigationView/NavigationView.module.css
2
- var e = "_view_1r1om_3", t = "_page_1r1om_12", n = "_pageHeader_1r1om_23", r = "_pageTitle_1r1om_34", i = "_pageContent_1r1om_43", a = "_enterForward_1r1om_52", o = "_enterBack_1r1om_56", s = {
2
+ var e = "_view_18zs8_3", t = "_page_18zs8_12", n = "_pageHeader_18zs8_23", r = "_pageTitle_18zs8_34", i = "_pageContent_18zs8_43", a = "_enterForward_18zs8_52", o = "_enterBack_18zs8_57", s = {
3
3
  view: e,
4
4
  page: t,
5
5
  pageHeader: n,
6
6
  pageTitle: r,
7
7
  pageContent: i,
8
8
  enterForward: a,
9
- "slide-in-right": "_slide-in-right_1r1om_1",
9
+ "slide-in-right": "_slide-in-right_18zs8_1",
10
10
  enterBack: o,
11
- "slide-in-left": "_slide-in-left_1r1om_1"
11
+ "slide-in-left": "_slide-in-left_18zs8_1"
12
12
  };
13
13
  //#endregion
14
14
  export { s as default };
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationView.module.css.js","names":[],"sources":["../../../src/components/NavigationView/NavigationView.module.css"],"sourcesContent":["/* ─── View container ────────────────────────────────────────────────────────── */\n\n.view {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* ─── Page ──────────────────────────────────────────────────────────────────── */\n\n.page {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--gnome-window-bg-color, #fafafa);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page header (title bar) ────────────────────────────────────────────────── */\n\n.pageHeader {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 47px;\n padding: 0 var(--gnome-space-4, 24px);\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n flex-shrink: 0;\n}\n\n.pageTitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page content ──────────────────────────────────────────────────────────── */\n\n.pageContent {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-3, 16px);\n}\n\n/* ─── Enter animations ──────────────────────────────────────────────────────── */\n\n.enterForward {\n animation: slide-in-right var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n.enterBack {\n animation: slide-in-left var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes slide-in-right {\n from { transform: translateX(40px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n}\n\n@keyframes slide-in-left {\n from { transform: translateX(-40px); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .enterForward,\n .enterBack {\n animation: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"NavigationView.module.css.js","names":[],"sources":["../../../src/components/NavigationView/NavigationView.module.css"],"sourcesContent":["/* ─── View container ────────────────────────────────────────────────────────── */\n\n.view {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n/* ─── Page ──────────────────────────────────────────────────────────────────── */\n\n.page {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n background-color: var(--gnome-window-bg-color, #fafafa);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page header (title bar) ────────────────────────────────────────────────── */\n\n.pageHeader {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 47px;\n padding: 0 var(--gnome-space-4, 24px);\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n flex-shrink: 0;\n}\n\n.pageTitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Page content ──────────────────────────────────────────────────────────── */\n\n.pageContent {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: var(--gnome-space-3, 16px);\n}\n\n/* ─── Enter animations ──────────────────────────────────────────────────────── */\n\n.enterForward {\n animation: slide-in-right var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease)\n both;\n}\n\n.enterBack {\n animation: slide-in-left var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease)\n both;\n}\n\n@keyframes slide-in-right {\n from {\n transform: translateX(40px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes slide-in-left {\n from {\n transform: translateX(-40px);\n opacity: 0;\n }\n to {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .enterForward,\n .enterBack {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { NavigationView, NavigationPage, useNavigation } from './NavigationView';
2
- export type { NavigationViewProps, NavigationPageProps } from './NavigationView';
1
+ export type { NavigationPageProps, NavigationViewProps } from './NavigationView';
2
+ export { NavigationPage, NavigationView, useNavigation } from './NavigationView';
@@ -1 +1 @@
1
- {"version":3,"file":"OverlaySplitView.cjs","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport styles from \"./OverlaySplitView.module.css\";\n\nexport interface OverlaySplitViewProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"content\"> {\n /**\n * The sidebar pane.\n * On wide screens it sits beside the content.\n * On narrow screens it slides over the content as an overlay.\n */\n sidebar: ReactNode;\n /** The main content pane — always visible. */\n content: ReactNode;\n /**\n * Whether the sidebar is shown.\n * - Wide screens: always both visible; this prop is ignored.\n * - Narrow screens (≤ 400 px): controls whether the overlay is open.\n */\n showSidebar?: boolean;\n /**\n * Called when the user clicks the backdrop (narrow screens only).\n * Use this to set `showSidebar` to false.\n */\n onClose?: () => void;\n /**\n * When `true`, collapses the sidebar to icon-only width on wide screens.\n * Has no effect in narrow (overlay) mode.\n * Pair with `collapsed` on the inner `<Sidebar>` component to hide labels.\n */\n collapsed?: boolean;\n /**\n * Which side the sidebar appears on. Defaults to `\"start\"` (left in LTR).\n */\n sidebarPosition?: \"start\" | \"end\";\n /**\n * Minimum sidebar width in px. Defaults to `180`.\n */\n minSidebarWidth?: number;\n /**\n * Maximum sidebar width in px. Defaults to `280`.\n */\n maxSidebarWidth?: number;\n /**\n * Fraction of total width given to the sidebar. Defaults to `0.25`.\n */\n sidebarWidthFraction?: number;\n}\n\n/**\n * Sidebar + content layout where the sidebar becomes a slide-over overlay\n * on narrow screens, mirroring the Adwaita `AdwOverlaySplitView` pattern.\n *\n * On **wide** screens (> 400 px) sidebar and content are side-by-side.\n * On **narrow** screens (≤ 400 px) the content fills the full width and\n * the sidebar slides in as an overlay when `showSidebar` is true,\n * with a translucent backdrop behind it.\n *\n * @example\n * const [open, setOpen] = useState(false);\n * <OverlaySplitView\n * showSidebar={open}\n * onClose={() => setOpen(false)}\n * sidebar={<Nav />}\n * content={<MainContent onMenuClick={() => setOpen(true)} />}\n * />\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html\n */\nexport function OverlaySplitView({\n sidebar,\n content,\n showSidebar = false,\n onClose,\n collapsed = false,\n sidebarPosition = \"start\",\n minSidebarWidth = 180,\n maxSidebarWidth = 280,\n sidebarWidthFraction = 0.25,\n className,\n style,\n ...props\n}: OverlaySplitViewProps) {\n const { isNarrow } = useBreakpoint();\n const sidebarRef = useRef<HTMLDivElement>(null);\n\n const sidebarWidth =\n `clamp(${minSidebarWidth}px, ${sidebarWidthFraction * 100}%, ${maxSidebarWidth}px)`;\n\n // Close on Escape in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isNarrow, showSidebar, onClose]);\n\n // Trap focus inside sidebar when open in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const first = sidebarRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n first?.focus();\n }, [isNarrow, showSidebar]);\n\n const isEnd = sidebarPosition === \"end\";\n\n // Swipe-to-dismiss: drag the sidebar in the close direction to trigger onClose\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const el = sidebarRef.current;\n if (!el) return;\n\n let startX = 0;\n const THRESHOLD = 80;\n\n const onTouchStart = (e: TouchEvent) => { startX = e.touches[0].clientX; };\n const onTouchEnd = (e: TouchEvent) => {\n const dx = e.changedTouches[0].clientX - startX;\n const closeSwipe = isEnd ? dx > THRESHOLD : dx < -THRESHOLD;\n if (closeSwipe) onClose?.();\n };\n\n el.addEventListener(\"touchstart\", onTouchStart, { passive: true });\n el.addEventListener(\"touchend\", onTouchEnd, { passive: true });\n return () => {\n el.removeEventListener(\"touchstart\", onTouchStart);\n el.removeEventListener(\"touchend\", onTouchEnd);\n };\n }, [isNarrow, showSidebar, isEnd, onClose]);\n\n return (\n <div\n className={[\n styles.root,\n isNarrow ? styles.narrow : styles.wide,\n !isNarrow && collapsed ? styles.collapsed : null,\n isEnd ? styles.end : styles.start,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ \"--sidebar-width\": sidebarWidth, ...style } as React.CSSProperties}\n {...props}\n >\n {/* Backdrop — narrow mode only */}\n {isNarrow && (\n <div\n className={[styles.backdrop, showSidebar ? styles.backdropVisible : null]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n onClick={onClose}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={[\n styles.sidebar,\n isNarrow\n ? showSidebar ? styles.sidebarOpen : styles.sidebarClosed\n : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden={isNarrow && !showSidebar}\n >\n {sidebar}\n </div>\n\n {/* Content */}\n <div className={styles.content}>\n {content}\n </div>\n </div>\n );\n}\n"],"mappings":"sJAqEA,SAAgB,EAAiB,CAC/B,UACA,UACA,cAAc,GACd,UACA,YAAY,GACZ,kBAAkB,QAClB,kBAAkB,IAClB,kBAAkB,IAClB,uBAAuB,IACvB,YACA,QACA,GAAG,GACqB,CACxB,GAAM,CAAE,YAAa,EAAA,eAAe,CAC9B,GAAA,EAAA,EAAA,QAAoC,KAAK,CAEzC,EACJ,SAAS,EAAgB,MAAM,EAAuB,IAAI,KAAK,EAAgB,MAGjF,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,GAAY,CAAC,EAAa,OAC/B,IAAM,EAAW,GAAqB,CAChC,EAAE,MAAQ,UAAU,KAAW,EAGrC,OADA,SAAS,iBAAiB,UAAW,EAAQ,KAChC,SAAS,oBAAoB,UAAW,EAAQ,EAC5D,CAAC,EAAU,EAAa,EAAQ,CAAC,EAGpC,EAAA,EAAA,eAAgB,CACV,CAAC,GAAY,CAAC,IACJ,EAAW,SAAS,cAChC,2EACD,GACM,OAAO,EACb,CAAC,EAAU,EAAY,CAAC,CAE3B,IAAM,EAAQ,IAAoB,MA0BlC,OAvBA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,GAAY,CAAC,EAAa,OAC/B,IAAM,EAAK,EAAW,QACtB,GAAI,CAAC,EAAI,OAET,IAAI,EAAS,EAGP,EAAgB,GAAkB,CAAE,EAAS,EAAE,QAAQ,GAAG,SAC1D,EAAgB,GAAkB,CACtC,IAAM,EAAK,EAAE,eAAe,GAAG,QAAU,GACtB,EAAQ,EAAK,GAAY,EAAK,MACjC,KAAW,EAK7B,OAFA,EAAG,iBAAiB,aAAc,EAAc,CAAE,QAAS,GAAM,CAAC,CAClE,EAAG,iBAAiB,WAAc,EAAc,CAAE,QAAS,GAAM,CAAC,KACrD,CACX,EAAG,oBAAoB,aAAc,EAAa,CAClD,EAAG,oBAAoB,WAAc,EAAW,GAEjD,CAAC,EAAU,EAAa,EAAO,EAAQ,CAAC,EAGzC,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,EAAA,QAAO,KACP,EAAW,EAAA,QAAO,OAAS,EAAA,QAAO,KAClC,CAAC,GAAY,EAAY,EAAA,QAAO,UAAY,KAC5C,EAAQ,EAAA,QAAO,IAAM,EAAA,QAAO,MAC5B,EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,MAAO,CAAE,kBAAmB,EAAc,GAAG,EAAO,CACpD,GAAI,WAXN,CAcG,IACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,SAAU,EAAc,EAAA,QAAO,gBAAkB,KAAK,CACtE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAY,OACZ,QAAS,EACT,CAAA,EAIJ,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EACL,UAAW,CACT,EAAA,QAAO,QACP,EACI,EAAc,EAAA,QAAO,YAAc,EAAA,QAAO,cAC1C,KACL,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAa,GAAY,CAAC,WAEzB,EACG,CAAA,EAGN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,iBACpB,EACG,CAAA,CACF"}
1
+ {"version":3,"file":"OverlaySplitView.cjs","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\n\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\n\nimport styles from './OverlaySplitView.module.css';\n\nexport interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\n /**\n * The sidebar pane.\n * On wide screens it sits beside the content.\n * On narrow screens it slides over the content as an overlay.\n */\n sidebar: ReactNode;\n /** The main content pane — always visible. */\n content: ReactNode;\n /**\n * Whether the sidebar is shown.\n * - Wide screens: always both visible; this prop is ignored.\n * - Narrow screens (≤ 400 px): controls whether the overlay is open.\n */\n showSidebar?: boolean;\n /**\n * Called when the user clicks the backdrop (narrow screens only).\n * Use this to set `showSidebar` to false.\n */\n onClose?: () => void;\n /**\n * When `true`, collapses the sidebar to icon-only width on wide screens.\n * Has no effect in narrow (overlay) mode.\n * Pair with `collapsed` on the inner `<Sidebar>` component to hide labels.\n */\n collapsed?: boolean;\n /**\n * Which side the sidebar appears on. Defaults to `\"start\"` (left in LTR).\n */\n sidebarPosition?: 'start' | 'end';\n /**\n * Minimum sidebar width in px. Defaults to `180`.\n */\n minSidebarWidth?: number;\n /**\n * Maximum sidebar width in px. Defaults to `280`.\n */\n maxSidebarWidth?: number;\n /**\n * Fraction of total width given to the sidebar. Defaults to `0.25`.\n */\n sidebarWidthFraction?: number;\n}\n\n/**\n * Sidebar + content layout where the sidebar becomes a slide-over overlay\n * on narrow screens, mirroring the Adwaita `AdwOverlaySplitView` pattern.\n *\n * On **wide** screens (> 400 px) sidebar and content are side-by-side.\n * On **narrow** screens (≤ 400 px) the content fills the full width and\n * the sidebar slides in as an overlay when `showSidebar` is true,\n * with a translucent backdrop behind it.\n *\n * @example\n * const [open, setOpen] = useState(false);\n * <OverlaySplitView\n * showSidebar={open}\n * onClose={() => setOpen(false)}\n * sidebar={<Nav />}\n * content={<MainContent onMenuClick={() => setOpen(true)} />}\n * />\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html\n */\nexport function OverlaySplitView({\n sidebar,\n content,\n showSidebar = false,\n onClose,\n collapsed = false,\n sidebarPosition = 'start',\n minSidebarWidth = 180,\n maxSidebarWidth = 280,\n sidebarWidthFraction = 0.25,\n className,\n style,\n ...props\n}: OverlaySplitViewProps) {\n const { isNarrow } = useBreakpoint();\n const sidebarRef = useRef<HTMLDivElement>(null);\n\n const sidebarWidth = `clamp(${minSidebarWidth}px, ${sidebarWidthFraction * 100}%, ${maxSidebarWidth}px)`;\n\n // Close on Escape in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handler);\n\n return () => document.removeEventListener('keydown', handler);\n }, [isNarrow, showSidebar, onClose]);\n\n // Trap focus inside sidebar when open in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const first = sidebarRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n first?.focus();\n }, [isNarrow, showSidebar]);\n\n const isEnd = sidebarPosition === 'end';\n\n // Swipe-to-dismiss: drag the sidebar in the close direction to trigger onClose\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const el = sidebarRef.current;\n\n if (!el) {\n return;\n }\n\n let startX = 0;\n const THRESHOLD = 80;\n\n const onTouchStart = (e: TouchEvent) => {\n startX = e.touches[0].clientX;\n };\n const onTouchEnd = (e: TouchEvent) => {\n const dx = e.changedTouches[0].clientX - startX;\n const closeSwipe = isEnd ? dx > THRESHOLD : dx < -THRESHOLD;\n\n if (closeSwipe) {\n onClose?.();\n }\n };\n\n el.addEventListener('touchstart', onTouchStart, { passive: true });\n el.addEventListener('touchend', onTouchEnd, { passive: true });\n\n return () => {\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n };\n }, [isNarrow, showSidebar, isEnd, onClose]);\n\n return (\n <div\n className={[\n styles.root,\n isNarrow ? styles.narrow : styles.wide,\n !isNarrow && collapsed ? styles.collapsed : null,\n isEnd ? styles.end : styles.start,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--sidebar-width': sidebarWidth, ...style } as CSSProperties}\n {...props}\n >\n {/* Backdrop — narrow mode only */}\n {isNarrow && (\n <div\n className={[styles.backdrop, showSidebar ? styles.backdropVisible : null]\n .filter(Boolean)\n .join(' ')}\n aria-hidden=\"true\"\n onClick={onClose}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={[\n styles.sidebar,\n isNarrow ? (showSidebar ? styles.sidebarOpen : styles.sidebarClosed) : null,\n ]\n .filter(Boolean)\n .join(' ')}\n aria-hidden={isNarrow && !showSidebar}\n >\n {sidebar}\n </div>\n\n {/* Content */}\n <div className={styles.content}>{content}</div>\n </div>\n );\n}\n"],"mappings":"sJAsEA,SAAgB,EAAiB,CAC/B,UACA,UACA,cAAc,GACd,UACA,YAAY,GACZ,kBAAkB,QAClB,kBAAkB,IAClB,kBAAkB,IAClB,uBAAuB,IACvB,YACA,QACA,GAAG,GACqB,CACxB,GAAM,CAAE,YAAa,EAAA,eAAe,CAC9B,GAAA,EAAA,EAAA,QAAoC,KAAK,CAEzC,EAAe,SAAS,EAAgB,MAAM,EAAuB,IAAI,KAAK,EAAgB,MAGpG,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,GAAY,CAAC,EAChB,OAGF,IAAM,EAAW,GAAqB,CAChC,EAAE,MAAQ,UACZ,KAAW,EAMf,OAFA,SAAS,iBAAiB,UAAW,EAAQ,KAEhC,SAAS,oBAAoB,UAAW,EAAQ,EAC5D,CAAC,EAAU,EAAa,EAAQ,CAAC,EAGpC,EAAA,EAAA,eAAgB,CACV,CAAC,GAAY,CAAC,IAIJ,EAAW,SAAS,cAChC,2EACD,GAEM,OAAO,EACb,CAAC,EAAU,EAAY,CAAC,CAE3B,IAAM,EAAQ,IAAoB,MAsClC,OAnCA,EAAA,EAAA,eAAgB,CACd,GAAI,CAAC,GAAY,CAAC,EAChB,OAGF,IAAM,EAAK,EAAW,QAEtB,GAAI,CAAC,EACH,OAGF,IAAI,EAAS,EAGP,EAAgB,GAAkB,CACtC,EAAS,EAAE,QAAQ,GAAG,SAElB,EAAc,GAAkB,CACpC,IAAM,EAAK,EAAE,eAAe,GAAG,QAAU,GACtB,EAAQ,EAAK,GAAY,EAAK,MAG/C,KAAW,EAOf,OAHA,EAAG,iBAAiB,aAAc,EAAc,CAAE,QAAS,GAAM,CAAC,CAClE,EAAG,iBAAiB,WAAY,EAAY,CAAE,QAAS,GAAM,CAAC,KAEjD,CACX,EAAG,oBAAoB,aAAc,EAAa,CAClD,EAAG,oBAAoB,WAAY,EAAW,GAE/C,CAAC,EAAU,EAAa,EAAO,EAAQ,CAAC,EAGzC,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,EAAA,QAAO,KACP,EAAW,EAAA,QAAO,OAAS,EAAA,QAAO,KAClC,CAAC,GAAY,EAAY,EAAA,QAAO,UAAY,KAC5C,EAAQ,EAAA,QAAO,IAAM,EAAA,QAAO,MAC5B,EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,MAAO,CAAE,kBAAmB,EAAc,GAAG,EAAO,CACpD,GAAI,WAXN,CAcG,IACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,SAAU,EAAc,EAAA,QAAO,gBAAkB,KAAK,CACtE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAY,OACZ,QAAS,EACT,CAAA,EAIJ,EAAA,EAAA,KAAC,MAAD,CACE,IAAK,EACL,UAAW,CACT,EAAA,QAAO,QACP,EAAY,EAAc,EAAA,QAAO,YAAc,EAAA,QAAO,cAAiB,KACxE,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,cAAa,GAAY,CAAC,WAEzB,EACG,CAAA,EAGN,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,iBAAU,EAAc,CAAA,CAC3C"}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- export interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElement>, "content"> {
2
+ export interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {
3
3
  /**
4
4
  * The sidebar pane.
5
5
  * On wide screens it sits beside the content.
@@ -28,7 +28,7 @@ export interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElemen
28
28
  /**
29
29
  * Which side the sidebar appears on. Defaults to `"start"` (left in LTR).
30
30
  */
31
- sidebarPosition?: "start" | "end";
31
+ sidebarPosition?: 'start' | 'end';
32
32
  /**
33
33
  * Minimum sidebar width in px. Defaults to `180`.
34
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OverlaySplitView.js","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.tsx"],"sourcesContent":["import { useEffect, useRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport styles from \"./OverlaySplitView.module.css\";\n\nexport interface OverlaySplitViewProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"content\"> {\n /**\n * The sidebar pane.\n * On wide screens it sits beside the content.\n * On narrow screens it slides over the content as an overlay.\n */\n sidebar: ReactNode;\n /** The main content pane — always visible. */\n content: ReactNode;\n /**\n * Whether the sidebar is shown.\n * - Wide screens: always both visible; this prop is ignored.\n * - Narrow screens (≤ 400 px): controls whether the overlay is open.\n */\n showSidebar?: boolean;\n /**\n * Called when the user clicks the backdrop (narrow screens only).\n * Use this to set `showSidebar` to false.\n */\n onClose?: () => void;\n /**\n * When `true`, collapses the sidebar to icon-only width on wide screens.\n * Has no effect in narrow (overlay) mode.\n * Pair with `collapsed` on the inner `<Sidebar>` component to hide labels.\n */\n collapsed?: boolean;\n /**\n * Which side the sidebar appears on. Defaults to `\"start\"` (left in LTR).\n */\n sidebarPosition?: \"start\" | \"end\";\n /**\n * Minimum sidebar width in px. Defaults to `180`.\n */\n minSidebarWidth?: number;\n /**\n * Maximum sidebar width in px. Defaults to `280`.\n */\n maxSidebarWidth?: number;\n /**\n * Fraction of total width given to the sidebar. Defaults to `0.25`.\n */\n sidebarWidthFraction?: number;\n}\n\n/**\n * Sidebar + content layout where the sidebar becomes a slide-over overlay\n * on narrow screens, mirroring the Adwaita `AdwOverlaySplitView` pattern.\n *\n * On **wide** screens (> 400 px) sidebar and content are side-by-side.\n * On **narrow** screens (≤ 400 px) the content fills the full width and\n * the sidebar slides in as an overlay when `showSidebar` is true,\n * with a translucent backdrop behind it.\n *\n * @example\n * const [open, setOpen] = useState(false);\n * <OverlaySplitView\n * showSidebar={open}\n * onClose={() => setOpen(false)}\n * sidebar={<Nav />}\n * content={<MainContent onMenuClick={() => setOpen(true)} />}\n * />\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html\n */\nexport function OverlaySplitView({\n sidebar,\n content,\n showSidebar = false,\n onClose,\n collapsed = false,\n sidebarPosition = \"start\",\n minSidebarWidth = 180,\n maxSidebarWidth = 280,\n sidebarWidthFraction = 0.25,\n className,\n style,\n ...props\n}: OverlaySplitViewProps) {\n const { isNarrow } = useBreakpoint();\n const sidebarRef = useRef<HTMLDivElement>(null);\n\n const sidebarWidth =\n `clamp(${minSidebarWidth}px, ${sidebarWidthFraction * 100}%, ${maxSidebarWidth}px)`;\n\n // Close on Escape in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [isNarrow, showSidebar, onClose]);\n\n // Trap focus inside sidebar when open in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const first = sidebarRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n first?.focus();\n }, [isNarrow, showSidebar]);\n\n const isEnd = sidebarPosition === \"end\";\n\n // Swipe-to-dismiss: drag the sidebar in the close direction to trigger onClose\n useEffect(() => {\n if (!isNarrow || !showSidebar) return;\n const el = sidebarRef.current;\n if (!el) return;\n\n let startX = 0;\n const THRESHOLD = 80;\n\n const onTouchStart = (e: TouchEvent) => { startX = e.touches[0].clientX; };\n const onTouchEnd = (e: TouchEvent) => {\n const dx = e.changedTouches[0].clientX - startX;\n const closeSwipe = isEnd ? dx > THRESHOLD : dx < -THRESHOLD;\n if (closeSwipe) onClose?.();\n };\n\n el.addEventListener(\"touchstart\", onTouchStart, { passive: true });\n el.addEventListener(\"touchend\", onTouchEnd, { passive: true });\n return () => {\n el.removeEventListener(\"touchstart\", onTouchStart);\n el.removeEventListener(\"touchend\", onTouchEnd);\n };\n }, [isNarrow, showSidebar, isEnd, onClose]);\n\n return (\n <div\n className={[\n styles.root,\n isNarrow ? styles.narrow : styles.wide,\n !isNarrow && collapsed ? styles.collapsed : null,\n isEnd ? styles.end : styles.start,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ \"--sidebar-width\": sidebarWidth, ...style } as React.CSSProperties}\n {...props}\n >\n {/* Backdrop — narrow mode only */}\n {isNarrow && (\n <div\n className={[styles.backdrop, showSidebar ? styles.backdropVisible : null]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n onClick={onClose}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={[\n styles.sidebar,\n isNarrow\n ? showSidebar ? styles.sidebarOpen : styles.sidebarClosed\n : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden={isNarrow && !showSidebar}\n >\n {sidebar}\n </div>\n\n {/* Content */}\n <div className={styles.content}>\n {content}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAqEA,SAAgB,EAAiB,EAC/B,YACA,YACA,iBAAc,IACd,YACA,eAAY,IACZ,qBAAkB,SAClB,qBAAkB,KAClB,qBAAkB,KAClB,0BAAuB,KACvB,cACA,UACA,GAAG,KACqB;CACxB,IAAM,EAAE,gBAAa,GAAe,EAC9B,IAAa,EAAuB,KAAK,EAEzC,IACJ,SAAS,EAAgB,MAAM,IAAuB,IAAI,KAAK,EAAgB;AAajF,CAVA,QAAgB;AACd,MAAI,CAAC,KAAY,CAAC,EAAa;EAC/B,IAAM,KAAW,MAAqB;AACpC,GAAI,EAAE,QAAQ,YAAU,KAAW;;AAGrC,SADA,SAAS,iBAAiB,WAAW,EAAQ,QAChC,SAAS,oBAAoB,WAAW,EAAQ;IAC5D;EAAC;EAAU;EAAa;EAAQ,CAAC,EAGpC,QAAgB;AACV,GAAC,KAAY,CAAC,MACJ,EAAW,SAAS,cAChC,6EACD,GACM,OAAO;IACb,CAAC,GAAU,EAAY,CAAC;CAE3B,IAAM,IAAQ,MAAoB;AA0BlC,QAvBA,QAAgB;AACd,MAAI,CAAC,KAAY,CAAC,EAAa;EAC/B,IAAM,IAAK,EAAW;AACtB,MAAI,CAAC,EAAI;EAET,IAAI,IAAS,GAGP,KAAgB,MAAkB;AAAE,OAAS,EAAE,QAAQ,GAAG;KAC1D,KAAgB,MAAkB;GACtC,IAAM,IAAK,EAAE,eAAe,GAAG,UAAU;AAEzC,IADmB,IAAQ,IAAK,KAAY,IAAK,QACjC,KAAW;;AAK7B,SAFA,EAAG,iBAAiB,cAAc,GAAc,EAAE,SAAS,IAAM,CAAC,EAClE,EAAG,iBAAiB,YAAc,GAAc,EAAE,SAAS,IAAM,CAAC,QACrD;AAEX,GADA,EAAG,oBAAoB,cAAc,EAAa,EAClD,EAAG,oBAAoB,YAAc,EAAW;;IAEjD;EAAC;EAAU;EAAa;EAAO;EAAQ,CAAC,EAGzC,kBAAC,OAAD;EACE,WAAW;GACT,EAAO;GACP,IAAW,EAAO,SAAS,EAAO;GAClC,CAAC,KAAY,IAAY,EAAO,YAAY;GAC5C,IAAQ,EAAO,MAAM,EAAO;GAC5B;GACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,OAAO;GAAE,mBAAmB;GAAc,GAAG;GAAO;EACpD,GAAI;YAXN;GAcG,KACC,kBAAC,OAAD;IACE,WAAW,CAAC,EAAO,UAAU,IAAc,EAAO,kBAAkB,KAAK,CACtE,OAAO,QAAQ,CACf,KAAK,IAAI;IACZ,eAAY;IACZ,SAAS;IACT,CAAA;GAIJ,kBAAC,OAAD;IACE,KAAK;IACL,WAAW,CACT,EAAO,SACP,IACI,IAAc,EAAO,cAAc,EAAO,gBAC1C,KACL,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;IACZ,eAAa,KAAY,CAAC;cAEzB;IACG,CAAA;GAGN,kBAAC,OAAD;IAAK,WAAW,EAAO;cACpB;IACG,CAAA;GACF"}
1
+ {"version":3,"file":"OverlaySplitView.js","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\n\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\n\nimport styles from './OverlaySplitView.module.css';\n\nexport interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\n /**\n * The sidebar pane.\n * On wide screens it sits beside the content.\n * On narrow screens it slides over the content as an overlay.\n */\n sidebar: ReactNode;\n /** The main content pane — always visible. */\n content: ReactNode;\n /**\n * Whether the sidebar is shown.\n * - Wide screens: always both visible; this prop is ignored.\n * - Narrow screens (≤ 400 px): controls whether the overlay is open.\n */\n showSidebar?: boolean;\n /**\n * Called when the user clicks the backdrop (narrow screens only).\n * Use this to set `showSidebar` to false.\n */\n onClose?: () => void;\n /**\n * When `true`, collapses the sidebar to icon-only width on wide screens.\n * Has no effect in narrow (overlay) mode.\n * Pair with `collapsed` on the inner `<Sidebar>` component to hide labels.\n */\n collapsed?: boolean;\n /**\n * Which side the sidebar appears on. Defaults to `\"start\"` (left in LTR).\n */\n sidebarPosition?: 'start' | 'end';\n /**\n * Minimum sidebar width in px. Defaults to `180`.\n */\n minSidebarWidth?: number;\n /**\n * Maximum sidebar width in px. Defaults to `280`.\n */\n maxSidebarWidth?: number;\n /**\n * Fraction of total width given to the sidebar. Defaults to `0.25`.\n */\n sidebarWidthFraction?: number;\n}\n\n/**\n * Sidebar + content layout where the sidebar becomes a slide-over overlay\n * on narrow screens, mirroring the Adwaita `AdwOverlaySplitView` pattern.\n *\n * On **wide** screens (> 400 px) sidebar and content are side-by-side.\n * On **narrow** screens (≤ 400 px) the content fills the full width and\n * the sidebar slides in as an overlay when `showSidebar` is true,\n * with a translucent backdrop behind it.\n *\n * @example\n * const [open, setOpen] = useState(false);\n * <OverlaySplitView\n * showSidebar={open}\n * onClose={() => setOpen(false)}\n * sidebar={<Nav />}\n * content={<MainContent onMenuClick={() => setOpen(true)} />}\n * />\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html\n */\nexport function OverlaySplitView({\n sidebar,\n content,\n showSidebar = false,\n onClose,\n collapsed = false,\n sidebarPosition = 'start',\n minSidebarWidth = 180,\n maxSidebarWidth = 280,\n sidebarWidthFraction = 0.25,\n className,\n style,\n ...props\n}: OverlaySplitViewProps) {\n const { isNarrow } = useBreakpoint();\n const sidebarRef = useRef<HTMLDivElement>(null);\n\n const sidebarWidth = `clamp(${minSidebarWidth}px, ${sidebarWidthFraction * 100}%, ${maxSidebarWidth}px)`;\n\n // Close on Escape in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const handler = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handler);\n\n return () => document.removeEventListener('keydown', handler);\n }, [isNarrow, showSidebar, onClose]);\n\n // Trap focus inside sidebar when open in overlay mode\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const first = sidebarRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n first?.focus();\n }, [isNarrow, showSidebar]);\n\n const isEnd = sidebarPosition === 'end';\n\n // Swipe-to-dismiss: drag the sidebar in the close direction to trigger onClose\n useEffect(() => {\n if (!isNarrow || !showSidebar) {\n return;\n }\n\n const el = sidebarRef.current;\n\n if (!el) {\n return;\n }\n\n let startX = 0;\n const THRESHOLD = 80;\n\n const onTouchStart = (e: TouchEvent) => {\n startX = e.touches[0].clientX;\n };\n const onTouchEnd = (e: TouchEvent) => {\n const dx = e.changedTouches[0].clientX - startX;\n const closeSwipe = isEnd ? dx > THRESHOLD : dx < -THRESHOLD;\n\n if (closeSwipe) {\n onClose?.();\n }\n };\n\n el.addEventListener('touchstart', onTouchStart, { passive: true });\n el.addEventListener('touchend', onTouchEnd, { passive: true });\n\n return () => {\n el.removeEventListener('touchstart', onTouchStart);\n el.removeEventListener('touchend', onTouchEnd);\n };\n }, [isNarrow, showSidebar, isEnd, onClose]);\n\n return (\n <div\n className={[\n styles.root,\n isNarrow ? styles.narrow : styles.wide,\n !isNarrow && collapsed ? styles.collapsed : null,\n isEnd ? styles.end : styles.start,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--sidebar-width': sidebarWidth, ...style } as CSSProperties}\n {...props}\n >\n {/* Backdrop — narrow mode only */}\n {isNarrow && (\n <div\n className={[styles.backdrop, showSidebar ? styles.backdropVisible : null]\n .filter(Boolean)\n .join(' ')}\n aria-hidden=\"true\"\n onClick={onClose}\n />\n )}\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={[\n styles.sidebar,\n isNarrow ? (showSidebar ? styles.sidebarOpen : styles.sidebarClosed) : null,\n ]\n .filter(Boolean)\n .join(' ')}\n aria-hidden={isNarrow && !showSidebar}\n >\n {sidebar}\n </div>\n\n {/* Content */}\n <div className={styles.content}>{content}</div>\n </div>\n );\n}\n"],"mappings":";;;;;AAsEA,SAAgB,EAAiB,EAC/B,YACA,YACA,iBAAc,IACd,YACA,eAAY,IACZ,qBAAkB,SAClB,qBAAkB,KAClB,qBAAkB,KAClB,0BAAuB,KACvB,cACA,UACA,GAAG,KACqB;CACxB,IAAM,EAAE,gBAAa,GAAe,EAC9B,IAAa,EAAuB,KAAK,EAEzC,IAAe,SAAS,EAAgB,MAAM,IAAuB,IAAI,KAAK,EAAgB;AAoBpG,CAjBA,QAAgB;AACd,MAAI,CAAC,KAAY,CAAC,EAChB;EAGF,IAAM,KAAW,MAAqB;AACpC,GAAI,EAAE,QAAQ,YACZ,KAAW;;AAMf,SAFA,SAAS,iBAAiB,WAAW,EAAQ,QAEhC,SAAS,oBAAoB,WAAW,EAAQ;IAC5D;EAAC;EAAU;EAAa;EAAQ,CAAC,EAGpC,QAAgB;AACV,GAAC,KAAY,CAAC,MAIJ,EAAW,SAAS,cAChC,6EACD,GAEM,OAAO;IACb,CAAC,GAAU,EAAY,CAAC;CAE3B,IAAM,IAAQ,MAAoB;AAsClC,QAnCA,QAAgB;AACd,MAAI,CAAC,KAAY,CAAC,EAChB;EAGF,IAAM,IAAK,EAAW;AAEtB,MAAI,CAAC,EACH;EAGF,IAAI,IAAS,GAGP,KAAgB,MAAkB;AACtC,OAAS,EAAE,QAAQ,GAAG;KAElB,KAAc,MAAkB;GACpC,IAAM,IAAK,EAAE,eAAe,GAAG,UAAU;AAGzC,IAFmB,IAAQ,IAAK,KAAY,IAAK,QAG/C,KAAW;;AAOf,SAHA,EAAG,iBAAiB,cAAc,GAAc,EAAE,SAAS,IAAM,CAAC,EAClE,EAAG,iBAAiB,YAAY,GAAY,EAAE,SAAS,IAAM,CAAC,QAEjD;AAEX,GADA,EAAG,oBAAoB,cAAc,EAAa,EAClD,EAAG,oBAAoB,YAAY,EAAW;;IAE/C;EAAC;EAAU;EAAa;EAAO;EAAQ,CAAC,EAGzC,kBAAC,OAAD;EACE,WAAW;GACT,EAAO;GACP,IAAW,EAAO,SAAS,EAAO;GAClC,CAAC,KAAY,IAAY,EAAO,YAAY;GAC5C,IAAQ,EAAO,MAAM,EAAO;GAC5B;GACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,OAAO;GAAE,mBAAmB;GAAc,GAAG;GAAO;EACpD,GAAI;YAXN;GAcG,KACC,kBAAC,OAAD;IACE,WAAW,CAAC,EAAO,UAAU,IAAc,EAAO,kBAAkB,KAAK,CACtE,OAAO,QAAQ,CACf,KAAK,IAAI;IACZ,eAAY;IACZ,SAAS;IACT,CAAA;GAIJ,kBAAC,OAAD;IACE,KAAK;IACL,WAAW,CACT,EAAO,SACP,IAAY,IAAc,EAAO,cAAc,EAAO,gBAAiB,KACxE,CACE,OAAO,QAAQ,CACf,KAAK,IAAI;IACZ,eAAa,KAAY,CAAC;cAEzB;IACG,CAAA;GAGN,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAU;IAAc,CAAA;GAC3C"}
@@ -1,2 +1,2 @@
1
- var e={root:`_root_1nzki_3`,wide:`_wide_1nzki_13`,end:`_end_1nzki_17`,sidebar:`_sidebar_1nzki_21`,collapsed:`_collapsed_1nzki_28`,content:`_content_1nzki_32`,narrow:`_narrow_1nzki_40`,start:`_start_1nzki_60`,sidebarOpen:`_sidebarOpen_1nzki_64`,sidebarClosed:`_sidebarClosed_1nzki_65`,backdrop:`_backdrop_1nzki_77`,backdropVisible:`_backdropVisible_1nzki_88`};exports.default=e;
1
+ var e={root:`_root_11ym4_3`,wide:`_wide_11ym4_13`,end:`_end_11ym4_17`,sidebar:`_sidebar_11ym4_21`,collapsed:`_collapsed_11ym4_28`,content:`_content_11ym4_32`,narrow:`_narrow_11ym4_40`,start:`_start_11ym4_60`,sidebarOpen:`_sidebarOpen_11ym4_64`,sidebarClosed:`_sidebarClosed_11ym4_67`,backdrop:`_backdrop_11ym4_85`,backdropVisible:`_backdropVisible_11ym4_96`};exports.default=e;
2
2
  //# sourceMappingURL=OverlaySplitView.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverlaySplitView.module.css.cjs","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.module.css"],"sourcesContent":["/* ─── Root ───────────────────────────────────────────────────────────────────── */\n\n.root {\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n}\n\n/* ─── Wide — side by side ────────────────────────────────────────────────────── */\n\n.wide {\n flex-direction: row;\n}\n\n.wide.end {\n flex-direction: row-reverse;\n}\n\n.wide .sidebar {\n width: var(--sidebar-width, var(--gnome-layout-sidebar-width, clamp(180px, 25%, 280px)));\n flex-shrink: 0;\n overflow-y: auto;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n.wide.collapsed .sidebar {\n width: var(--gnome-layout-sidebar-rail-width, 56px);\n}\n\n.wide .content {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n}\n\n/* ─── Narrow — overlay mode ──────────────────────────────────────────────────── */\n\n.narrow .content {\n width: 100%;\n overflow-y: auto;\n}\n\n.narrow .sidebar {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--sidebar-width, var(--gnome-layout-sidebar-overlay-width, clamp(180px, 75%, 280px)));\n overflow-y: auto;\n z-index: 100;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.2);\n\n transition: transform var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n/* Start (left) sidebar */\n.narrow.start .sidebar {\n left: 0;\n}\n\n.narrow.start .sidebarOpen { transform: translateX(0); }\n.narrow.start .sidebarClosed { transform: translateX(-100%); }\n\n/* End (right) sidebar */\n.narrow.end .sidebar {\n right: 0;\n}\n\n.narrow.end .sidebarOpen { transform: translateX(0); }\n.narrow.end .sidebarClosed { transform: translateX(100%); }\n\n/* ─── Backdrop ───────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: absolute;\n inset: 0;\n z-index: 99;\n background-color: rgba(0, 0, 0, 0.35);\n\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n.backdropVisible {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .narrow .sidebar {\n background-color: var(--gnome-window-bg-color, #242424);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.5);\n }\n\n .backdrop {\n background-color: rgba(0, 0, 0, 0.55);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .narrow .sidebar,\n .backdrop {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"OverlaySplitView.module.css.cjs","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.module.css"],"sourcesContent":["/* ─── Root ───────────────────────────────────────────────────────────────────── */\n\n.root {\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n}\n\n/* ─── Wide — side by side ────────────────────────────────────────────────────── */\n\n.wide {\n flex-direction: row;\n}\n\n.wide.end {\n flex-direction: row-reverse;\n}\n\n.wide .sidebar {\n width: var(--sidebar-width, var(--gnome-layout-sidebar-width, clamp(180px, 25%, 280px)));\n flex-shrink: 0;\n overflow-y: auto;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n.wide.collapsed .sidebar {\n width: var(--gnome-layout-sidebar-rail-width, 56px);\n}\n\n.wide .content {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n}\n\n/* ─── Narrow — overlay mode ──────────────────────────────────────────────────── */\n\n.narrow .content {\n width: 100%;\n overflow-y: auto;\n}\n\n.narrow .sidebar {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--sidebar-width, var(--gnome-layout-sidebar-overlay-width, clamp(180px, 75%, 280px)));\n overflow-y: auto;\n z-index: 100;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.2);\n\n transition: transform var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n/* Start (left) sidebar */\n.narrow.start .sidebar {\n left: 0;\n}\n\n.narrow.start .sidebarOpen {\n transform: translateX(0);\n}\n.narrow.start .sidebarClosed {\n transform: translateX(-100%);\n}\n\n/* End (right) sidebar */\n.narrow.end .sidebar {\n right: 0;\n}\n\n.narrow.end .sidebarOpen {\n transform: translateX(0);\n}\n.narrow.end .sidebarClosed {\n transform: translateX(100%);\n}\n\n/* ─── Backdrop ───────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: absolute;\n inset: 0;\n z-index: 99;\n background-color: rgba(0, 0, 0, 0.35);\n\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n.backdropVisible {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .narrow .sidebar {\n background-color: var(--gnome-window-bg-color, #242424);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.5);\n }\n\n .backdrop {\n background-color: rgba(0, 0, 0, 0.55);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .narrow .sidebar,\n .backdrop {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,16 +1,16 @@
1
1
  var e = {
2
- root: "_root_1nzki_3",
3
- wide: "_wide_1nzki_13",
4
- end: "_end_1nzki_17",
5
- sidebar: "_sidebar_1nzki_21",
6
- collapsed: "_collapsed_1nzki_28",
7
- content: "_content_1nzki_32",
8
- narrow: "_narrow_1nzki_40",
9
- start: "_start_1nzki_60",
10
- sidebarOpen: "_sidebarOpen_1nzki_64",
11
- sidebarClosed: "_sidebarClosed_1nzki_65",
12
- backdrop: "_backdrop_1nzki_77",
13
- backdropVisible: "_backdropVisible_1nzki_88"
2
+ root: "_root_11ym4_3",
3
+ wide: "_wide_11ym4_13",
4
+ end: "_end_11ym4_17",
5
+ sidebar: "_sidebar_11ym4_21",
6
+ collapsed: "_collapsed_11ym4_28",
7
+ content: "_content_11ym4_32",
8
+ narrow: "_narrow_11ym4_40",
9
+ start: "_start_11ym4_60",
10
+ sidebarOpen: "_sidebarOpen_11ym4_64",
11
+ sidebarClosed: "_sidebarClosed_11ym4_67",
12
+ backdrop: "_backdrop_11ym4_85",
13
+ backdropVisible: "_backdropVisible_11ym4_96"
14
14
  };
15
15
  //#endregion
16
16
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"OverlaySplitView.module.css.js","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.module.css"],"sourcesContent":["/* ─── Root ───────────────────────────────────────────────────────────────────── */\n\n.root {\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n}\n\n/* ─── Wide — side by side ────────────────────────────────────────────────────── */\n\n.wide {\n flex-direction: row;\n}\n\n.wide.end {\n flex-direction: row-reverse;\n}\n\n.wide .sidebar {\n width: var(--sidebar-width, var(--gnome-layout-sidebar-width, clamp(180px, 25%, 280px)));\n flex-shrink: 0;\n overflow-y: auto;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n.wide.collapsed .sidebar {\n width: var(--gnome-layout-sidebar-rail-width, 56px);\n}\n\n.wide .content {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n}\n\n/* ─── Narrow — overlay mode ──────────────────────────────────────────────────── */\n\n.narrow .content {\n width: 100%;\n overflow-y: auto;\n}\n\n.narrow .sidebar {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--sidebar-width, var(--gnome-layout-sidebar-overlay-width, clamp(180px, 75%, 280px)));\n overflow-y: auto;\n z-index: 100;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.2);\n\n transition: transform var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n/* Start (left) sidebar */\n.narrow.start .sidebar {\n left: 0;\n}\n\n.narrow.start .sidebarOpen { transform: translateX(0); }\n.narrow.start .sidebarClosed { transform: translateX(-100%); }\n\n/* End (right) sidebar */\n.narrow.end .sidebar {\n right: 0;\n}\n\n.narrow.end .sidebarOpen { transform: translateX(0); }\n.narrow.end .sidebarClosed { transform: translateX(100%); }\n\n/* ─── Backdrop ───────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: absolute;\n inset: 0;\n z-index: 99;\n background-color: rgba(0, 0, 0, 0.35);\n\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n.backdropVisible {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .narrow .sidebar {\n background-color: var(--gnome-window-bg-color, #242424);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.5);\n }\n\n .backdrop {\n background-color: rgba(0, 0, 0, 0.55);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .narrow .sidebar,\n .backdrop {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"OverlaySplitView.module.css.js","names":[],"sources":["../../../src/components/OverlaySplitView/OverlaySplitView.module.css"],"sourcesContent":["/* ─── Root ───────────────────────────────────────────────────────────────────── */\n\n.root {\n display: flex;\n width: 100%;\n height: 100%;\n overflow: hidden;\n position: relative;\n}\n\n/* ─── Wide — side by side ────────────────────────────────────────────────────── */\n\n.wide {\n flex-direction: row;\n}\n\n.wide.end {\n flex-direction: row-reverse;\n}\n\n.wide .sidebar {\n width: var(--sidebar-width, var(--gnome-layout-sidebar-width, clamp(180px, 25%, 280px)));\n flex-shrink: 0;\n overflow-y: auto;\n transition: width 200ms var(--gnome-easing-default, ease);\n}\n\n.wide.collapsed .sidebar {\n width: var(--gnome-layout-sidebar-rail-width, 56px);\n}\n\n.wide .content {\n flex: 1;\n min-width: 0;\n overflow-y: auto;\n}\n\n/* ─── Narrow — overlay mode ──────────────────────────────────────────────────── */\n\n.narrow .content {\n width: 100%;\n overflow-y: auto;\n}\n\n.narrow .sidebar {\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--sidebar-width, var(--gnome-layout-sidebar-overlay-width, clamp(180px, 75%, 280px)));\n overflow-y: auto;\n z-index: 100;\n\n background-color: var(--gnome-window-bg-color, #fafafa);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.2);\n\n transition: transform var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n/* Start (left) sidebar */\n.narrow.start .sidebar {\n left: 0;\n}\n\n.narrow.start .sidebarOpen {\n transform: translateX(0);\n}\n.narrow.start .sidebarClosed {\n transform: translateX(-100%);\n}\n\n/* End (right) sidebar */\n.narrow.end .sidebar {\n right: 0;\n}\n\n.narrow.end .sidebarOpen {\n transform: translateX(0);\n}\n.narrow.end .sidebarClosed {\n transform: translateX(100%);\n}\n\n/* ─── Backdrop ───────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: absolute;\n inset: 0;\n z-index: 99;\n background-color: rgba(0, 0, 0, 0.35);\n\n opacity: 0;\n pointer-events: none;\n transition: opacity var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease);\n}\n\n.backdropVisible {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .narrow .sidebar {\n background-color: var(--gnome-window-bg-color, #242424);\n box-shadow: 2px 0 16px rgba(0, 0, 0, 0.5);\n }\n\n .backdrop {\n background-color: rgba(0, 0, 0, 0.55);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .narrow .sidebar,\n .backdrop {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { OverlaySplitView } from './OverlaySplitView';
2
1
  export type { OverlaySplitViewProps } from './OverlaySplitView';
2
+ export { OverlaySplitView } from './OverlaySplitView';
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordEntryRow.cjs","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { ViewReveal, ViewConceal } from \"@gnome-ui/icons\";\nimport { EntryRow, type EntryRowProps } from \"../EntryRow\";\nimport styles from \"./PasswordEntryRow.module.css\";\n\nexport interface PasswordEntryRowProps extends Omit<EntryRowProps, \"type\" | \"trailing\"> {\n /** Additional trailing widgets placed before the reveal button. */\n trailing?: ReactNode;\n}\n\n/**\n * Password entry row with a built-in reveal/conceal toggle.\n *\n * Mirrors `AdwPasswordEntryRow` — an `EntryRow` variant that defaults to\n * `type=\"password\"` and provides a trailing icon button to reveal or conceal\n * the entered text. Use inside a `BoxedList` for password settings fields.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PasswordEntryRow.html\n */\nexport function PasswordEntryRow({ trailing, disabled, ...props }: PasswordEntryRowProps) {\n const [revealed, setRevealed] = useState(false);\n\n const revealButton = (\n <button\n type=\"button\"\n className={styles.revealButton}\n onClick={(e) => {\n e.stopPropagation();\n setRevealed((v) => !v);\n }}\n aria-label={revealed ? \"Conceal password\" : \"Reveal password\"}\n aria-pressed={revealed}\n disabled={disabled}\n >\n <Icon\n icon={revealed ? ViewConceal : ViewReveal}\n size=\"md\"\n aria-hidden\n />\n </button>\n );\n\n return (\n <EntryRow\n {...props}\n type={revealed ? \"text\" : \"password\"}\n disabled={disabled}\n trailing={\n <>\n {trailing}\n {revealButton}\n </>\n }\n />\n );\n}\n"],"mappings":"4MAoBA,SAAgB,EAAiB,CAAE,WAAU,WAAU,GAAG,GAAgC,CACxF,GAAM,CAAC,EAAU,IAAA,EAAA,EAAA,UAAwB,GAAM,CAEzC,GACJ,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,aAClB,QAAU,GAAM,CACd,EAAE,iBAAiB,CACnB,EAAa,GAAM,CAAC,EAAE,EAExB,aAAY,EAAW,mBAAqB,kBAC5C,eAAc,EACJ,qBAEV,EAAA,EAAA,KAAC,EAAA,KAAD,CACE,KAAM,EAAW,EAAA,YAAc,EAAA,WAC/B,KAAK,KACL,cAAA,GACA,CAAA,CACK,CAAA,CAGX,OACE,EAAA,EAAA,KAAC,EAAA,SAAD,CACE,GAAI,EACJ,KAAM,EAAW,OAAS,WAChB,WACV,UACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EACA,EACA,CAAA,CAAA,CAEL,CAAA"}
1
+ {"version":3,"file":"PasswordEntryRow.cjs","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.tsx"],"sourcesContent":["import { ViewConceal, ViewReveal } from '@gnome-ui/icons';\nimport { type ReactNode, useState } from 'react';\n\nimport { EntryRow, type EntryRowProps } from '../EntryRow';\nimport { Icon } from '../Icon';\n\nimport styles from './PasswordEntryRow.module.css';\n\nexport interface PasswordEntryRowProps extends Omit<EntryRowProps, 'type' | 'trailing'> {\n /** Additional trailing widgets placed before the reveal button. */\n trailing?: ReactNode;\n}\n\n/**\n * Password entry row with a built-in reveal/conceal toggle.\n *\n * Mirrors `AdwPasswordEntryRow` — an `EntryRow` variant that defaults to\n * `type=\"password\"` and provides a trailing icon button to reveal or conceal\n * the entered text. Use inside a `BoxedList` for password settings fields.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PasswordEntryRow.html\n */\nexport function PasswordEntryRow({ trailing, disabled, ...props }: PasswordEntryRowProps) {\n const [revealed, setRevealed] = useState(false);\n\n const revealButton = (\n <button\n type=\"button\"\n className={styles.revealButton}\n onClick={(e) => {\n e.stopPropagation();\n setRevealed((v) => !v);\n }}\n aria-label={revealed ? 'Conceal password' : 'Reveal password'}\n aria-pressed={revealed}\n disabled={disabled}\n >\n <Icon icon={revealed ? ViewConceal : ViewReveal} size=\"md\" aria-hidden />\n </button>\n );\n\n return (\n <EntryRow\n {...props}\n type={revealed ? 'text' : 'password'}\n disabled={disabled}\n trailing={\n <>\n {trailing}\n {revealButton}\n </>\n }\n />\n );\n}\n"],"mappings":"4MAsBA,SAAgB,EAAiB,CAAE,WAAU,WAAU,GAAG,GAAgC,CACxF,GAAM,CAAC,EAAU,IAAA,EAAA,EAAA,UAAwB,GAAM,CAEzC,GACJ,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,aAClB,QAAU,GAAM,CACd,EAAE,iBAAiB,CACnB,EAAa,GAAM,CAAC,EAAE,EAExB,aAAY,EAAW,mBAAqB,kBAC5C,eAAc,EACJ,qBAEV,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAW,EAAA,YAAc,EAAA,WAAY,KAAK,KAAK,cAAA,GAAc,CAAA,CAClE,CAAA,CAGX,OACE,EAAA,EAAA,KAAC,EAAA,SAAD,CACE,GAAI,EACJ,KAAM,EAAW,OAAS,WAChB,WACV,UACE,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,EACA,EACA,CAAA,CAAA,CAEL,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { EntryRowProps } from '../EntryRow';
3
- export interface PasswordEntryRowProps extends Omit<EntryRowProps, "type" | "trailing"> {
3
+ export interface PasswordEntryRowProps extends Omit<EntryRowProps, 'type' | 'trailing'> {
4
4
  /** Additional trailing widgets placed before the reveal button. */
5
5
  trailing?: ReactNode;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordEntryRow.js","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { Icon } from \"../Icon\";\nimport { ViewReveal, ViewConceal } from \"@gnome-ui/icons\";\nimport { EntryRow, type EntryRowProps } from \"../EntryRow\";\nimport styles from \"./PasswordEntryRow.module.css\";\n\nexport interface PasswordEntryRowProps extends Omit<EntryRowProps, \"type\" | \"trailing\"> {\n /** Additional trailing widgets placed before the reveal button. */\n trailing?: ReactNode;\n}\n\n/**\n * Password entry row with a built-in reveal/conceal toggle.\n *\n * Mirrors `AdwPasswordEntryRow` — an `EntryRow` variant that defaults to\n * `type=\"password\"` and provides a trailing icon button to reveal or conceal\n * the entered text. Use inside a `BoxedList` for password settings fields.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PasswordEntryRow.html\n */\nexport function PasswordEntryRow({ trailing, disabled, ...props }: PasswordEntryRowProps) {\n const [revealed, setRevealed] = useState(false);\n\n const revealButton = (\n <button\n type=\"button\"\n className={styles.revealButton}\n onClick={(e) => {\n e.stopPropagation();\n setRevealed((v) => !v);\n }}\n aria-label={revealed ? \"Conceal password\" : \"Reveal password\"}\n aria-pressed={revealed}\n disabled={disabled}\n >\n <Icon\n icon={revealed ? ViewConceal : ViewReveal}\n size=\"md\"\n aria-hidden\n />\n </button>\n );\n\n return (\n <EntryRow\n {...props}\n type={revealed ? \"text\" : \"password\"}\n disabled={disabled}\n trailing={\n <>\n {trailing}\n {revealButton}\n </>\n }\n />\n );\n}\n"],"mappings":";;;;;;;AAoBA,SAAgB,EAAiB,EAAE,aAAU,aAAU,GAAG,KAAgC;CACxF,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM,EAEzC,IACJ,kBAAC,UAAD;EACE,MAAK;EACL,WAAW,EAAO;EAClB,UAAU,MAAM;AAEd,GADA,EAAE,iBAAiB,EACnB,GAAa,MAAM,CAAC,EAAE;;EAExB,cAAY,IAAW,qBAAqB;EAC5C,gBAAc;EACJ;YAEV,kBAAC,GAAD;GACE,MAAM,IAAW,IAAc;GAC/B,MAAK;GACL,eAAA;GACA,CAAA;EACK,CAAA;AAGX,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,MAAM,IAAW,SAAS;EAChB;EACV,UACE,kBAAA,GAAA,EAAA,UAAA,CACG,GACA,EACA,EAAA,CAAA;EAEL,CAAA"}
1
+ {"version":3,"file":"PasswordEntryRow.js","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.tsx"],"sourcesContent":["import { ViewConceal, ViewReveal } from '@gnome-ui/icons';\nimport { type ReactNode, useState } from 'react';\n\nimport { EntryRow, type EntryRowProps } from '../EntryRow';\nimport { Icon } from '../Icon';\n\nimport styles from './PasswordEntryRow.module.css';\n\nexport interface PasswordEntryRowProps extends Omit<EntryRowProps, 'type' | 'trailing'> {\n /** Additional trailing widgets placed before the reveal button. */\n trailing?: ReactNode;\n}\n\n/**\n * Password entry row with a built-in reveal/conceal toggle.\n *\n * Mirrors `AdwPasswordEntryRow` — an `EntryRow` variant that defaults to\n * `type=\"password\"` and provides a trailing icon button to reveal or conceal\n * the entered text. Use inside a `BoxedList` for password settings fields.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PasswordEntryRow.html\n */\nexport function PasswordEntryRow({ trailing, disabled, ...props }: PasswordEntryRowProps) {\n const [revealed, setRevealed] = useState(false);\n\n const revealButton = (\n <button\n type=\"button\"\n className={styles.revealButton}\n onClick={(e) => {\n e.stopPropagation();\n setRevealed((v) => !v);\n }}\n aria-label={revealed ? 'Conceal password' : 'Reveal password'}\n aria-pressed={revealed}\n disabled={disabled}\n >\n <Icon icon={revealed ? ViewConceal : ViewReveal} size=\"md\" aria-hidden />\n </button>\n );\n\n return (\n <EntryRow\n {...props}\n type={revealed ? 'text' : 'password'}\n disabled={disabled}\n trailing={\n <>\n {trailing}\n {revealButton}\n </>\n }\n />\n );\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,EAAiB,EAAE,aAAU,aAAU,GAAG,KAAgC;CACxF,IAAM,CAAC,GAAU,KAAe,EAAS,GAAM,EAEzC,IACJ,kBAAC,UAAD;EACE,MAAK;EACL,WAAW,EAAO;EAClB,UAAU,MAAM;AAEd,GADA,EAAE,iBAAiB,EACnB,GAAa,MAAM,CAAC,EAAE;;EAExB,cAAY,IAAW,qBAAqB;EAC5C,gBAAc;EACJ;YAEV,kBAAC,GAAD;GAAM,MAAM,IAAW,IAAc;GAAY,MAAK;GAAK,eAAA;GAAc,CAAA;EAClE,CAAA;AAGX,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,MAAM,IAAW,SAAS;EAChB;EACV,UACE,kBAAA,GAAA,EAAA,UAAA,CACG,GACA,EACA,EAAA,CAAA;EAEL,CAAA"}
@@ -1,2 +1,2 @@
1
- var e={revealButton:`_revealButton_1j8z0_3`};exports.default=e;
1
+ var e={revealButton:`_revealButton_1s4rs_3`};exports.default=e;
2
2
  //# sourceMappingURL=PasswordEntryRow.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordEntryRow.module.css.cjs","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.module.css"],"sourcesContent":["/* ─── Reveal button ─────────────────────────────────────────────────────────── */\n\n.revealButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: var(--gnome-radius-small, 6px);\n background: transparent;\n cursor: pointer;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n flex-shrink: 0;\n\n transition:\n opacity var(--gnome-duration-fast) var(--gnome-easing-default),\n background var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.revealButton:hover {\n opacity: 1;\n background: var(--gnome-button-bg-color, rgba(0, 0, 0, 0.07));\n}\n\n.revealButton:active {\n background: var(--gnome-button-active-bg-color, rgba(0, 0, 0, 0.14));\n}\n\n.revealButton:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n opacity: 1;\n}\n\n.revealButton:disabled {\n pointer-events: none;\n opacity: var(--gnome-opacity-disabled, 0.5);\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .revealButton {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"PasswordEntryRow.module.css.cjs","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.module.css"],"sourcesContent":["/* ─── Reveal button ─────────────────────────────────────────────────────────── */\n\n.revealButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: var(--gnome-radius-small, 6px);\n background: transparent;\n cursor: pointer;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n flex-shrink: 0;\n\n transition:\n opacity var(--gnome-duration-fast) var(--gnome-easing-default),\n background var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.revealButton:hover {\n opacity: 1;\n background: var(--gnome-button-bg-color, rgba(0, 0, 0, 0.07));\n}\n\n.revealButton:active {\n background: var(--gnome-button-active-bg-color, rgba(0, 0, 0, 0.14));\n}\n\n.revealButton:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n opacity: 1;\n}\n\n.revealButton:disabled {\n pointer-events: none;\n opacity: var(--gnome-opacity-disabled, 0.5);\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .revealButton {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- var e = { revealButton: "_revealButton_1j8z0_3" };
1
+ var e = { revealButton: "_revealButton_1s4rs_3" };
2
2
  //#endregion
3
3
  export { e as default };
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordEntryRow.module.css.js","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.module.css"],"sourcesContent":["/* ─── Reveal button ─────────────────────────────────────────────────────────── */\n\n.revealButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: var(--gnome-radius-small, 6px);\n background: transparent;\n cursor: pointer;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n flex-shrink: 0;\n\n transition:\n opacity var(--gnome-duration-fast) var(--gnome-easing-default),\n background var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.revealButton:hover {\n opacity: 1;\n background: var(--gnome-button-bg-color, rgba(0, 0, 0, 0.07));\n}\n\n.revealButton:active {\n background: var(--gnome-button-active-bg-color, rgba(0, 0, 0, 0.14));\n}\n\n.revealButton:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n opacity: 1;\n}\n\n.revealButton:disabled {\n pointer-events: none;\n opacity: var(--gnome-opacity-disabled, 0.5);\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .revealButton {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"PasswordEntryRow.module.css.js","names":[],"sources":["../../../src/components/PasswordEntryRow/PasswordEntryRow.module.css"],"sourcesContent":["/* ─── Reveal button ─────────────────────────────────────────────────────────── */\n\n.revealButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: var(--gnome-radius-small, 6px);\n background: transparent;\n cursor: pointer;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n flex-shrink: 0;\n\n transition:\n opacity var(--gnome-duration-fast) var(--gnome-easing-default),\n background var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.revealButton:hover {\n opacity: 1;\n background: var(--gnome-button-bg-color, rgba(0, 0, 0, 0.07));\n}\n\n.revealButton:active {\n background: var(--gnome-button-active-bg-color, rgba(0, 0, 0, 0.14));\n}\n\n.revealButton:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n opacity: 1;\n}\n\n.revealButton:disabled {\n pointer-events: none;\n opacity: var(--gnome-opacity-disabled, 0.5);\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .revealButton {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { PasswordEntryRow } from './PasswordEntryRow';
2
1
  export type { PasswordEntryRowProps } from './PasswordEntryRow';
2
+ export { PasswordEntryRow } from './PasswordEntryRow';
@@ -1 +1 @@
1
- {"version":3,"file":"PathBar.cjs","names":[],"sources":["../../../src/components/PathBar/PathBar.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from \"react\";\nimport styles from \"./PathBar.module.css\";\n\nexport interface PathBarSegment {\n /** Display label for this path segment. */\n label: string;\n /** Opaque path value passed to `onNavigate` when the segment is clicked. */\n path: string;\n /** Optional icon placed before the label (e.g. a folder icon). */\n icon?: ReactNode;\n}\n\nexport interface PathBarProps extends HTMLAttributes<HTMLElement> {\n /**\n * Ordered path segments from root to current location.\n * The last segment is the current folder and is rendered non-interactive.\n */\n segments: PathBarSegment[];\n /**\n * Called when the user clicks on a non-current segment.\n * Receives the `path` and zero-based `index` of the clicked segment.\n */\n onNavigate?: (path: string, index: number) => void;\n}\n\n/**\n * Breadcrumb path bar for navigating a hierarchical location.\n *\n * Mirrors the location bar in GNOME Files (Nautilus). Segments are separated\n * by chevron dividers. All segments except the last are interactive — clicking\n * them calls `onNavigate`. The last segment represents the current location and\n * is rendered as a static label.\n *\n * @see https://developer.gnome.org/hig/patterns/nav/search.html\n */\nexport function PathBar({ segments, onNavigate, className, ...props }: PathBarProps) {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[styles.pathBar, className].filter(Boolean).join(\" \")}\n {...props}\n >\n <ol className={styles.list} aria-label=\"Path segments\">\n {segments.map((segment, index) => {\n const isCurrent = index === segments.length - 1;\n return (\n <li key={segment.path} className={styles.item}>\n {/* Separator chevron (not before the first segment) */}\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" focusable=\"false\">\n <path\n d=\"M4 2l4 4-4 4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n\n {isCurrent ? (\n /* Current folder — non-interactive */\n <span\n className={styles.current}\n aria-current=\"page\"\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">{segment.icon}</span>\n )}\n {segment.label}\n </span>\n ) : (\n /* Ancestor folder — clickable */\n <button\n type=\"button\"\n className={styles.segment}\n onClick={() => onNavigate?.(segment.path, index)}\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">{segment.icon}</span>\n )}\n {segment.label}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"mappings":"+EAmCA,SAAgB,EAAQ,CAAE,WAAU,aAAY,YAAW,GAAG,GAAuB,CACnF,OACE,EAAA,EAAA,KAAC,MAAD,CACE,aAAW,aACX,UAAW,CAAC,EAAA,QAAO,QAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAChE,GAAI,YAEJ,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW,EAAA,QAAO,KAAM,aAAW,yBACpC,EAAS,KAAK,EAAS,IAAU,CAChC,IAAM,EAAY,IAAU,EAAS,OAAS,EAC9C,OACE,EAAA,EAAA,MAAC,KAAD,CAAuB,UAAW,EAAA,QAAO,cAAzC,CAEG,EAAQ,IACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAW,cAAY,iBAC7C,EAAA,EAAA,KAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,UAAU,kBACxD,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,eACF,KAAK,OACL,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACf,CAAA,CACE,CAAA,CACD,CAAA,CAGR,GAEC,EAAA,EAAA,MAAC,OAAD,CACE,UAAW,EAAA,QAAO,QAClB,eAAa,gBAFf,CAIG,EAAQ,OACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAM,cAAY,gBAAQ,EAAQ,KAAY,CAAA,CAEvE,EAAQ,MACJ,IAGP,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,QAClB,YAAe,IAAa,EAAQ,KAAM,EAAM,UAHlD,CAKG,EAAQ,OACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAM,cAAY,gBAAQ,EAAQ,KAAY,CAAA,CAEvE,EAAQ,MACF,GAER,EAzCI,EAAQ,KAyCZ,EAEP,CACC,CAAA,CACD,CAAA"}
1
+ {"version":3,"file":"PathBar.cjs","names":[],"sources":["../../../src/components/PathBar/PathBar.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PathBar.module.css';\n\nexport interface PathBarSegment {\n /** Display label for this path segment. */\n label: string;\n /** Opaque path value passed to `onNavigate` when the segment is clicked. */\n path: string;\n /** Optional icon placed before the label (e.g. a folder icon). */\n icon?: ReactNode;\n}\n\nexport interface PathBarProps extends HTMLAttributes<HTMLElement> {\n /**\n * Ordered path segments from root to current location.\n * The last segment is the current folder and is rendered non-interactive.\n */\n segments: PathBarSegment[];\n /**\n * Called when the user clicks on a non-current segment.\n * Receives the `path` and zero-based `index` of the clicked segment.\n */\n onNavigate?: (path: string, index: number) => void;\n}\n\n/**\n * Breadcrumb path bar for navigating a hierarchical location.\n *\n * Mirrors the location bar in GNOME Files (Nautilus). Segments are separated\n * by chevron dividers. All segments except the last are interactive — clicking\n * them calls `onNavigate`. The last segment represents the current location and\n * is rendered as a static label.\n *\n * @see https://developer.gnome.org/hig/patterns/nav/search.html\n */\nexport function PathBar({ segments, onNavigate, className, ...props }: PathBarProps) {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[styles.pathBar, className].filter(Boolean).join(' ')}\n {...props}\n >\n <ol className={styles.list} aria-label=\"Path segments\">\n {segments.map((segment, index) => {\n const isCurrent = index === segments.length - 1;\n\n return (\n <li key={segment.path} className={styles.item}>\n {/* Separator chevron (not before the first segment) */}\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" focusable=\"false\">\n <path\n d=\"M4 2l4 4-4 4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n\n {isCurrent ? (\n /* Current folder — non-interactive */\n <span className={styles.current} aria-current=\"page\">\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {segment.icon}\n </span>\n )}\n {segment.label}\n </span>\n ) : (\n /* Ancestor folder — clickable */\n <button\n type=\"button\"\n className={styles.segment}\n onClick={() => onNavigate?.(segment.path, index)}\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {segment.icon}\n </span>\n )}\n {segment.label}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"mappings":"+EAoCA,SAAgB,EAAQ,CAAE,WAAU,aAAY,YAAW,GAAG,GAAuB,CACnF,OACE,EAAA,EAAA,KAAC,MAAD,CACE,aAAW,aACX,UAAW,CAAC,EAAA,QAAO,QAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAChE,GAAI,YAEJ,EAAA,EAAA,KAAC,KAAD,CAAI,UAAW,EAAA,QAAO,KAAM,aAAW,yBACpC,EAAS,KAAK,EAAS,IAAU,CAChC,IAAM,EAAY,IAAU,EAAS,OAAS,EAE9C,OACE,EAAA,EAAA,MAAC,KAAD,CAAuB,UAAW,EAAA,QAAO,cAAzC,CAEG,EAAQ,IACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAW,cAAY,iBAC7C,EAAA,EAAA,KAAC,MAAD,CAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,UAAU,kBACxD,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,eACF,KAAK,OACL,OAAO,eACP,YAAY,MACZ,cAAc,QACd,eAAe,QACf,CAAA,CACE,CAAA,CACD,CAAA,CAGR,GAEC,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAS,eAAa,gBAA9C,CACG,EAAQ,OACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAM,cAAY,gBACvC,EAAQ,KACJ,CAAA,CAER,EAAQ,MACJ,IAGP,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,QAClB,YAAe,IAAa,EAAQ,KAAM,EAAM,UAHlD,CAKG,EAAQ,OACP,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,KAAM,cAAY,gBACvC,EAAQ,KACJ,CAAA,CAER,EAAQ,MACF,GAER,EA1CI,EAAQ,KA0CZ,EAEP,CACC,CAAA,CACD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"PathBar.js","names":[],"sources":["../../../src/components/PathBar/PathBar.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from \"react\";\nimport styles from \"./PathBar.module.css\";\n\nexport interface PathBarSegment {\n /** Display label for this path segment. */\n label: string;\n /** Opaque path value passed to `onNavigate` when the segment is clicked. */\n path: string;\n /** Optional icon placed before the label (e.g. a folder icon). */\n icon?: ReactNode;\n}\n\nexport interface PathBarProps extends HTMLAttributes<HTMLElement> {\n /**\n * Ordered path segments from root to current location.\n * The last segment is the current folder and is rendered non-interactive.\n */\n segments: PathBarSegment[];\n /**\n * Called when the user clicks on a non-current segment.\n * Receives the `path` and zero-based `index` of the clicked segment.\n */\n onNavigate?: (path: string, index: number) => void;\n}\n\n/**\n * Breadcrumb path bar for navigating a hierarchical location.\n *\n * Mirrors the location bar in GNOME Files (Nautilus). Segments are separated\n * by chevron dividers. All segments except the last are interactive — clicking\n * them calls `onNavigate`. The last segment represents the current location and\n * is rendered as a static label.\n *\n * @see https://developer.gnome.org/hig/patterns/nav/search.html\n */\nexport function PathBar({ segments, onNavigate, className, ...props }: PathBarProps) {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[styles.pathBar, className].filter(Boolean).join(\" \")}\n {...props}\n >\n <ol className={styles.list} aria-label=\"Path segments\">\n {segments.map((segment, index) => {\n const isCurrent = index === segments.length - 1;\n return (\n <li key={segment.path} className={styles.item}>\n {/* Separator chevron (not before the first segment) */}\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" focusable=\"false\">\n <path\n d=\"M4 2l4 4-4 4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n\n {isCurrent ? (\n /* Current folder — non-interactive */\n <span\n className={styles.current}\n aria-current=\"page\"\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">{segment.icon}</span>\n )}\n {segment.label}\n </span>\n ) : (\n /* Ancestor folder — clickable */\n <button\n type=\"button\"\n className={styles.segment}\n onClick={() => onNavigate?.(segment.path, index)}\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">{segment.icon}</span>\n )}\n {segment.label}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"mappings":";;;AAmCA,SAAgB,EAAQ,EAAE,aAAU,eAAY,cAAW,GAAG,KAAuB;AACnF,QACE,kBAAC,OAAD;EACE,cAAW;EACX,WAAW,CAAC,EAAO,SAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAChE,GAAI;YAEJ,kBAAC,MAAD;GAAI,WAAW,EAAO;GAAM,cAAW;aACpC,EAAS,KAAK,GAAS,MAAU;IAChC,IAAM,IAAY,MAAU,EAAS,SAAS;AAC9C,WACE,kBAAC,MAAD;KAAuB,WAAW,EAAO;eAAzC,CAEG,IAAQ,KACP,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAW,eAAY;gBAC7C,kBAAC,OAAD;OAAK,OAAM;OAAK,QAAO;OAAK,SAAQ;OAAY,WAAU;iBACxD,kBAAC,QAAD;QACE,GAAE;QACF,MAAK;QACL,QAAO;QACP,aAAY;QACZ,eAAc;QACd,gBAAe;QACf,CAAA;OACE,CAAA;MACD,CAAA,EAGR,IAEC,kBAAC,QAAD;MACE,WAAW,EAAO;MAClB,gBAAa;gBAFf,CAIG,EAAQ,QACP,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAM,eAAY;iBAAQ,EAAQ;OAAY,CAAA,EAEvE,EAAQ,MACJ;UAGP,kBAAC,UAAD;MACE,MAAK;MACL,WAAW,EAAO;MAClB,eAAe,IAAa,EAAQ,MAAM,EAAM;gBAHlD,CAKG,EAAQ,QACP,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAM,eAAY;iBAAQ,EAAQ;OAAY,CAAA,EAEvE,EAAQ,MACF;QAER;OAzCI,EAAQ,KAyCZ;KAEP;GACC,CAAA;EACD,CAAA"}
1
+ {"version":3,"file":"PathBar.js","names":[],"sources":["../../../src/components/PathBar/PathBar.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './PathBar.module.css';\n\nexport interface PathBarSegment {\n /** Display label for this path segment. */\n label: string;\n /** Opaque path value passed to `onNavigate` when the segment is clicked. */\n path: string;\n /** Optional icon placed before the label (e.g. a folder icon). */\n icon?: ReactNode;\n}\n\nexport interface PathBarProps extends HTMLAttributes<HTMLElement> {\n /**\n * Ordered path segments from root to current location.\n * The last segment is the current folder and is rendered non-interactive.\n */\n segments: PathBarSegment[];\n /**\n * Called when the user clicks on a non-current segment.\n * Receives the `path` and zero-based `index` of the clicked segment.\n */\n onNavigate?: (path: string, index: number) => void;\n}\n\n/**\n * Breadcrumb path bar for navigating a hierarchical location.\n *\n * Mirrors the location bar in GNOME Files (Nautilus). Segments are separated\n * by chevron dividers. All segments except the last are interactive — clicking\n * them calls `onNavigate`. The last segment represents the current location and\n * is rendered as a static label.\n *\n * @see https://developer.gnome.org/hig/patterns/nav/search.html\n */\nexport function PathBar({ segments, onNavigate, className, ...props }: PathBarProps) {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[styles.pathBar, className].filter(Boolean).join(' ')}\n {...props}\n >\n <ol className={styles.list} aria-label=\"Path segments\">\n {segments.map((segment, index) => {\n const isCurrent = index === segments.length - 1;\n\n return (\n <li key={segment.path} className={styles.item}>\n {/* Separator chevron (not before the first segment) */}\n {index > 0 && (\n <span className={styles.separator} aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" focusable=\"false\">\n <path\n d=\"M4 2l4 4-4 4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n\n {isCurrent ? (\n /* Current folder — non-interactive */\n <span className={styles.current} aria-current=\"page\">\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {segment.icon}\n </span>\n )}\n {segment.label}\n </span>\n ) : (\n /* Ancestor folder — clickable */\n <button\n type=\"button\"\n className={styles.segment}\n onClick={() => onNavigate?.(segment.path, index)}\n >\n {segment.icon && (\n <span className={styles.icon} aria-hidden=\"true\">\n {segment.icon}\n </span>\n )}\n {segment.label}\n </button>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n"],"mappings":";;;AAoCA,SAAgB,EAAQ,EAAE,aAAU,eAAY,cAAW,GAAG,KAAuB;AACnF,QACE,kBAAC,OAAD;EACE,cAAW;EACX,WAAW,CAAC,EAAO,SAAS,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAChE,GAAI;YAEJ,kBAAC,MAAD;GAAI,WAAW,EAAO;GAAM,cAAW;aACpC,EAAS,KAAK,GAAS,MAAU;IAChC,IAAM,IAAY,MAAU,EAAS,SAAS;AAE9C,WACE,kBAAC,MAAD;KAAuB,WAAW,EAAO;eAAzC,CAEG,IAAQ,KACP,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAW,eAAY;gBAC7C,kBAAC,OAAD;OAAK,OAAM;OAAK,QAAO;OAAK,SAAQ;OAAY,WAAU;iBACxD,kBAAC,QAAD;QACE,GAAE;QACF,MAAK;QACL,QAAO;QACP,aAAY;QACZ,eAAc;QACd,gBAAe;QACf,CAAA;OACE,CAAA;MACD,CAAA,EAGR,IAEC,kBAAC,QAAD;MAAM,WAAW,EAAO;MAAS,gBAAa;gBAA9C,CACG,EAAQ,QACP,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAM,eAAY;iBACvC,EAAQ;OACJ,CAAA,EAER,EAAQ,MACJ;UAGP,kBAAC,UAAD;MACE,MAAK;MACL,WAAW,EAAO;MAClB,eAAe,IAAa,EAAQ,MAAM,EAAM;gBAHlD,CAKG,EAAQ,QACP,kBAAC,QAAD;OAAM,WAAW,EAAO;OAAM,eAAY;iBACvC,EAAQ;OACJ,CAAA,EAER,EAAQ,MACF;QAER;OA1CI,EAAQ,KA0CZ;KAEP;GACC,CAAA;EACD,CAAA"}
@@ -1,2 +1,2 @@
1
- var e={pathBar:`_pathBar_1n4ev_3`,list:`_list_1n4ev_12`,item:`_item_1n4ev_25`,separator:`_separator_1n4ev_33`,segment:`_segment_1n4ev_44`,current:`_current_1n4ev_81`,icon:`_icon_1n4ev_98`};exports.default=e;
1
+ var e={pathBar:`_pathBar_12z8k_3`,list:`_list_12z8k_12`,item:`_item_12z8k_25`,separator:`_separator_12z8k_33`,segment:`_segment_12z8k_44`,current:`_current_12z8k_81`,icon:`_icon_12z8k_98`};exports.default=e;
2
2
  //# sourceMappingURL=PathBar.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathBar.module.css.cjs","names":[],"sources":["../../../src/components/PathBar/PathBar.module.css"],"sourcesContent":["/* ─── Root ────────────────────────────────────────────────────────────────── */\n\n.pathBar {\n display: flex;\n align-items: center;\n min-width: 0;\n font-family: var(--gnome-font-family, sans-serif);\n}\n\n/* ─── List ────────────────────────────────────────────────────────────────── */\n\n.list {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n min-width: 0;\n}\n\n/* ─── Item ────────────────────────────────────────────────────────────────── */\n\n.item {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n/* ─── Separator ───────────────────────────────────────────────────────────── */\n\n.separator {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.35));\n opacity: 0.5;\n margin: 0 1px;\n}\n\n/* ─── Ancestor segment (button) ───────────────────────────────────────────── */\n\n.segment {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: var(--gnome-radius-sm, 6px);\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 160px;\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.segment:hover {\n background-color: var(--gnome-hover-overlay, rgba(0, 0, 0, 0.06));\n}\n\n.segment:active {\n background-color: var(--gnome-active-overlay, rgba(0, 0, 0, 0.12));\n}\n\n.segment:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 2px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Current segment (non-interactive) ──────────────────────────────────── */\n\n.current {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n/* ─── Icon ────────────────────────────────────────────────────────────────── */\n\n.icon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ─── Reduced motion ──────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .segment {\n transition: none;\n }\n}\n\n/* ─── Dark mode ───────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .segment:hover {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .segment:active {\n background-color: rgba(255, 255, 255, 0.14);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"PathBar.module.css.cjs","names":[],"sources":["../../../src/components/PathBar/PathBar.module.css"],"sourcesContent":["/* ─── Root ────────────────────────────────────────────────────────────────── */\n\n.pathBar {\n display: flex;\n align-items: center;\n min-width: 0;\n font-family: var(--gnome-font-family, sans-serif);\n}\n\n/* ─── List ────────────────────────────────────────────────────────────────── */\n\n.list {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n min-width: 0;\n}\n\n/* ─── Item ────────────────────────────────────────────────────────────────── */\n\n.item {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n/* ─── Separator ───────────────────────────────────────────────────────────── */\n\n.separator {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.35));\n opacity: 0.5;\n margin: 0 1px;\n}\n\n/* ─── Ancestor segment (button) ───────────────────────────────────────────── */\n\n.segment {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: var(--gnome-radius-sm, 6px);\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 160px;\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.segment:hover {\n background-color: var(--gnome-hover-overlay, rgba(0, 0, 0, 0.06));\n}\n\n.segment:active {\n background-color: var(--gnome-active-overlay, rgba(0, 0, 0, 0.12));\n}\n\n.segment:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 2px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Current segment (non-interactive) ──────────────────────────────────── */\n\n.current {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n/* ─── Icon ────────────────────────────────────────────────────────────────── */\n\n.icon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ─── Reduced motion ──────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .segment {\n transition: none;\n }\n}\n\n/* ─── Dark mode ───────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .segment:hover {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .segment:active {\n background-color: rgba(255, 255, 255, 0.14);\n }\n}\n"],"mappings":""}
@@ -1,11 +1,11 @@
1
1
  var e = {
2
- pathBar: "_pathBar_1n4ev_3",
3
- list: "_list_1n4ev_12",
4
- item: "_item_1n4ev_25",
5
- separator: "_separator_1n4ev_33",
6
- segment: "_segment_1n4ev_44",
7
- current: "_current_1n4ev_81",
8
- icon: "_icon_1n4ev_98"
2
+ pathBar: "_pathBar_12z8k_3",
3
+ list: "_list_12z8k_12",
4
+ item: "_item_12z8k_25",
5
+ separator: "_separator_12z8k_33",
6
+ segment: "_segment_12z8k_44",
7
+ current: "_current_12z8k_81",
8
+ icon: "_icon_12z8k_98"
9
9
  };
10
10
  //#endregion
11
11
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"PathBar.module.css.js","names":[],"sources":["../../../src/components/PathBar/PathBar.module.css"],"sourcesContent":["/* ─── Root ────────────────────────────────────────────────────────────────── */\n\n.pathBar {\n display: flex;\n align-items: center;\n min-width: 0;\n font-family: var(--gnome-font-family, sans-serif);\n}\n\n/* ─── List ────────────────────────────────────────────────────────────────── */\n\n.list {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n min-width: 0;\n}\n\n/* ─── Item ────────────────────────────────────────────────────────────────── */\n\n.item {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n/* ─── Separator ───────────────────────────────────────────────────────────── */\n\n.separator {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.35));\n opacity: 0.5;\n margin: 0 1px;\n}\n\n/* ─── Ancestor segment (button) ───────────────────────────────────────────── */\n\n.segment {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: var(--gnome-radius-sm, 6px);\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 160px;\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.segment:hover {\n background-color: var(--gnome-hover-overlay, rgba(0, 0, 0, 0.06));\n}\n\n.segment:active {\n background-color: var(--gnome-active-overlay, rgba(0, 0, 0, 0.12));\n}\n\n.segment:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 2px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Current segment (non-interactive) ──────────────────────────────────── */\n\n.current {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n/* ─── Icon ────────────────────────────────────────────────────────────────── */\n\n.icon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ─── Reduced motion ──────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .segment {\n transition: none;\n }\n}\n\n/* ─── Dark mode ───────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .segment:hover {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .segment:active {\n background-color: rgba(255, 255, 255, 0.14);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"PathBar.module.css.js","names":[],"sources":["../../../src/components/PathBar/PathBar.module.css"],"sourcesContent":["/* ─── Root ────────────────────────────────────────────────────────────────── */\n\n.pathBar {\n display: flex;\n align-items: center;\n min-width: 0;\n font-family: var(--gnome-font-family, sans-serif);\n}\n\n/* ─── List ────────────────────────────────────────────────────────────────── */\n\n.list {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0;\n margin: 0;\n padding: 0;\n list-style: none;\n min-width: 0;\n}\n\n/* ─── Item ────────────────────────────────────────────────────────────────── */\n\n.item {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n/* ─── Separator ───────────────────────────────────────────────────────────── */\n\n.separator {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.35));\n opacity: 0.5;\n margin: 0 1px;\n}\n\n/* ─── Ancestor segment (button) ───────────────────────────────────────────── */\n\n.segment {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n border-radius: var(--gnome-radius-sm, 6px);\n border: none;\n background: transparent;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n cursor: pointer;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 160px;\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.segment:hover {\n background-color: var(--gnome-hover-overlay, rgba(0, 0, 0, 0.06));\n}\n\n.segment:active {\n background-color: var(--gnome-active-overlay, rgba(0, 0, 0, 0.12));\n}\n\n.segment:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 2px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Current segment (non-interactive) ──────────────────────────────────── */\n\n.current {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 6px;\n font-family: inherit;\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 200px;\n}\n\n/* ─── Icon ────────────────────────────────────────────────────────────────── */\n\n.icon {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* ─── Reduced motion ──────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .segment {\n transition: none;\n }\n}\n\n/* ─── Dark mode ───────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .segment:hover {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .segment:active {\n background-color: rgba(255, 255, 255, 0.14);\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export { PathBar } from './PathBar';
2
1
  export type { PathBarProps, PathBarSegment } from './PathBar';
2
+ export { PathBar } from './PathBar';
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.cjs","names":[],"sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useId,\n useEffect,\n useCallback,\n cloneElement,\n type ReactElement,\n type HTMLAttributes,\n type ReactNode,\n type KeyboardEvent,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styles from \"./Popover.module.css\";\n\nexport type PopoverPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\n\nexport interface PopoverProps {\n /**\n * The rich content rendered inside the popover panel.\n * Can include interactive elements (buttons, links, forms).\n */\n content: ReactNode;\n /**\n * Preferred placement relative to the trigger.\n * Flips automatically when there is not enough viewport space.\n * Defaults to `\"bottom\"`.\n */\n placement?: PopoverPlacement;\n /**\n * Whether the popover is open (controlled mode).\n * Omit to use uncontrolled mode where the trigger toggles it.\n */\n open?: boolean;\n /**\n * Called when the popover requests to be closed\n * (Escape key, outside click, or trigger click while open).\n */\n onClose?: () => void;\n /**\n * Called when open state should change (controlled mode).\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element. Must be a single React element that can\n * receive `ref` and click/keyboard event props.\n */\n children: ReactElement<HTMLAttributes<HTMLElement>>;\n}\n\ninterface Position {\n top: number;\n left: number;\n placement: PopoverPlacement;\n /** Arrow center offset in px from the near edge of the panel.\n * Horizontal (left) for top/bottom; vertical (top) for left/right.\n * Undefined means use the default 50% CSS. */\n arrowOffset?: number;\n}\n\nconst GAP = 8;\nconst MARGIN = 10;\nconst ARROW_HALF = 6; // half of the 12 px arrow\n\nfunction computePosition(\n trigger: DOMRect,\n popover: DOMRect,\n preferred: PopoverPlacement\n): Position {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const order: PopoverPlacement[] = [\n preferred,\n preferred === \"top\" ? \"bottom\"\n : preferred === \"bottom\" ? \"top\"\n : preferred === \"left\" ? \"right\"\n : \"left\",\n \"bottom\", \"top\", \"left\", \"right\",\n ];\n\n // De-duplicate while preserving order\n const candidates = [...new Set(order)];\n\n function calcRaw(p: PopoverPlacement): { top: number; left: number } {\n if (p === \"bottom\") return {\n top: trigger.bottom + GAP,\n left: trigger.left + trigger.width / 2 - popover.width / 2,\n };\n if (p === \"top\") return {\n top: trigger.top - popover.height - GAP,\n left: trigger.left + trigger.width / 2 - popover.width / 2,\n };\n if (p === \"left\") return {\n top: trigger.top + trigger.height / 2 - popover.height / 2,\n left: trigger.left - popover.width - GAP,\n };\n return {\n top: trigger.top + trigger.height / 2 - popover.height / 2,\n left: trigger.right + GAP,\n };\n }\n\n // First pass: find a placement that fits both axes perfectly.\n for (const p of candidates) {\n const { top, left } = calcRaw(p);\n const fitsH = left >= MARGIN && left + popover.width <= vw - MARGIN;\n const fitsV = top >= MARGIN && top + popover.height <= vh - MARGIN;\n if (fitsH && fitsV) {\n // Always use pixel arrowOffset (never rely on CSS left:50%) so the arrow\n // points exactly at the trigger center regardless of sub-pixel rounding.\n const arrowOffset =\n p === \"top\" || p === \"bottom\"\n ? trigger.left + trigger.width / 2 - left\n : trigger.top + trigger.height / 2 - top;\n return { top, left, placement: p, arrowOffset };\n }\n }\n\n // Second pass: fits the primary axis; clamp the secondary axis and\n // shift the arrow so it still points at the trigger center.\n for (const p of candidates) {\n const { top, left } = calcRaw(p);\n const fitsV = top >= MARGIN && top + popover.height <= vh - MARGIN;\n const fitsH = left >= MARGIN && left + popover.width <= vw - MARGIN;\n\n if ((p === \"top\" || p === \"bottom\") && fitsV) {\n const clampedLeft = Math.max(MARGIN, Math.min(left, vw - popover.width - MARGIN));\n const rawOffset = trigger.left + trigger.width / 2 - clampedLeft;\n return {\n top, left: clampedLeft, placement: p,\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawOffset, popover.width - ARROW_HALF - 4)),\n };\n }\n\n if ((p === \"left\" || p === \"right\") && fitsH) {\n const clampedTop = Math.max(MARGIN, Math.min(top, vh - popover.height - MARGIN));\n const rawOffset = trigger.top + trigger.height / 2 - clampedTop;\n return {\n top: clampedTop, left, placement: p,\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawOffset, popover.height - ARROW_HALF - 4)),\n };\n }\n }\n\n // Fallback: clamp bottom placement and shift arrow to match trigger.\n const fbTop = trigger.bottom + GAP;\n const fbLeft = trigger.left + trigger.width / 2 - popover.width / 2;\n const clampedTop = Math.max(MARGIN, Math.min(fbTop, vh - popover.height - MARGIN));\n const clampedLeft = Math.max(MARGIN, Math.min(fbLeft, vw - popover.width - MARGIN));\n const rawArrowOffset = trigger.left + trigger.width / 2 - clampedLeft;\n return {\n top: clampedTop,\n left: clampedLeft,\n placement: \"bottom\",\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawArrowOffset, popover.width - ARROW_HALF - 4)),\n };\n}\n\n/**\n * Floating panel anchored to a trigger element.\n *\n * Unlike `Tooltip`, a Popover can contain rich interactive content\n * (menus, forms, details). It follows the Adwaita `GtkPopover` pattern.\n *\n * - Supports both controlled (`open` + `onClose`) and uncontrolled modes.\n * - Auto-positions with viewport-aware flip.\n * - Closes on Escape, outside click, or trigger re-click.\n * - Focus is moved into the panel on open; returns to the trigger on close.\n * - `aria-haspopup=\"dialog\"` + `aria-expanded` wired to the trigger.\n * - `role=\"dialog\"` on the panel with `aria-labelledby` when a heading is present.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Popover.html\n */\nexport function Popover({\n content,\n placement: preferredPlacement = \"bottom\",\n open: controlledOpen,\n onClose,\n onOpenChange,\n children,\n}: PopoverProps) {\n const isControlled = controlledOpen !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const [pos, setPos] = useState<Position | null>(null);\n\n const triggerId = useId();\n const popoverId = useId();\n const triggerRef = useRef<HTMLElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const previouslyFocused = useRef<Element | null>(null);\n\n const close = useCallback(() => {\n if (isControlled) {\n onClose?.();\n } else {\n setUncontrolledOpen(false);\n }\n onOpenChange?.(false);\n }, [isControlled, onClose, onOpenChange]);\n\n const toggle = useCallback(() => {\n if (open) {\n close();\n } else {\n if (!isControlled) setUncontrolledOpen(true);\n onOpenChange?.(true);\n }\n }, [open, close, isControlled, onOpenChange]);\n\n // Position panel\n const place = useCallback(() => {\n if (!triggerRef.current || !panelRef.current) return;\n setPos(\n computePosition(\n triggerRef.current.getBoundingClientRect(),\n panelRef.current.getBoundingClientRect(),\n preferredPlacement\n )\n );\n }, [preferredPlacement]);\n\n // Reposition on open, scroll, resize\n useEffect(() => {\n if (!open) return;\n // Two RAF: first lets panel mount with hidden styles so we can measure it;\n // second applies the measured position.\n const id = requestAnimationFrame(() => {\n place();\n window.addEventListener(\"scroll\", place, { passive: true, capture: true });\n window.addEventListener(\"resize\", place, { passive: true });\n });\n return () => {\n cancelAnimationFrame(id);\n window.removeEventListener(\"scroll\", place, { capture: true });\n window.removeEventListener(\"resize\", place);\n };\n }, [open, place]);\n\n // Save / restore focus\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n requestAnimationFrame(() => {\n const first = panelRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n (first ?? panelRef.current)?.focus();\n });\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setPos(null);\n }\n }, [open]);\n\n // Close on outside pointer\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (\n !triggerRef.current?.contains(e.target as Node) &&\n !panelRef.current?.contains(e.target as Node)\n ) {\n close();\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, close]);\n\n // Escape key\n const handlePanelKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") { e.stopPropagation(); close(); }\n },\n [close]\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const trigger = cloneElement(children as any, {\n ref: triggerRef,\n id: triggerId,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? popoverId : undefined,\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n toggle();\n children.props.onClick?.(e);\n },\n });\n\n const panel = (\n <div\n ref={panelRef}\n id={popoverId}\n role=\"dialog\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={[\n styles.panel,\n pos ? styles[pos.placement] : null,\n open && pos ? styles.visible : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={\n pos\n ? { top: pos.top, left: pos.left }\n : { visibility: \"hidden\", pointerEvents: \"none\", top: -9999, left: -9999 }\n }\n onKeyDown={handlePanelKeyDown}\n >\n {/* Arrow — offset shifts it to point at the trigger when the panel is clamped */}\n <div\n className={styles.arrow}\n aria-hidden=\"true\"\n style={\n pos?.arrowOffset !== undefined\n ? pos.placement === \"top\" || pos.placement === \"bottom\"\n ? { left: pos.arrowOffset - ARROW_HALF, marginLeft: 0 }\n : { top: pos.arrowOffset - ARROW_HALF, marginTop: 0 }\n : undefined\n }\n />\n {content}\n </div>\n );\n\n return (\n <>\n {trigger}\n {open &&\n (typeof document !== \"undefined\"\n ? createPortal(panel, document.body)\n : panel)}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.cjs","names":[],"sources":["../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import {\n cloneElement,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactElement,\n type ReactNode,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\n\nimport { createPortal } from 'react-dom';\n\nimport styles from './Popover.module.css';\n\nexport type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface PopoverProps {\n /**\n * The rich content rendered inside the popover panel.\n * Can include interactive elements (buttons, links, forms).\n */\n content: ReactNode;\n /**\n * Preferred placement relative to the trigger.\n * Flips automatically when there is not enough viewport space.\n * Defaults to `\"bottom\"`.\n */\n placement?: PopoverPlacement;\n /**\n * Whether the popover is open (controlled mode).\n * Omit to use uncontrolled mode where the trigger toggles it.\n */\n open?: boolean;\n /**\n * Called when the popover requests to be closed\n * (Escape key, outside click, or trigger click while open).\n */\n onClose?: () => void;\n /**\n * Called when open state should change (controlled mode).\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The trigger element. Must be a single React element that can\n * receive `ref` and click/keyboard event props.\n */\n children: ReactElement<HTMLAttributes<HTMLElement>>;\n}\n\ninterface Position {\n top: number;\n left: number;\n placement: PopoverPlacement;\n /** Arrow center offset in px from the near edge of the panel.\n * Horizontal (left) for top/bottom; vertical (top) for left/right.\n * Undefined means use the default 50% CSS. */\n arrowOffset?: number;\n}\n\nconst GAP = 8;\nconst MARGIN = 10;\nconst ARROW_HALF = 6; // half of the 12 px arrow\n\nfunction computePosition(\n trigger: DOMRect,\n popover: DOMRect,\n preferred: PopoverPlacement,\n): Position {\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n const order: PopoverPlacement[] = [\n preferred,\n preferred === 'top'\n ? 'bottom'\n : preferred === 'bottom'\n ? 'top'\n : preferred === 'left'\n ? 'right'\n : 'left',\n 'bottom',\n 'top',\n 'left',\n 'right',\n ];\n\n // De-duplicate while preserving order\n const candidates = [...new Set(order)];\n\n function calcRaw(p: PopoverPlacement): { top: number; left: number } {\n if (p === 'bottom') {\n return {\n top: trigger.bottom + GAP,\n left: trigger.left + trigger.width / 2 - popover.width / 2,\n };\n }\n\n if (p === 'top') {\n return {\n top: trigger.top - popover.height - GAP,\n left: trigger.left + trigger.width / 2 - popover.width / 2,\n };\n }\n\n if (p === 'left') {\n return {\n top: trigger.top + trigger.height / 2 - popover.height / 2,\n left: trigger.left - popover.width - GAP,\n };\n }\n\n return {\n top: trigger.top + trigger.height / 2 - popover.height / 2,\n left: trigger.right + GAP,\n };\n }\n\n // First pass: find a placement that fits both axes perfectly.\n for (const p of candidates) {\n const { top, left } = calcRaw(p);\n const fitsH = left >= MARGIN && left + popover.width <= vw - MARGIN;\n const fitsV = top >= MARGIN && top + popover.height <= vh - MARGIN;\n\n if (fitsH && fitsV) {\n // Always use pixel arrowOffset (never rely on CSS left:50%) so the arrow\n // points exactly at the trigger center regardless of sub-pixel rounding.\n const arrowOffset =\n p === 'top' || p === 'bottom'\n ? trigger.left + trigger.width / 2 - left\n : trigger.top + trigger.height / 2 - top;\n\n return { top, left, placement: p, arrowOffset };\n }\n }\n\n // Second pass: fits the primary axis; clamp the secondary axis and\n // shift the arrow so it still points at the trigger center.\n for (const p of candidates) {\n const { top, left } = calcRaw(p);\n const fitsV = top >= MARGIN && top + popover.height <= vh - MARGIN;\n const fitsH = left >= MARGIN && left + popover.width <= vw - MARGIN;\n\n if ((p === 'top' || p === 'bottom') && fitsV) {\n const clampedLeft = Math.max(MARGIN, Math.min(left, vw - popover.width - MARGIN));\n const rawOffset = trigger.left + trigger.width / 2 - clampedLeft;\n\n return {\n top,\n left: clampedLeft,\n placement: p,\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawOffset, popover.width - ARROW_HALF - 4)),\n };\n }\n\n if ((p === 'left' || p === 'right') && fitsH) {\n const clampedTop = Math.max(MARGIN, Math.min(top, vh - popover.height - MARGIN));\n const rawOffset = trigger.top + trigger.height / 2 - clampedTop;\n\n return {\n top: clampedTop,\n left,\n placement: p,\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawOffset, popover.height - ARROW_HALF - 4)),\n };\n }\n }\n\n // Fallback: clamp bottom placement and shift arrow to match trigger.\n const fbTop = trigger.bottom + GAP;\n const fbLeft = trigger.left + trigger.width / 2 - popover.width / 2;\n const clampedTop = Math.max(MARGIN, Math.min(fbTop, vh - popover.height - MARGIN));\n const clampedLeft = Math.max(MARGIN, Math.min(fbLeft, vw - popover.width - MARGIN));\n const rawArrowOffset = trigger.left + trigger.width / 2 - clampedLeft;\n\n return {\n top: clampedTop,\n left: clampedLeft,\n placement: 'bottom',\n arrowOffset: Math.max(ARROW_HALF + 4, Math.min(rawArrowOffset, popover.width - ARROW_HALF - 4)),\n };\n}\n\n/**\n * Floating panel anchored to a trigger element.\n *\n * Unlike `Tooltip`, a Popover can contain rich interactive content\n * (menus, forms, details). It follows the Adwaita `GtkPopover` pattern.\n *\n * - Supports both controlled (`open` + `onClose`) and uncontrolled modes.\n * - Auto-positions with viewport-aware flip.\n * - Closes on Escape, outside click, or trigger re-click.\n * - Focus is moved into the panel on open; returns to the trigger on close.\n * - `aria-haspopup=\"dialog\"` + `aria-expanded` wired to the trigger.\n * - `role=\"dialog\"` on the panel with `aria-labelledby` when a heading is present.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Popover.html\n */\nexport function Popover({\n content,\n placement: preferredPlacement = 'bottom',\n open: controlledOpen,\n onClose,\n onOpenChange,\n children,\n}: PopoverProps) {\n const isControlled = controlledOpen !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const [pos, setPos] = useState<Position | null>(null);\n\n const triggerId = useId();\n const popoverId = useId();\n const triggerRef = useRef<HTMLElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const previouslyFocused = useRef<Element | null>(null);\n\n const close = useCallback(() => {\n if (isControlled) {\n onClose?.();\n } else {\n setUncontrolledOpen(false);\n }\n\n onOpenChange?.(false);\n }, [isControlled, onClose, onOpenChange]);\n\n const toggle = useCallback(() => {\n if (open) {\n close();\n } else {\n if (!isControlled) {\n setUncontrolledOpen(true);\n }\n\n onOpenChange?.(true);\n }\n }, [open, close, isControlled, onOpenChange]);\n\n // Position panel\n const place = useCallback(() => {\n if (!triggerRef.current || !panelRef.current) {\n return;\n }\n\n setPos(\n computePosition(\n triggerRef.current.getBoundingClientRect(),\n panelRef.current.getBoundingClientRect(),\n preferredPlacement,\n ),\n );\n }, [preferredPlacement]);\n\n // Reposition on open, scroll, resize\n useEffect(() => {\n if (!open) {\n return;\n }\n\n // Two RAF: first lets panel mount with hidden styles so we can measure it;\n // second applies the measured position.\n const id = requestAnimationFrame(() => {\n place();\n window.addEventListener('scroll', place, { passive: true, capture: true });\n window.addEventListener('resize', place, { passive: true });\n });\n\n return () => {\n cancelAnimationFrame(id);\n window.removeEventListener('scroll', place, { capture: true });\n window.removeEventListener('resize', place);\n };\n }, [open, place]);\n\n // Save / restore focus\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n requestAnimationFrame(() => {\n const first = panelRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n (first ?? panelRef.current)?.focus();\n });\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n setPos(null);\n }\n }, [open]);\n\n // Close on outside pointer\n useEffect(() => {\n if (!open) {\n return;\n }\n\n const handler = (e: MouseEvent) => {\n if (\n !triggerRef.current?.contains(e.target as Node) &&\n !panelRef.current?.contains(e.target as Node)\n ) {\n close();\n }\n };\n\n document.addEventListener('mousedown', handler);\n\n return () => document.removeEventListener('mousedown', handler);\n }, [open, close]);\n\n // Escape key\n const handlePanelKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n close();\n }\n },\n [close],\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const trigger = cloneElement(children as any, {\n ref: triggerRef,\n id: triggerId,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': open,\n 'aria-controls': open ? popoverId : undefined,\n onClick: (e: ReactMouseEvent<HTMLElement>) => {\n toggle();\n children.props.onClick?.(e);\n },\n });\n\n const panel = (\n <div\n ref={panelRef}\n id={popoverId}\n role=\"dialog\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={[\n styles.panel,\n pos ? styles[pos.placement] : null,\n open && pos ? styles.visible : null,\n ]\n .filter(Boolean)\n .join(' ')}\n style={\n pos\n ? { top: pos.top, left: pos.left }\n : { visibility: 'hidden', pointerEvents: 'none', top: -9999, left: -9999 }\n }\n onKeyDown={handlePanelKeyDown}\n >\n {/* Arrow — offset shifts it to point at the trigger when the panel is clamped */}\n <div\n className={styles.arrow}\n aria-hidden=\"true\"\n style={\n pos?.arrowOffset !== undefined\n ? pos.placement === 'top' || pos.placement === 'bottom'\n ? { left: pos.arrowOffset - ARROW_HALF, marginLeft: 0 }\n : { top: pos.arrowOffset - ARROW_HALF, marginTop: 0 }\n : undefined\n }\n />\n {content}\n </div>\n );\n\n return (\n <>\n {trigger}\n {open && (typeof document !== 'undefined' ? createPortal(panel, document.body) : panel)}\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { ReactElement, HTMLAttributes, ReactNode } from 'react';
2
- export type PopoverPlacement = "top" | "bottom" | "left" | "right";
1
+ import { HTMLAttributes, ReactElement, ReactNode } from 'react';
2
+ export type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';
3
3
  export interface PopoverProps {
4
4
  /**
5
5
  * The rich content rendered inside the popover panel.