@gnome-ui/react 1.48.0 → 1.49.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 (372) hide show
  1. package/README.md +2 -0
  2. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
  3. package/dist/components/AboutDialog/AboutDialog.module.css.cjs.map +1 -1
  4. package/dist/components/AboutDialog/AboutDialog.module.css.js +28 -28
  5. package/dist/components/AboutDialog/AboutDialog.module.css.js.map +1 -1
  6. package/dist/components/ActionRow/ActionRow.module.css.cjs +1 -1
  7. package/dist/components/ActionRow/ActionRow.module.css.cjs.map +1 -1
  8. package/dist/components/ActionRow/ActionRow.module.css.js +9 -9
  9. package/dist/components/ActionRow/ActionRow.module.css.js.map +1 -1
  10. package/dist/components/Avatar/Avatar.module.css.cjs +1 -1
  11. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -1
  12. package/dist/components/Avatar/Avatar.module.css.js +16 -16
  13. package/dist/components/Avatar/Avatar.module.css.js.map +1 -1
  14. package/dist/components/AvatarGroup/AvatarGroup.cjs +2 -0
  15. package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -0
  16. package/dist/components/AvatarGroup/AvatarGroup.d.ts +16 -0
  17. package/dist/components/AvatarGroup/AvatarGroup.js +36 -0
  18. package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -0
  19. package/dist/components/AvatarGroup/AvatarGroup.module.css.cjs +2 -0
  20. package/dist/components/AvatarGroup/AvatarGroup.module.css.cjs.map +1 -0
  21. package/dist/components/AvatarGroup/AvatarGroup.module.css.js +13 -0
  22. package/dist/components/AvatarGroup/AvatarGroup.module.css.js.map +1 -0
  23. package/dist/components/AvatarGroup/index.d.ts +2 -0
  24. package/dist/components/AvatarGroup.cjs +1 -0
  25. package/dist/components/AvatarGroup.d.ts +2 -0
  26. package/dist/components/AvatarGroup.js +2 -0
  27. package/dist/components/Badge/Badge.module.css.cjs +1 -1
  28. package/dist/components/Badge/Badge.module.css.cjs.map +1 -1
  29. package/dist/components/Badge/Badge.module.css.js +9 -9
  30. package/dist/components/Badge/Badge.module.css.js.map +1 -1
  31. package/dist/components/Banner/Banner.module.css.cjs +1 -1
  32. package/dist/components/Banner/Banner.module.css.cjs.map +1 -1
  33. package/dist/components/Banner/Banner.module.css.js +13 -13
  34. package/dist/components/Banner/Banner.module.css.js.map +1 -1
  35. package/dist/components/Blockquote/Blockquote.module.css.cjs +1 -1
  36. package/dist/components/Blockquote/Blockquote.module.css.cjs.map +1 -1
  37. package/dist/components/Blockquote/Blockquote.module.css.js +11 -11
  38. package/dist/components/Blockquote/Blockquote.module.css.js.map +1 -1
  39. package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
  40. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  41. package/dist/components/BottomSheet/BottomSheet.d.ts +3 -3
  42. package/dist/components/BottomSheet/BottomSheet.js +73 -32
  43. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  44. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
  45. package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -1
  46. package/dist/components/BottomSheet/BottomSheet.module.css.js +13 -8
  47. package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -1
  48. package/dist/components/BoxedList/BoxedList.module.css.cjs +1 -1
  49. package/dist/components/BoxedList/BoxedList.module.css.cjs.map +1 -1
  50. package/dist/components/BoxedList/BoxedList.module.css.js +5 -5
  51. package/dist/components/BoxedList/BoxedList.module.css.js.map +1 -1
  52. package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
  53. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
  54. package/dist/components/BreakpointBin/BreakpointBin.js +1 -1
  55. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
  56. package/dist/components/Button/Button.module.css.cjs +1 -1
  57. package/dist/components/Button/Button.module.css.cjs.map +1 -1
  58. package/dist/components/Button/Button.module.css.js +11 -11
  59. package/dist/components/Button/Button.module.css.js.map +1 -1
  60. package/dist/components/ButtonRow/ButtonRow.module.css.cjs +1 -1
  61. package/dist/components/ButtonRow/ButtonRow.module.css.cjs.map +1 -1
  62. package/dist/components/ButtonRow/ButtonRow.module.css.js +7 -7
  63. package/dist/components/ButtonRow/ButtonRow.module.css.js.map +1 -1
  64. package/dist/components/Card/Card.module.css.cjs +1 -1
  65. package/dist/components/Card/Card.module.css.cjs.map +1 -1
  66. package/dist/components/Card/Card.module.css.js +6 -6
  67. package/dist/components/Card/Card.module.css.js.map +1 -1
  68. package/dist/components/Carousel/Carousel.cjs +1 -1
  69. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  70. package/dist/components/Carousel/Carousel.d.ts +9 -3
  71. package/dist/components/Carousel/Carousel.js +99 -42
  72. package/dist/components/Carousel/Carousel.js.map +1 -1
  73. package/dist/components/Carousel/Carousel.module.css.cjs +1 -1
  74. package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -1
  75. package/dist/components/Carousel/Carousel.module.css.js +11 -10
  76. package/dist/components/Carousel/Carousel.module.css.js.map +1 -1
  77. package/dist/components/CheckRow/CheckRow.module.css.cjs +1 -1
  78. package/dist/components/CheckRow/CheckRow.module.css.cjs.map +1 -1
  79. package/dist/components/CheckRow/CheckRow.module.css.js +10 -10
  80. package/dist/components/CheckRow/CheckRow.module.css.js.map +1 -1
  81. package/dist/components/Checkbox/Checkbox.module.css.cjs +1 -1
  82. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -1
  83. package/dist/components/Checkbox/Checkbox.module.css.js +1 -1
  84. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -1
  85. package/dist/components/Chip/Chip.module.css.cjs +1 -1
  86. package/dist/components/Chip/Chip.module.css.cjs.map +1 -1
  87. package/dist/components/Chip/Chip.module.css.js +7 -7
  88. package/dist/components/Chip/Chip.module.css.js.map +1 -1
  89. package/dist/components/ColorPicker/ColorPicker.cjs +1 -1
  90. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
  91. package/dist/components/ColorPicker/ColorPicker.js +1 -1
  92. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  93. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
  94. package/dist/components/ColorPicker/ColorPicker.module.css.cjs.map +1 -1
  95. package/dist/components/ColorPicker/ColorPicker.module.css.js +10 -10
  96. package/dist/components/ColorPicker/ColorPicker.module.css.js.map +1 -1
  97. package/dist/components/ColumnView/ColumnView.module.css.cjs +1 -1
  98. package/dist/components/ColumnView/ColumnView.module.css.cjs.map +1 -1
  99. package/dist/components/ColumnView/ColumnView.module.css.js +22 -22
  100. package/dist/components/ColumnView/ColumnView.module.css.js.map +1 -1
  101. package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
  102. package/dist/components/ComboRow/ComboRow.module.css.cjs.map +1 -1
  103. package/dist/components/ComboRow/ComboRow.module.css.js +24 -24
  104. package/dist/components/ComboRow/ComboRow.module.css.js.map +1 -1
  105. package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs +1 -1
  106. package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs.map +1 -1
  107. package/dist/components/ContributionGraph/ContributionGraph.module.css.js +9 -9
  108. package/dist/components/ContributionGraph/ContributionGraph.module.css.js.map +1 -1
  109. package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs +1 -1
  110. package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs.map +1 -1
  111. package/dist/components/CountDownTimer/CountDownTimer.module.css.js +7 -7
  112. package/dist/components/CountDownTimer/CountDownTimer.module.css.js.map +1 -1
  113. package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
  114. package/dist/components/Dialog/Dialog.module.css.cjs.map +1 -1
  115. package/dist/components/Dialog/Dialog.module.css.js +11 -11
  116. package/dist/components/Dialog/Dialog.module.css.js.map +1 -1
  117. package/dist/components/Dialog/dialogUtils.cjs +1 -1
  118. package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
  119. package/dist/components/Dialog/dialogUtils.js +1 -1
  120. package/dist/components/Dialog/dialogUtils.js.map +1 -1
  121. package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
  122. package/dist/components/Drawer/Drawer.module.css.cjs.map +1 -1
  123. package/dist/components/Drawer/Drawer.module.css.js +12 -12
  124. package/dist/components/Drawer/Drawer.module.css.js.map +1 -1
  125. package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
  126. package/dist/components/Dropdown/Dropdown.module.css.cjs.map +1 -1
  127. package/dist/components/Dropdown/Dropdown.module.css.js +20 -20
  128. package/dist/components/Dropdown/Dropdown.module.css.js.map +1 -1
  129. package/dist/components/EntryRow/EntryRow.module.css.cjs +1 -1
  130. package/dist/components/EntryRow/EntryRow.module.css.cjs.map +1 -1
  131. package/dist/components/EntryRow/EntryRow.module.css.js +10 -10
  132. package/dist/components/EntryRow/EntryRow.module.css.js.map +1 -1
  133. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs +1 -1
  134. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs.map +1 -1
  135. package/dist/components/ExpanderRow/ExpanderRow.module.css.js +14 -14
  136. package/dist/components/ExpanderRow/ExpanderRow.module.css.js.map +1 -1
  137. package/dist/components/Footer/Footer.module.css.cjs +1 -1
  138. package/dist/components/Footer/Footer.module.css.cjs.map +1 -1
  139. package/dist/components/Footer/Footer.module.css.js +5 -5
  140. package/dist/components/Footer/Footer.module.css.js.map +1 -1
  141. package/dist/components/Frame/Frame.module.css.cjs +1 -1
  142. package/dist/components/Frame/Frame.module.css.cjs.map +1 -1
  143. package/dist/components/Frame/Frame.module.css.js +1 -1
  144. package/dist/components/Frame/Frame.module.css.js.map +1 -1
  145. package/dist/components/HeaderBar/HeaderBar.module.css.cjs +1 -1
  146. package/dist/components/HeaderBar/HeaderBar.module.css.cjs.map +1 -1
  147. package/dist/components/HeaderBar/HeaderBar.module.css.js +6 -6
  148. package/dist/components/HeaderBar/HeaderBar.module.css.js.map +1 -1
  149. package/dist/components/Icon/Icon.cjs +1 -1
  150. package/dist/components/Icon/Icon.cjs.map +1 -1
  151. package/dist/components/Icon/Icon.d.ts +8 -1
  152. package/dist/components/Icon/Icon.js +22 -20
  153. package/dist/components/Icon/Icon.js.map +1 -1
  154. package/dist/components/Icon/Icon.module.css.cjs +2 -0
  155. package/dist/components/Icon/Icon.module.css.cjs.map +1 -0
  156. package/dist/components/Icon/Icon.module.css.js +14 -0
  157. package/dist/components/Icon/Icon.module.css.js.map +1 -0
  158. package/dist/components/Icon/index.d.ts +1 -1
  159. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
  160. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
  161. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +1 -1
  162. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
  163. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs +1 -1
  164. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs.map +1 -1
  165. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js +22 -22
  166. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js.map +1 -1
  167. package/dist/components/Link/Link.module.css.cjs +1 -1
  168. package/dist/components/Link/Link.module.css.cjs.map +1 -1
  169. package/dist/components/Link/Link.module.css.js +2 -2
  170. package/dist/components/Link/Link.module.css.js.map +1 -1
  171. package/dist/components/Modal/Modal.cjs +2 -0
  172. package/dist/components/Modal/Modal.cjs.map +1 -0
  173. package/dist/components/Modal/Modal.d.ts +40 -0
  174. package/dist/components/Modal/Modal.js +93 -0
  175. package/dist/components/Modal/Modal.js.map +1 -0
  176. package/dist/components/Modal/Modal.module.css.cjs +2 -0
  177. package/dist/components/Modal/Modal.module.css.cjs.map +1 -0
  178. package/dist/components/Modal/Modal.module.css.js +23 -0
  179. package/dist/components/Modal/Modal.module.css.js.map +1 -0
  180. package/dist/components/Modal/index.d.ts +2 -0
  181. package/dist/components/Modal.cjs +1 -0
  182. package/dist/components/Modal.d.ts +2 -0
  183. package/dist/components/Modal.js +2 -0
  184. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs +1 -1
  185. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs.map +1 -1
  186. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js +8 -8
  187. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js.map +1 -1
  188. package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
  189. package/dist/components/NavigationView/NavigationView.module.css.cjs.map +1 -1
  190. package/dist/components/NavigationView/NavigationView.module.css.js +9 -9
  191. package/dist/components/NavigationView/NavigationView.module.css.js.map +1 -1
  192. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs +1 -1
  193. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs.map +1 -1
  194. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js +12 -12
  195. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js.map +1 -1
  196. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs +1 -1
  197. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs.map +1 -1
  198. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js +1 -1
  199. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js.map +1 -1
  200. package/dist/components/PathBar/PathBar.module.css.cjs +1 -1
  201. package/dist/components/PathBar/PathBar.module.css.cjs.map +1 -1
  202. package/dist/components/PathBar/PathBar.module.css.js +7 -7
  203. package/dist/components/PathBar/PathBar.module.css.js.map +1 -1
  204. package/dist/components/Popover/Popover.module.css.cjs +1 -1
  205. package/dist/components/Popover/Popover.module.css.cjs.map +1 -1
  206. package/dist/components/Popover/Popover.module.css.js +7 -7
  207. package/dist/components/Popover/Popover.module.css.js.map +1 -1
  208. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
  209. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
  210. package/dist/components/PreferencesDialog/PreferencesDialog.js +1 -1
  211. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
  212. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
  213. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs.map +1 -1
  214. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +18 -18
  215. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js.map +1 -1
  216. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs +1 -1
  217. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs.map +1 -1
  218. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js +7 -7
  219. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js.map +1 -1
  220. package/dist/components/ProgressBar/ProgressBar.module.css.cjs +1 -1
  221. package/dist/components/ProgressBar/ProgressBar.module.css.cjs.map +1 -1
  222. package/dist/components/ProgressBar/ProgressBar.module.css.js +8 -8
  223. package/dist/components/ProgressBar/ProgressBar.module.css.js.map +1 -1
  224. package/dist/components/RadioButton/RadioButton.module.css.cjs +1 -1
  225. package/dist/components/RadioButton/RadioButton.module.css.cjs.map +1 -1
  226. package/dist/components/RadioButton/RadioButton.module.css.js +1 -1
  227. package/dist/components/RadioButton/RadioButton.module.css.js.map +1 -1
  228. package/dist/components/SearchBar/SearchBar.module.css.cjs +1 -1
  229. package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -1
  230. package/dist/components/SearchBar/SearchBar.module.css.js +13 -13
  231. package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -1
  232. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs +1 -1
  233. package/dist/components/SegmentedBar/SegmentedBar.module.css.cjs.map +1 -1
  234. package/dist/components/SegmentedBar/SegmentedBar.module.css.js +12 -12
  235. package/dist/components/SegmentedBar/SegmentedBar.module.css.js.map +1 -1
  236. package/dist/components/Separator/Separator.module.css.cjs +1 -1
  237. package/dist/components/Separator/Separator.module.css.cjs.map +1 -1
  238. package/dist/components/Separator/Separator.module.css.js +3 -3
  239. package/dist/components/Separator/Separator.module.css.js.map +1 -1
  240. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs +1 -1
  241. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs.map +1 -1
  242. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js +2 -2
  243. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js.map +1 -1
  244. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
  245. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
  246. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +1 -1
  247. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
  248. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
  249. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs.map +1 -1
  250. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +21 -21
  251. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js.map +1 -1
  252. package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
  253. package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -1
  254. package/dist/components/Sidebar/Sidebar.module.css.js +32 -32
  255. package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -1
  256. package/dist/components/Skeleton/Skeleton.module.css.cjs +1 -1
  257. package/dist/components/Skeleton/Skeleton.module.css.cjs.map +1 -1
  258. package/dist/components/Skeleton/Skeleton.module.css.js +7 -7
  259. package/dist/components/Skeleton/Skeleton.module.css.js.map +1 -1
  260. package/dist/components/Slider/Slider.module.css.cjs +1 -1
  261. package/dist/components/Slider/Slider.module.css.cjs.map +1 -1
  262. package/dist/components/Slider/Slider.module.css.js +9 -9
  263. package/dist/components/Slider/Slider.module.css.js.map +1 -1
  264. package/dist/components/SpinButton/SpinButton.module.css.cjs +1 -1
  265. package/dist/components/SpinButton/SpinButton.module.css.cjs.map +1 -1
  266. package/dist/components/SpinButton/SpinButton.module.css.js +4 -4
  267. package/dist/components/SpinButton/SpinButton.module.css.js.map +1 -1
  268. package/dist/components/SpinRow/SpinRow.module.css.cjs +1 -1
  269. package/dist/components/SpinRow/SpinRow.module.css.cjs.map +1 -1
  270. package/dist/components/SpinRow/SpinRow.module.css.js +9 -9
  271. package/dist/components/SpinRow/SpinRow.module.css.js.map +1 -1
  272. package/dist/components/Spinner/Spinner.module.css.cjs +1 -1
  273. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -1
  274. package/dist/components/Spinner/Spinner.module.css.js +5 -5
  275. package/dist/components/Spinner/Spinner.module.css.js.map +1 -1
  276. package/dist/components/SplitButton/SplitButton.module.css.cjs +1 -1
  277. package/dist/components/SplitButton/SplitButton.module.css.cjs.map +1 -1
  278. package/dist/components/SplitButton/SplitButton.module.css.js +10 -10
  279. package/dist/components/SplitButton/SplitButton.module.css.js.map +1 -1
  280. package/dist/components/StatusBadge/StatusBadge.module.css.cjs +1 -1
  281. package/dist/components/StatusBadge/StatusBadge.module.css.cjs.map +1 -1
  282. package/dist/components/StatusBadge/StatusBadge.module.css.js +7 -7
  283. package/dist/components/StatusBadge/StatusBadge.module.css.js.map +1 -1
  284. package/dist/components/StatusPage/StatusPage.module.css.cjs +1 -1
  285. package/dist/components/StatusPage/StatusPage.module.css.cjs.map +1 -1
  286. package/dist/components/StatusPage/StatusPage.module.css.js +6 -6
  287. package/dist/components/StatusPage/StatusPage.module.css.js.map +1 -1
  288. package/dist/components/Switch/Switch.module.css.cjs +1 -1
  289. package/dist/components/Switch/Switch.module.css.cjs.map +1 -1
  290. package/dist/components/Switch/Switch.module.css.js +1 -1
  291. package/dist/components/Switch/Switch.module.css.js.map +1 -1
  292. package/dist/components/SwitchRow/SwitchRow.module.css.cjs +1 -1
  293. package/dist/components/SwitchRow/SwitchRow.module.css.cjs.map +1 -1
  294. package/dist/components/SwitchRow/SwitchRow.module.css.js +9 -9
  295. package/dist/components/SwitchRow/SwitchRow.module.css.js.map +1 -1
  296. package/dist/components/Tabs/TabBar.cjs +1 -1
  297. package/dist/components/Tabs/TabBar.cjs.map +1 -1
  298. package/dist/components/Tabs/TabBar.js +1 -1
  299. package/dist/components/Tabs/TabBar.js.map +1 -1
  300. package/dist/components/Tabs/Tabs.module.css.cjs +1 -1
  301. package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -1
  302. package/dist/components/Tabs/Tabs.module.css.js +10 -10
  303. package/dist/components/Tabs/Tabs.module.css.js.map +1 -1
  304. package/dist/components/TerminalView/TerminalView.module.css.cjs +1 -1
  305. package/dist/components/TerminalView/TerminalView.module.css.cjs.map +1 -1
  306. package/dist/components/TerminalView/TerminalView.module.css.js +6 -6
  307. package/dist/components/TerminalView/TerminalView.module.css.js.map +1 -1
  308. package/dist/components/Text/Text.module.css.cjs +1 -1
  309. package/dist/components/Text/Text.module.css.cjs.map +1 -1
  310. package/dist/components/Text/Text.module.css.js +20 -20
  311. package/dist/components/Text/Text.module.css.js.map +1 -1
  312. package/dist/components/TextField/TextField.module.css.cjs +1 -1
  313. package/dist/components/TextField/TextField.module.css.cjs.map +1 -1
  314. package/dist/components/TextField/TextField.module.css.js +7 -7
  315. package/dist/components/TextField/TextField.module.css.js.map +1 -1
  316. package/dist/components/Timeline/Timeline.module.css.cjs +1 -1
  317. package/dist/components/Timeline/Timeline.module.css.cjs.map +1 -1
  318. package/dist/components/Timeline/Timeline.module.css.js +13 -13
  319. package/dist/components/Timeline/Timeline.module.css.js.map +1 -1
  320. package/dist/components/Toast/Toast.module.css.cjs +1 -1
  321. package/dist/components/Toast/Toast.module.css.cjs.map +1 -1
  322. package/dist/components/Toast/Toast.module.css.js +9 -9
  323. package/dist/components/Toast/Toast.module.css.js.map +1 -1
  324. package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
  325. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  326. package/dist/components/ToggleGroup/ToggleGroup.js +1 -1
  327. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  328. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +1 -1
  329. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -1
  330. package/dist/components/ToggleGroup/ToggleGroup.module.css.js +6 -6
  331. package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -1
  332. package/dist/components/Toolbar/Toolbar.module.css.cjs +1 -1
  333. package/dist/components/Toolbar/Toolbar.module.css.cjs.map +1 -1
  334. package/dist/components/Toolbar/Toolbar.module.css.js +2 -2
  335. package/dist/components/Toolbar/Toolbar.module.css.js.map +1 -1
  336. package/dist/components/Tooltip/Tooltip.module.css.cjs +1 -1
  337. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -1
  338. package/dist/components/Tooltip/Tooltip.module.css.js +6 -6
  339. package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -1
  340. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
  341. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
  342. package/dist/components/ViewSwitcher/ViewSwitcher.js +1 -1
  343. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
  344. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs +1 -1
  345. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs.map +1 -1
  346. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js +5 -5
  347. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js.map +1 -1
  348. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs +1 -1
  349. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs.map +1 -1
  350. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js +1 -1
  351. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js.map +1 -1
  352. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
  353. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
  354. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +1 -1
  355. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
  356. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs +1 -1
  357. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs.map +1 -1
  358. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js +14 -14
  359. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js.map +1 -1
  360. package/dist/components/WindowTitle/WindowTitle.module.css.cjs +1 -1
  361. package/dist/components/WindowTitle/WindowTitle.module.css.cjs.map +1 -1
  362. package/dist/components/WindowTitle/WindowTitle.module.css.js +3 -3
  363. package/dist/components/WindowTitle/WindowTitle.module.css.js.map +1 -1
  364. package/dist/components/WrapBox/WrapBox.module.css.cjs +1 -1
  365. package/dist/components/WrapBox/WrapBox.module.css.cjs.map +1 -1
  366. package/dist/components/WrapBox/WrapBox.module.css.js +2 -2
  367. package/dist/components/WrapBox/WrapBox.module.css.js.map +1 -1
  368. package/dist/index.cjs +1 -1
  369. package/dist/index.d.ts +5 -1
  370. package/dist/index.js +95 -93
  371. package/dist/style.css +1 -1
  372. package/package.json +11 -1
@@ -1,18 +1,18 @@
1
1
  var e = {
2
- expanderRow: "_expanderRow_ye1vu_3",
3
- header: "_header_ye1vu_11",
4
- leading: "_leading_ye1vu_55",
5
- content: "_content_ye1vu_64",
6
- title: "_title_ye1vu_72",
7
- subtitle: "_subtitle_ye1vu_83",
8
- trailing: "_trailing_ye1vu_97",
9
- chevronWrap: "_chevronWrap_ye1vu_106",
10
- chevronOpen: "_chevronOpen_ye1vu_115",
11
- chevron: "_chevron_ye1vu_106",
12
- panel: "_panel_ye1vu_125",
13
- expanded: "_expanded_ye1vu_131",
14
- panelInner: "_panelInner_ye1vu_135",
15
- childItem: "_childItem_ye1vu_142"
2
+ expanderRow: "_expanderRow_iwkle_3",
3
+ header: "_header_iwkle_11",
4
+ leading: "_leading_iwkle_52",
5
+ content: "_content_iwkle_61",
6
+ title: "_title_iwkle_69",
7
+ subtitle: "_subtitle_iwkle_80",
8
+ trailing: "_trailing_iwkle_94",
9
+ chevronWrap: "_chevronWrap_iwkle_103",
10
+ chevronOpen: "_chevronOpen_iwkle_112",
11
+ chevron: "_chevron_iwkle_103",
12
+ panel: "_panel_iwkle_122",
13
+ expanded: "_expanded_iwkle_128",
14
+ panelInner: "_panelInner_iwkle_132",
15
+ childItem: "_childItem_iwkle_139"
16
16
  };
17
17
  //#endregion
18
18
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"ExpanderRow.module.css.js","names":[],"sources":["../../../src/components/ExpanderRow/ExpanderRow.module.css"],"sourcesContent":["/* ─── Wrapper ───────────────────────────────────────────────────────────────── */\n\n.expanderRow {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* ─── Header button ─────────────────────────────────────────────────────────── */\n\n.header {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px);\n min-height: 52px;\n width: 100%;\n\n appearance: none;\n -webkit-appearance: none;\n background: transparent;\n border: none;\n font: inherit;\n outline: none;\n cursor: pointer;\n text-align: start;\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.header:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\n.header:active {\n background-color: var(--gnome-active-overlay);\n}\n\n.header:focus-visible {\n box-shadow:\n inset 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n inset 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.header:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Leading ───────────────────────────────────────────────────────────────── */\n\n.leading {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n}\n\n/* ─── Text content ──────────────────────────────────────────────────────────── */\n\n.content {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n\n.title {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-card-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subtitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.75rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.55));\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Trailing ──────────────────────────────────────────────────────────────── */\n\n.trailing {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--gnome-space-1, 6px);\n}\n\n/* ─── Chevron ───────────────────────────────────────────────────────────────── */\n\n.chevronWrap {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.55));\n opacity: 0.55;\n transition: transform var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.chevronOpen {\n transform: rotate(180deg);\n}\n\n.chevron {\n display: block;\n}\n\n/* ─── Reveal panel (CSS grid height animation) ──────────────────────────────── */\n\n.panel {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--gnome-duration-normal, 200ms) var(--gnome-easing-default);\n}\n\n.expanded .panel {\n grid-template-rows: 1fr;\n}\n\n.panelInner {\n overflow: hidden;\n min-height: 0;\n}\n\n/* ─── Child row wrapper + divider ───────────────────────────────────────────── */\n\n.childItem {\n display: flex;\n flex-direction: column;\n}\n\n/* ─── High contrast ─────────────────────────────────────────────────────────── */\n\n@media (prefers-contrast: more) {\n .header:focus-visible {\n box-shadow:\n inset 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n inset 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4),\n inset 0 0 0\n calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px) + 1px)\n var(--gnome-window-bg-color, #fafafa);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .panel {\n transition: none;\n }\n\n .chevronWrap {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"ExpanderRow.module.css.js","names":[],"sources":["../../../src/components/ExpanderRow/ExpanderRow.module.css"],"sourcesContent":["/* ─── Wrapper ───────────────────────────────────────────────────────────────── */\n\n.expanderRow {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* ─── Header button ─────────────────────────────────────────────────────────── */\n\n.header {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px);\n min-height: 52px;\n width: 100%;\n appearance: none;\n background: transparent;\n border: none;\n font: inherit;\n outline: none;\n cursor: pointer;\n text-align: start;\n color: var(--gnome-card-fg-color, rgb(0 0 0 / 0.8));\n transition: background-color var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.header:hover {\n background-color: var(--gnome-hover-overlay);\n}\n\n.header:active {\n background-color: var(--gnome-active-overlay);\n}\n\n.header:focus-visible {\n box-shadow:\n inset 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n inset 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.header:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Leading ───────────────────────────────────────────────────────────────── */\n\n.leading {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgb(0 0 0 / 0.8));\n}\n\n/* ─── Text content ──────────────────────────────────────────────────────────── */\n\n.content {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n gap: 2px;\n}\n\n.title {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-card-fg-color, rgb(0 0 0 / 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subtitle {\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.75rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgb(0 0 0 / 0.55));\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Trailing ──────────────────────────────────────────────────────────────── */\n\n.trailing {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n gap: var(--gnome-space-1, 6px);\n}\n\n/* ─── Chevron ───────────────────────────────────────────────────────────────── */\n\n.chevronWrap {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgb(0 0 0 / 0.55));\n opacity: 0.55;\n transition: transform var(--gnome-duration-fast) var(--gnome-easing-default);\n}\n\n.chevronOpen {\n transform: rotate(180deg);\n}\n\n.chevron {\n display: block;\n}\n\n/* ─── Reveal panel (CSS grid height animation) ──────────────────────────────── */\n\n.panel {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--gnome-duration-normal, 200ms) var(--gnome-easing-default);\n}\n\n.expanded .panel {\n grid-template-rows: 1fr;\n}\n\n.panelInner {\n overflow: hidden;\n min-height: 0;\n}\n\n/* ─── Child row wrapper + divider ───────────────────────────────────────────── */\n\n.childItem {\n display: flex;\n flex-direction: column;\n}\n\n/* ─── High contrast ─────────────────────────────────────────────────────────── */\n\n@media (prefers-contrast: more) {\n .header:focus-visible {\n box-shadow:\n inset 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n inset 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4),\n inset 0 0 0\n calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px) + 1px)\n var(--gnome-window-bg-color, #fafafa);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .panel {\n transition: none;\n }\n\n .chevronWrap {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- var e={footer:`_footer_10xz9_3`,flat:`_flat_10xz9_23`,slot:`_slot_10xz9_29`,slotEnd:`_slotEnd_10xz9_36`,center:`_center_10xz9_42`};exports.default=e;
1
+ var e={footer:`_footer_vfwnq_3`,flat:`_flat_vfwnq_19`,slot:`_slot_vfwnq_25`,slotEnd:`_slotEnd_vfwnq_32`,center:`_center_vfwnq_38`};exports.default=e;
2
2
  //# sourceMappingURL=Footer.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.module.css.cjs","names":[],"sources":["../../../src/components/Footer/Footer.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.footer {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 40px;\n\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n\n border-top: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-top-color: transparent;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Center content ───────────────────────────────────────────────────────── */\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Links inside footer ──────────────────────────────────────────────────── */\n\n.footer a {\n color: inherit;\n text-decoration: none;\n opacity: 0.7;\n transition: opacity var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.footer a:hover {\n opacity: 1;\n}\n\n.footer a:focus-visible {\n outline: var(--gnome-focus-ring-width, 2px) solid var(--gnome-focus-ring-color, #1c71d8);\n outline-offset: var(--gnome-focus-ring-offset, 2px);\n border-radius: var(--gnome-radius-sm, 4px);\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .footer {\n border-top-color: var(--gnome-headerbar-border-color, rgba(255, 255, 255, 0.1));\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .footer a {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Footer.module.css.cjs","names":[],"sources":["../../../src/components/Footer/Footer.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.footer {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 40px;\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n border-top: 1px solid var(--gnome-headerbar-border-color, rgb(0 0 0 / 0.12));\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-top-color: transparent;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Center content ───────────────────────────────────────────────────────── */\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Links inside footer ──────────────────────────────────────────────────── */\n\n.footer a {\n color: inherit;\n text-decoration: none;\n opacity: 0.7;\n transition: opacity var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.footer a:hover {\n opacity: 1;\n}\n\n.footer a:focus-visible {\n outline: var(--gnome-focus-ring-width, 2px) solid var(--gnome-focus-ring-color, #1c71d8);\n outline-offset: var(--gnome-focus-ring-offset, 2px);\n border-radius: var(--gnome-radius-sm, 4px);\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .footer {\n border-top-color: var(--gnome-headerbar-border-color, rgb(255 255 255 / 0.1));\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .footer a {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,9 +1,9 @@
1
1
  var e = {
2
- footer: "_footer_10xz9_3",
3
- flat: "_flat_10xz9_23",
4
- slot: "_slot_10xz9_29",
5
- slotEnd: "_slotEnd_10xz9_36",
6
- center: "_center_10xz9_42"
2
+ footer: "_footer_vfwnq_3",
3
+ flat: "_flat_vfwnq_19",
4
+ slot: "_slot_vfwnq_25",
5
+ slotEnd: "_slotEnd_vfwnq_32",
6
+ center: "_center_vfwnq_38"
7
7
  };
8
8
  //#endregion
9
9
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.module.css.js","names":[],"sources":["../../../src/components/Footer/Footer.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.footer {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 40px;\n\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n\n border-top: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-top-color: transparent;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Center content ───────────────────────────────────────────────────────── */\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Links inside footer ──────────────────────────────────────────────────── */\n\n.footer a {\n color: inherit;\n text-decoration: none;\n opacity: 0.7;\n transition: opacity var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.footer a:hover {\n opacity: 1;\n}\n\n.footer a:focus-visible {\n outline: var(--gnome-focus-ring-width, 2px) solid var(--gnome-focus-ring-color, #1c71d8);\n outline-offset: var(--gnome-focus-ring-offset, 2px);\n border-radius: var(--gnome-radius-sm, 4px);\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .footer {\n border-top-color: var(--gnome-headerbar-border-color, rgba(255, 255, 255, 0.1));\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .footer a {\n transition: none;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Footer.module.css.js","names":[],"sources":["../../../src/components/Footer/Footer.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.footer {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 40px;\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n border-top: 1px solid var(--gnome-headerbar-border-color, rgb(0 0 0 / 0.12));\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-top-color: transparent;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Center content ───────────────────────────────────────────────────────── */\n\n.center {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Links inside footer ──────────────────────────────────────────────────── */\n\n.footer a {\n color: inherit;\n text-decoration: none;\n opacity: 0.7;\n transition: opacity var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.footer a:hover {\n opacity: 1;\n}\n\n.footer a:focus-visible {\n outline: var(--gnome-focus-ring-width, 2px) solid var(--gnome-focus-ring-color, #1c71d8);\n outline-offset: var(--gnome-focus-ring-offset, 2px);\n border-radius: var(--gnome-radius-sm, 4px);\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .footer {\n border-top-color: var(--gnome-headerbar-border-color, rgb(255 255 255 / 0.1));\n }\n}\n\n/* ─── Reduced motion ───────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .footer a {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- var e={frame:`_frame_1bq7b_2`};exports.default=e;
1
+ var e={frame:`_frame_1w00f_2`};exports.default=e;
2
2
  //# sourceMappingURL=Frame.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Frame.module.css.cjs","names":[],"sources":["../../../src/components/Frame/Frame.module.css"],"sourcesContent":["/* ─── Frame ───────────────────────────────────────────────────────────────────\n Bordered surface without background fill — mirrors GtkFrame / .frame.\n ─────────────────────────────────────────────────────────────────────────── */\n\n.frame {\n border: 1px solid var(--gnome-borders, rgba(0, 0, 0, 0.12));\n border-radius: var(--gnome-radius-md);\n overflow: hidden;\n}\n\n@media (prefers-color-scheme: dark) {\n .frame {\n border-color: var(--gnome-borders, rgba(255, 255, 255, 0.12));\n }\n}\n\n@media (prefers-contrast: more) {\n .frame {\n border-width: 2px;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Frame.module.css.cjs","names":[],"sources":["../../../src/components/Frame/Frame.module.css"],"sourcesContent":["/* ─── Frame ───────────────────────────────────────────────────────────────────\n Bordered surface without background fill — mirrors GtkFrame / .frame.\n ─────────────────────────────────────────────────────────────────────────── */\n\n.frame {\n border: 1px solid var(--gnome-borders, rgb(0 0 0 / 0.12));\n border-radius: var(--gnome-radius-md);\n overflow: hidden;\n}\n\n@media (prefers-color-scheme: dark) {\n .frame {\n border-color: var(--gnome-borders, rgb(255 255 255 / 0.12));\n }\n}\n\n@media (prefers-contrast: more) {\n .frame {\n border-width: 2px;\n }\n}\n"],"mappings":""}
@@ -1,4 +1,4 @@
1
- var e = { frame: "_frame_1bq7b_2" };
1
+ var e = { frame: "_frame_1w00f_2" };
2
2
  //#endregion
3
3
  export { e as default };
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"Frame.module.css.js","names":[],"sources":["../../../src/components/Frame/Frame.module.css"],"sourcesContent":["/* ─── Frame ───────────────────────────────────────────────────────────────────\n Bordered surface without background fill — mirrors GtkFrame / .frame.\n ─────────────────────────────────────────────────────────────────────────── */\n\n.frame {\n border: 1px solid var(--gnome-borders, rgba(0, 0, 0, 0.12));\n border-radius: var(--gnome-radius-md);\n overflow: hidden;\n}\n\n@media (prefers-color-scheme: dark) {\n .frame {\n border-color: var(--gnome-borders, rgba(255, 255, 255, 0.12));\n }\n}\n\n@media (prefers-contrast: more) {\n .frame {\n border-width: 2px;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Frame.module.css.js","names":[],"sources":["../../../src/components/Frame/Frame.module.css"],"sourcesContent":["/* ─── Frame ───────────────────────────────────────────────────────────────────\n Bordered surface without background fill — mirrors GtkFrame / .frame.\n ─────────────────────────────────────────────────────────────────────────── */\n\n.frame {\n border: 1px solid var(--gnome-borders, rgb(0 0 0 / 0.12));\n border-radius: var(--gnome-radius-md);\n overflow: hidden;\n}\n\n@media (prefers-color-scheme: dark) {\n .frame {\n border-color: var(--gnome-borders, rgb(255 255 255 / 0.12));\n }\n}\n\n@media (prefers-contrast: more) {\n .frame {\n border-width: 2px;\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- var e={headerBar:`_headerBar_1rr5r_3`,flat:`_flat_1rr5r_22`,slot:`_slot_1rr5r_29`,slotEnd:`_slotEnd_1rr5r_36`,titleSlot:`_titleSlot_1rr5r_42`,title:`_title_1rr5r_42`};exports.default=e;
1
+ var e={headerBar:`_headerBar_1pi1b_3`,flat:`_flat_1pi1b_18`,slot:`_slot_1pi1b_25`,slotEnd:`_slotEnd_1pi1b_32`,titleSlot:`_titleSlot_1pi1b_38`,title:`_title_1pi1b_38`};exports.default=e;
2
2
  //# sourceMappingURL=HeaderBar.module.css.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderBar.module.css.cjs","names":[],"sources":["../../../src/components/HeaderBar/HeaderBar.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.headerBar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 47px;\n\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n\n font-family: var(--gnome-font-family);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-bottom-color: transparent;\n box-shadow: none;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Title slot (center) ──────────────────────────────────────────────────── */\n\n.titleSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Title text ───────────────────────────────────────────────────────────── */\n\n.title {\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n line-height: var(--gnome-line-height-heading, 1.2);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .headerBar {\n border-bottom-color: var(--gnome-headerbar-border-color, rgba(255, 255, 255, 0.1));\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"HeaderBar.module.css.cjs","names":[],"sources":["../../../src/components/HeaderBar/HeaderBar.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.headerBar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 47px;\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgb(0 0 0 / 0.12));\n font-family: var(--gnome-font-family);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-bottom-color: transparent;\n box-shadow: none;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Title slot (center) ──────────────────────────────────────────────────── */\n\n.titleSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Title text ───────────────────────────────────────────────────────────── */\n\n.title {\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n line-height: var(--gnome-line-height-heading, 1.2);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .headerBar {\n border-bottom-color: var(--gnome-headerbar-border-color, rgb(255 255 255 / 0.1));\n }\n}\n"],"mappings":""}
@@ -1,10 +1,10 @@
1
1
  var e = {
2
- headerBar: "_headerBar_1rr5r_3",
3
- flat: "_flat_1rr5r_22",
4
- slot: "_slot_1rr5r_29",
5
- slotEnd: "_slotEnd_1rr5r_36",
6
- titleSlot: "_titleSlot_1rr5r_42",
7
- title: "_title_1rr5r_42"
2
+ headerBar: "_headerBar_1pi1b_3",
3
+ flat: "_flat_1pi1b_18",
4
+ slot: "_slot_1pi1b_25",
5
+ slotEnd: "_slotEnd_1pi1b_32",
6
+ titleSlot: "_titleSlot_1pi1b_38",
7
+ title: "_title_1pi1b_38"
8
8
  };
9
9
  //#endregion
10
10
  export { e as default };
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderBar.module.css.js","names":[],"sources":["../../../src/components/HeaderBar/HeaderBar.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.headerBar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 47px;\n\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgba(0, 0, 0, 0.12));\n\n font-family: var(--gnome-font-family);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-bottom-color: transparent;\n box-shadow: none;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Title slot (center) ──────────────────────────────────────────────────── */\n\n.titleSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Title text ───────────────────────────────────────────────────────────── */\n\n.title {\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n line-height: var(--gnome-line-height-heading, 1.2);\n color: var(--gnome-headerbar-fg-color, rgba(0, 0, 0, 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .headerBar {\n border-bottom-color: var(--gnome-headerbar-border-color, rgba(255, 255, 255, 0.1));\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"HeaderBar.module.css.js","names":[],"sources":["../../../src/components/HeaderBar/HeaderBar.module.css"],"sourcesContent":["/* ─── Base ─────────────────────────────────────────────────────────────────── */\n\n.headerBar {\n display: grid;\n grid-template-columns: 1fr auto 1fr;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n padding: 0 var(--gnome-space-2, 12px);\n min-height: 47px;\n background-color: var(--gnome-headerbar-bg-color, #ebebeb);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n border-bottom: 1px solid var(--gnome-headerbar-border-color, rgb(0 0 0 / 0.12));\n font-family: var(--gnome-font-family);\n}\n\n/* ─── Flat variant ─────────────────────────────────────────────────────────── */\n\n.flat {\n border-bottom-color: transparent;\n box-shadow: none;\n}\n\n/* ─── Leading / trailing slots ─────────────────────────────────────────────── */\n\n.slot {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-1, 6px);\n min-width: 0;\n}\n\n.slotEnd {\n justify-content: flex-end;\n}\n\n/* ─── Title slot (center) ──────────────────────────────────────────────────── */\n\n.titleSlot {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n padding: 0 var(--gnome-space-1, 6px);\n}\n\n/* ─── Title text ───────────────────────────────────────────────────────────── */\n\n.title {\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-semibold, 600);\n line-height: var(--gnome-line-height-heading, 1.2);\n color: var(--gnome-headerbar-fg-color, rgb(0 0 0 / 0.8));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Dark mode ────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .headerBar {\n border-bottom-color: var(--gnome-headerbar-border-color, rgb(255 255 255 / 0.1));\n }\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- let e=require("react/jsx-runtime");var t={sm:12,md:16,lg:20};function n(e){return`paths`in e&&Array.isArray(e.paths)}var r=({icon:r,size:i=`md`,label:a,width:o,height:s,...c})=>{let l=t[i],u=n(r)?r.viewBox:r.viewBox??`0 0 24 24`,d=n(r)?r.paths.map((t,n)=>(0,e.jsx)(`path`,{d:t.d,fillRule:t.fillRule,clipRule:t.clipRule,transform:t.transform},n)):[(0,e.jsx)(`path`,{d:r.path},0)];return(0,e.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:u,width:o??l,height:s??l,fill:`currentColor`,"aria-label":a,"aria-hidden":a?void 0:!0,role:a?`img`:void 0,focusable:`false`,...c,children:d})};exports.Icon=r;
1
+ const e=require("./Icon.module.css.cjs");let t=require("react/jsx-runtime");var n={sm:12,md:16,lg:20};function r(e){return`paths`in e&&Array.isArray(e.paths)}var i=({icon:i,size:a=`md`,label:o,width:s,height:c,color:l,className:u,...d})=>{let f=n[a],p=r(i)?i.viewBox:i.viewBox??`0 0 24 24`,m=r(i)?i.paths.map((e,n)=>(0,t.jsx)(`path`,{d:e.d,fillRule:e.fillRule,clipRule:e.clipRule,transform:e.transform},n)):[(0,t.jsx)(`path`,{d:i.path},0)],h=[l&&l!=="default"?e.default[`color-${l}`]:void 0,u].filter(Boolean).join(` `)||void 0;return(0,t.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:p,width:s??f,height:c??f,fill:`currentColor`,"aria-label":o,"aria-hidden":o?void 0:!0,role:o?`img`:void 0,focusable:`false`,className:h,...d,children:m})};exports.Icon=i;
2
2
  //# sourceMappingURL=Icon.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.cjs","names":[],"sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import type { AnyIconDefinition, IconDefinition } from '@gnome-ui/icons';\nimport type { SVGAttributes } from 'react';\n\nexport type IconSize = 'sm' | 'md' | 'lg';\n\nexport interface IconProps extends SVGAttributes<SVGSVGElement> {\n /** Icon from `@gnome-ui/icons`, a `simple-icons` icon, or a raw `{ path }` object. */\n icon: AnyIconDefinition;\n /**\n * Rendered size.\n * - `sm` — 12 px\n * - `md` — 16 px (default)\n * - `lg` — 20 px\n *\n * Override with `width`/`height` for non-standard sizes.\n */\n size?: IconSize;\n /** Accessible label. Omit for decorative icons — they are hidden from screen readers. */\n label?: string;\n}\n\nconst SIZE_MAP: Record<IconSize, number> = { sm: 12, md: 16, lg: 20 };\n\nfunction isIconDefinition(icon: AnyIconDefinition): icon is IconDefinition {\n // When an object has both `path` and `paths`, `paths` wins.\n return 'paths' in icon && Array.isArray((icon as IconDefinition).paths);\n}\n\n/**\n * Renders an icon as an inline SVG.\n *\n * Accepts icons from `@gnome-ui/icons`, any `simple-icons` icon, or a plain\n * `{ path }` object. Uses `currentColor` so the icon inherits the text color\n * of its parent. Pass `label` only when the icon conveys meaning on its own.\n *\n * @example\n * import { Search } from \"@gnome-ui/icons\";\n * <Icon icon={Search} label=\"Search\" />\n *\n * @example\n * import { siGithub } from \"simple-icons\";\n * <Icon icon={siGithub} label=\"GitHub\" />\n */\nexport const Icon = ({ icon, size = 'md', label, width, height, ...props }: IconProps) => {\n const px = SIZE_MAP[size];\n\n const resolvedViewBox = isIconDefinition(icon) ? icon.viewBox : (icon.viewBox ?? '0 0 24 24');\n\n const paths = isIconDefinition(icon)\n ? icon.paths.map((p, i) => (\n <path key={i} d={p.d} fillRule={p.fillRule} clipRule={p.clipRule} transform={p.transform} />\n ))\n : [<path key={0} d={icon.path} />];\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={resolvedViewBox}\n width={width ?? px}\n height={height ?? px}\n fill=\"currentColor\"\n aria-label={label}\n aria-hidden={label ? undefined : true}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n {...props}\n >\n {paths}\n </svg>\n );\n};\n"],"mappings":"mCAqBA,IAAM,EAAqC,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAEpE,SAAS,EAAiB,EAAiD,CAEzE,MAAO,UAAW,GAAQ,MAAM,QAAS,EAAwB,KAAK,CACxE,CAiBA,IAAa,GAAQ,CAAE,OAAM,OAAO,KAAM,QAAO,QAAO,SAAQ,GAAG,KAAuB,CACxF,IAAM,EAAK,EAAS,GAEd,EAAkB,EAAiB,CAAI,EAAI,EAAK,QAAW,EAAK,SAAW,YAE3E,EAAQ,EAAiB,CAAI,EAC/B,EAAK,MAAM,KAAK,EAAG,KACjB,EAAA,EAAA,KAAC,OAAD,CAAc,EAAG,EAAE,EAAG,SAAU,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAY,EAAhF,CAAgF,CAC5F,EACD,EAAC,EAAA,EAAA,KAAC,OAAD,CAAc,EAAG,EAAK,IAAO,EAAlB,CAAkB,CAAC,EAEnC,OACE,EAAA,EAAA,KAAC,MAAD,CACE,MAAM,6BACN,QAAS,EACT,MAAO,GAAS,EAChB,OAAQ,GAAU,EAClB,KAAK,eACL,aAAY,EACZ,cAAa,EAAQ,IAAA,GAAY,GACjC,KAAM,EAAQ,MAAQ,IAAA,GACtB,UAAU,QACV,GAAI,WAEH,CACE,CAAA,CAET"}
1
+ {"version":3,"file":"Icon.cjs","names":[],"sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import type { AnyIconDefinition, IconDefinition } from '@gnome-ui/icons';\nimport type { SVGAttributes } from 'react';\n\nimport styles from './Icon.module.css';\n\nexport type IconSize = 'sm' | 'md' | 'lg';\n\n/** Named GNOME palette color for the icon. `\"default\"` (or omitting the prop) inherits `currentColor` from the parent. */\nexport type IconColor =\n | 'default'\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown';\n\nexport interface IconProps extends SVGAttributes<SVGSVGElement> {\n /** Icon from `@gnome-ui/icons`, a `simple-icons` icon, or a raw `{ path }` object. */\n icon: AnyIconDefinition;\n /**\n * Rendered size.\n * - `sm` — 12 px\n * - `md` — 16 px (default)\n * - `lg` — 20 px\n *\n * Override with `width`/`height` for non-standard sizes.\n */\n size?: IconSize;\n /** Accessible label. Omit for decorative icons — they are hidden from screen readers. */\n label?: string;\n /**\n * Named GNOME palette color. Omit (or pass `\"default\"`) to inherit `currentColor`\n * from the parent element — the existing behavior is fully preserved.\n */\n color?: IconColor;\n}\n\nconst SIZE_MAP: Record<IconSize, number> = { sm: 12, md: 16, lg: 20 };\n\nfunction isIconDefinition(icon: AnyIconDefinition): icon is IconDefinition {\n // When an object has both `path` and `paths`, `paths` wins.\n return 'paths' in icon && Array.isArray((icon as IconDefinition).paths);\n}\n\n/**\n * Renders an icon as an inline SVG.\n *\n * Accepts icons from `@gnome-ui/icons`, any `simple-icons` icon, or a plain\n * `{ path }` object. Uses `currentColor` so the icon inherits the text color\n * of its parent. Pass `label` only when the icon conveys meaning on its own.\n *\n * @example\n * import { Search } from \"@gnome-ui/icons\";\n * <Icon icon={Search} label=\"Search\" />\n *\n * @example\n * import { siGithub } from \"simple-icons\";\n * <Icon icon={siGithub} label=\"GitHub\" />\n */\nexport const Icon = ({\n icon,\n size = 'md',\n label,\n width,\n height,\n color,\n className,\n ...props\n}: IconProps) => {\n const px = SIZE_MAP[size];\n\n const resolvedViewBox = isIconDefinition(icon) ? icon.viewBox : (icon.viewBox ?? '0 0 24 24');\n\n const paths = isIconDefinition(icon)\n ? icon.paths.map((p, i) => (\n <path key={i} d={p.d} fillRule={p.fillRule} clipRule={p.clipRule} transform={p.transform} />\n ))\n : [<path key={0} d={icon.path} />];\n\n const colorClass = color && color !== 'default' ? styles[`color-${color}`] : undefined;\n const computedClassName = [colorClass, className].filter(Boolean).join(' ') || undefined;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={resolvedViewBox}\n width={width ?? px}\n height={height ?? px}\n fill=\"currentColor\"\n aria-label={label}\n aria-hidden={label ? undefined : true}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n className={computedClassName}\n {...props}\n >\n {paths}\n </svg>\n );\n};\n"],"mappings":"4EAuCA,IAAM,EAAqC,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAEpE,SAAS,EAAiB,EAAiD,CAEzE,MAAO,UAAW,GAAQ,MAAM,QAAS,EAAwB,KAAK,CACxE,CAiBA,IAAa,GAAQ,CACnB,OACA,OAAO,KACP,QACA,QACA,SACA,QACA,YACA,GAAG,KACY,CACf,IAAM,EAAK,EAAS,GAEd,EAAkB,EAAiB,CAAI,EAAI,EAAK,QAAW,EAAK,SAAW,YAE3E,EAAQ,EAAiB,CAAI,EAC/B,EAAK,MAAM,KAAK,EAAG,KACjB,EAAA,EAAA,KAAC,OAAD,CAAc,EAAG,EAAE,EAAG,SAAU,EAAE,SAAU,SAAU,EAAE,SAAU,UAAW,EAAE,SAAY,EAAhF,CAAgF,CAC5F,EACD,EAAC,EAAA,EAAA,KAAC,OAAD,CAAc,EAAG,EAAK,IAAO,EAAlB,CAAkB,CAAC,EAG7B,EAAoB,CADP,GAAS,IAAU,UAAY,EAAA,QAAO,SAAS,KAAW,IAAA,GACtC,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAK,IAAA,GAE/E,OACE,EAAA,EAAA,KAAC,MAAD,CACE,MAAM,6BACN,QAAS,EACT,MAAO,GAAS,EAChB,OAAQ,GAAU,EAClB,KAAK,eACL,aAAY,EACZ,cAAa,EAAQ,IAAA,GAAY,GACjC,KAAM,EAAQ,MAAQ,IAAA,GACtB,UAAU,QACV,UAAW,EACX,GAAI,WAEH,CACE,CAAA,CAET"}
@@ -1,6 +1,8 @@
1
1
  import { AnyIconDefinition } from '@gnome-ui/icons';
2
2
  import { SVGAttributes } from 'react';
3
3
  export type IconSize = 'sm' | 'md' | 'lg';
4
+ /** Named GNOME palette color for the icon. `"default"` (or omitting the prop) inherits `currentColor` from the parent. */
5
+ export type IconColor = 'default' | 'blue' | 'green' | 'yellow' | 'orange' | 'red' | 'purple' | 'brown';
4
6
  export interface IconProps extends SVGAttributes<SVGSVGElement> {
5
7
  /** Icon from `@gnome-ui/icons`, a `simple-icons` icon, or a raw `{ path }` object. */
6
8
  icon: AnyIconDefinition;
@@ -15,6 +17,11 @@ export interface IconProps extends SVGAttributes<SVGSVGElement> {
15
17
  size?: IconSize;
16
18
  /** Accessible label. Omit for decorative icons — they are hidden from screen readers. */
17
19
  label?: string;
20
+ /**
21
+ * Named GNOME palette color. Omit (or pass `"default"`) to inherit `currentColor`
22
+ * from the parent element — the existing behavior is fully preserved.
23
+ */
24
+ color?: IconColor;
18
25
  }
19
26
  /**
20
27
  * Renders an icon as an inline SVG.
@@ -31,4 +38,4 @@ export interface IconProps extends SVGAttributes<SVGSVGElement> {
31
38
  * import { siGithub } from "simple-icons";
32
39
  * <Icon icon={siGithub} label="GitHub" />
33
40
  */
34
- export declare const Icon: ({ icon, size, label, width, height, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
41
+ export declare const Icon: ({ icon, size, label, width, height, color, className, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,35 +1,37 @@
1
- import { jsx as e } from "react/jsx-runtime";
1
+ import e from "./Icon.module.css.js";
2
+ import { jsx as t } from "react/jsx-runtime";
2
3
  //#region src/components/Icon/Icon.tsx
3
- var t = {
4
+ var n = {
4
5
  sm: 12,
5
6
  md: 16,
6
7
  lg: 20
7
8
  };
8
- function n(e) {
9
+ function r(e) {
9
10
  return "paths" in e && Array.isArray(e.paths);
10
11
  }
11
- var r = ({ icon: r, size: i = "md", label: a, width: o, height: s, ...c }) => {
12
- let l = t[i], u = n(r) ? r.viewBox : r.viewBox ?? "0 0 24 24", d = n(r) ? r.paths.map((t, n) => /* @__PURE__ */ e("path", {
13
- d: t.d,
14
- fillRule: t.fillRule,
15
- clipRule: t.clipRule,
16
- transform: t.transform
17
- }, n)) : [/* @__PURE__ */ e("path", { d: r.path }, 0)];
18
- return /* @__PURE__ */ e("svg", {
12
+ var i = ({ icon: i, size: a = "md", label: o, width: s, height: c, color: l, className: u, ...d }) => {
13
+ let f = n[a], p = r(i) ? i.viewBox : i.viewBox ?? "0 0 24 24", m = r(i) ? i.paths.map((e, n) => /* @__PURE__ */ t("path", {
14
+ d: e.d,
15
+ fillRule: e.fillRule,
16
+ clipRule: e.clipRule,
17
+ transform: e.transform
18
+ }, n)) : [/* @__PURE__ */ t("path", { d: i.path }, 0)], h = [l && l !== "default" ? e[`color-${l}`] : void 0, u].filter(Boolean).join(" ") || void 0;
19
+ return /* @__PURE__ */ t("svg", {
19
20
  xmlns: "http://www.w3.org/2000/svg",
20
- viewBox: u,
21
- width: o ?? l,
22
- height: s ?? l,
21
+ viewBox: p,
22
+ width: s ?? f,
23
+ height: c ?? f,
23
24
  fill: "currentColor",
24
- "aria-label": a,
25
- "aria-hidden": a ? void 0 : !0,
26
- role: a ? "img" : void 0,
25
+ "aria-label": o,
26
+ "aria-hidden": o ? void 0 : !0,
27
+ role: o ? "img" : void 0,
27
28
  focusable: "false",
28
- ...c,
29
- children: d
29
+ className: h,
30
+ ...d,
31
+ children: m
30
32
  });
31
33
  };
32
34
  //#endregion
33
- export { r as Icon };
35
+ export { i as Icon };
34
36
 
35
37
  //# sourceMappingURL=Icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","names":[],"sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import type { AnyIconDefinition, IconDefinition } from '@gnome-ui/icons';\nimport type { SVGAttributes } from 'react';\n\nexport type IconSize = 'sm' | 'md' | 'lg';\n\nexport interface IconProps extends SVGAttributes<SVGSVGElement> {\n /** Icon from `@gnome-ui/icons`, a `simple-icons` icon, or a raw `{ path }` object. */\n icon: AnyIconDefinition;\n /**\n * Rendered size.\n * - `sm` — 12 px\n * - `md` — 16 px (default)\n * - `lg` — 20 px\n *\n * Override with `width`/`height` for non-standard sizes.\n */\n size?: IconSize;\n /** Accessible label. Omit for decorative icons — they are hidden from screen readers. */\n label?: string;\n}\n\nconst SIZE_MAP: Record<IconSize, number> = { sm: 12, md: 16, lg: 20 };\n\nfunction isIconDefinition(icon: AnyIconDefinition): icon is IconDefinition {\n // When an object has both `path` and `paths`, `paths` wins.\n return 'paths' in icon && Array.isArray((icon as IconDefinition).paths);\n}\n\n/**\n * Renders an icon as an inline SVG.\n *\n * Accepts icons from `@gnome-ui/icons`, any `simple-icons` icon, or a plain\n * `{ path }` object. Uses `currentColor` so the icon inherits the text color\n * of its parent. Pass `label` only when the icon conveys meaning on its own.\n *\n * @example\n * import { Search } from \"@gnome-ui/icons\";\n * <Icon icon={Search} label=\"Search\" />\n *\n * @example\n * import { siGithub } from \"simple-icons\";\n * <Icon icon={siGithub} label=\"GitHub\" />\n */\nexport const Icon = ({ icon, size = 'md', label, width, height, ...props }: IconProps) => {\n const px = SIZE_MAP[size];\n\n const resolvedViewBox = isIconDefinition(icon) ? icon.viewBox : (icon.viewBox ?? '0 0 24 24');\n\n const paths = isIconDefinition(icon)\n ? icon.paths.map((p, i) => (\n <path key={i} d={p.d} fillRule={p.fillRule} clipRule={p.clipRule} transform={p.transform} />\n ))\n : [<path key={0} d={icon.path} />];\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={resolvedViewBox}\n width={width ?? px}\n height={height ?? px}\n fill=\"currentColor\"\n aria-label={label}\n aria-hidden={label ? undefined : true}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n {...props}\n >\n {paths}\n </svg>\n );\n};\n"],"mappings":";;AAqBA,IAAM,IAAqC;CAAE,IAAI;CAAI,IAAI;CAAI,IAAI;AAAG;AAEpE,SAAS,EAAiB,GAAiD;CAEzE,OAAO,WAAW,KAAQ,MAAM,QAAS,EAAwB,KAAK;AACxE;AAiBA,IAAa,KAAQ,EAAE,SAAM,UAAO,MAAM,UAAO,UAAO,WAAQ,GAAG,QAAuB;CACxF,IAAM,IAAK,EAAS,IAEd,IAAkB,EAAiB,CAAI,IAAI,EAAK,UAAW,EAAK,WAAW,aAE3E,IAAQ,EAAiB,CAAI,IAC/B,EAAK,MAAM,KAAK,GAAG,MACjB,kBAAC,QAAD;EAAc,GAAG,EAAE;EAAG,UAAU,EAAE;EAAU,UAAU,EAAE;EAAU,WAAW,EAAE;CAAY,GAAhF,CAAgF,CAC5F,IACD,CAAC,kBAAC,QAAD,EAAc,GAAG,EAAK,KAAO,GAAlB,CAAkB,CAAC;CAEnC,OACE,kBAAC,OAAD;EACE,OAAM;EACN,SAAS;EACT,OAAO,KAAS;EAChB,QAAQ,KAAU;EAClB,MAAK;EACL,cAAY;EACZ,eAAa,IAAQ,KAAA,IAAY;EACjC,MAAM,IAAQ,QAAQ,KAAA;EACtB,WAAU;EACV,GAAI;YAEH;CACE,CAAA;AAET"}
1
+ {"version":3,"file":"Icon.js","names":[],"sources":["../../../src/components/Icon/Icon.tsx"],"sourcesContent":["import type { AnyIconDefinition, IconDefinition } from '@gnome-ui/icons';\nimport type { SVGAttributes } from 'react';\n\nimport styles from './Icon.module.css';\n\nexport type IconSize = 'sm' | 'md' | 'lg';\n\n/** Named GNOME palette color for the icon. `\"default\"` (or omitting the prop) inherits `currentColor` from the parent. */\nexport type IconColor =\n | 'default'\n | 'blue'\n | 'green'\n | 'yellow'\n | 'orange'\n | 'red'\n | 'purple'\n | 'brown';\n\nexport interface IconProps extends SVGAttributes<SVGSVGElement> {\n /** Icon from `@gnome-ui/icons`, a `simple-icons` icon, or a raw `{ path }` object. */\n icon: AnyIconDefinition;\n /**\n * Rendered size.\n * - `sm` — 12 px\n * - `md` — 16 px (default)\n * - `lg` — 20 px\n *\n * Override with `width`/`height` for non-standard sizes.\n */\n size?: IconSize;\n /** Accessible label. Omit for decorative icons — they are hidden from screen readers. */\n label?: string;\n /**\n * Named GNOME palette color. Omit (or pass `\"default\"`) to inherit `currentColor`\n * from the parent element — the existing behavior is fully preserved.\n */\n color?: IconColor;\n}\n\nconst SIZE_MAP: Record<IconSize, number> = { sm: 12, md: 16, lg: 20 };\n\nfunction isIconDefinition(icon: AnyIconDefinition): icon is IconDefinition {\n // When an object has both `path` and `paths`, `paths` wins.\n return 'paths' in icon && Array.isArray((icon as IconDefinition).paths);\n}\n\n/**\n * Renders an icon as an inline SVG.\n *\n * Accepts icons from `@gnome-ui/icons`, any `simple-icons` icon, or a plain\n * `{ path }` object. Uses `currentColor` so the icon inherits the text color\n * of its parent. Pass `label` only when the icon conveys meaning on its own.\n *\n * @example\n * import { Search } from \"@gnome-ui/icons\";\n * <Icon icon={Search} label=\"Search\" />\n *\n * @example\n * import { siGithub } from \"simple-icons\";\n * <Icon icon={siGithub} label=\"GitHub\" />\n */\nexport const Icon = ({\n icon,\n size = 'md',\n label,\n width,\n height,\n color,\n className,\n ...props\n}: IconProps) => {\n const px = SIZE_MAP[size];\n\n const resolvedViewBox = isIconDefinition(icon) ? icon.viewBox : (icon.viewBox ?? '0 0 24 24');\n\n const paths = isIconDefinition(icon)\n ? icon.paths.map((p, i) => (\n <path key={i} d={p.d} fillRule={p.fillRule} clipRule={p.clipRule} transform={p.transform} />\n ))\n : [<path key={0} d={icon.path} />];\n\n const colorClass = color && color !== 'default' ? styles[`color-${color}`] : undefined;\n const computedClassName = [colorClass, className].filter(Boolean).join(' ') || undefined;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={resolvedViewBox}\n width={width ?? px}\n height={height ?? px}\n fill=\"currentColor\"\n aria-label={label}\n aria-hidden={label ? undefined : true}\n role={label ? 'img' : undefined}\n focusable=\"false\"\n className={computedClassName}\n {...props}\n >\n {paths}\n </svg>\n );\n};\n"],"mappings":";;;AAuCA,IAAM,IAAqC;CAAE,IAAI;CAAI,IAAI;CAAI,IAAI;AAAG;AAEpE,SAAS,EAAiB,GAAiD;CAEzE,OAAO,WAAW,KAAQ,MAAM,QAAS,EAAwB,KAAK;AACxE;AAiBA,IAAa,KAAQ,EACnB,SACA,UAAO,MACP,UACA,UACA,WACA,UACA,cACA,GAAG,QACY;CACf,IAAM,IAAK,EAAS,IAEd,IAAkB,EAAiB,CAAI,IAAI,EAAK,UAAW,EAAK,WAAW,aAE3E,IAAQ,EAAiB,CAAI,IAC/B,EAAK,MAAM,KAAK,GAAG,MACjB,kBAAC,QAAD;EAAc,GAAG,EAAE;EAAG,UAAU,EAAE;EAAU,UAAU,EAAE;EAAU,WAAW,EAAE;CAAY,GAAhF,CAAgF,CAC5F,IACD,CAAC,kBAAC,QAAD,EAAc,GAAG,EAAK,KAAO,GAAlB,CAAkB,CAAC,GAG7B,IAAoB,CADP,KAAS,MAAU,YAAY,EAAO,SAAS,OAAW,KAAA,GACtC,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK,KAAA;CAE/E,OACE,kBAAC,OAAD;EACE,OAAM;EACN,SAAS;EACT,OAAO,KAAS;EAChB,QAAQ,KAAU;EAClB,MAAK;EACL,cAAY;EACZ,eAAa,IAAQ,KAAA,IAAY;EACjC,MAAM,IAAQ,QAAQ,KAAA;EACtB,WAAU;EACV,WAAW;EACX,GAAI;YAEH;CACE,CAAA;AAET"}
@@ -0,0 +1,2 @@
1
+ var e={"color-blue":`_color-blue_7mnnl_7`,"color-green":`_color-green_7mnnl_11`,"color-yellow":`_color-yellow_7mnnl_15`,"color-orange":`_color-orange_7mnnl_19`,"color-red":`_color-red_7mnnl_23`,"color-purple":`_color-purple_7mnnl_27`,"color-brown":`_color-brown_7mnnl_31`};exports.default=e;
2
+ //# sourceMappingURL=Icon.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.module.css.cjs","names":[],"sources":["../../../src/components/Icon/Icon.module.css"],"sourcesContent":["/* ─── Palette color overrides ───────────────────────────────────────────────── */\n\n/* Applied via the `color` prop. Each class sets the CSS `color` property so */\n\n/* the SVG's fill=\"currentColor\" resolves to the palette token. */\n\n.color-blue {\n color: var(--gnome-blue-3, #3584e4);\n}\n\n.color-green {\n color: var(--gnome-green-4, #2ec27e);\n}\n\n.color-yellow {\n color: var(--gnome-yellow-4, #f5c211);\n}\n\n.color-orange {\n color: var(--gnome-orange-3, #ff7800);\n}\n\n.color-red {\n color: var(--gnome-red-3, #e01b24);\n}\n\n.color-purple {\n color: var(--gnome-purple-3, #9141ac);\n}\n\n.color-brown {\n color: var(--gnome-brown-3, #986a44);\n}\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ //#region src/components/Icon/Icon.module.css
2
+ var e = {
3
+ "color-blue": "_color-blue_7mnnl_7",
4
+ "color-green": "_color-green_7mnnl_11",
5
+ "color-yellow": "_color-yellow_7mnnl_15",
6
+ "color-orange": "_color-orange_7mnnl_19",
7
+ "color-red": "_color-red_7mnnl_23",
8
+ "color-purple": "_color-purple_7mnnl_27",
9
+ "color-brown": "_color-brown_7mnnl_31"
10
+ };
11
+ //#endregion
12
+ export { e as default };
13
+
14
+ //# sourceMappingURL=Icon.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.module.css.js","names":[],"sources":["../../../src/components/Icon/Icon.module.css"],"sourcesContent":["/* ─── Palette color overrides ───────────────────────────────────────────────── */\n\n/* Applied via the `color` prop. Each class sets the CSS `color` property so */\n\n/* the SVG's fill=\"currentColor\" resolves to the palette token. */\n\n.color-blue {\n color: var(--gnome-blue-3, #3584e4);\n}\n\n.color-green {\n color: var(--gnome-green-4, #2ec27e);\n}\n\n.color-yellow {\n color: var(--gnome-yellow-4, #f5c211);\n}\n\n.color-orange {\n color: var(--gnome-orange-3, #ff7800);\n}\n\n.color-red {\n color: var(--gnome-red-3, #e01b24);\n}\n\n.color-purple {\n color: var(--gnome-purple-3, #9141ac);\n}\n\n.color-brown {\n color: var(--gnome-brown-3, #986a44);\n}\n"],"mappings":""}
@@ -1,2 +1,2 @@
1
- export type { IconProps, IconSize } from './Icon';
1
+ export type { IconColor, IconProps, IconSize } from './Icon';
2
2
  export { Icon } from './Icon';
@@ -1,2 +1,2 @@
1
- const e=require("../BottomSheet/BottomSheet.cjs"),t=require("../Icon/Icon.cjs"),n=require("./InlineViewSwitcher.module.css.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=(0,r.createContext)(null);function o(){let e=(0,r.useContext)(a);if(!e)throw Error(`InlineViewSwitcherItem must be used inside InlineViewSwitcher`);return e}var s=({value:o,onValueChange:s,variant:c=`default`,overflow:l=`wrap`,"aria-label":u=`View switcher`,children:d,className:f,...p})=>{let m=(0,r.useRef)(null),h=(0,r.useRef)(0),[g,_]=(0,r.useState)(!1),[v,y]=(0,r.useState)(!1),[b,x]=(0,r.useState)({width:0,transform:`translateX(0)`});(0,r.useEffect)(()=>{if(l!==`compact`&&l!==`menu`){_(!1);return}let e=m.current;if(!e)return;let t=new ResizeObserver(()=>{_(t=>{if(!t){let t=e.scrollWidth;return t>e.clientWidth?(h.current=t,!0):!1}return h.current>e.clientWidth+30})});return t.observe(e),()=>t.disconnect()},[l]);let S=r.Children.toArray(d).filter(r.isValidElement).filter(e=>e.type.displayName===`InlineViewSwitcherItem`).map(e=>e.props),C=S.find(e=>e.name===o)??S[0],w=l===`compact`&&g,T=l===`menu`&&g;(0,r.useLayoutEffect)(()=>{if(T)return;let e=m.current;if(!e)return;let t=e.querySelector(`[aria-checked="true"]`);t&&x({width:t.offsetWidth,transform:`translateX(${t.offsetLeft}px)`})},[o,T,w]);function E(e){let t=Array.from(m.current?.querySelectorAll(`[role=radio]:not(:disabled)`)??[]),n=document.activeElement,r=n instanceof HTMLButtonElement?t.indexOf(n):-1;if(r===-1)return;let i=r;if(e.key===`ArrowRight`||e.key===`ArrowDown`)i=(r+1)%t.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)i=(r-1+t.length)%t.length;else if(e.key===`Home`)i=0;else if(e.key===`End`)i=t.length-1;else return;e.preventDefault(),t[i].focus(),t[i].click()}return(0,i.jsx)(a.Provider,{value:{value:o,onValueChange:s,compact:w},children:(0,i.jsxs)(`div`,{ref:m,role:T?void 0:`radiogroup`,"aria-label":u,onKeyDown:E,className:[n.default.switcher,n.default[c],l===`scroll`?n.default.overflowScroll:null,l===`compact`||l===`menu`?n.default.overflowDetect:null,w?n.default.compact:null,f].filter(Boolean).join(` `),...p,children:[!T&&(0,i.jsx)(`span`,{className:n.default.indicator,style:b,"aria-hidden":!0}),T?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`button`,{type:`button`,className:[n.default.item,n.default.active,n.default.menuTrigger].filter(Boolean).join(` `),onClick:()=>y(!0),"aria-haspopup":`dialog`,"aria-label":`${u}: ${C?.label??C?.name}`,children:[C?.icon&&(0,i.jsx)(`span`,{className:n.default.itemIcon,children:(0,i.jsx)(t.Icon,{icon:C.icon,size:`md`,"aria-hidden":!0})}),C?.label&&(0,i.jsx)(`span`,{className:n.default.itemLabel,children:C.label}),(0,i.jsx)(`span`,{className:n.default.menuChevron,"aria-hidden":`true`,children:`▾`})]}),(0,i.jsx)(e.BottomSheet,{open:v,title:u,onClose:()=>y(!1),children:(0,i.jsx)(`div`,{className:n.default.menuList,role:`radiogroup`,"aria-label":u,children:S.map(e=>(0,i.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.name===o,className:[n.default.menuListItem,e.name===o?n.default.menuListItemActive:null].filter(Boolean).join(` `),onClick:()=>{s(e.name),y(!1)},children:[e.icon&&(0,i.jsx)(`span`,{className:n.default.menuListItemIcon,children:(0,i.jsx)(t.Icon,{icon:e.icon,size:`md`,"aria-hidden":!0})}),(0,i.jsx)(`span`,{className:n.default.menuListItemLabel,children:e.label??e.name}),e.name===o&&(0,i.jsx)(`span`,{className:n.default.menuListItemCheck,"aria-hidden":`true`,children:`✓`})]},e.name))})})]}):d]})})};exports.InlineViewSwitcher=s,exports.useInlineViewSwitcher=o;
1
+ const e=require("../BottomSheet/BottomSheet.cjs"),t=require("../Icon/Icon.cjs"),n=require("./InlineViewSwitcher.module.css.cjs");let r=require("react"),i=require("react/jsx-runtime");var a=(0,r.createContext)(null);function o(){let e=(0,r.useContext)(a);if(!e)throw Error(`InlineViewSwitcherItem must be used inside InlineViewSwitcher`);return e}var s=({value:o,onValueChange:s,variant:c=`default`,overflow:l=`wrap`,"aria-label":u=`View switcher`,children:d,className:f,...p})=>{let m=(0,r.useRef)(null),h=(0,r.useRef)(0),[g,_]=(0,r.useState)(!1),[v,y]=(0,r.useState)(!1),[b,x]=(0,r.useState)({width:0,transform:`translateX(0)`});(0,r.useEffect)(()=>{if(l!==`compact`&&l!==`menu`){_(!1);return}let e=m.current;if(!e)return;let t=new ResizeObserver(()=>{_(t=>{if(!t){let t=e.scrollWidth;return t>e.clientWidth?(h.current=t,!0):!1}return h.current>e.clientWidth+30})});return t.observe(e),()=>t.disconnect()},[l]);let S=r.Children.toArray(d).filter(r.isValidElement).filter(e=>e.type.displayName===`InlineViewSwitcherItem`).map(e=>e.props),C=S.find(e=>e.name===o)??S[0],w=l===`compact`&&g,T=l===`menu`&&g;(0,r.useLayoutEffect)(()=>{if(T)return;let e=m.current;if(!e)return;let t=e.querySelector(`[aria-checked="true"]`);t&&x({width:t.offsetWidth,transform:`translateX(${t.offsetLeft}px)`})},[o,T,w]);function E(e){let t=Array.from(m.current?.querySelectorAll(`[role=radio]:not(:disabled)`)??[]),{activeElement:n}=document,r=n instanceof HTMLButtonElement?t.indexOf(n):-1;if(r===-1)return;let i=r;if(e.key===`ArrowRight`||e.key===`ArrowDown`)i=(r+1)%t.length;else if(e.key===`ArrowLeft`||e.key===`ArrowUp`)i=(r-1+t.length)%t.length;else if(e.key===`Home`)i=0;else if(e.key===`End`)i=t.length-1;else return;e.preventDefault(),t[i].focus(),t[i].click()}return(0,i.jsx)(a.Provider,{value:{value:o,onValueChange:s,compact:w},children:(0,i.jsxs)(`div`,{ref:m,role:T?void 0:`radiogroup`,"aria-label":u,onKeyDown:E,className:[n.default.switcher,n.default[c],l===`scroll`?n.default.overflowScroll:null,l===`compact`||l===`menu`?n.default.overflowDetect:null,w?n.default.compact:null,f].filter(Boolean).join(` `),...p,children:[!T&&(0,i.jsx)(`span`,{className:n.default.indicator,style:b,"aria-hidden":!0}),T?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(`button`,{type:`button`,className:[n.default.item,n.default.active,n.default.menuTrigger].filter(Boolean).join(` `),onClick:()=>y(!0),"aria-haspopup":`dialog`,"aria-label":`${u}: ${C?.label??C?.name}`,children:[C?.icon&&(0,i.jsx)(`span`,{className:n.default.itemIcon,children:(0,i.jsx)(t.Icon,{icon:C.icon,size:`md`,"aria-hidden":!0})}),C?.label&&(0,i.jsx)(`span`,{className:n.default.itemLabel,children:C.label}),(0,i.jsx)(`span`,{className:n.default.menuChevron,"aria-hidden":`true`,children:`▾`})]}),(0,i.jsx)(e.BottomSheet,{open:v,title:u,onClose:()=>y(!1),children:(0,i.jsx)(`div`,{className:n.default.menuList,role:`radiogroup`,"aria-label":u,children:S.map(e=>(0,i.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.name===o,className:[n.default.menuListItem,e.name===o?n.default.menuListItemActive:null].filter(Boolean).join(` `),onClick:()=>{s(e.name),y(!1)},children:[e.icon&&(0,i.jsx)(`span`,{className:n.default.menuListItemIcon,children:(0,i.jsx)(t.Icon,{icon:e.icon,size:`md`,"aria-hidden":!0})}),(0,i.jsx)(`span`,{className:n.default.menuListItemLabel,children:e.label??e.name}),e.name===o&&(0,i.jsx)(`span`,{className:n.default.menuListItemCheck,"aria-hidden":`true`,children:`✓`})]},e.name))})})]}):d]})})};exports.InlineViewSwitcher=s,exports.useInlineViewSwitcher=o;
2
2
  //# sourceMappingURL=InlineViewSwitcher.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"InlineViewSwitcher.cjs","names":[],"sources":["../../../src/components/InlineViewSwitcher/InlineViewSwitcher.tsx"],"sourcesContent":["import {\n Children,\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { BottomSheet } from '../BottomSheet';\nimport { Icon } from '../Icon';\n\nimport styles from './InlineViewSwitcher.module.css';\nimport type { InlineViewSwitcherItemProps } from './InlineViewSwitcherItem';\n\nexport type InlineViewSwitcherVariant = 'default' | 'flat' | 'round' | 'pill';\n\nexport type InlineViewSwitcherOverflow = 'wrap' | 'scroll' | 'compact' | 'menu';\n\n// ─── Internal context ──────────────────────────────────────────────────────────\n\ninterface InlineViewSwitcherContextValue {\n value: string;\n onValueChange: (value: string) => void;\n compact: boolean;\n}\n\nconst InlineViewSwitcherContext = createContext<InlineViewSwitcherContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useInlineViewSwitcher() {\n const ctx = useContext(InlineViewSwitcherContext);\n\n if (!ctx) {\n throw new Error('InlineViewSwitcherItem must be used inside InlineViewSwitcher');\n }\n\n return ctx;\n}\n\n// ─── InlineViewSwitcher ────────────────────────────────────────────────────────\n\nexport interface InlineViewSwitcherProps extends HTMLAttributes<HTMLDivElement> {\n /** Currently active view name. */\n value: string;\n /** Called with the new value when a view is selected. */\n onValueChange: (value: string) => void;\n /**\n * Visual style of the switcher.\n * - `default` — card background with border and shadow (same as `ToggleGroup`).\n * - `flat` — no background or border; active indicator only.\n * - `round` — pill-shaped container and items.\n * - `pill` — segmented-control style; active item appears lifted, no accent color.\n */\n variant?: InlineViewSwitcherVariant;\n /**\n * Overflow strategy when the container is too narrow for all items.\n * - `wrap` — default; items overflow with no special handling.\n * - `scroll` — horizontal scroll with hidden scrollbar.\n * - `compact` — collapses item labels to icons-only when overflowing (requires icons on all items).\n * - `menu` — shows the active item and a chevron trigger; all items open in a BottomSheet.\n */\n overflow?: InlineViewSwitcherOverflow;\n /** Accessible label for the group. */\n 'aria-label'?: string;\n children?: ReactNode;\n}\n\n/**\n * Compact inline view switcher for placing inside content areas, cards, or\n * toolbars — wherever `ViewSwitcher` (header-bar sized) would be too heavy.\n *\n * Built on `ToggleGroup` internals with `flat` and `round` style variants.\n * Mirrors `AdwInlineViewSwitcher` (libadwaita 1.7 / GNOME 48).\n *\n * Compose with `InlineViewSwitcherItem`. Keyboard: ← / → cycle, Home / End jump.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.InlineViewSwitcher.html\n */\nexport const InlineViewSwitcher = ({\n value,\n onValueChange,\n variant = 'default',\n overflow = 'wrap',\n 'aria-label': ariaLabel = 'View switcher',\n children,\n className,\n ...props\n}: InlineViewSwitcherProps) => {\n const groupRef = useRef<HTMLDivElement>(null);\n const naturalWidthRef = useRef<number>(0);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [indicatorStyle, setIndicatorStyle] = useState<CSSProperties>({\n width: 0,\n transform: 'translateX(0)',\n });\n\n useEffect(() => {\n if (overflow !== 'compact' && overflow !== 'menu') {\n setIsOverflowing(false);\n return;\n }\n const el = groupRef.current;\n if (!el) {\n return;\n }\n\n const check = () => {\n setIsOverflowing((prev) => {\n if (!prev) {\n const scrollW = el.scrollWidth;\n if (scrollW > el.clientWidth) {\n naturalWidthRef.current = scrollW;\n return true;\n }\n return false;\n }\n // 30px hysteresis: stay collapsed until container is comfortably wider\n return naturalWidthRef.current > el.clientWidth + 30;\n });\n };\n\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [overflow]);\n\n const allItems = Children.toArray(children)\n .filter(isValidElement)\n .filter(\n (child) => (child.type as { displayName?: string }).displayName === 'InlineViewSwitcherItem',\n )\n .map((child) => (child as ReactElement<InlineViewSwitcherItemProps>).props);\n\n const activeItem = allItems.find((i) => i.name === value) ?? allItems[0];\n const compact = overflow === 'compact' && isOverflowing;\n const inMenuMode = overflow === 'menu' && isOverflowing;\n\n // Track active item position for the sliding indicator\n useLayoutEffect(() => {\n if (inMenuMode) {\n return;\n }\n const group = groupRef.current;\n if (!group) {\n return;\n }\n const activeEl = group.querySelector<HTMLElement>('[aria-checked=\"true\"]');\n if (!activeEl) {\n return;\n }\n\n setIndicatorStyle({\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n });\n }, [value, inMenuMode, compact]);\n\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const items = Array.from(\n groupRef.current?.querySelectorAll<HTMLButtonElement>('[role=radio]:not(:disabled)') ?? [],\n );\n const activeElement = document.activeElement;\n const idx = activeElement instanceof HTMLButtonElement ? items.indexOf(activeElement) : -1;\n\n if (idx === -1) {\n return;\n }\n\n let next = idx;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n next = (idx + 1) % items.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n next = (idx - 1 + items.length) % items.length;\n } else if (e.key === 'Home') {\n next = 0;\n } else if (e.key === 'End') {\n next = items.length - 1;\n } else {\n return;\n }\n\n e.preventDefault();\n items[next].focus();\n items[next].click();\n }\n\n return (\n <InlineViewSwitcherContext.Provider value={{ value, onValueChange, compact }}>\n <div\n ref={groupRef}\n role={inMenuMode ? undefined : 'radiogroup'}\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n className={[\n styles.switcher,\n styles[variant],\n overflow === 'scroll' ? styles.overflowScroll : null,\n overflow === 'compact' || overflow === 'menu' ? styles.overflowDetect : null,\n compact ? styles.compact : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {!inMenuMode && <span className={styles.indicator} style={indicatorStyle} aria-hidden />}\n {inMenuMode ? (\n <>\n <button\n type=\"button\"\n className={[styles.item, styles.active, styles.menuTrigger].filter(Boolean).join(' ')}\n onClick={() => setSheetOpen(true)}\n aria-haspopup=\"dialog\"\n aria-label={`${ariaLabel}: ${activeItem?.label ?? activeItem?.name}`}\n >\n {activeItem?.icon && (\n <span className={styles.itemIcon}>\n <Icon icon={activeItem.icon} size=\"md\" aria-hidden />\n </span>\n )}\n {activeItem?.label && <span className={styles.itemLabel}>{activeItem.label}</span>}\n <span className={styles.menuChevron} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n <BottomSheet open={sheetOpen} title={ariaLabel} onClose={() => setSheetOpen(false)}>\n <div className={styles.menuList} role=\"radiogroup\" aria-label={ariaLabel}>\n {allItems.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n role=\"radio\"\n aria-checked={item.name === value}\n className={[\n styles.menuListItem,\n item.name === value ? styles.menuListItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n onValueChange(item.name);\n setSheetOpen(false);\n }}\n >\n {item.icon && (\n <span className={styles.menuListItemIcon}>\n <Icon icon={item.icon} size=\"md\" aria-hidden />\n </span>\n )}\n <span className={styles.menuListItemLabel}>{item.label ?? item.name}</span>\n {item.name === value && (\n <span className={styles.menuListItemCheck} aria-hidden=\"true\">\n ✓\n </span>\n )}\n </button>\n ))}\n </div>\n </BottomSheet>\n </>\n ) : (\n children\n )}\n </div>\n </InlineViewSwitcherContext.Provider>\n );\n};\n"],"mappings":"uLAkCA,IAAM,GAAA,EAAA,EAAA,eAAiF,IAAI,EAG3F,SAAgB,GAAwB,CACtC,IAAM,GAAA,EAAA,EAAA,YAAiB,CAAyB,EAEhD,GAAI,CAAC,EACH,MAAU,MAAM,+DAA+D,EAGjF,OAAO,CACT,CAyCA,IAAa,GAAsB,CACjC,QACA,gBACA,UAAU,UACV,WAAW,OACX,aAAc,EAAY,gBAC1B,WACA,YACA,GAAG,KAC0B,CAC7B,IAAM,GAAA,EAAA,EAAA,QAAkC,IAAI,EACtC,GAAA,EAAA,EAAA,QAAiC,CAAC,EAClC,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,EAAK,EAClD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,CAAC,EAAgB,IAAA,EAAA,EAAA,UAA6C,CAClE,MAAO,EACP,UAAW,eACb,CAAC,GAED,EAAA,EAAA,eAAgB,CACd,GAAI,IAAa,WAAa,IAAa,OAAQ,CACjD,EAAiB,EAAK,EACtB,MACF,CACA,IAAM,EAAK,EAAS,QACpB,GAAI,CAAC,EACH,OAkBF,IAAM,EAAK,IAAI,mBAfK,CAClB,EAAkB,GAAS,CACzB,GAAI,CAAC,EAAM,CACT,IAAM,EAAU,EAAG,YAKnB,OAJI,EAAU,EAAG,aACf,EAAgB,QAAU,EACnB,IAEF,EACT,CAEA,OAAO,EAAgB,QAAU,EAAG,YAAc,EACpD,CAAC,CACH,CAEmC,EAEnC,OADA,EAAG,QAAQ,CAAE,MACA,EAAG,WAAW,CAC7B,EAAG,CAAC,CAAQ,CAAC,EAEb,IAAM,EAAW,EAAA,SAAS,QAAQ,CAAQ,EACvC,OAAO,EAAA,cAAc,EACrB,OACE,GAAW,EAAM,KAAkC,cAAgB,wBACtE,EACC,IAAK,GAAW,EAAoD,KAAK,EAEtE,EAAa,EAAS,KAAM,GAAM,EAAE,OAAS,CAAK,GAAK,EAAS,GAChE,EAAU,IAAa,WAAa,EACpC,EAAa,IAAa,QAAU,GAG1C,EAAA,EAAA,qBAAsB,CACpB,GAAI,EACF,OAEF,IAAM,EAAQ,EAAS,QACvB,GAAI,CAAC,EACH,OAEF,IAAM,EAAW,EAAM,cAA2B,uBAAuB,EACpE,GAIL,EAAkB,CAChB,MAAO,EAAS,YAChB,UAAW,cAAc,EAAS,WAAW,IAC/C,CAAC,CACH,EAAG,CAAC,EAAO,EAAY,CAAO,CAAC,EAE/B,SAAS,EAAc,EAAkC,CACvD,IAAM,EAAQ,MAAM,KAClB,EAAS,SAAS,iBAAoC,6BAA6B,GAAK,CAAC,CAC3F,EACM,EAAgB,SAAS,cACzB,EAAM,aAAyB,kBAAoB,EAAM,QAAQ,CAAa,EAAI,GAExF,GAAI,IAAQ,GACV,OAGF,IAAI,EAAO,EACX,GAAI,EAAE,MAAQ,cAAgB,EAAE,MAAQ,YACtC,GAAQ,EAAM,GAAK,EAAM,YACpB,GAAI,EAAE,MAAQ,aAAe,EAAE,MAAQ,UAC5C,GAAQ,EAAM,EAAI,EAAM,QAAU,EAAM,YACnC,GAAI,EAAE,MAAQ,OACnB,EAAO,OACF,GAAI,EAAE,MAAQ,MACnB,EAAO,EAAM,OAAS,OAEtB,OAGF,EAAE,eAAe,EACjB,EAAM,GAAM,MAAM,EAClB,EAAM,GAAM,MAAM,CACpB,CAEA,OACE,EAAA,EAAA,KAAC,EAA0B,SAA3B,CAAoC,MAAO,CAAE,QAAO,gBAAe,SAAQ,YACzE,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACL,KAAM,EAAa,IAAA,GAAY,aAC/B,aAAY,EACZ,UAAW,EACX,UAAW,CACT,EAAA,QAAO,SACP,EAAA,QAAO,GACP,IAAa,SAAW,EAAA,QAAO,eAAiB,KAChD,IAAa,WAAa,IAAa,OAAS,EAAA,QAAO,eAAiB,KACxE,EAAU,EAAA,QAAO,QAAU,KAC3B,CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EACX,GAAI,WAfN,CAiBG,CAAC,IAAc,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAW,MAAO,EAAgB,cAAA,EAAa,CAAA,EACtF,GACC,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,UAAW,CAAC,EAAA,QAAO,KAAM,EAAA,QAAO,OAAQ,EAAA,QAAO,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACpF,YAAe,EAAa,EAAI,EAChC,gBAAc,SACd,aAAY,GAAG,EAAU,IAAI,GAAY,OAAS,GAAY,gBALhE,CAOG,GAAY,OACX,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,mBACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAW,KAAM,KAAK,KAAK,cAAA,EAAa,CAAA,CAChD,CAAA,EAEP,GAAY,QAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,mBAAY,EAAW,KAAY,CAAA,GACjF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,YAAa,cAAY,gBAAO,GAElD,CAAA,CACA,KACR,EAAA,EAAA,KAAC,EAAA,YAAD,CAAa,KAAM,EAAW,MAAO,EAAW,YAAe,EAAa,EAAK,YAC/E,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,SAAU,KAAK,aAAa,aAAY,WAC5D,EAAS,IAAK,IACb,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,KAAK,QACL,eAAc,EAAK,OAAS,EAC5B,UAAW,CACT,EAAA,QAAO,aACP,EAAK,OAAS,EAAQ,EAAA,QAAO,mBAAqB,IACpD,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EACX,YAAe,CACb,EAAc,EAAK,IAAI,EACvB,EAAa,EAAK,CACpB,WAdF,CAgBG,EAAK,OACJ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,2BACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAK,KAAM,KAAK,KAAK,cAAA,EAAa,CAAA,CAC1C,CAAA,GAER,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,2BAAoB,EAAK,OAAS,EAAK,IAAW,CAAA,EACzE,EAAK,OAAS,IACb,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAmB,cAAY,gBAAO,GAExD,CAAA,CAEF,GA1BD,EAAK,IA0BJ,CACT,CACE,CAAA,CACM,CAAA,CACb,CAAA,CAAA,EAEF,CAEC,GAC6B,CAAA,CAExC"}
1
+ {"version":3,"file":"InlineViewSwitcher.cjs","names":[],"sources":["../../../src/components/InlineViewSwitcher/InlineViewSwitcher.tsx"],"sourcesContent":["import {\n Children,\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { BottomSheet } from '../BottomSheet';\nimport { Icon } from '../Icon';\n\nimport styles from './InlineViewSwitcher.module.css';\nimport type { InlineViewSwitcherItemProps } from './InlineViewSwitcherItem';\n\nexport type InlineViewSwitcherVariant = 'default' | 'flat' | 'round' | 'pill';\n\nexport type InlineViewSwitcherOverflow = 'wrap' | 'scroll' | 'compact' | 'menu';\n\n// ─── Internal context ──────────────────────────────────────────────────────────\n\ninterface InlineViewSwitcherContextValue {\n value: string;\n onValueChange: (value: string) => void;\n compact: boolean;\n}\n\nconst InlineViewSwitcherContext = createContext<InlineViewSwitcherContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useInlineViewSwitcher() {\n const ctx = useContext(InlineViewSwitcherContext);\n\n if (!ctx) {\n throw new Error('InlineViewSwitcherItem must be used inside InlineViewSwitcher');\n }\n\n return ctx;\n}\n\n// ─── InlineViewSwitcher ────────────────────────────────────────────────────────\n\nexport interface InlineViewSwitcherProps extends HTMLAttributes<HTMLDivElement> {\n /** Currently active view name. */\n value: string;\n /** Called with the new value when a view is selected. */\n onValueChange: (value: string) => void;\n /**\n * Visual style of the switcher.\n * - `default` — card background with border and shadow (same as `ToggleGroup`).\n * - `flat` — no background or border; active indicator only.\n * - `round` — pill-shaped container and items.\n * - `pill` — segmented-control style; active item appears lifted, no accent color.\n */\n variant?: InlineViewSwitcherVariant;\n /**\n * Overflow strategy when the container is too narrow for all items.\n * - `wrap` — default; items overflow with no special handling.\n * - `scroll` — horizontal scroll with hidden scrollbar.\n * - `compact` — collapses item labels to icons-only when overflowing (requires icons on all items).\n * - `menu` — shows the active item and a chevron trigger; all items open in a BottomSheet.\n */\n overflow?: InlineViewSwitcherOverflow;\n /** Accessible label for the group. */\n 'aria-label'?: string;\n children?: ReactNode;\n}\n\n/**\n * Compact inline view switcher for placing inside content areas, cards, or\n * toolbars — wherever `ViewSwitcher` (header-bar sized) would be too heavy.\n *\n * Built on `ToggleGroup` internals with `flat` and `round` style variants.\n * Mirrors `AdwInlineViewSwitcher` (libadwaita 1.7 / GNOME 48).\n *\n * Compose with `InlineViewSwitcherItem`. Keyboard: ← / → cycle, Home / End jump.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.InlineViewSwitcher.html\n */\nexport const InlineViewSwitcher = ({\n value,\n onValueChange,\n variant = 'default',\n overflow = 'wrap',\n 'aria-label': ariaLabel = 'View switcher',\n children,\n className,\n ...props\n}: InlineViewSwitcherProps) => {\n const groupRef = useRef<HTMLDivElement>(null);\n const naturalWidthRef = useRef<number>(0);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [indicatorStyle, setIndicatorStyle] = useState<CSSProperties>({\n width: 0,\n transform: 'translateX(0)',\n });\n\n useEffect(() => {\n if (overflow !== 'compact' && overflow !== 'menu') {\n setIsOverflowing(false);\n return;\n }\n const el = groupRef.current;\n if (!el) {\n return;\n }\n\n const check = () => {\n setIsOverflowing((prev) => {\n if (!prev) {\n const scrollW = el.scrollWidth;\n if (scrollW > el.clientWidth) {\n naturalWidthRef.current = scrollW;\n return true;\n }\n return false;\n }\n // 30px hysteresis: stay collapsed until container is comfortably wider\n return naturalWidthRef.current > el.clientWidth + 30;\n });\n };\n\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [overflow]);\n\n const allItems = Children.toArray(children)\n .filter(isValidElement)\n .filter(\n (child) => (child.type as { displayName?: string }).displayName === 'InlineViewSwitcherItem',\n )\n .map((child) => (child as ReactElement<InlineViewSwitcherItemProps>).props);\n\n const activeItem = allItems.find((i) => i.name === value) ?? allItems[0];\n const compact = overflow === 'compact' && isOverflowing;\n const inMenuMode = overflow === 'menu' && isOverflowing;\n\n // Track active item position for the sliding indicator\n useLayoutEffect(() => {\n if (inMenuMode) {\n return;\n }\n const group = groupRef.current;\n if (!group) {\n return;\n }\n const activeEl = group.querySelector<HTMLElement>('[aria-checked=\"true\"]');\n if (!activeEl) {\n return;\n }\n\n setIndicatorStyle({\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n });\n }, [value, inMenuMode, compact]);\n\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const items = Array.from(\n groupRef.current?.querySelectorAll<HTMLButtonElement>('[role=radio]:not(:disabled)') ?? [],\n );\n const { activeElement } = document;\n const idx = activeElement instanceof HTMLButtonElement ? items.indexOf(activeElement) : -1;\n\n if (idx === -1) {\n return;\n }\n\n let next = idx;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n next = (idx + 1) % items.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n next = (idx - 1 + items.length) % items.length;\n } else if (e.key === 'Home') {\n next = 0;\n } else if (e.key === 'End') {\n next = items.length - 1;\n } else {\n return;\n }\n\n e.preventDefault();\n items[next].focus();\n items[next].click();\n }\n\n return (\n <InlineViewSwitcherContext.Provider value={{ value, onValueChange, compact }}>\n <div\n ref={groupRef}\n role={inMenuMode ? undefined : 'radiogroup'}\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n className={[\n styles.switcher,\n styles[variant],\n overflow === 'scroll' ? styles.overflowScroll : null,\n overflow === 'compact' || overflow === 'menu' ? styles.overflowDetect : null,\n compact ? styles.compact : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {!inMenuMode && <span className={styles.indicator} style={indicatorStyle} aria-hidden />}\n {inMenuMode ? (\n <>\n <button\n type=\"button\"\n className={[styles.item, styles.active, styles.menuTrigger].filter(Boolean).join(' ')}\n onClick={() => setSheetOpen(true)}\n aria-haspopup=\"dialog\"\n aria-label={`${ariaLabel}: ${activeItem?.label ?? activeItem?.name}`}\n >\n {activeItem?.icon && (\n <span className={styles.itemIcon}>\n <Icon icon={activeItem.icon} size=\"md\" aria-hidden />\n </span>\n )}\n {activeItem?.label && <span className={styles.itemLabel}>{activeItem.label}</span>}\n <span className={styles.menuChevron} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n <BottomSheet open={sheetOpen} title={ariaLabel} onClose={() => setSheetOpen(false)}>\n <div className={styles.menuList} role=\"radiogroup\" aria-label={ariaLabel}>\n {allItems.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n role=\"radio\"\n aria-checked={item.name === value}\n className={[\n styles.menuListItem,\n item.name === value ? styles.menuListItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n onValueChange(item.name);\n setSheetOpen(false);\n }}\n >\n {item.icon && (\n <span className={styles.menuListItemIcon}>\n <Icon icon={item.icon} size=\"md\" aria-hidden />\n </span>\n )}\n <span className={styles.menuListItemLabel}>{item.label ?? item.name}</span>\n {item.name === value && (\n <span className={styles.menuListItemCheck} aria-hidden=\"true\">\n ✓\n </span>\n )}\n </button>\n ))}\n </div>\n </BottomSheet>\n </>\n ) : (\n children\n )}\n </div>\n </InlineViewSwitcherContext.Provider>\n );\n};\n"],"mappings":"uLAkCA,IAAM,GAAA,EAAA,EAAA,eAAiF,IAAI,EAG3F,SAAgB,GAAwB,CACtC,IAAM,GAAA,EAAA,EAAA,YAAiB,CAAyB,EAEhD,GAAI,CAAC,EACH,MAAU,MAAM,+DAA+D,EAGjF,OAAO,CACT,CAyCA,IAAa,GAAsB,CACjC,QACA,gBACA,UAAU,UACV,WAAW,OACX,aAAc,EAAY,gBAC1B,WACA,YACA,GAAG,KAC0B,CAC7B,IAAM,GAAA,EAAA,EAAA,QAAkC,IAAI,EACtC,GAAA,EAAA,EAAA,QAAiC,CAAC,EAClC,CAAC,EAAe,IAAA,EAAA,EAAA,UAA6B,EAAK,EAClD,CAAC,EAAW,IAAA,EAAA,EAAA,UAAyB,EAAK,EAC1C,CAAC,EAAgB,IAAA,EAAA,EAAA,UAA6C,CAClE,MAAO,EACP,UAAW,eACb,CAAC,GAED,EAAA,EAAA,eAAgB,CACd,GAAI,IAAa,WAAa,IAAa,OAAQ,CACjD,EAAiB,EAAK,EACtB,MACF,CACA,IAAM,EAAK,EAAS,QACpB,GAAI,CAAC,EACH,OAkBF,IAAM,EAAK,IAAI,mBAfK,CAClB,EAAkB,GAAS,CACzB,GAAI,CAAC,EAAM,CACT,IAAM,EAAU,EAAG,YAKnB,OAJI,EAAU,EAAG,aACf,EAAgB,QAAU,EACnB,IAEF,EACT,CAEA,OAAO,EAAgB,QAAU,EAAG,YAAc,EACpD,CAAC,CACH,CAEmC,EAEnC,OADA,EAAG,QAAQ,CAAE,MACA,EAAG,WAAW,CAC7B,EAAG,CAAC,CAAQ,CAAC,EAEb,IAAM,EAAW,EAAA,SAAS,QAAQ,CAAQ,EACvC,OAAO,EAAA,cAAc,EACrB,OACE,GAAW,EAAM,KAAkC,cAAgB,wBACtE,EACC,IAAK,GAAW,EAAoD,KAAK,EAEtE,EAAa,EAAS,KAAM,GAAM,EAAE,OAAS,CAAK,GAAK,EAAS,GAChE,EAAU,IAAa,WAAa,EACpC,EAAa,IAAa,QAAU,GAG1C,EAAA,EAAA,qBAAsB,CACpB,GAAI,EACF,OAEF,IAAM,EAAQ,EAAS,QACvB,GAAI,CAAC,EACH,OAEF,IAAM,EAAW,EAAM,cAA2B,uBAAuB,EACpE,GAIL,EAAkB,CAChB,MAAO,EAAS,YAChB,UAAW,cAAc,EAAS,WAAW,IAC/C,CAAC,CACH,EAAG,CAAC,EAAO,EAAY,CAAO,CAAC,EAE/B,SAAS,EAAc,EAAkC,CACvD,IAAM,EAAQ,MAAM,KAClB,EAAS,SAAS,iBAAoC,6BAA6B,GAAK,CAAC,CAC3F,EACM,CAAE,iBAAkB,SACpB,EAAM,aAAyB,kBAAoB,EAAM,QAAQ,CAAa,EAAI,GAExF,GAAI,IAAQ,GACV,OAGF,IAAI,EAAO,EACX,GAAI,EAAE,MAAQ,cAAgB,EAAE,MAAQ,YACtC,GAAQ,EAAM,GAAK,EAAM,YACpB,GAAI,EAAE,MAAQ,aAAe,EAAE,MAAQ,UAC5C,GAAQ,EAAM,EAAI,EAAM,QAAU,EAAM,YACnC,GAAI,EAAE,MAAQ,OACnB,EAAO,OACF,GAAI,EAAE,MAAQ,MACnB,EAAO,EAAM,OAAS,OAEtB,OAGF,EAAE,eAAe,EACjB,EAAM,GAAM,MAAM,EAClB,EAAM,GAAM,MAAM,CACpB,CAEA,OACE,EAAA,EAAA,KAAC,EAA0B,SAA3B,CAAoC,MAAO,CAAE,QAAO,gBAAe,SAAQ,YACzE,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACL,KAAM,EAAa,IAAA,GAAY,aAC/B,aAAY,EACZ,UAAW,EACX,UAAW,CACT,EAAA,QAAO,SACP,EAAA,QAAO,GACP,IAAa,SAAW,EAAA,QAAO,eAAiB,KAChD,IAAa,WAAa,IAAa,OAAS,EAAA,QAAO,eAAiB,KACxE,EAAU,EAAA,QAAO,QAAU,KAC3B,CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EACX,GAAI,WAfN,CAiBG,CAAC,IAAc,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,UAAW,MAAO,EAAgB,cAAA,EAAa,CAAA,EACtF,GACC,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,EACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,SACL,UAAW,CAAC,EAAA,QAAO,KAAM,EAAA,QAAO,OAAQ,EAAA,QAAO,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACpF,YAAe,EAAa,EAAI,EAChC,gBAAc,SACd,aAAY,GAAG,EAAU,IAAI,GAAY,OAAS,GAAY,gBALhE,CAOG,GAAY,OACX,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,mBACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAW,KAAM,KAAK,KAAK,cAAA,EAAa,CAAA,CAChD,CAAA,EAEP,GAAY,QAAS,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,mBAAY,EAAW,KAAY,CAAA,GACjF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,YAAa,cAAY,gBAAO,GAElD,CAAA,CACA,KACR,EAAA,EAAA,KAAC,EAAA,YAAD,CAAa,KAAM,EAAW,MAAO,EAAW,YAAe,EAAa,EAAK,YAC/E,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,SAAU,KAAK,aAAa,aAAY,WAC5D,EAAS,IAAK,IACb,EAAA,EAAA,MAAC,SAAD,CAEE,KAAK,SACL,KAAK,QACL,eAAc,EAAK,OAAS,EAC5B,UAAW,CACT,EAAA,QAAO,aACP,EAAK,OAAS,EAAQ,EAAA,QAAO,mBAAqB,IACpD,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EACX,YAAe,CACb,EAAc,EAAK,IAAI,EACvB,EAAa,EAAK,CACpB,WAdF,CAgBG,EAAK,OACJ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,2BACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAK,KAAM,KAAK,KAAK,cAAA,EAAa,CAAA,CAC1C,CAAA,GAER,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,2BAAoB,EAAK,OAAS,EAAK,IAAW,CAAA,EACzE,EAAK,OAAS,IACb,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAmB,cAAY,gBAAO,GAExD,CAAA,CAEF,GA1BD,EAAK,IA0BJ,CACT,CACE,CAAA,CACM,CAAA,CACb,CAAA,CAAA,EAEF,CAEC,GAC6B,CAAA,CAExC"}
@@ -49,7 +49,7 @@ var g = ({ value: i, onValueChange: o, variant: h = "default", overflow: g = "wr
49
49
  j
50
50
  ]);
51
51
  function N(e) {
52
- let t = Array.from(x.current?.querySelectorAll("[role=radio]:not(:disabled)") ?? []), n = document.activeElement, r = n instanceof HTMLButtonElement ? t.indexOf(n) : -1;
52
+ let t = Array.from(x.current?.querySelectorAll("[role=radio]:not(:disabled)") ?? []), { activeElement: n } = document, r = n instanceof HTMLButtonElement ? t.indexOf(n) : -1;
53
53
  if (r === -1) return;
54
54
  let i = r;
55
55
  if (e.key === "ArrowRight" || e.key === "ArrowDown") i = (r + 1) % t.length;
@@ -1 +1 @@
1
- {"version":3,"file":"InlineViewSwitcher.js","names":[],"sources":["../../../src/components/InlineViewSwitcher/InlineViewSwitcher.tsx"],"sourcesContent":["import {\n Children,\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { BottomSheet } from '../BottomSheet';\nimport { Icon } from '../Icon';\n\nimport styles from './InlineViewSwitcher.module.css';\nimport type { InlineViewSwitcherItemProps } from './InlineViewSwitcherItem';\n\nexport type InlineViewSwitcherVariant = 'default' | 'flat' | 'round' | 'pill';\n\nexport type InlineViewSwitcherOverflow = 'wrap' | 'scroll' | 'compact' | 'menu';\n\n// ─── Internal context ──────────────────────────────────────────────────────────\n\ninterface InlineViewSwitcherContextValue {\n value: string;\n onValueChange: (value: string) => void;\n compact: boolean;\n}\n\nconst InlineViewSwitcherContext = createContext<InlineViewSwitcherContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useInlineViewSwitcher() {\n const ctx = useContext(InlineViewSwitcherContext);\n\n if (!ctx) {\n throw new Error('InlineViewSwitcherItem must be used inside InlineViewSwitcher');\n }\n\n return ctx;\n}\n\n// ─── InlineViewSwitcher ────────────────────────────────────────────────────────\n\nexport interface InlineViewSwitcherProps extends HTMLAttributes<HTMLDivElement> {\n /** Currently active view name. */\n value: string;\n /** Called with the new value when a view is selected. */\n onValueChange: (value: string) => void;\n /**\n * Visual style of the switcher.\n * - `default` — card background with border and shadow (same as `ToggleGroup`).\n * - `flat` — no background or border; active indicator only.\n * - `round` — pill-shaped container and items.\n * - `pill` — segmented-control style; active item appears lifted, no accent color.\n */\n variant?: InlineViewSwitcherVariant;\n /**\n * Overflow strategy when the container is too narrow for all items.\n * - `wrap` — default; items overflow with no special handling.\n * - `scroll` — horizontal scroll with hidden scrollbar.\n * - `compact` — collapses item labels to icons-only when overflowing (requires icons on all items).\n * - `menu` — shows the active item and a chevron trigger; all items open in a BottomSheet.\n */\n overflow?: InlineViewSwitcherOverflow;\n /** Accessible label for the group. */\n 'aria-label'?: string;\n children?: ReactNode;\n}\n\n/**\n * Compact inline view switcher for placing inside content areas, cards, or\n * toolbars — wherever `ViewSwitcher` (header-bar sized) would be too heavy.\n *\n * Built on `ToggleGroup` internals with `flat` and `round` style variants.\n * Mirrors `AdwInlineViewSwitcher` (libadwaita 1.7 / GNOME 48).\n *\n * Compose with `InlineViewSwitcherItem`. Keyboard: ← / → cycle, Home / End jump.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.InlineViewSwitcher.html\n */\nexport const InlineViewSwitcher = ({\n value,\n onValueChange,\n variant = 'default',\n overflow = 'wrap',\n 'aria-label': ariaLabel = 'View switcher',\n children,\n className,\n ...props\n}: InlineViewSwitcherProps) => {\n const groupRef = useRef<HTMLDivElement>(null);\n const naturalWidthRef = useRef<number>(0);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [indicatorStyle, setIndicatorStyle] = useState<CSSProperties>({\n width: 0,\n transform: 'translateX(0)',\n });\n\n useEffect(() => {\n if (overflow !== 'compact' && overflow !== 'menu') {\n setIsOverflowing(false);\n return;\n }\n const el = groupRef.current;\n if (!el) {\n return;\n }\n\n const check = () => {\n setIsOverflowing((prev) => {\n if (!prev) {\n const scrollW = el.scrollWidth;\n if (scrollW > el.clientWidth) {\n naturalWidthRef.current = scrollW;\n return true;\n }\n return false;\n }\n // 30px hysteresis: stay collapsed until container is comfortably wider\n return naturalWidthRef.current > el.clientWidth + 30;\n });\n };\n\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [overflow]);\n\n const allItems = Children.toArray(children)\n .filter(isValidElement)\n .filter(\n (child) => (child.type as { displayName?: string }).displayName === 'InlineViewSwitcherItem',\n )\n .map((child) => (child as ReactElement<InlineViewSwitcherItemProps>).props);\n\n const activeItem = allItems.find((i) => i.name === value) ?? allItems[0];\n const compact = overflow === 'compact' && isOverflowing;\n const inMenuMode = overflow === 'menu' && isOverflowing;\n\n // Track active item position for the sliding indicator\n useLayoutEffect(() => {\n if (inMenuMode) {\n return;\n }\n const group = groupRef.current;\n if (!group) {\n return;\n }\n const activeEl = group.querySelector<HTMLElement>('[aria-checked=\"true\"]');\n if (!activeEl) {\n return;\n }\n\n setIndicatorStyle({\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n });\n }, [value, inMenuMode, compact]);\n\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const items = Array.from(\n groupRef.current?.querySelectorAll<HTMLButtonElement>('[role=radio]:not(:disabled)') ?? [],\n );\n const activeElement = document.activeElement;\n const idx = activeElement instanceof HTMLButtonElement ? items.indexOf(activeElement) : -1;\n\n if (idx === -1) {\n return;\n }\n\n let next = idx;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n next = (idx + 1) % items.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n next = (idx - 1 + items.length) % items.length;\n } else if (e.key === 'Home') {\n next = 0;\n } else if (e.key === 'End') {\n next = items.length - 1;\n } else {\n return;\n }\n\n e.preventDefault();\n items[next].focus();\n items[next].click();\n }\n\n return (\n <InlineViewSwitcherContext.Provider value={{ value, onValueChange, compact }}>\n <div\n ref={groupRef}\n role={inMenuMode ? undefined : 'radiogroup'}\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n className={[\n styles.switcher,\n styles[variant],\n overflow === 'scroll' ? styles.overflowScroll : null,\n overflow === 'compact' || overflow === 'menu' ? styles.overflowDetect : null,\n compact ? styles.compact : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {!inMenuMode && <span className={styles.indicator} style={indicatorStyle} aria-hidden />}\n {inMenuMode ? (\n <>\n <button\n type=\"button\"\n className={[styles.item, styles.active, styles.menuTrigger].filter(Boolean).join(' ')}\n onClick={() => setSheetOpen(true)}\n aria-haspopup=\"dialog\"\n aria-label={`${ariaLabel}: ${activeItem?.label ?? activeItem?.name}`}\n >\n {activeItem?.icon && (\n <span className={styles.itemIcon}>\n <Icon icon={activeItem.icon} size=\"md\" aria-hidden />\n </span>\n )}\n {activeItem?.label && <span className={styles.itemLabel}>{activeItem.label}</span>}\n <span className={styles.menuChevron} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n <BottomSheet open={sheetOpen} title={ariaLabel} onClose={() => setSheetOpen(false)}>\n <div className={styles.menuList} role=\"radiogroup\" aria-label={ariaLabel}>\n {allItems.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n role=\"radio\"\n aria-checked={item.name === value}\n className={[\n styles.menuListItem,\n item.name === value ? styles.menuListItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n onValueChange(item.name);\n setSheetOpen(false);\n }}\n >\n {item.icon && (\n <span className={styles.menuListItemIcon}>\n <Icon icon={item.icon} size=\"md\" aria-hidden />\n </span>\n )}\n <span className={styles.menuListItemLabel}>{item.label ?? item.name}</span>\n {item.name === value && (\n <span className={styles.menuListItemCheck} aria-hidden=\"true\">\n ✓\n </span>\n )}\n </button>\n ))}\n </div>\n </BottomSheet>\n </>\n ) : (\n children\n )}\n </div>\n </InlineViewSwitcherContext.Provider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"InlineViewSwitcher.js","names":[],"sources":["../../../src/components/InlineViewSwitcher/InlineViewSwitcher.tsx"],"sourcesContent":["import {\n Children,\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n useContext,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { BottomSheet } from '../BottomSheet';\nimport { Icon } from '../Icon';\n\nimport styles from './InlineViewSwitcher.module.css';\nimport type { InlineViewSwitcherItemProps } from './InlineViewSwitcherItem';\n\nexport type InlineViewSwitcherVariant = 'default' | 'flat' | 'round' | 'pill';\n\nexport type InlineViewSwitcherOverflow = 'wrap' | 'scroll' | 'compact' | 'menu';\n\n// ─── Internal context ──────────────────────────────────────────────────────────\n\ninterface InlineViewSwitcherContextValue {\n value: string;\n onValueChange: (value: string) => void;\n compact: boolean;\n}\n\nconst InlineViewSwitcherContext = createContext<InlineViewSwitcherContextValue | null>(null);\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useInlineViewSwitcher() {\n const ctx = useContext(InlineViewSwitcherContext);\n\n if (!ctx) {\n throw new Error('InlineViewSwitcherItem must be used inside InlineViewSwitcher');\n }\n\n return ctx;\n}\n\n// ─── InlineViewSwitcher ────────────────────────────────────────────────────────\n\nexport interface InlineViewSwitcherProps extends HTMLAttributes<HTMLDivElement> {\n /** Currently active view name. */\n value: string;\n /** Called with the new value when a view is selected. */\n onValueChange: (value: string) => void;\n /**\n * Visual style of the switcher.\n * - `default` — card background with border and shadow (same as `ToggleGroup`).\n * - `flat` — no background or border; active indicator only.\n * - `round` — pill-shaped container and items.\n * - `pill` — segmented-control style; active item appears lifted, no accent color.\n */\n variant?: InlineViewSwitcherVariant;\n /**\n * Overflow strategy when the container is too narrow for all items.\n * - `wrap` — default; items overflow with no special handling.\n * - `scroll` — horizontal scroll with hidden scrollbar.\n * - `compact` — collapses item labels to icons-only when overflowing (requires icons on all items).\n * - `menu` — shows the active item and a chevron trigger; all items open in a BottomSheet.\n */\n overflow?: InlineViewSwitcherOverflow;\n /** Accessible label for the group. */\n 'aria-label'?: string;\n children?: ReactNode;\n}\n\n/**\n * Compact inline view switcher for placing inside content areas, cards, or\n * toolbars — wherever `ViewSwitcher` (header-bar sized) would be too heavy.\n *\n * Built on `ToggleGroup` internals with `flat` and `round` style variants.\n * Mirrors `AdwInlineViewSwitcher` (libadwaita 1.7 / GNOME 48).\n *\n * Compose with `InlineViewSwitcherItem`. Keyboard: ← / → cycle, Home / End jump.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.InlineViewSwitcher.html\n */\nexport const InlineViewSwitcher = ({\n value,\n onValueChange,\n variant = 'default',\n overflow = 'wrap',\n 'aria-label': ariaLabel = 'View switcher',\n children,\n className,\n ...props\n}: InlineViewSwitcherProps) => {\n const groupRef = useRef<HTMLDivElement>(null);\n const naturalWidthRef = useRef<number>(0);\n const [isOverflowing, setIsOverflowing] = useState(false);\n const [sheetOpen, setSheetOpen] = useState(false);\n const [indicatorStyle, setIndicatorStyle] = useState<CSSProperties>({\n width: 0,\n transform: 'translateX(0)',\n });\n\n useEffect(() => {\n if (overflow !== 'compact' && overflow !== 'menu') {\n setIsOverflowing(false);\n return;\n }\n const el = groupRef.current;\n if (!el) {\n return;\n }\n\n const check = () => {\n setIsOverflowing((prev) => {\n if (!prev) {\n const scrollW = el.scrollWidth;\n if (scrollW > el.clientWidth) {\n naturalWidthRef.current = scrollW;\n return true;\n }\n return false;\n }\n // 30px hysteresis: stay collapsed until container is comfortably wider\n return naturalWidthRef.current > el.clientWidth + 30;\n });\n };\n\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [overflow]);\n\n const allItems = Children.toArray(children)\n .filter(isValidElement)\n .filter(\n (child) => (child.type as { displayName?: string }).displayName === 'InlineViewSwitcherItem',\n )\n .map((child) => (child as ReactElement<InlineViewSwitcherItemProps>).props);\n\n const activeItem = allItems.find((i) => i.name === value) ?? allItems[0];\n const compact = overflow === 'compact' && isOverflowing;\n const inMenuMode = overflow === 'menu' && isOverflowing;\n\n // Track active item position for the sliding indicator\n useLayoutEffect(() => {\n if (inMenuMode) {\n return;\n }\n const group = groupRef.current;\n if (!group) {\n return;\n }\n const activeEl = group.querySelector<HTMLElement>('[aria-checked=\"true\"]');\n if (!activeEl) {\n return;\n }\n\n setIndicatorStyle({\n width: activeEl.offsetWidth,\n transform: `translateX(${activeEl.offsetLeft}px)`,\n });\n }, [value, inMenuMode, compact]);\n\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const items = Array.from(\n groupRef.current?.querySelectorAll<HTMLButtonElement>('[role=radio]:not(:disabled)') ?? [],\n );\n const { activeElement } = document;\n const idx = activeElement instanceof HTMLButtonElement ? items.indexOf(activeElement) : -1;\n\n if (idx === -1) {\n return;\n }\n\n let next = idx;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n next = (idx + 1) % items.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n next = (idx - 1 + items.length) % items.length;\n } else if (e.key === 'Home') {\n next = 0;\n } else if (e.key === 'End') {\n next = items.length - 1;\n } else {\n return;\n }\n\n e.preventDefault();\n items[next].focus();\n items[next].click();\n }\n\n return (\n <InlineViewSwitcherContext.Provider value={{ value, onValueChange, compact }}>\n <div\n ref={groupRef}\n role={inMenuMode ? undefined : 'radiogroup'}\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n className={[\n styles.switcher,\n styles[variant],\n overflow === 'scroll' ? styles.overflowScroll : null,\n overflow === 'compact' || overflow === 'menu' ? styles.overflowDetect : null,\n compact ? styles.compact : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {!inMenuMode && <span className={styles.indicator} style={indicatorStyle} aria-hidden />}\n {inMenuMode ? (\n <>\n <button\n type=\"button\"\n className={[styles.item, styles.active, styles.menuTrigger].filter(Boolean).join(' ')}\n onClick={() => setSheetOpen(true)}\n aria-haspopup=\"dialog\"\n aria-label={`${ariaLabel}: ${activeItem?.label ?? activeItem?.name}`}\n >\n {activeItem?.icon && (\n <span className={styles.itemIcon}>\n <Icon icon={activeItem.icon} size=\"md\" aria-hidden />\n </span>\n )}\n {activeItem?.label && <span className={styles.itemLabel}>{activeItem.label}</span>}\n <span className={styles.menuChevron} aria-hidden=\"true\">\n ▾\n </span>\n </button>\n <BottomSheet open={sheetOpen} title={ariaLabel} onClose={() => setSheetOpen(false)}>\n <div className={styles.menuList} role=\"radiogroup\" aria-label={ariaLabel}>\n {allItems.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n role=\"radio\"\n aria-checked={item.name === value}\n className={[\n styles.menuListItem,\n item.name === value ? styles.menuListItemActive : null,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => {\n onValueChange(item.name);\n setSheetOpen(false);\n }}\n >\n {item.icon && (\n <span className={styles.menuListItemIcon}>\n <Icon icon={item.icon} size=\"md\" aria-hidden />\n </span>\n )}\n <span className={styles.menuListItemLabel}>{item.label ?? item.name}</span>\n {item.name === value && (\n <span className={styles.menuListItemCheck} aria-hidden=\"true\">\n ✓\n </span>\n )}\n </button>\n ))}\n </div>\n </BottomSheet>\n </>\n ) : (\n children\n )}\n </div>\n </InlineViewSwitcherContext.Provider>\n );\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e={switcher:`_switcher_l6v4v_3`,indicator:`_indicator_l6v4v_11`,item:`_item_l6v4v_26`,iconOnly:`_iconOnly_l6v4v_57`,itemIcon:`_itemIcon_l6v4v_62`,itemLabel:`_itemLabel_l6v4v_68`,default:`_default_l6v4v_74`,active:`_active_l6v4v_87`,flat:`_flat_l6v4v_148`,round:`_round_l6v4v_202`,pill:`_pill_l6v4v_271`,overflowDetect:`_overflowDetect_l6v4v_342`,overflowScroll:`_overflowScroll_l6v4v_350`,compact:`_compact_l6v4v_370`,menuTrigger:`_menuTrigger_l6v4v_376`,menuChevron:`_menuChevron_l6v4v_380`,menuList:`_menuList_l6v4v_388`,menuListItem:`_menuListItem_l6v4v_395`,menuListItemActive:`_menuListItemActive_l6v4v_434`,menuListItemIcon:`_menuListItemIcon_l6v4v_439`,menuListItemLabel:`_menuListItemLabel_l6v4v_445`,menuListItemCheck:`_menuListItemCheck_l6v4v_449`};exports.default=e;
1
+ var e={switcher:`_switcher_1pziq_3`,indicator:`_indicator_1pziq_11`,item:`_item_1pziq_26`,iconOnly:`_iconOnly_1pziq_51`,itemIcon:`_itemIcon_1pziq_56`,itemLabel:`_itemLabel_1pziq_62`,default:`_default_1pziq_68`,active:`_active_1pziq_81`,flat:`_flat_1pziq_142`,round:`_round_1pziq_196`,pill:`_pill_1pziq_265`,overflowDetect:`_overflowDetect_1pziq_336`,overflowScroll:`_overflowScroll_1pziq_344`,compact:`_compact_1pziq_363`,menuTrigger:`_menuTrigger_1pziq_369`,menuChevron:`_menuChevron_1pziq_373`,menuList:`_menuList_1pziq_381`,menuListItem:`_menuListItem_1pziq_388`,menuListItemActive:`_menuListItemActive_1pziq_423`,menuListItemIcon:`_menuListItemIcon_1pziq_428`,menuListItemLabel:`_menuListItemLabel_1pziq_434`,menuListItemCheck:`_menuListItemCheck_1pziq_438`};exports.default=e;
2
2
  //# sourceMappingURL=InlineViewSwitcher.module.css.cjs.map