@gnome-ui/react 1.45.1 → 1.46.0

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 (576) hide show
  1. package/dist/components/AboutDialog/AboutDialog.cjs +1 -1
  2. package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -1
  3. package/dist/components/AboutDialog/AboutDialog.d.ts +1 -1
  4. package/dist/components/AboutDialog/AboutDialog.js +106 -108
  5. package/dist/components/AboutDialog/AboutDialog.js.map +1 -1
  6. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +1 -1
  7. package/dist/components/AboutDialog/AboutDialog.module.css.js +28 -29
  8. package/dist/components/AboutDialog.cjs +1 -1
  9. package/dist/components/ActionRow/ActionRow.cjs +1 -1
  10. package/dist/components/ActionRow/ActionRow.cjs.map +1 -1
  11. package/dist/components/ActionRow/ActionRow.d.ts +1 -1
  12. package/dist/components/ActionRow/ActionRow.js +2 -2
  13. package/dist/components/ActionRow/ActionRow.js.map +1 -1
  14. package/dist/components/ActionRow.cjs +1 -1
  15. package/dist/components/Avatar/Avatar.cjs +1 -1
  16. package/dist/components/Avatar/Avatar.cjs.map +1 -1
  17. package/dist/components/Avatar/Avatar.d.ts +1 -1
  18. package/dist/components/Avatar/Avatar.js +2 -2
  19. package/dist/components/Avatar/Avatar.js.map +1 -1
  20. package/dist/components/Avatar.cjs +1 -1
  21. package/dist/components/AvatarRotator/AvatarRotator.cjs +1 -1
  22. package/dist/components/AvatarRotator/AvatarRotator.cjs.map +1 -1
  23. package/dist/components/AvatarRotator/AvatarRotator.d.ts +1 -1
  24. package/dist/components/AvatarRotator/AvatarRotator.js +2 -2
  25. package/dist/components/AvatarRotator/AvatarRotator.js.map +1 -1
  26. package/dist/components/AvatarRotator.cjs +1 -1
  27. package/dist/components/Badge/Badge.cjs +1 -1
  28. package/dist/components/Badge/Badge.cjs.map +1 -1
  29. package/dist/components/Badge/Badge.d.ts +1 -1
  30. package/dist/components/Badge/Badge.js +2 -2
  31. package/dist/components/Badge/Badge.js.map +1 -1
  32. package/dist/components/Badge.cjs +1 -1
  33. package/dist/components/Banner/Banner.cjs +1 -1
  34. package/dist/components/Banner/Banner.cjs.map +1 -1
  35. package/dist/components/Banner/Banner.d.ts +1 -1
  36. package/dist/components/Banner/Banner.js +34 -36
  37. package/dist/components/Banner/Banner.js.map +1 -1
  38. package/dist/components/Banner/Banner.module.css.cjs +1 -1
  39. package/dist/components/Banner/Banner.module.css.js +11 -12
  40. package/dist/components/Banner.cjs +1 -1
  41. package/dist/components/Bin/Bin.cjs +1 -1
  42. package/dist/components/Bin/Bin.cjs.map +1 -1
  43. package/dist/components/Bin/Bin.d.ts +1 -1
  44. package/dist/components/Bin/Bin.js +4 -6
  45. package/dist/components/Bin/Bin.js.map +1 -1
  46. package/dist/components/Bin.cjs +1 -1
  47. package/dist/components/Blockquote/Blockquote.cjs +1 -1
  48. package/dist/components/Blockquote/Blockquote.cjs.map +1 -1
  49. package/dist/components/Blockquote/Blockquote.d.ts +1 -1
  50. package/dist/components/Blockquote/Blockquote.js +24 -26
  51. package/dist/components/Blockquote/Blockquote.js.map +1 -1
  52. package/dist/components/Blockquote.cjs +1 -1
  53. package/dist/components/BottomSheet/BottomSheet.cjs +1 -1
  54. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
  55. package/dist/components/BottomSheet/BottomSheet.d.ts +1 -1
  56. package/dist/components/BottomSheet/BottomSheet.js +37 -38
  57. package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
  58. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +1 -1
  59. package/dist/components/BottomSheet/BottomSheet.module.css.js +8 -9
  60. package/dist/components/BottomSheet.cjs +1 -1
  61. package/dist/components/Box/Box.cjs +1 -1
  62. package/dist/components/Box/Box.cjs.map +1 -1
  63. package/dist/components/Box/Box.d.ts +1 -1
  64. package/dist/components/Box/Box.js +2 -2
  65. package/dist/components/Box/Box.js.map +1 -1
  66. package/dist/components/Box.cjs +1 -1
  67. package/dist/components/BoxedList/BoxedList.cjs +1 -1
  68. package/dist/components/BoxedList/BoxedList.cjs.map +1 -1
  69. package/dist/components/BoxedList/BoxedList.d.ts +1 -1
  70. package/dist/components/BoxedList/BoxedList.js +2 -2
  71. package/dist/components/BoxedList/BoxedList.js.map +1 -1
  72. package/dist/components/BoxedList.cjs +1 -1
  73. package/dist/components/BreakpointBin/BreakpointBin.cjs +1 -1
  74. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -1
  75. package/dist/components/BreakpointBin/BreakpointBin.d.ts +1 -1
  76. package/dist/components/BreakpointBin/BreakpointBin.js +2 -2
  77. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -1
  78. package/dist/components/BreakpointBin.cjs +1 -1
  79. package/dist/components/Button/Button.cjs +1 -1
  80. package/dist/components/Button/Button.cjs.map +1 -1
  81. package/dist/components/Button/Button.js.map +1 -1
  82. package/dist/components/Button.cjs +1 -1
  83. package/dist/components/ButtonContent/ButtonContent.cjs +1 -1
  84. package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -1
  85. package/dist/components/ButtonContent/ButtonContent.d.ts +1 -1
  86. package/dist/components/ButtonContent/ButtonContent.js +24 -26
  87. package/dist/components/ButtonContent/ButtonContent.js.map +1 -1
  88. package/dist/components/ButtonContent.cjs +1 -1
  89. package/dist/components/ButtonRow/ButtonRow.cjs +1 -1
  90. package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -1
  91. package/dist/components/ButtonRow/ButtonRow.d.ts +1 -1
  92. package/dist/components/ButtonRow/ButtonRow.js +22 -24
  93. package/dist/components/ButtonRow/ButtonRow.js.map +1 -1
  94. package/dist/components/ButtonRow.cjs +1 -1
  95. package/dist/components/Card/Card.cjs +1 -1
  96. package/dist/components/Card/Card.cjs.map +1 -1
  97. package/dist/components/Card/Card.d.ts +1 -1
  98. package/dist/components/Card/Card.js +10 -12
  99. package/dist/components/Card/Card.js.map +1 -1
  100. package/dist/components/Card/Card.module.css.cjs +1 -1
  101. package/dist/components/Card/Card.module.css.js +4 -5
  102. package/dist/components/Card.cjs +1 -1
  103. package/dist/components/Carousel/Carousel.cjs +1 -1
  104. package/dist/components/Carousel/Carousel.cjs.map +1 -1
  105. package/dist/components/Carousel/Carousel.d.ts +3 -3
  106. package/dist/components/Carousel/Carousel.js +28 -34
  107. package/dist/components/Carousel/Carousel.js.map +1 -1
  108. package/dist/components/Carousel.cjs +1 -1
  109. package/dist/components/CheckRow/CheckRow.cjs +1 -1
  110. package/dist/components/CheckRow/CheckRow.cjs.map +1 -1
  111. package/dist/components/CheckRow/CheckRow.d.ts +1 -1
  112. package/dist/components/CheckRow/CheckRow.js +7 -7
  113. package/dist/components/CheckRow/CheckRow.js.map +1 -1
  114. package/dist/components/CheckRow.cjs +1 -1
  115. package/dist/components/Checkbox/Checkbox.cjs +1 -1
  116. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  117. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  118. package/dist/components/Checkbox/Checkbox.js +2 -2
  119. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  120. package/dist/components/Checkbox.cjs +1 -1
  121. package/dist/components/Chip/Chip.cjs +1 -1
  122. package/dist/components/Chip/Chip.cjs.map +1 -1
  123. package/dist/components/Chip/Chip.d.ts +1 -1
  124. package/dist/components/Chip/Chip.js +2 -2
  125. package/dist/components/Chip/Chip.js.map +1 -1
  126. package/dist/components/Chip.cjs +1 -1
  127. package/dist/components/Clamp/Clamp.cjs +1 -1
  128. package/dist/components/Clamp/Clamp.cjs.map +1 -1
  129. package/dist/components/Clamp/Clamp.d.ts +1 -1
  130. package/dist/components/Clamp/Clamp.js +9 -11
  131. package/dist/components/Clamp/Clamp.js.map +1 -1
  132. package/dist/components/Clamp.cjs +1 -1
  133. package/dist/components/ColorPicker/ColorPicker.cjs +1 -1
  134. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -1
  135. package/dist/components/ColorPicker/ColorPicker.d.ts +2 -2
  136. package/dist/components/ColorPicker/ColorPicker.js +33 -37
  137. package/dist/components/ColorPicker/ColorPicker.js.map +1 -1
  138. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +1 -1
  139. package/dist/components/ColorPicker/ColorPicker.module.css.js +9 -10
  140. package/dist/components/ColorPicker.cjs +1 -1
  141. package/dist/components/ColumnView/ColumnView.cjs +1 -1
  142. package/dist/components/ColumnView/ColumnView.cjs.map +1 -1
  143. package/dist/components/ColumnView/ColumnView.d.ts +1 -1
  144. package/dist/components/ColumnView/ColumnView.js +24 -28
  145. package/dist/components/ColumnView/ColumnView.js.map +1 -1
  146. package/dist/components/ColumnView.cjs +1 -1
  147. package/dist/components/ComboRow/ComboRow.cjs +1 -1
  148. package/dist/components/ComboRow/ComboRow.cjs.map +1 -1
  149. package/dist/components/ComboRow/ComboRow.d.ts +1 -1
  150. package/dist/components/ComboRow/ComboRow.js +2 -2
  151. package/dist/components/ComboRow/ComboRow.js.map +1 -1
  152. package/dist/components/ComboRow/ComboRow.module.css.cjs +1 -1
  153. package/dist/components/ComboRow/ComboRow.module.css.js +24 -25
  154. package/dist/components/ComboRow.cjs +1 -1
  155. package/dist/components/ContributionGraph/ContributionGraph.cjs +1 -1
  156. package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -1
  157. package/dist/components/ContributionGraph/ContributionGraph.d.ts +1 -1
  158. package/dist/components/ContributionGraph/ContributionGraph.js +2 -2
  159. package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -1
  160. package/dist/components/ContributionGraph.cjs +1 -1
  161. package/dist/components/CountDownTimer/CountDownTimer.cjs +1 -1
  162. package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -1
  163. package/dist/components/CountDownTimer/CountDownTimer.d.ts +1 -1
  164. package/dist/components/CountDownTimer/CountDownTimer.js +2 -2
  165. package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -1
  166. package/dist/components/CountDownTimer.cjs +1 -1
  167. package/dist/components/Dialog/Dialog.cjs +1 -1
  168. package/dist/components/Dialog/Dialog.cjs.map +1 -1
  169. package/dist/components/Dialog/Dialog.d.ts +1 -1
  170. package/dist/components/Dialog/Dialog.js +51 -52
  171. package/dist/components/Dialog/Dialog.js.map +1 -1
  172. package/dist/components/Dialog/Dialog.module.css.cjs +1 -1
  173. package/dist/components/Dialog/Dialog.module.css.js +8 -9
  174. package/dist/components/Dialog/dialogUtils.cjs +1 -1
  175. package/dist/components/Dialog/dialogUtils.cjs.map +1 -1
  176. package/dist/components/Dialog/dialogUtils.d.ts +6 -0
  177. package/dist/components/Dialog/dialogUtils.js +11 -2
  178. package/dist/components/Dialog/dialogUtils.js.map +1 -1
  179. package/dist/components/Dialog.cjs +1 -1
  180. package/dist/components/Drawer/Drawer.cjs +1 -1
  181. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  182. package/dist/components/Drawer/Drawer.d.ts +1 -1
  183. package/dist/components/Drawer/Drawer.js +2 -2
  184. package/dist/components/Drawer/Drawer.js.map +1 -1
  185. package/dist/components/Drawer/Drawer.module.css.cjs +1 -1
  186. package/dist/components/Drawer/Drawer.module.css.js +11 -12
  187. package/dist/components/Drawer.cjs +1 -1
  188. package/dist/components/Dropdown/Dropdown.cjs +1 -1
  189. package/dist/components/Dropdown/Dropdown.cjs.map +1 -1
  190. package/dist/components/Dropdown/Dropdown.d.ts +1 -1
  191. package/dist/components/Dropdown/Dropdown.js +89 -85
  192. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  193. package/dist/components/Dropdown/Dropdown.module.css.cjs +1 -1
  194. package/dist/components/Dropdown/Dropdown.module.css.js +20 -21
  195. package/dist/components/Dropdown.cjs +1 -1
  196. package/dist/components/EntryRow/EntryRow.cjs +1 -1
  197. package/dist/components/EntryRow/EntryRow.cjs.map +1 -1
  198. package/dist/components/EntryRow/EntryRow.d.ts +1 -1
  199. package/dist/components/EntryRow/EntryRow.js +2 -2
  200. package/dist/components/EntryRow/EntryRow.js.map +1 -1
  201. package/dist/components/EntryRow.cjs +1 -1
  202. package/dist/components/ExpanderRow/ExpanderRow.cjs +1 -1
  203. package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -1
  204. package/dist/components/ExpanderRow/ExpanderRow.d.ts +1 -1
  205. package/dist/components/ExpanderRow/ExpanderRow.js +2 -2
  206. package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -1
  207. package/dist/components/ExpanderRow.cjs +1 -1
  208. package/dist/components/Footer/Footer.cjs +1 -1
  209. package/dist/components/Footer/Footer.cjs.map +1 -1
  210. package/dist/components/Footer/Footer.d.ts +1 -1
  211. package/dist/components/Footer/Footer.js +22 -24
  212. package/dist/components/Footer/Footer.js.map +1 -1
  213. package/dist/components/Footer.cjs +1 -1
  214. package/dist/components/Frame/Frame.cjs +1 -1
  215. package/dist/components/Frame/Frame.cjs.map +1 -1
  216. package/dist/components/Frame/Frame.d.ts +1 -1
  217. package/dist/components/Frame/Frame.js +5 -7
  218. package/dist/components/Frame/Frame.js.map +1 -1
  219. package/dist/components/Frame.cjs +1 -1
  220. package/dist/components/GnomeProvider/GnomeContext.cjs +1 -1
  221. package/dist/components/GnomeProvider/GnomeContext.cjs.map +1 -1
  222. package/dist/components/GnomeProvider/GnomeContext.js.map +1 -1
  223. package/dist/components/GnomeProvider/GnomeProvider.cjs +1 -1
  224. package/dist/components/GnomeProvider/GnomeProvider.cjs.map +1 -1
  225. package/dist/components/GnomeProvider/GnomeProvider.d.ts +1 -1
  226. package/dist/components/GnomeProvider/GnomeProvider.js +2 -2
  227. package/dist/components/GnomeProvider/GnomeProvider.js.map +1 -1
  228. package/dist/components/HeaderBar/HeaderBar.cjs +1 -1
  229. package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -1
  230. package/dist/components/HeaderBar/HeaderBar.d.ts +1 -1
  231. package/dist/components/HeaderBar/HeaderBar.js +26 -28
  232. package/dist/components/HeaderBar/HeaderBar.js.map +1 -1
  233. package/dist/components/HeaderBar.cjs +1 -1
  234. package/dist/components/Icon/Icon.cjs +1 -1
  235. package/dist/components/Icon/Icon.cjs.map +1 -1
  236. package/dist/components/Icon/Icon.d.ts +1 -1
  237. package/dist/components/Icon/Icon.js +2 -2
  238. package/dist/components/Icon/Icon.js.map +1 -1
  239. package/dist/components/Icon.cjs +1 -1
  240. package/dist/components/IconButton/IconButton.cjs +1 -1
  241. package/dist/components/IconButton/IconButton.cjs.map +1 -1
  242. package/dist/components/IconButton/IconButton.js +4 -4
  243. package/dist/components/IconButton/IconButton.js.map +1 -1
  244. package/dist/components/IconButton.cjs +1 -1
  245. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +1 -1
  246. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -1
  247. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +1 -1
  248. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +2 -2
  249. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -1
  250. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs +1 -1
  251. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -1
  252. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +1 -1
  253. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js +2 -2
  254. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -1
  255. package/dist/components/InlineViewSwitcher.cjs +1 -1
  256. package/dist/components/Link/Link.cjs +1 -1
  257. package/dist/components/Link/Link.cjs.map +1 -1
  258. package/dist/components/Link/Link.d.ts +1 -1
  259. package/dist/components/Link/Link.js +2 -2
  260. package/dist/components/Link/Link.js.map +1 -1
  261. package/dist/components/Link.cjs +1 -1
  262. package/dist/components/LinkedGroup/LinkedGroup.cjs +1 -1
  263. package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -1
  264. package/dist/components/LinkedGroup/LinkedGroup.d.ts +1 -1
  265. package/dist/components/LinkedGroup/LinkedGroup.js +9 -11
  266. package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -1
  267. package/dist/components/LinkedGroup.cjs +1 -1
  268. package/dist/components/NavigationSplitView/NavigationSplitView.cjs +1 -1
  269. package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -1
  270. package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +1 -1
  271. package/dist/components/NavigationSplitView/NavigationSplitView.js +2 -2
  272. package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -1
  273. package/dist/components/NavigationSplitView.cjs +1 -1
  274. package/dist/components/NavigationView/NavigationView.cjs +1 -1
  275. package/dist/components/NavigationView/NavigationView.cjs.map +1 -1
  276. package/dist/components/NavigationView/NavigationView.d.ts +2 -2
  277. package/dist/components/NavigationView/NavigationView.js +3 -4
  278. package/dist/components/NavigationView/NavigationView.js.map +1 -1
  279. package/dist/components/NavigationView/NavigationView.module.css.cjs +1 -1
  280. package/dist/components/NavigationView/NavigationView.module.css.js +9 -10
  281. package/dist/components/NavigationView.cjs +1 -1
  282. package/dist/components/OverlaySplitView/OverlaySplitView.cjs +1 -1
  283. package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -1
  284. package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +1 -1
  285. package/dist/components/OverlaySplitView/OverlaySplitView.js +2 -2
  286. package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -1
  287. package/dist/components/OverlaySplitView.cjs +1 -1
  288. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs +1 -1
  289. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -1
  290. package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +1 -1
  291. package/dist/components/PasswordEntryRow/PasswordEntryRow.js +11 -10
  292. package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -1
  293. package/dist/components/PasswordEntryRow.cjs +1 -1
  294. package/dist/components/PathBar/PathBar.cjs +1 -1
  295. package/dist/components/PathBar/PathBar.cjs.map +1 -1
  296. package/dist/components/PathBar/PathBar.d.ts +1 -1
  297. package/dist/components/PathBar/PathBar.js +48 -50
  298. package/dist/components/PathBar/PathBar.js.map +1 -1
  299. package/dist/components/PathBar.cjs +1 -1
  300. package/dist/components/Popover/Popover.cjs +1 -1
  301. package/dist/components/Popover/Popover.cjs.map +1 -1
  302. package/dist/components/Popover/Popover.d.ts +1 -1
  303. package/dist/components/Popover/Popover.js +5 -5
  304. package/dist/components/Popover/Popover.js.map +1 -1
  305. package/dist/components/Popover.cjs +1 -1
  306. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +1 -1
  307. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -1
  308. package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +1 -1
  309. package/dist/components/PreferencesDialog/PreferencesDialog.js +2 -2
  310. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -1
  311. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +1 -1
  312. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +18 -19
  313. package/dist/components/PreferencesDialog.cjs +1 -1
  314. package/dist/components/PreferencesGroup/PreferencesGroup.cjs +1 -1
  315. package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -1
  316. package/dist/components/PreferencesGroup/PreferencesGroup.d.ts +1 -1
  317. package/dist/components/PreferencesGroup/PreferencesGroup.js +2 -2
  318. package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -1
  319. package/dist/components/PreferencesGroup.cjs +1 -1
  320. package/dist/components/PreferencesPage/PreferencesPage.cjs +1 -1
  321. package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -1
  322. package/dist/components/PreferencesPage/PreferencesPage.d.ts +1 -1
  323. package/dist/components/PreferencesPage/PreferencesPage.js +9 -11
  324. package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -1
  325. package/dist/components/PreferencesPage.cjs +1 -1
  326. package/dist/components/ProgressBar/ProgressBar.cjs +1 -1
  327. package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -1
  328. package/dist/components/ProgressBar/ProgressBar.d.ts +1 -1
  329. package/dist/components/ProgressBar/ProgressBar.js +2 -2
  330. package/dist/components/ProgressBar/ProgressBar.js.map +1 -1
  331. package/dist/components/ProgressBar.cjs +1 -1
  332. package/dist/components/RadioButton/RadioButton.cjs +1 -1
  333. package/dist/components/RadioButton/RadioButton.cjs.map +1 -1
  334. package/dist/components/RadioButton/RadioButton.d.ts +1 -1
  335. package/dist/components/RadioButton/RadioButton.js +5 -7
  336. package/dist/components/RadioButton/RadioButton.js.map +1 -1
  337. package/dist/components/RadioButton.cjs +1 -1
  338. package/dist/components/SearchBar/SearchBar.cjs +1 -1
  339. package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
  340. package/dist/components/SearchBar/SearchBar.d.ts +1 -1
  341. package/dist/components/SearchBar/SearchBar.js +2 -2
  342. package/dist/components/SearchBar/SearchBar.js.map +1 -1
  343. package/dist/components/SearchBar.cjs +1 -1
  344. package/dist/components/SegmentedBar/SegmentedBar.cjs +1 -1
  345. package/dist/components/SegmentedBar/SegmentedBar.cjs.map +1 -1
  346. package/dist/components/SegmentedBar/SegmentedBar.js.map +1 -1
  347. package/dist/components/SegmentedBar.cjs +1 -1
  348. package/dist/components/Separator/Separator.cjs +1 -1
  349. package/dist/components/Separator/Separator.cjs.map +1 -1
  350. package/dist/components/Separator/Separator.d.ts +1 -1
  351. package/dist/components/Separator/Separator.js +2 -2
  352. package/dist/components/Separator/Separator.js.map +1 -1
  353. package/dist/components/Separator.cjs +1 -1
  354. package/dist/components/ShortcutLabel/ShortcutLabel.cjs +1 -1
  355. package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -1
  356. package/dist/components/ShortcutLabel/ShortcutLabel.d.ts +1 -1
  357. package/dist/components/ShortcutLabel/ShortcutLabel.js +2 -3
  358. package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -1
  359. package/dist/components/ShortcutLabel.cjs +1 -1
  360. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +1 -1
  361. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -1
  362. package/dist/components/ShortcutsDialog/ShortcutsDialog.d.ts +1 -1
  363. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +75 -76
  364. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -1
  365. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +1 -1
  366. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +21 -22
  367. package/dist/components/ShortcutsDialog.cjs +1 -1
  368. package/dist/components/Sidebar/Sidebar.cjs +1 -1
  369. package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
  370. package/dist/components/Sidebar/Sidebar.d.ts +1 -1
  371. package/dist/components/Sidebar/Sidebar.js +2 -3
  372. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  373. package/dist/components/Sidebar/Sidebar.module.css.cjs +1 -1
  374. package/dist/components/Sidebar/Sidebar.module.css.js +33 -34
  375. package/dist/components/Sidebar/SidebarItem.cjs +1 -1
  376. package/dist/components/Sidebar/SidebarItem.cjs.map +1 -1
  377. package/dist/components/Sidebar/SidebarItem.d.ts +1 -1
  378. package/dist/components/Sidebar/SidebarItem.js +16 -16
  379. package/dist/components/Sidebar/SidebarItem.js.map +1 -1
  380. package/dist/components/Sidebar/SidebarSection.cjs +1 -1
  381. package/dist/components/Sidebar/SidebarSection.cjs.map +1 -1
  382. package/dist/components/Sidebar/SidebarSection.js.map +1 -1
  383. package/dist/components/Sidebar.cjs +1 -1
  384. package/dist/components/Skeleton/Skeleton.cjs +1 -1
  385. package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
  386. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  387. package/dist/components/Skeleton/Skeleton.js +9 -10
  388. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  389. package/dist/components/Skeleton.cjs +1 -1
  390. package/dist/components/Slider/Slider.cjs +1 -1
  391. package/dist/components/Slider/Slider.cjs.map +1 -1
  392. package/dist/components/Slider/Slider.d.ts +1 -1
  393. package/dist/components/Slider/Slider.js +2 -2
  394. package/dist/components/Slider/Slider.js.map +1 -1
  395. package/dist/components/Slider.cjs +1 -1
  396. package/dist/components/SpinButton/SpinButton.cjs +1 -1
  397. package/dist/components/SpinButton/SpinButton.cjs.map +1 -1
  398. package/dist/components/SpinButton/SpinButton.d.ts +1 -1
  399. package/dist/components/SpinButton/SpinButton.js +2 -2
  400. package/dist/components/SpinButton/SpinButton.js.map +1 -1
  401. package/dist/components/SpinButton.cjs +1 -1
  402. package/dist/components/SpinRow/SpinRow.cjs +1 -1
  403. package/dist/components/SpinRow/SpinRow.cjs.map +1 -1
  404. package/dist/components/SpinRow/SpinRow.d.ts +1 -1
  405. package/dist/components/SpinRow/SpinRow.js +2 -2
  406. package/dist/components/SpinRow/SpinRow.js.map +1 -1
  407. package/dist/components/SpinRow.cjs +1 -1
  408. package/dist/components/Spinner/Spinner.cjs +1 -1
  409. package/dist/components/Spinner/Spinner.cjs.map +1 -1
  410. package/dist/components/Spinner/Spinner.d.ts +1 -1
  411. package/dist/components/Spinner/Spinner.js +2 -2
  412. package/dist/components/Spinner/Spinner.js.map +1 -1
  413. package/dist/components/Spinner.cjs +1 -1
  414. package/dist/components/SplitButton/SplitButton.cjs +1 -1
  415. package/dist/components/SplitButton/SplitButton.cjs.map +1 -1
  416. package/dist/components/SplitButton/SplitButton.d.ts +1 -1
  417. package/dist/components/SplitButton/SplitButton.js +2 -2
  418. package/dist/components/SplitButton/SplitButton.js.map +1 -1
  419. package/dist/components/SplitButton.cjs +1 -1
  420. package/dist/components/StatusBadge/StatusBadge.cjs +1 -1
  421. package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -1
  422. package/dist/components/StatusBadge/StatusBadge.d.ts +1 -1
  423. package/dist/components/StatusBadge/StatusBadge.js +9 -11
  424. package/dist/components/StatusBadge/StatusBadge.js.map +1 -1
  425. package/dist/components/StatusBadge.cjs +1 -1
  426. package/dist/components/StatusPage/StatusPage.cjs +1 -1
  427. package/dist/components/StatusPage/StatusPage.cjs.map +1 -1
  428. package/dist/components/StatusPage/StatusPage.d.ts +1 -1
  429. package/dist/components/StatusPage/StatusPage.js +2 -2
  430. package/dist/components/StatusPage/StatusPage.js.map +1 -1
  431. package/dist/components/StatusPage.cjs +1 -1
  432. package/dist/components/Switch/Switch.cjs +1 -1
  433. package/dist/components/Switch/Switch.cjs.map +1 -1
  434. package/dist/components/Switch/Switch.d.ts +1 -1
  435. package/dist/components/Switch/Switch.js +6 -8
  436. package/dist/components/Switch/Switch.js.map +1 -1
  437. package/dist/components/Switch.cjs +1 -1
  438. package/dist/components/SwitchRow/SwitchRow.cjs +1 -1
  439. package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -1
  440. package/dist/components/SwitchRow/SwitchRow.d.ts +1 -1
  441. package/dist/components/SwitchRow/SwitchRow.js +7 -7
  442. package/dist/components/SwitchRow/SwitchRow.js.map +1 -1
  443. package/dist/components/SwitchRow.cjs +1 -1
  444. package/dist/components/Tabs/TabBar.cjs +1 -1
  445. package/dist/components/Tabs/TabBar.cjs.map +1 -1
  446. package/dist/components/Tabs/TabBar.d.ts +1 -1
  447. package/dist/components/Tabs/TabBar.js +2 -2
  448. package/dist/components/Tabs/TabBar.js.map +1 -1
  449. package/dist/components/Tabs/TabItem.cjs +1 -1
  450. package/dist/components/Tabs/TabItem.cjs.map +1 -1
  451. package/dist/components/Tabs/TabItem.js.map +1 -1
  452. package/dist/components/Tabs/TabPanel.cjs +1 -1
  453. package/dist/components/Tabs/TabPanel.cjs.map +1 -1
  454. package/dist/components/Tabs/TabPanel.d.ts +1 -1
  455. package/dist/components/Tabs/TabPanel.js +8 -10
  456. package/dist/components/Tabs/TabPanel.js.map +1 -1
  457. package/dist/components/Tabs.cjs +1 -1
  458. package/dist/components/TerminalView/TerminalView.cjs +1 -1
  459. package/dist/components/TerminalView/TerminalView.cjs.map +1 -1
  460. package/dist/components/TerminalView/TerminalView.d.ts +1 -1
  461. package/dist/components/TerminalView/TerminalView.js +2 -2
  462. package/dist/components/TerminalView/TerminalView.js.map +1 -1
  463. package/dist/components/TerminalView.cjs +1 -1
  464. package/dist/components/Text/Text.cjs +1 -1
  465. package/dist/components/Text/Text.cjs.map +1 -1
  466. package/dist/components/Text/Text.d.ts +1 -1
  467. package/dist/components/Text/Text.js +10 -13
  468. package/dist/components/Text/Text.js.map +1 -1
  469. package/dist/components/Text/Text.module.css.cjs +1 -1
  470. package/dist/components/Text/Text.module.css.js +9 -10
  471. package/dist/components/Text.cjs +1 -1
  472. package/dist/components/TextField/TextField.cjs +1 -1
  473. package/dist/components/TextField/TextField.cjs.map +1 -1
  474. package/dist/components/TextField/TextField.d.ts +1 -1
  475. package/dist/components/TextField/TextField.js +2 -2
  476. package/dist/components/TextField/TextField.js.map +1 -1
  477. package/dist/components/TextField.cjs +1 -1
  478. package/dist/components/Timeline/Timeline.cjs +1 -1
  479. package/dist/components/Timeline/Timeline.cjs.map +1 -1
  480. package/dist/components/Timeline/Timeline.d.ts +1 -1
  481. package/dist/components/Timeline/Timeline.js +2 -2
  482. package/dist/components/Timeline/Timeline.js.map +1 -1
  483. package/dist/components/Timeline.cjs +1 -1
  484. package/dist/components/Toast/Toast.cjs +1 -1
  485. package/dist/components/Toast/Toast.cjs.map +1 -1
  486. package/dist/components/Toast/Toast.d.ts +1 -1
  487. package/dist/components/Toast/Toast.js +2 -2
  488. package/dist/components/Toast/Toast.js.map +1 -1
  489. package/dist/components/Toast/Toast.module.css.cjs +1 -1
  490. package/dist/components/Toast/Toast.module.css.js +10 -11
  491. package/dist/components/Toast/Toaster.cjs +1 -1
  492. package/dist/components/Toast/Toaster.cjs.map +1 -1
  493. package/dist/components/Toast/Toaster.d.ts +1 -1
  494. package/dist/components/Toast/Toaster.js +2 -2
  495. package/dist/components/Toast/Toaster.js.map +1 -1
  496. package/dist/components/Toast.cjs +1 -1
  497. package/dist/components/ToggleGroup/ToggleGroup.cjs +1 -1
  498. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
  499. package/dist/components/ToggleGroup/ToggleGroup.d.ts +1 -1
  500. package/dist/components/ToggleGroup/ToggleGroup.js +2 -2
  501. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
  502. package/dist/components/ToggleGroup/ToggleGroupItem.cjs +1 -1
  503. package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -1
  504. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +1 -1
  505. package/dist/components/ToggleGroup/ToggleGroupItem.js +2 -2
  506. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -1
  507. package/dist/components/ToggleGroup.cjs +1 -1
  508. package/dist/components/Toolbar/Spacer.cjs +1 -1
  509. package/dist/components/Toolbar/Spacer.cjs.map +1 -1
  510. package/dist/components/Toolbar/Spacer.d.ts +1 -1
  511. package/dist/components/Toolbar/Spacer.js +5 -7
  512. package/dist/components/Toolbar/Spacer.js.map +1 -1
  513. package/dist/components/Toolbar/Toolbar.cjs +1 -1
  514. package/dist/components/Toolbar/Toolbar.cjs.map +1 -1
  515. package/dist/components/Toolbar/Toolbar.d.ts +1 -1
  516. package/dist/components/Toolbar/Toolbar.js +5 -7
  517. package/dist/components/Toolbar/Toolbar.js.map +1 -1
  518. package/dist/components/Toolbar.cjs +1 -1
  519. package/dist/components/ToolbarView/ToolbarView.cjs +1 -1
  520. package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -1
  521. package/dist/components/ToolbarView/ToolbarView.d.ts +1 -1
  522. package/dist/components/ToolbarView/ToolbarView.js +18 -20
  523. package/dist/components/ToolbarView/ToolbarView.js.map +1 -1
  524. package/dist/components/ToolbarView.cjs +1 -1
  525. package/dist/components/Tooltip/Tooltip.cjs +1 -1
  526. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  527. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  528. package/dist/components/Tooltip/Tooltip.js +2 -2
  529. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  530. package/dist/components/Tooltip.cjs +1 -1
  531. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +1 -1
  532. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -1
  533. package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +1 -1
  534. package/dist/components/ViewSwitcher/ViewSwitcher.js +2 -2
  535. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -1
  536. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs +1 -1
  537. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -1
  538. package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +1 -1
  539. package/dist/components/ViewSwitcher/ViewSwitcherItem.js +24 -26
  540. package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -1
  541. package/dist/components/ViewSwitcher.cjs +1 -1
  542. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs +1 -1
  543. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -1
  544. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.d.ts +1 -1
  545. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js +7 -9
  546. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -1
  547. package/dist/components/ViewSwitcherBar.cjs +1 -1
  548. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +1 -1
  549. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -1
  550. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +1 -1
  551. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +2 -2
  552. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -1
  553. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs +1 -1
  554. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -1
  555. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +1 -1
  556. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js +2 -2
  557. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -1
  558. package/dist/components/ViewSwitcherSidebar.cjs +1 -1
  559. package/dist/components/WindowTitle/WindowTitle.cjs +1 -1
  560. package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -1
  561. package/dist/components/WindowTitle/WindowTitle.d.ts +1 -1
  562. package/dist/components/WindowTitle/WindowTitle.js +11 -13
  563. package/dist/components/WindowTitle/WindowTitle.js.map +1 -1
  564. package/dist/components/WindowTitle.cjs +1 -1
  565. package/dist/components/WrapBox/WrapBox.cjs +1 -1
  566. package/dist/components/WrapBox/WrapBox.cjs.map +1 -1
  567. package/dist/components/WrapBox/WrapBox.d.ts +1 -1
  568. package/dist/components/WrapBox/WrapBox.js +5 -5
  569. package/dist/components/WrapBox/WrapBox.js.map +1 -1
  570. package/dist/components/WrapBox.cjs +1 -1
  571. package/dist/hooks/useBreakpoint.cjs +1 -1
  572. package/dist/hooks/useBreakpoint.cjs.map +1 -1
  573. package/dist/hooks/useBreakpoint.js.map +1 -1
  574. package/dist/hooks.cjs +1 -1
  575. package/dist/index.cjs +1 -1
  576. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
- const e=require(`./CheckRow.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r({title:r,subtitle:i,leading:a,checked:o,defaultChecked:s=!1,onCheckedChange:c,disabled:l=!1,className:u,onClick:d,...f}){let p=o!==void 0,[m,h]=(0,t.useState)(s),g=p?o:m,_=(0,t.useId)(),v=e=>{let t=!g;p||h(t),c?.(t),d?.(e)};return(0,n.jsxs)(`button`,{role:`checkbox`,"aria-checked":g,"aria-labelledby":_,disabled:l,className:[e.default.row,l?e.default.disabled:null,u].filter(Boolean).join(` `),onClick:v,...f,children:[(0,n.jsx)(`span`,{className:e.default.checkboxWrap,"aria-hidden":`true`,children:(0,n.jsx)(`span`,{className:[e.default.checkbox,g?e.default.checkboxChecked:null].filter(Boolean).join(` `),children:g&&(0,n.jsx)(`svg`,{className:e.default.checkmark,width:`12`,height:`12`,viewBox:`0 0 12 12`,focusable:`false`,children:(0,n.jsx)(`path`,{d:`M2 6l3 3 5-5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})})}),a&&(0,n.jsx)(`span`,{className:e.default.leading,children:a}),(0,n.jsxs)(`span`,{className:e.default.content,id:_,children:[(0,n.jsx)(`span`,{className:e.default.title,children:r}),i&&(0,n.jsx)(`span`,{className:e.default.subtitle,children:i})]})]})}exports.CheckRow=r;
1
+ const e=require("./CheckRow.module.css.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=({title:r,subtitle:i,leading:a,checked:o,defaultChecked:s=!1,onCheckedChange:c,disabled:l=!1,className:u,onClick:d,...f})=>{let p=o!==void 0,[m,h]=(0,t.useState)(s),g=p?o:m,_=(0,t.useId)();return(0,n.jsxs)(`button`,{role:`checkbox`,"aria-checked":g,"aria-labelledby":_,disabled:l,className:[e.default.row,l?e.default.disabled:null,u].filter(Boolean).join(` `),onClick:e=>{let t=!g;p||h(t),c?.(t),d?.(e)},...f,children:[(0,n.jsx)(`span`,{className:e.default.checkboxWrap,"aria-hidden":`true`,children:(0,n.jsx)(`span`,{className:[e.default.checkbox,g?e.default.checkboxChecked:null].filter(Boolean).join(` `),children:g&&(0,n.jsx)(`svg`,{className:e.default.checkmark,width:`12`,height:`12`,viewBox:`0 0 12 12`,focusable:`false`,children:(0,n.jsx)(`path`,{d:`M2 6l3 3 5-5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})})}),a&&(0,n.jsx)(`span`,{className:e.default.leading,children:a}),(0,n.jsxs)(`span`,{className:e.default.content,id:_,children:[(0,n.jsx)(`span`,{className:e.default.title,children:r}),i&&(0,n.jsx)(`span`,{className:e.default.subtitle,children:i})]})]})};exports.CheckRow=r;
2
2
  //# sourceMappingURL=CheckRow.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckRow.cjs","names":[],"sources":["../../../src/components/CheckRow/CheckRow.tsx"],"sourcesContent":["import { type HTMLAttributes, type MouseEvent, type ReactNode, useId, useState } from 'react';\n\nimport styles from './CheckRow.module.css';\n\nexport interface CheckRowProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. Defaults to `false`. */\n defaultChecked?: boolean;\n /** Called when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void;\n /** Disables the row. */\n disabled?: boolean;\n}\n\n/**\n * Activatable row with an integrated checkbox.\n *\n * The entire row is a button — clicking anywhere toggles the checkbox.\n * Mirrors the `AdwCheckButton`-in-a-row pattern used in list selection contexts.\n *\n * Supports both controlled (`checked`) and uncontrolled (`defaultChecked`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.CheckButton.html\n */\nexport function CheckRow({\n title,\n subtitle,\n leading,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n className,\n onClick,\n ...props\n}: CheckRowProps) {\n const isControlled = controlledChecked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked);\n const checked = isControlled ? controlledChecked : uncontrolledChecked;\n\n const labelId = useId();\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n const next = !checked;\n\n if (!isControlled) {\n setUncontrolledChecked(next);\n }\n\n onCheckedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n role=\"checkbox\"\n aria-checked={checked}\n aria-labelledby={labelId}\n disabled={disabled}\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n onClick={handleClick}\n {...props}\n >\n {/* Visual checkbox — aria-hidden since the button carries the role */}\n <span className={styles.checkboxWrap} aria-hidden=\"true\">\n <span\n className={[styles.checkbox, checked ? styles.checkboxChecked : null]\n .filter(Boolean)\n .join(' ')}\n >\n {checked && (\n <svg\n className={styles.checkmark}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n focusable=\"false\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content} id={labelId}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n </button>\n );\n}\n"],"mappings":"mGA+BA,SAAgB,EAAS,CACvB,QACA,WACA,UACA,QAAS,EACT,iBAAiB,GACjB,kBACA,WAAW,GACX,YACA,UACA,GAAG,GACa,CAChB,IAAM,EAAe,IAAsB,IAAA,GACrC,CAAC,EAAqB,IAAA,EAAA,EAAA,UAAmC,EAAe,CACxE,EAAU,EAAe,EAAoB,EAE7C,GAAA,EAAA,EAAA,QAAiB,CAEjB,EAAe,GAAqC,CACxD,IAAM,EAAO,CAAC,EAET,GACH,EAAuB,EAAK,CAG9B,IAAkB,EAAK,CACvB,IAAU,EAAE,EAGd,OACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,WACL,eAAc,EACd,kBAAiB,EACP,WACV,UAAW,CAAC,EAAA,QAAO,IAAK,EAAW,EAAA,QAAO,SAAW,KAAM,EAAU,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,QAAS,EACT,GAAI,WATN,EAYE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,aAAc,cAAY,iBAChD,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,CAAC,EAAA,QAAO,SAAU,EAAU,EAAA,QAAO,gBAAkB,KAAK,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI,UAEX,IACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAA,QAAO,UAClB,MAAM,KACN,OAAO,KACP,QAAQ,YACR,UAAU,kBAEV,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,eACF,KAAK,OACL,OAAO,eACP,YAAY,OACZ,cAAc,QACd,eAAe,QACf,CAAA,CACE,CAAA,CAEH,CAAA,CACF,CAAA,CAEN,IAAW,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,iBAAU,EAAe,CAAA,EAE7D,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAS,GAAI,WAArC,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,EAAa,CAAA,CAC5C,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAW,EAAgB,CAAA,CAC3D,GACA"}
1
+ {"version":3,"file":"CheckRow.cjs","names":[],"sources":["../../../src/components/CheckRow/CheckRow.tsx"],"sourcesContent":["import { type HTMLAttributes, type MouseEvent, type ReactNode, useId, useState } from 'react';\n\nimport styles from './CheckRow.module.css';\n\nexport interface CheckRowProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. Defaults to `false`. */\n defaultChecked?: boolean;\n /** Called when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void;\n /** Disables the row. */\n disabled?: boolean;\n}\n\n/**\n * Activatable row with an integrated checkbox.\n *\n * The entire row is a button — clicking anywhere toggles the checkbox.\n * Mirrors the `AdwCheckButton`-in-a-row pattern used in list selection contexts.\n *\n * Supports both controlled (`checked`) and uncontrolled (`defaultChecked`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.CheckButton.html\n */\nexport const CheckRow = ({\n title,\n subtitle,\n leading,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n className,\n onClick,\n ...props\n}: CheckRowProps) => {\n const isControlled = controlledChecked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked);\n const checked = isControlled ? controlledChecked : uncontrolledChecked;\n\n const labelId = useId();\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n const next = !checked;\n\n if (!isControlled) {\n setUncontrolledChecked(next);\n }\n\n onCheckedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n role=\"checkbox\"\n aria-checked={checked}\n aria-labelledby={labelId}\n disabled={disabled}\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n onClick={handleClick}\n {...props}\n >\n {/* Visual checkbox — aria-hidden since the button carries the role */}\n <span className={styles.checkboxWrap} aria-hidden=\"true\">\n <span\n className={[styles.checkbox, checked ? styles.checkboxChecked : null]\n .filter(Boolean)\n .join(' ')}\n >\n {checked && (\n <svg\n className={styles.checkmark}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n focusable=\"false\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content} id={labelId}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n </button>\n );\n};\n"],"mappings":"mGA+BA,IAAa,GAAY,CACvB,QACA,WACA,UACA,QAAS,EACT,iBAAiB,GACjB,kBACA,WAAW,GACX,YACA,UACA,GAAG,KACgB,CACnB,IAAM,EAAe,IAAsB,IAAA,GACrC,CAAC,EAAqB,IAAA,EAAA,EAAA,UAAmC,CAAc,EACvE,EAAU,EAAe,EAAoB,EAE7C,GAAA,EAAA,EAAA,OAAgB,EAatB,OACE,EAAA,EAAA,MAAC,SAAD,CACE,KAAK,WACL,eAAc,EACd,kBAAiB,EACP,WACV,UAAW,CAAC,EAAA,QAAO,IAAK,EAAW,EAAA,QAAO,SAAW,KAAM,CAAS,EACjE,OAAO,OAAO,EACd,KAAK,GAAG,EACX,QApBiB,GAAqC,CACxD,IAAM,EAAO,CAAC,EAET,GACH,EAAuB,CAAI,EAG7B,IAAkB,CAAI,EACtB,IAAU,CAAC,CACb,EAYI,GAAI,WATN,EAYE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,aAAc,cAAY,iBAChD,EAAA,EAAA,KAAC,OAAD,CACE,UAAW,CAAC,EAAA,QAAO,SAAU,EAAU,EAAA,QAAO,gBAAkB,IAAI,EACjE,OAAO,OAAO,EACd,KAAK,GAAG,WAEV,IACC,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAA,QAAO,UAClB,MAAM,KACN,OAAO,KACP,QAAQ,YACR,UAAU,kBAEV,EAAA,EAAA,KAAC,OAAD,CACE,EAAE,eACF,KAAK,OACL,OAAO,eACP,YAAY,OACZ,cAAc,QACd,eAAe,OAChB,CAAA,CACE,CAAA,CAEH,CAAA,CACF,CAAA,EAEL,IAAW,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,iBAAU,CAAc,CAAA,GAE5D,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,QAAO,QAAS,GAAI,WAArC,EACE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,CAAY,CAAA,EAC3C,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAW,CAAe,CAAA,CAC3D,GACA,GAEZ"}
@@ -25,4 +25,4 @@ export interface CheckRowProps extends Omit<HTMLAttributes<HTMLButtonElement>, '
25
25
  *
26
26
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.CheckButton.html
27
27
  */
28
- export declare function CheckRow({ title, subtitle, leading, checked: controlledChecked, defaultChecked, onCheckedChange, disabled, className, onClick, ...props }: CheckRowProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare const CheckRow: ({ title, subtitle, leading, checked: controlledChecked, defaultChecked, onCheckedChange, disabled, className, onClick, ...props }: CheckRowProps) => import("react/jsx-runtime").JSX.Element;
@@ -2,11 +2,8 @@ import e from "./CheckRow.module.css.js";
2
2
  import { useId as t, useState as n } from "react";
3
3
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  //#region src/components/CheckRow/CheckRow.tsx
5
- function a({ title: a, subtitle: o, leading: s, checked: c, defaultChecked: l = !1, onCheckedChange: u, disabled: d = !1, className: f, onClick: p, ...m }) {
6
- let h = c !== void 0, [g, _] = n(l), v = h ? c : g, y = t(), b = (e) => {
7
- let t = !v;
8
- h || _(t), u?.(t), p?.(e);
9
- };
5
+ var a = ({ title: a, subtitle: o, leading: s, checked: c, defaultChecked: l = !1, onCheckedChange: u, disabled: d = !1, className: f, onClick: p, ...m }) => {
6
+ let h = c !== void 0, [g, _] = n(l), v = h ? c : g, y = t();
10
7
  return /* @__PURE__ */ i("button", {
11
8
  role: "checkbox",
12
9
  "aria-checked": v,
@@ -17,7 +14,10 @@ function a({ title: a, subtitle: o, leading: s, checked: c, defaultChecked: l =
17
14
  d ? e.disabled : null,
18
15
  f
19
16
  ].filter(Boolean).join(" "),
20
- onClick: b,
17
+ onClick: (e) => {
18
+ let t = !v;
19
+ h || _(t), u?.(t), p?.(e);
20
+ },
21
21
  ...m,
22
22
  children: [
23
23
  /* @__PURE__ */ r("span", {
@@ -59,7 +59,7 @@ function a({ title: a, subtitle: o, leading: s, checked: c, defaultChecked: l =
59
59
  })
60
60
  ]
61
61
  });
62
- }
62
+ };
63
63
  //#endregion
64
64
  export { a as CheckRow };
65
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"CheckRow.js","names":[],"sources":["../../../src/components/CheckRow/CheckRow.tsx"],"sourcesContent":["import { type HTMLAttributes, type MouseEvent, type ReactNode, useId, useState } from 'react';\n\nimport styles from './CheckRow.module.css';\n\nexport interface CheckRowProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. Defaults to `false`. */\n defaultChecked?: boolean;\n /** Called when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void;\n /** Disables the row. */\n disabled?: boolean;\n}\n\n/**\n * Activatable row with an integrated checkbox.\n *\n * The entire row is a button — clicking anywhere toggles the checkbox.\n * Mirrors the `AdwCheckButton`-in-a-row pattern used in list selection contexts.\n *\n * Supports both controlled (`checked`) and uncontrolled (`defaultChecked`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.CheckButton.html\n */\nexport function CheckRow({\n title,\n subtitle,\n leading,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n className,\n onClick,\n ...props\n}: CheckRowProps) {\n const isControlled = controlledChecked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked);\n const checked = isControlled ? controlledChecked : uncontrolledChecked;\n\n const labelId = useId();\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n const next = !checked;\n\n if (!isControlled) {\n setUncontrolledChecked(next);\n }\n\n onCheckedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n role=\"checkbox\"\n aria-checked={checked}\n aria-labelledby={labelId}\n disabled={disabled}\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n onClick={handleClick}\n {...props}\n >\n {/* Visual checkbox — aria-hidden since the button carries the role */}\n <span className={styles.checkboxWrap} aria-hidden=\"true\">\n <span\n className={[styles.checkbox, checked ? styles.checkboxChecked : null]\n .filter(Boolean)\n .join(' ')}\n >\n {checked && (\n <svg\n className={styles.checkmark}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n focusable=\"false\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content} id={labelId}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n </button>\n );\n}\n"],"mappings":";;;;AA+BA,SAAgB,EAAS,EACvB,UACA,aACA,YACA,SAAS,GACT,oBAAiB,IACjB,oBACA,cAAW,IACX,cACA,YACA,GAAG,KACa;CAChB,IAAM,IAAe,MAAsB,KAAA,GACrC,CAAC,GAAqB,KAA0B,EAAS,EAAe,EACxE,IAAU,IAAe,IAAoB,GAE7C,IAAU,GAAO,EAEjB,KAAe,MAAqC;EACxD,IAAM,IAAO,CAAC;AAOd,EALK,KACH,EAAuB,EAAK,EAG9B,IAAkB,EAAK,EACvB,IAAU,EAAE;;AAGd,QACE,kBAAC,UAAD;EACE,MAAK;EACL,gBAAc;EACd,mBAAiB;EACP;EACV,WAAW;GAAC,EAAO;GAAK,IAAW,EAAO,WAAW;GAAM;GAAU,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI;EACZ,SAAS;EACT,GAAI;YATN;GAYE,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAc,eAAY;cAChD,kBAAC,QAAD;KACE,WAAW,CAAC,EAAO,UAAU,IAAU,EAAO,kBAAkB,KAAK,CAClE,OAAO,QAAQ,CACf,KAAK,IAAI;eAEX,KACC,kBAAC,OAAD;MACE,WAAW,EAAO;MAClB,OAAM;MACN,QAAO;MACP,SAAQ;MACR,WAAU;gBAEV,kBAAC,QAAD;OACE,GAAE;OACF,MAAK;OACL,QAAO;OACP,aAAY;OACZ,eAAc;OACd,gBAAe;OACf,CAAA;MACE,CAAA;KAEH,CAAA;IACF,CAAA;GAEN,KAAW,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAU;IAAe,CAAA;GAE7D,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAS,IAAI;cAArC,CACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;KAAa,CAAA,EAC5C,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAW;KAAgB,CAAA,CAC3D;;GACA"}
1
+ {"version":3,"file":"CheckRow.js","names":[],"sources":["../../../src/components/CheckRow/CheckRow.tsx"],"sourcesContent":["import { type HTMLAttributes, type MouseEvent, type ReactNode, useId, useState } from 'react';\n\nimport styles from './CheckRow.module.css';\n\nexport interface CheckRowProps extends Omit<HTMLAttributes<HTMLButtonElement>, 'onChange'> {\n /** Primary label. */\n title: string;\n /** Secondary line below the title. */\n subtitle?: string;\n /** Icon or image placed at the leading edge. */\n leading?: ReactNode;\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state when uncontrolled. Defaults to `false`. */\n defaultChecked?: boolean;\n /** Called when the checked state changes. */\n onCheckedChange?: (checked: boolean) => void;\n /** Disables the row. */\n disabled?: boolean;\n}\n\n/**\n * Activatable row with an integrated checkbox.\n *\n * The entire row is a button — clicking anywhere toggles the checkbox.\n * Mirrors the `AdwCheckButton`-in-a-row pattern used in list selection contexts.\n *\n * Supports both controlled (`checked`) and uncontrolled (`defaultChecked`) modes.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.CheckButton.html\n */\nexport const CheckRow = ({\n title,\n subtitle,\n leading,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n disabled = false,\n className,\n onClick,\n ...props\n}: CheckRowProps) => {\n const isControlled = controlledChecked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked);\n const checked = isControlled ? controlledChecked : uncontrolledChecked;\n\n const labelId = useId();\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n const next = !checked;\n\n if (!isControlled) {\n setUncontrolledChecked(next);\n }\n\n onCheckedChange?.(next);\n onClick?.(e);\n };\n\n return (\n <button\n role=\"checkbox\"\n aria-checked={checked}\n aria-labelledby={labelId}\n disabled={disabled}\n className={[styles.row, disabled ? styles.disabled : null, className]\n .filter(Boolean)\n .join(' ')}\n onClick={handleClick}\n {...props}\n >\n {/* Visual checkbox — aria-hidden since the button carries the role */}\n <span className={styles.checkboxWrap} aria-hidden=\"true\">\n <span\n className={[styles.checkbox, checked ? styles.checkboxChecked : null]\n .filter(Boolean)\n .join(' ')}\n >\n {checked && (\n <svg\n className={styles.checkmark}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n focusable=\"false\"\n >\n <path\n d=\"M2 6l3 3 5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </span>\n\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.content} id={labelId}>\n <span className={styles.title}>{title}</span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n </button>\n );\n};\n"],"mappings":";;;;AA+BA,IAAa,KAAY,EACvB,UACA,aACA,YACA,SAAS,GACT,oBAAiB,IACjB,oBACA,cAAW,IACX,cACA,YACA,GAAG,QACgB;CACnB,IAAM,IAAe,MAAsB,KAAA,GACrC,CAAC,GAAqB,KAA0B,EAAS,CAAc,GACvE,IAAU,IAAe,IAAoB,GAE7C,IAAU,EAAM;CAatB,OACE,kBAAC,UAAD;EACE,MAAK;EACL,gBAAc;EACd,mBAAiB;EACP;EACV,WAAW;GAAC,EAAO;GAAK,IAAW,EAAO,WAAW;GAAM;EAAS,EACjE,OAAO,OAAO,EACd,KAAK,GAAG;EACX,UApBiB,MAAqC;GACxD,IAAM,IAAO,CAAC;GAOd,AALK,KACH,EAAuB,CAAI,GAG7B,IAAkB,CAAI,GACtB,IAAU,CAAC;EACb;EAYI,GAAI;YATN;GAYE,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAc,eAAY;cAChD,kBAAC,QAAD;KACE,WAAW,CAAC,EAAO,UAAU,IAAU,EAAO,kBAAkB,IAAI,EACjE,OAAO,OAAO,EACd,KAAK,GAAG;eAEV,KACC,kBAAC,OAAD;MACE,WAAW,EAAO;MAClB,OAAM;MACN,QAAO;MACP,SAAQ;MACR,WAAU;gBAEV,kBAAC,QAAD;OACE,GAAE;OACF,MAAK;OACL,QAAO;OACP,aAAY;OACZ,eAAc;OACd,gBAAe;MAChB,CAAA;KACE,CAAA;IAEH,CAAA;GACF,CAAA;GAEL,KAAW,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAU;GAAc,CAAA;GAE5D,kBAAC,QAAD;IAAM,WAAW,EAAO;IAAS,IAAI;cAArC,CACE,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAQ;IAAY,CAAA,GAC3C,KAAY,kBAAC,QAAD;KAAM,WAAW,EAAO;eAAW;IAAe,CAAA,CAC3D;;EACA;;AAEZ"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./CheckRow/CheckRow.cjs`);exports.CheckRow=e.CheckRow;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./CheckRow/CheckRow.cjs");exports.CheckRow=e.CheckRow;
@@ -1,2 +1,2 @@
1
- const e=require(`./Checkbox.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r({indeterminate:r=!1,className:i,...a}){let o=(0,t.useRef)(null);return(0,t.useEffect)(()=>{o.current&&(o.current.indeterminate=r)},[r]),(0,n.jsx)(`input`,{ref:o,type:`checkbox`,className:[e.default.checkbox,i].filter(Boolean).join(` `),...a})}exports.Checkbox=r;
1
+ const e=require("./Checkbox.module.css.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=({indeterminate:r=!1,className:i,...a})=>{let o=(0,t.useRef)(null);return(0,t.useEffect)(()=>{o.current&&(o.current.indeterminate=r)},[r]),(0,n.jsx)(`input`,{ref:o,type:`checkbox`,className:[e.default.checkbox,i].filter(Boolean).join(` `),...a})};exports.Checkbox=r;
2
2
  //# sourceMappingURL=Checkbox.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.cjs","names":[],"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { type InputHTMLAttributes, useEffect, useRef } from 'react';\n\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Indeterminate state — shown when only some children in a group are checked.\n * Takes visual precedence over `checked`.\n */\n indeterminate?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Checkbox for multi-selection, following the GNOME HIG and Adwaita style.\n *\n * Supports three states: unchecked, checked, and indeterminate (mixed).\n * Use `indeterminate` for \"select all\" controls when only some items are selected.\n *\n * Renders as `<input type=\"checkbox\">` — natively keyboard-accessible and\n * compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/checkboxes.html\n */\nexport function Checkbox({ indeterminate = false, className, ...props }: CheckboxProps) {\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n className={[styles.checkbox, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n}\n"],"mappings":"mGAyBA,SAAgB,EAAS,CAAE,gBAAgB,GAAO,YAAW,GAAG,GAAwB,CACtF,IAAM,GAAA,EAAA,EAAA,QAA+B,KAAK,CAQ1C,OANA,EAAA,EAAA,eAAgB,CACV,EAAI,UACN,EAAI,QAAQ,cAAgB,IAE7B,CAAC,EAAc,CAAC,EAGjB,EAAA,EAAA,KAAC,QAAD,CACO,MACL,KAAK,WACL,UAAW,CAAC,EAAA,QAAO,SAAU,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CACjE,GAAI,EACJ,CAAA"}
1
+ {"version":3,"file":"Checkbox.cjs","names":[],"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { type InputHTMLAttributes, useEffect, useRef } from 'react';\n\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Indeterminate state — shown when only some children in a group are checked.\n * Takes visual precedence over `checked`.\n */\n indeterminate?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Checkbox for multi-selection, following the GNOME HIG and Adwaita style.\n *\n * Supports three states: unchecked, checked, and indeterminate (mixed).\n * Use `indeterminate` for \"select all\" controls when only some items are selected.\n *\n * Renders as `<input type=\"checkbox\">` — natively keyboard-accessible and\n * compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/checkboxes.html\n */\nexport const Checkbox = ({ indeterminate = false, className, ...props }: CheckboxProps) => {\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n className={[styles.checkbox, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n};\n"],"mappings":"mGAyBA,IAAa,GAAY,CAAE,gBAAgB,GAAO,YAAW,GAAG,KAA2B,CACzF,IAAM,GAAA,EAAA,EAAA,QAA+B,IAAI,EAQzC,OANA,EAAA,EAAA,eAAgB,CACV,EAAI,UACN,EAAI,QAAQ,cAAgB,EAEhC,EAAG,CAAC,CAAa,CAAC,GAGhB,EAAA,EAAA,KAAC,QAAD,CACO,MACL,KAAK,WACL,UAAW,CAAC,EAAA,QAAO,SAAU,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAChE,GAAI,CACL,CAAA,CAEL"}
@@ -19,4 +19,4 @@ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement
19
19
  *
20
20
  * @see https://developer.gnome.org/hig/patterns/controls/checkboxes.html
21
21
  */
22
- export declare function Checkbox({ indeterminate, className, ...props }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare const Checkbox: ({ indeterminate, className, ...props }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
@@ -2,7 +2,7 @@ import e from "./Checkbox.module.css.js";
2
2
  import { useEffect as t, useRef as n } from "react";
3
3
  import { jsx as r } from "react/jsx-runtime";
4
4
  //#region src/components/Checkbox/Checkbox.tsx
5
- function i({ indeterminate: i = !1, className: a, ...o }) {
5
+ var i = ({ indeterminate: i = !1, className: a, ...o }) => {
6
6
  let s = n(null);
7
7
  return t(() => {
8
8
  s.current && (s.current.indeterminate = i);
@@ -12,7 +12,7 @@ function i({ indeterminate: i = !1, className: a, ...o }) {
12
12
  className: [e.checkbox, a].filter(Boolean).join(" "),
13
13
  ...o
14
14
  });
15
- }
15
+ };
16
16
  //#endregion
17
17
  export { i as Checkbox };
18
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":[],"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { type InputHTMLAttributes, useEffect, useRef } from 'react';\n\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Indeterminate state — shown when only some children in a group are checked.\n * Takes visual precedence over `checked`.\n */\n indeterminate?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Checkbox for multi-selection, following the GNOME HIG and Adwaita style.\n *\n * Supports three states: unchecked, checked, and indeterminate (mixed).\n * Use `indeterminate` for \"select all\" controls when only some items are selected.\n *\n * Renders as `<input type=\"checkbox\">` — natively keyboard-accessible and\n * compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/checkboxes.html\n */\nexport function Checkbox({ indeterminate = false, className, ...props }: CheckboxProps) {\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n className={[styles.checkbox, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n}\n"],"mappings":";;;;AAyBA,SAAgB,EAAS,EAAE,mBAAgB,IAAO,cAAW,GAAG,KAAwB;CACtF,IAAM,IAAM,EAAyB,KAAK;AAQ1C,QANA,QAAgB;AACd,EAAI,EAAI,YACN,EAAI,QAAQ,gBAAgB;IAE7B,CAAC,EAAc,CAAC,EAGjB,kBAAC,SAAD;EACO;EACL,MAAK;EACL,WAAW,CAAC,EAAO,UAAU,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EACjE,GAAI;EACJ,CAAA"}
1
+ {"version":3,"file":"Checkbox.js","names":[],"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { type InputHTMLAttributes, useEffect, useRef } from 'react';\n\nimport styles from './Checkbox.module.css';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Indeterminate state — shown when only some children in a group are checked.\n * Takes visual precedence over `checked`.\n */\n indeterminate?: boolean;\n /** Accessible label. Required when no visible `<label>` is associated. */\n 'aria-label'?: string;\n}\n\n/**\n * Checkbox for multi-selection, following the GNOME HIG and Adwaita style.\n *\n * Supports three states: unchecked, checked, and indeterminate (mixed).\n * Use `indeterminate` for \"select all\" controls when only some items are selected.\n *\n * Renders as `<input type=\"checkbox\">` — natively keyboard-accessible and\n * compatible with standard form libraries.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/checkboxes.html\n */\nexport const Checkbox = ({ indeterminate = false, className, ...props }: CheckboxProps) => {\n const ref = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (ref.current) {\n ref.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n className={[styles.checkbox, className].filter(Boolean).join(' ')}\n {...props}\n />\n );\n};\n"],"mappings":";;;;AAyBA,IAAa,KAAY,EAAE,mBAAgB,IAAO,cAAW,GAAG,QAA2B;CACzF,IAAM,IAAM,EAAyB,IAAI;CAQzC,OANA,QAAgB;EACd,AAAI,EAAI,YACN,EAAI,QAAQ,gBAAgB;CAEhC,GAAG,CAAC,CAAa,CAAC,GAGhB,kBAAC,SAAD;EACO;EACL,MAAK;EACL,WAAW,CAAC,EAAO,UAAU,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;EAChE,GAAI;CACL,CAAA;AAEL"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Checkbox/Checkbox.cjs`);exports.Checkbox=e.Checkbox;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Checkbox/Checkbox.cjs");exports.Checkbox=e.Checkbox;
@@ -1,2 +1,2 @@
1
- const e=require(`../Icon/Icon.cjs`),t=require(`./Chip.module.css.cjs`);let n=require(`react/jsx-runtime`),r=require(`@gnome-ui/icons`);function i({label:i,icon:a,onRemove:o,selectable:s=!1,selected:c=!1,onToggle:l,disabled:u=!1,className:d,...f}){let p=s&&!o,m=[t.default.chip,c?t.default.selected:null,u?t.default.disabled:null,p?t.default.selectable:null,d].filter(Boolean).join(` `),h=(0,n.jsxs)(n.Fragment,{children:[a&&(0,n.jsx)(`span`,{className:t.default.icon,children:(0,n.jsx)(e.Icon,{icon:a,size:`sm`,"aria-hidden":!0})}),(0,n.jsx)(`span`,{className:t.default.label,children:i}),o&&(0,n.jsx)(`button`,{type:`button`,className:t.default.remove,"aria-label":`Remove ${i}`,disabled:u,onClick:e=>{e.stopPropagation(),o()},tabIndex:u?-1:0,children:(0,n.jsx)(e.Icon,{icon:r.Close,size:`sm`,"aria-hidden":!0})})]});return p?(0,n.jsx)(`button`,{type:`button`,role:`checkbox`,"aria-checked":c,"aria-label":i,disabled:u,onClick:l,className:m,...f,children:h}):(0,n.jsx)(`span`,{className:m,...f,children:h})}exports.Chip=i;
1
+ const e=require("../Icon/Icon.cjs"),t=require("./Chip.module.css.cjs");let n=require("react/jsx-runtime"),r=require("@gnome-ui/icons");var i=({label:i,icon:a,onRemove:o,selectable:s=!1,selected:c=!1,onToggle:l,disabled:u=!1,className:d,...f})=>{let p=s&&!o,m=[t.default.chip,c?t.default.selected:null,u?t.default.disabled:null,p?t.default.selectable:null,d].filter(Boolean).join(` `),h=(0,n.jsxs)(n.Fragment,{children:[a&&(0,n.jsx)(`span`,{className:t.default.icon,children:(0,n.jsx)(e.Icon,{icon:a,size:`sm`,"aria-hidden":!0})}),(0,n.jsx)(`span`,{className:t.default.label,children:i}),o&&(0,n.jsx)(`button`,{type:`button`,className:t.default.remove,"aria-label":`Remove ${i}`,disabled:u,onClick:e=>{e.stopPropagation(),o()},tabIndex:u?-1:0,children:(0,n.jsx)(e.Icon,{icon:r.Close,size:`sm`,"aria-hidden":!0})})]});return p?(0,n.jsx)(`button`,{type:`button`,role:`checkbox`,"aria-checked":c,"aria-label":i,disabled:u,onClick:l,className:m,...f,children:h}):(0,n.jsx)(`span`,{className:m,...f,children:h})};exports.Chip=i;
2
2
  //# sourceMappingURL=Chip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.cjs","names":[],"sources":["../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import type { IconDefinition } from '@gnome-ui/icons';\nimport { Close } from '@gnome-ui/icons';\nimport type { HTMLAttributes } from 'react';\n\nimport { Icon } from '../Icon';\n\nimport styles from './Chip.module.css';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Text label displayed inside the chip. */\n label: string;\n /** Leading icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /**\n * When provided, renders a remove (×) button and calls this handler.\n * The chip root becomes a `<span>`; only the remove button is interactive.\n */\n onRemove?: () => void;\n /**\n * When true the chip renders as a toggle button.\n * Use `selected` + `onToggle` to control its state.\n */\n selectable?: boolean;\n /** Active/selected state. Only relevant when `selectable` is true. */\n selected?: boolean;\n /**\n * Called when a selectable chip is clicked.\n * Only relevant when `selectable` is true.\n */\n onToggle?: () => void;\n /** Disabled state — applies to both selectable chips and the remove button. */\n disabled?: boolean;\n}\n\n/**\n * Compact pill-shaped label for tags, filters, and selection states.\n *\n * Three usage modes:\n * - **Static** — just a visual label (no `onRemove`, no `selectable`).\n * - **Removable** — add `onRemove` to show a × button.\n * - **Selectable** — add `selectable` + `selected` + `onToggle` for toggle behaviour.\n *\n * Pair with `WrapBox` for multi-chip layouts.\n */\nexport function Chip({\n label,\n icon,\n onRemove,\n selectable = false,\n selected = false,\n onToggle,\n disabled = false,\n className,\n ...props\n}: ChipProps) {\n const isInteractive = selectable && !onRemove;\n\n const chipClasses = [\n styles.chip,\n selected ? styles.selected : null,\n disabled ? styles.disabled : null,\n isInteractive ? styles.selectable : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {icon && (\n <span className={styles.icon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={`Remove ${label}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <Icon icon={Close} size=\"sm\" aria-hidden />\n </button>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={selected}\n aria-label={label}\n disabled={disabled}\n onClick={onToggle}\n className={chipClasses}\n {...(props as HTMLAttributes<HTMLButtonElement>)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={chipClasses} {...props}>\n {content}\n </span>\n );\n}\n"],"mappings":"uIA4CA,SAAgB,EAAK,CACnB,QACA,OACA,WACA,aAAa,GACb,WAAW,GACX,WACA,WAAW,GACX,YACA,GAAG,GACS,CACZ,IAAM,EAAgB,GAAc,CAAC,EAE/B,EAAc,CAClB,EAAA,QAAO,KACP,EAAW,EAAA,QAAO,SAAW,KAC7B,EAAW,EAAA,QAAO,SAAW,KAC7B,EAAgB,EAAA,QAAO,WAAa,KACpC,EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CAEN,GACJ,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAY,OAAM,KAAK,KAAK,cAAA,GAAc,CAAA,CACrC,CAAA,EAET,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,EAAa,CAAA,CAC5C,IACC,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,OAClB,aAAY,UAAU,IACZ,WACV,QAAU,GAAM,CACd,EAAE,iBAAiB,CACnB,GAAU,EAEZ,SAAU,EAAW,GAAK,YAE1B,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAA,MAAO,KAAK,KAAK,cAAA,GAAc,CAAA,CACpC,CAAA,CAEV,CAAA,CAAA,CAoBL,OAjBI,GAEA,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,KAAK,WACL,eAAc,EACd,aAAY,EACF,WACV,QAAS,EACT,UAAW,EACX,GAAK,WAEJ,EACM,CAAA,EAKX,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAa,GAAI,WAC/B,EACI,CAAA"}
1
+ {"version":3,"file":"Chip.cjs","names":[],"sources":["../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import type { IconDefinition } from '@gnome-ui/icons';\nimport { Close } from '@gnome-ui/icons';\nimport type { HTMLAttributes } from 'react';\n\nimport { Icon } from '../Icon';\n\nimport styles from './Chip.module.css';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Text label displayed inside the chip. */\n label: string;\n /** Leading icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /**\n * When provided, renders a remove (×) button and calls this handler.\n * The chip root becomes a `<span>`; only the remove button is interactive.\n */\n onRemove?: () => void;\n /**\n * When true the chip renders as a toggle button.\n * Use `selected` + `onToggle` to control its state.\n */\n selectable?: boolean;\n /** Active/selected state. Only relevant when `selectable` is true. */\n selected?: boolean;\n /**\n * Called when a selectable chip is clicked.\n * Only relevant when `selectable` is true.\n */\n onToggle?: () => void;\n /** Disabled state — applies to both selectable chips and the remove button. */\n disabled?: boolean;\n}\n\n/**\n * Compact pill-shaped label for tags, filters, and selection states.\n *\n * Three usage modes:\n * - **Static** — just a visual label (no `onRemove`, no `selectable`).\n * - **Removable** — add `onRemove` to show a × button.\n * - **Selectable** — add `selectable` + `selected` + `onToggle` for toggle behaviour.\n *\n * Pair with `WrapBox` for multi-chip layouts.\n */\nexport const Chip = ({\n label,\n icon,\n onRemove,\n selectable = false,\n selected = false,\n onToggle,\n disabled = false,\n className,\n ...props\n}: ChipProps) => {\n const isInteractive = selectable && !onRemove;\n\n const chipClasses = [\n styles.chip,\n selected ? styles.selected : null,\n disabled ? styles.disabled : null,\n isInteractive ? styles.selectable : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {icon && (\n <span className={styles.icon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={`Remove ${label}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <Icon icon={Close} size=\"sm\" aria-hidden />\n </button>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={selected}\n aria-label={label}\n disabled={disabled}\n onClick={onToggle}\n className={chipClasses}\n {...(props as HTMLAttributes<HTMLButtonElement>)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={chipClasses} {...props}>\n {content}\n </span>\n );\n};\n"],"mappings":"uIA4CA,IAAa,GAAQ,CACnB,QACA,OACA,WACA,aAAa,GACb,WAAW,GACX,WACA,WAAW,GACX,YACA,GAAG,KACY,CACf,IAAM,EAAgB,GAAc,CAAC,EAE/B,EAAc,CAClB,EAAA,QAAO,KACP,EAAW,EAAA,QAAO,SAAW,KAC7B,EAAW,EAAA,QAAO,SAAW,KAC7B,EAAgB,EAAA,QAAO,WAAa,KACpC,CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG,EAEL,GACJ,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,IACC,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eACtB,EAAA,EAAA,KAAC,EAAA,KAAD,CAAY,OAAM,KAAK,KAAK,cAAA,EAAa,CAAA,CACrC,CAAA,GAER,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,CAAY,CAAA,EAC3C,IACC,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,UAAW,EAAA,QAAO,OAClB,aAAY,UAAU,IACZ,WACV,QAAU,GAAM,CACd,EAAE,gBAAgB,EAClB,EAAS,CACX,EACA,SAAU,EAAW,GAAK,YAE1B,EAAA,EAAA,KAAC,EAAA,KAAD,CAAM,KAAM,EAAA,MAAO,KAAK,KAAK,cAAA,EAAa,CAAA,CACpC,CAAA,CAEV,CAAA,CAAA,EAoBJ,OAjBI,GAEA,EAAA,EAAA,KAAC,SAAD,CACE,KAAK,SACL,KAAK,WACL,eAAc,EACd,aAAY,EACF,WACV,QAAS,EACT,UAAW,EACX,GAAK,WAEJ,CACK,CAAA,GAKV,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAa,GAAI,WAC/B,CACG,CAAA,CAEV"}
@@ -35,4 +35,4 @@ export interface ChipProps extends HTMLAttributes<HTMLElement> {
35
35
  *
36
36
  * Pair with `WrapBox` for multi-chip layouts.
37
37
  */
38
- export declare function Chip({ label, icon, onRemove, selectable, selected, onToggle, disabled, className, ...props }: ChipProps): import("react/jsx-runtime").JSX.Element;
38
+ export declare const Chip: ({ label, icon, onRemove, selectable, selected, onToggle, disabled, className, ...props }: ChipProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,7 +3,7 @@ import t from "./Chip.module.css.js";
3
3
  import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  import { Close as a } from "@gnome-ui/icons";
5
5
  //#region src/components/Chip/Chip.tsx
6
- function o({ label: o, icon: s, onRemove: c, selectable: l = !1, selected: u = !1, onToggle: d, disabled: f = !1, className: p, ...m }) {
6
+ var o = ({ label: o, icon: s, onRemove: c, selectable: l = !1, selected: u = !1, onToggle: d, disabled: f = !1, className: p, ...m }) => {
7
7
  let h = l && !c, g = [
8
8
  t.chip,
9
9
  u ? t.selected : null,
@@ -54,7 +54,7 @@ function o({ label: o, icon: s, onRemove: c, selectable: l = !1, selected: u = !
54
54
  ...m,
55
55
  children: _
56
56
  });
57
- }
57
+ };
58
58
  //#endregion
59
59
  export { o as Chip };
60
60
 
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","names":[],"sources":["../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import type { IconDefinition } from '@gnome-ui/icons';\nimport { Close } from '@gnome-ui/icons';\nimport type { HTMLAttributes } from 'react';\n\nimport { Icon } from '../Icon';\n\nimport styles from './Chip.module.css';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Text label displayed inside the chip. */\n label: string;\n /** Leading icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /**\n * When provided, renders a remove (×) button and calls this handler.\n * The chip root becomes a `<span>`; only the remove button is interactive.\n */\n onRemove?: () => void;\n /**\n * When true the chip renders as a toggle button.\n * Use `selected` + `onToggle` to control its state.\n */\n selectable?: boolean;\n /** Active/selected state. Only relevant when `selectable` is true. */\n selected?: boolean;\n /**\n * Called when a selectable chip is clicked.\n * Only relevant when `selectable` is true.\n */\n onToggle?: () => void;\n /** Disabled state — applies to both selectable chips and the remove button. */\n disabled?: boolean;\n}\n\n/**\n * Compact pill-shaped label for tags, filters, and selection states.\n *\n * Three usage modes:\n * - **Static** — just a visual label (no `onRemove`, no `selectable`).\n * - **Removable** — add `onRemove` to show a × button.\n * - **Selectable** — add `selectable` + `selected` + `onToggle` for toggle behaviour.\n *\n * Pair with `WrapBox` for multi-chip layouts.\n */\nexport function Chip({\n label,\n icon,\n onRemove,\n selectable = false,\n selected = false,\n onToggle,\n disabled = false,\n className,\n ...props\n}: ChipProps) {\n const isInteractive = selectable && !onRemove;\n\n const chipClasses = [\n styles.chip,\n selected ? styles.selected : null,\n disabled ? styles.disabled : null,\n isInteractive ? styles.selectable : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {icon && (\n <span className={styles.icon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={`Remove ${label}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <Icon icon={Close} size=\"sm\" aria-hidden />\n </button>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={selected}\n aria-label={label}\n disabled={disabled}\n onClick={onToggle}\n className={chipClasses}\n {...(props as HTMLAttributes<HTMLButtonElement>)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={chipClasses} {...props}>\n {content}\n </span>\n );\n}\n"],"mappings":";;;;;AA4CA,SAAgB,EAAK,EACnB,UACA,SACA,aACA,gBAAa,IACb,cAAW,IACX,aACA,cAAW,IACX,cACA,GAAG,KACS;CACZ,IAAM,IAAgB,KAAc,CAAC,GAE/B,IAAc;EAClB,EAAO;EACP,IAAW,EAAO,WAAW;EAC7B,IAAW,EAAO,WAAW;EAC7B,IAAgB,EAAO,aAAa;EACpC;EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,EAEN,IACJ,kBAAA,GAAA,EAAA,UAAA;EACG,KACC,kBAAC,QAAD;GAAM,WAAW,EAAO;aACtB,kBAAC,GAAD;IAAY;IAAM,MAAK;IAAK,eAAA;IAAc,CAAA;GACrC,CAAA;EAET,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAQ;GAAa,CAAA;EAC5C,KACC,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EAAO;GAClB,cAAY,UAAU;GACZ;GACV,UAAU,MAAM;AAEd,IADA,EAAE,iBAAiB,EACnB,GAAU;;GAEZ,UAAU,IAAW,KAAK;aAE1B,kBAAC,GAAD;IAAM,MAAM;IAAO,MAAK;IAAK,eAAA;IAAc,CAAA;GACpC,CAAA;EAEV,EAAA,CAAA;AAoBL,QAjBI,IAEA,kBAAC,UAAD;EACE,MAAK;EACL,MAAK;EACL,gBAAc;EACd,cAAY;EACF;EACV,SAAS;EACT,WAAW;EACX,GAAK;YAEJ;EACM,CAAA,GAKX,kBAAC,QAAD;EAAM,WAAW;EAAa,GAAI;YAC/B;EACI,CAAA"}
1
+ {"version":3,"file":"Chip.js","names":[],"sources":["../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import type { IconDefinition } from '@gnome-ui/icons';\nimport { Close } from '@gnome-ui/icons';\nimport type { HTMLAttributes } from 'react';\n\nimport { Icon } from '../Icon';\n\nimport styles from './Chip.module.css';\n\nexport interface ChipProps extends HTMLAttributes<HTMLElement> {\n /** Text label displayed inside the chip. */\n label: string;\n /** Leading icon from `@gnome-ui/icons`. */\n icon?: IconDefinition;\n /**\n * When provided, renders a remove (×) button and calls this handler.\n * The chip root becomes a `<span>`; only the remove button is interactive.\n */\n onRemove?: () => void;\n /**\n * When true the chip renders as a toggle button.\n * Use `selected` + `onToggle` to control its state.\n */\n selectable?: boolean;\n /** Active/selected state. Only relevant when `selectable` is true. */\n selected?: boolean;\n /**\n * Called when a selectable chip is clicked.\n * Only relevant when `selectable` is true.\n */\n onToggle?: () => void;\n /** Disabled state — applies to both selectable chips and the remove button. */\n disabled?: boolean;\n}\n\n/**\n * Compact pill-shaped label for tags, filters, and selection states.\n *\n * Three usage modes:\n * - **Static** — just a visual label (no `onRemove`, no `selectable`).\n * - **Removable** — add `onRemove` to show a × button.\n * - **Selectable** — add `selectable` + `selected` + `onToggle` for toggle behaviour.\n *\n * Pair with `WrapBox` for multi-chip layouts.\n */\nexport const Chip = ({\n label,\n icon,\n onRemove,\n selectable = false,\n selected = false,\n onToggle,\n disabled = false,\n className,\n ...props\n}: ChipProps) => {\n const isInteractive = selectable && !onRemove;\n\n const chipClasses = [\n styles.chip,\n selected ? styles.selected : null,\n disabled ? styles.disabled : null,\n isInteractive ? styles.selectable : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const content = (\n <>\n {icon && (\n <span className={styles.icon}>\n <Icon icon={icon} size=\"sm\" aria-hidden />\n </span>\n )}\n <span className={styles.label}>{label}</span>\n {onRemove && (\n <button\n type=\"button\"\n className={styles.remove}\n aria-label={`Remove ${label}`}\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n tabIndex={disabled ? -1 : 0}\n >\n <Icon icon={Close} size=\"sm\" aria-hidden />\n </button>\n )}\n </>\n );\n\n if (isInteractive) {\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={selected}\n aria-label={label}\n disabled={disabled}\n onClick={onToggle}\n className={chipClasses}\n {...(props as HTMLAttributes<HTMLButtonElement>)}\n >\n {content}\n </button>\n );\n }\n\n return (\n <span className={chipClasses} {...props}>\n {content}\n </span>\n );\n};\n"],"mappings":";;;;;AA4CA,IAAa,KAAQ,EACnB,UACA,SACA,aACA,gBAAa,IACb,cAAW,IACX,aACA,cAAW,IACX,cACA,GAAG,QACY;CACf,IAAM,IAAgB,KAAc,CAAC,GAE/B,IAAc;EAClB,EAAO;EACP,IAAW,EAAO,WAAW;EAC7B,IAAW,EAAO,WAAW;EAC7B,IAAgB,EAAO,aAAa;EACpC;CACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG,GAEL,IACJ,kBAAA,GAAA,EAAA,UAAA;EACG,KACC,kBAAC,QAAD;GAAM,WAAW,EAAO;aACtB,kBAAC,GAAD;IAAY;IAAM,MAAK;IAAK,eAAA;GAAa,CAAA;EACrC,CAAA;EAER,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAQ;EAAY,CAAA;EAC3C,KACC,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EAAO;GAClB,cAAY,UAAU;GACZ;GACV,UAAU,MAAM;IAEd,AADA,EAAE,gBAAgB,GAClB,EAAS;GACX;GACA,UAAU,IAAW,KAAK;aAE1B,kBAAC,GAAD;IAAM,MAAM;IAAO,MAAK;IAAK,eAAA;GAAa,CAAA;EACpC,CAAA;CAEV,EAAA,CAAA;CAoBJ,OAjBI,IAEA,kBAAC,UAAD;EACE,MAAK;EACL,MAAK;EACL,gBAAc;EACd,cAAY;EACF;EACV,SAAS;EACT,WAAW;EACX,GAAK;YAEJ;CACK,CAAA,IAKV,kBAAC,QAAD;EAAM,WAAW;EAAa,GAAI;YAC/B;CACG,CAAA;AAEV"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Chip/Chip.cjs`);exports.Chip=e.Chip;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Chip/Chip.cjs");exports.Chip=e.Chip;
@@ -1,2 +1,2 @@
1
- const e=require(`./Clamp.module.css.cjs`);let t=require(`react/jsx-runtime`);function n({maximumSize:n=600,children:r,className:i,style:a,...o}){return(0,t.jsx)(`div`,{className:[e.default.clamp,i].filter(Boolean).join(` `),style:{maxWidth:n,...a},...o,children:r})}exports.Clamp=n;
1
+ const e=require("./Clamp.module.css.cjs");let t=require("react/jsx-runtime");var n=({maximumSize:n=600,children:r,className:i,style:a,...o})=>(0,t.jsx)(`div`,{className:[e.default.clamp,i].filter(Boolean).join(` `),style:{maxWidth:n,...a},...o,children:r});exports.Clamp=n;
2
2
  //# sourceMappingURL=Clamp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Clamp.cjs","names":[],"sources":["../../../src/components/Clamp/Clamp.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './Clamp.module.css';\n\nexport interface ClampProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum content width in pixels.\n * The element shrinks freely below this value.\n * Defaults to `600` — the Adwaita recommended narrow-content width.\n */\n maximumSize?: number;\n /**\n * Fractional width (0–1) of the viewport to use when the viewport is\n * narrower than `maximumSize`. Useful for keeping a comfortable margin\n * on medium-width screens. Set to `1` (default) to always fill the width.\n */\n tighteningThreshold?: number;\n children?: ReactNode;\n}\n\n/**\n * Constrains its child to a maximum width while allowing it to shrink freely,\n * mirroring the Adwaita `AdwClamp` widget.\n *\n * Use this to keep readable line lengths and comfortable reading widths on\n * large screens while still filling the available space on narrow screens.\n *\n * @example\n * // Settings page — content never wider than 600 px\n * <Clamp maximumSize={600}>\n * <BoxedList>…</BoxedList>\n * </Clamp>\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Clamp.html\n */\nexport function Clamp({ maximumSize = 600, children, className, style, ...props }: ClampProps) {\n return (\n <div\n className={[styles.clamp, className].filter(Boolean).join(' ')}\n style={{ maxWidth: maximumSize, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n"],"mappings":"6EAmCA,SAAgB,EAAM,CAAE,cAAc,IAAK,WAAU,YAAW,QAAO,GAAG,GAAqB,CAC7F,OACE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC9D,MAAO,CAAE,SAAU,EAAa,GAAG,EAAO,CAC1C,GAAI,EAEH,WACG,CAAA"}
1
+ {"version":3,"file":"Clamp.cjs","names":[],"sources":["../../../src/components/Clamp/Clamp.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './Clamp.module.css';\n\nexport interface ClampProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum content width in pixels.\n * The element shrinks freely below this value.\n * Defaults to `600` — the Adwaita recommended narrow-content width.\n */\n maximumSize?: number;\n /**\n * Fractional width (0–1) of the viewport to use when the viewport is\n * narrower than `maximumSize`. Useful for keeping a comfortable margin\n * on medium-width screens. Set to `1` (default) to always fill the width.\n */\n tighteningThreshold?: number;\n children?: ReactNode;\n}\n\n/**\n * Constrains its child to a maximum width while allowing it to shrink freely,\n * mirroring the Adwaita `AdwClamp` widget.\n *\n * Use this to keep readable line lengths and comfortable reading widths on\n * large screens while still filling the available space on narrow screens.\n *\n * @example\n * // Settings page — content never wider than 600 px\n * <Clamp maximumSize={600}>\n * <BoxedList>…</BoxedList>\n * </Clamp>\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Clamp.html\n */\nexport const Clamp = ({ maximumSize = 600, children, className, style, ...props }: ClampProps) => {\n return (\n <div\n className={[styles.clamp, className].filter(Boolean).join(' ')}\n style={{ maxWidth: maximumSize, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n};\n"],"mappings":"6EAmCA,IAAa,GAAS,CAAE,cAAc,IAAK,WAAU,YAAW,QAAO,GAAG,MAEtE,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,CAAC,EAAA,QAAO,MAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAC7D,MAAO,CAAE,SAAU,EAAa,GAAG,CAAM,EACzC,GAAI,EAEH,UACE,CAAA"}
@@ -29,4 +29,4 @@ export interface ClampProps extends HTMLAttributes<HTMLDivElement> {
29
29
  *
30
30
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Clamp.html
31
31
  */
32
- export declare function Clamp({ maximumSize, children, className, style, ...props }: ClampProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare const Clamp: ({ maximumSize, children, className, style, ...props }: ClampProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,17 +1,15 @@
1
1
  import e from "./Clamp.module.css.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  //#region src/components/Clamp/Clamp.tsx
4
- function n({ maximumSize: n = 600, children: r, className: i, style: a, ...o }) {
5
- return /* @__PURE__ */ t("div", {
6
- className: [e.clamp, i].filter(Boolean).join(" "),
7
- style: {
8
- maxWidth: n,
9
- ...a
10
- },
11
- ...o,
12
- children: r
13
- });
14
- }
4
+ var n = ({ maximumSize: n = 600, children: r, className: i, style: a, ...o }) => /* @__PURE__ */ t("div", {
5
+ className: [e.clamp, i].filter(Boolean).join(" "),
6
+ style: {
7
+ maxWidth: n,
8
+ ...a
9
+ },
10
+ ...o,
11
+ children: r
12
+ });
15
13
  //#endregion
16
14
  export { n as Clamp };
17
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"Clamp.js","names":[],"sources":["../../../src/components/Clamp/Clamp.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './Clamp.module.css';\n\nexport interface ClampProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum content width in pixels.\n * The element shrinks freely below this value.\n * Defaults to `600` — the Adwaita recommended narrow-content width.\n */\n maximumSize?: number;\n /**\n * Fractional width (0–1) of the viewport to use when the viewport is\n * narrower than `maximumSize`. Useful for keeping a comfortable margin\n * on medium-width screens. Set to `1` (default) to always fill the width.\n */\n tighteningThreshold?: number;\n children?: ReactNode;\n}\n\n/**\n * Constrains its child to a maximum width while allowing it to shrink freely,\n * mirroring the Adwaita `AdwClamp` widget.\n *\n * Use this to keep readable line lengths and comfortable reading widths on\n * large screens while still filling the available space on narrow screens.\n *\n * @example\n * // Settings page — content never wider than 600 px\n * <Clamp maximumSize={600}>\n * <BoxedList>…</BoxedList>\n * </Clamp>\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Clamp.html\n */\nexport function Clamp({ maximumSize = 600, children, className, style, ...props }: ClampProps) {\n return (\n <div\n className={[styles.clamp, className].filter(Boolean).join(' ')}\n style={{ maxWidth: maximumSize, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n"],"mappings":";;;AAmCA,SAAgB,EAAM,EAAE,iBAAc,KAAK,aAAU,cAAW,UAAO,GAAG,KAAqB;AAC7F,QACE,kBAAC,OAAD;EACE,WAAW,CAAC,EAAO,OAAO,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAC9D,OAAO;GAAE,UAAU;GAAa,GAAG;GAAO;EAC1C,GAAI;EAEH;EACG,CAAA"}
1
+ {"version":3,"file":"Clamp.js","names":[],"sources":["../../../src/components/Clamp/Clamp.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport styles from './Clamp.module.css';\n\nexport interface ClampProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Maximum content width in pixels.\n * The element shrinks freely below this value.\n * Defaults to `600` — the Adwaita recommended narrow-content width.\n */\n maximumSize?: number;\n /**\n * Fractional width (0–1) of the viewport to use when the viewport is\n * narrower than `maximumSize`. Useful for keeping a comfortable margin\n * on medium-width screens. Set to `1` (default) to always fill the width.\n */\n tighteningThreshold?: number;\n children?: ReactNode;\n}\n\n/**\n * Constrains its child to a maximum width while allowing it to shrink freely,\n * mirroring the Adwaita `AdwClamp` widget.\n *\n * Use this to keep readable line lengths and comfortable reading widths on\n * large screens while still filling the available space on narrow screens.\n *\n * @example\n * // Settings page — content never wider than 600 px\n * <Clamp maximumSize={600}>\n * <BoxedList>…</BoxedList>\n * </Clamp>\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Clamp.html\n */\nexport const Clamp = ({ maximumSize = 600, children, className, style, ...props }: ClampProps) => {\n return (\n <div\n className={[styles.clamp, className].filter(Boolean).join(' ')}\n style={{ maxWidth: maximumSize, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n};\n"],"mappings":";;;AAmCA,IAAa,KAAS,EAAE,iBAAc,KAAK,aAAU,cAAW,UAAO,GAAG,QAEtE,kBAAC,OAAD;CACE,WAAW,CAAC,EAAO,OAAO,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;CAC7D,OAAO;EAAE,UAAU;EAAa,GAAG;CAAM;CACzC,GAAI;CAEH;AACE,CAAA"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Clamp/Clamp.cjs`);exports.Clamp=e.Clamp;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./Clamp/Clamp.cjs");exports.Clamp=e.Clamp;
@@ -1,2 +1,2 @@
1
- const e=require(`./ColorPicker.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r({color:t,selected:r=!1,size:i=`md`,onSelect:a,disabled:o=!1,className:s,style:c,"aria-label":l,...u}){return(0,n.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":r,"aria-label":l??t,disabled:o,className:[e.default.swatch,e.default[`swatch-${i}`],r?e.default.swatchSelected:null,s].filter(Boolean).join(` `),style:{"--swatch-color":t,...c},onClick:()=>a?.(t),...u,children:r&&(0,n.jsx)(`svg`,{className:e.default.checkmark,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,n.jsx)(`path`,{d:`M3 8l3.5 3.5L13 5`,stroke:`white`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})})})}var i=[{value:`#3584e4`,label:`Blue`},{value:`#2ec27e`,label:`Green`},{value:`#f6d32d`,label:`Yellow`},{value:`#ff7800`,label:`Orange`},{value:`#e01b24`,label:`Red`},{value:`#9141ac`,label:`Purple`},{value:`#986a44`,label:`Brown`},{value:`#2190a4`,label:`Teal`},{value:`#5e5c64`,label:`Slate`}];function a({value:a,onChange:o,colors:s=i,allowCustom:c=!1,size:l=`md`,className:u,style:d,"aria-label":f,...p}){let m=(0,t.useRef)(null),h=s.findIndex(e=>e.value===a),g=h>=0?h:0;function _(e){let t=Array.from(e.currentTarget.querySelectorAll(`[role="radio"]:not([disabled])`)),n=document.activeElement,r=t.indexOf(n);if(r===-1)return;let i=-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),i=(r+1)%t.length):(e.key===`ArrowLeft`||e.key===`ArrowUp`)&&(e.preventDefault(),i=(r-1+t.length)%t.length),i>=0){t[i].focus();let e=t[i].dataset.color;e&&o?.(e)}}let v=a!==void 0&&!s.some(e=>e.value===a);return(0,n.jsxs)(`div`,{role:`radiogroup`,"aria-label":f??`Color`,className:[e.default.picker,u].filter(Boolean).join(` `),style:d,onKeyDown:_,...p,children:[s.map((e,t)=>(0,n.jsx)(r,{color:e.value,size:l,selected:e.value===a,onSelect:o,"aria-label":e.label??e.value,tabIndex:t===g&&!v?0:-1,"data-color":e.value},e.value)),c&&(0,n.jsxs)(n.Fragment,{children:[v&&a&&(0,n.jsx)(r,{color:a,size:l,selected:!0,onSelect:()=>m.current?.click(),"aria-label":`Custom color`,tabIndex:0,"data-color":a}),(0,n.jsx)(`button`,{type:`button`,"aria-label":`Choose custom color`,className:[e.default.swatch,e.default[`swatch-${l}`],e.default.customButton].filter(Boolean).join(` `),tabIndex:-1,onClick:()=>m.current?.click(),children:(0,n.jsx)(`svg`,{viewBox:`0 0 16 16`,className:e.default.plusIcon,"aria-hidden":`true`,children:(0,n.jsx)(`path`,{d:`M8 3v10M3 8h10`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`})})}),(0,n.jsx)(`input`,{ref:m,type:`color`,value:v&&a?a:`#000000`,className:e.default.nativeInput,"aria-hidden":`true`,tabIndex:-1,onChange:e=>o?.(e.target.value)})]})]})}exports.ColorPicker=a,exports.ColorSwatch=r,exports.GNOME_PALETTE=i;
1
+ const e=require("./ColorPicker.module.css.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=({color:t,selected:r=!1,size:i=`md`,onSelect:a,disabled:o=!1,className:s,style:c,"aria-label":l,...u})=>(0,n.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":r,"aria-label":l??t,disabled:o,className:[e.default.swatch,e.default[`swatch-${i}`],r?e.default.swatchSelected:null,s].filter(Boolean).join(` `),style:{"--swatch-color":t,...c},onClick:()=>a?.(t),...u,children:r&&(0,n.jsx)(`svg`,{className:e.default.checkmark,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`,children:(0,n.jsx)(`path`,{d:`M3 8l3.5 3.5L13 5`,stroke:`white`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`})})}),i=[{value:`#3584e4`,label:`Blue`},{value:`#2ec27e`,label:`Green`},{value:`#f6d32d`,label:`Yellow`},{value:`#ff7800`,label:`Orange`},{value:`#e01b24`,label:`Red`},{value:`#9141ac`,label:`Purple`},{value:`#986a44`,label:`Brown`},{value:`#2190a4`,label:`Teal`},{value:`#5e5c64`,label:`Slate`}],a=({value:a,onChange:o,colors:s=i,allowCustom:c=!1,size:l=`md`,className:u,style:d,"aria-label":f,...p})=>{let m=(0,t.useRef)(null),h=s.findIndex(e=>e.value===a),g=h>=0?h:0;function _(e){let t=Array.from(e.currentTarget.querySelectorAll(`[role="radio"]:not([disabled])`)),n=document.activeElement,r=t.indexOf(n);if(r===-1)return;let i=-1;if(e.key===`ArrowRight`||e.key===`ArrowDown`?(e.preventDefault(),i=(r+1)%t.length):(e.key===`ArrowLeft`||e.key===`ArrowUp`)&&(e.preventDefault(),i=(r-1+t.length)%t.length),i>=0){t[i].focus();let e=t[i].dataset.color;e&&o?.(e)}}let v=a!==void 0&&!s.some(e=>e.value===a);return(0,n.jsxs)(`div`,{role:`radiogroup`,"aria-label":f??`Color`,className:[e.default.picker,u].filter(Boolean).join(` `),style:d,onKeyDown:_,...p,children:[s.map((e,t)=>(0,n.jsx)(r,{color:e.value,size:l,selected:e.value===a,onSelect:o,"aria-label":e.label??e.value,tabIndex:t===g&&!v?0:-1,"data-color":e.value},e.value)),c&&(0,n.jsxs)(n.Fragment,{children:[v&&a&&(0,n.jsx)(r,{color:a,size:l,selected:!0,onSelect:()=>m.current?.click(),"aria-label":`Custom color`,tabIndex:0,"data-color":a}),(0,n.jsx)(`button`,{type:`button`,"aria-label":`Choose custom color`,className:[e.default.swatch,e.default[`swatch-${l}`],e.default.customButton].filter(Boolean).join(` `),tabIndex:-1,onClick:()=>m.current?.click(),children:(0,n.jsx)(`svg`,{viewBox:`0 0 16 16`,className:e.default.plusIcon,"aria-hidden":`true`,children:(0,n.jsx)(`path`,{d:`M8 3v10M3 8h10`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`})})}),(0,n.jsx)(`input`,{ref:m,type:`color`,value:v&&a?a:`#000000`,className:e.default.nativeInput,"aria-hidden":`true`,tabIndex:-1,onChange:e=>o?.(e.target.value)})]})]})};exports.ColorPicker=a,exports.ColorSwatch=r,exports.GNOME_PALETTE=i;
2
2
  //# sourceMappingURL=ColorPicker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.cjs","names":[],"sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type KeyboardEvent, useRef } from 'react';\n\nimport styles from './ColorPicker.module.css';\n\n// ─── ColorSwatch ─────────────────────────────────────────────────────────────\n\nexport type ColorSwatchSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSelect'> {\n /** CSS color value displayed as the swatch background. */\n color: string;\n /** Whether this swatch is the currently selected color. */\n selected?: boolean;\n /** Swatch diameter. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n /** Called when the user clicks or activates the swatch. */\n onSelect?: (color: string) => void;\n /** Accessible label. Defaults to the color value. */\n 'aria-label'?: string;\n disabled?: boolean;\n}\n\n/**\n * Single circular color swatch button.\n *\n * Can be used standalone or composed inside `ColorPicker`.\n * Shows a white checkmark when `selected`.\n */\nexport function ColorSwatch({\n color,\n selected = false,\n size = 'md',\n onSelect,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorSwatchProps) {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n aria-label={ariaLabel ?? color}\n disabled={disabled}\n className={[\n styles.swatch,\n styles[`swatch-${size}`],\n selected ? styles.swatchSelected : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--swatch-color': color, ...style } as CSSProperties}\n onClick={() => onSelect?.(color)}\n {...props}\n >\n {selected && (\n <svg className={styles.checkmark} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n );\n}\n\n// ─── ColorPicker ─────────────────────────────────────────────────────────────\n\nexport interface ColorPickerColor {\n /** CSS color value (hex recommended). */\n value: string;\n /** Human-readable name shown as aria-label and tooltip. */\n label?: string;\n}\n\n/** Default Adwaita-named palette (matches Avatar color set). */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const GNOME_PALETTE: ColorPickerColor[] = [\n { value: '#3584e4', label: 'Blue' },\n { value: '#2ec27e', label: 'Green' },\n { value: '#f6d32d', label: 'Yellow' },\n { value: '#ff7800', label: 'Orange' },\n { value: '#e01b24', label: 'Red' },\n { value: '#9141ac', label: 'Purple' },\n { value: '#986a44', label: 'Brown' },\n { value: '#2190a4', label: 'Teal' },\n { value: '#5e5c64', label: 'Slate' },\n];\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Currently selected color value. */\n value?: string;\n /** Called when the user selects a color. */\n onChange?: (value: string) => void;\n /**\n * Palette of colors to display.\n * Defaults to `GNOME_PALETTE` (the 9 Adwaita named colors).\n */\n colors?: ColorPickerColor[];\n /**\n * Show a \"Custom…\" button at the end that opens a native color picker.\n * When a custom color is chosen it is passed to `onChange` and shown\n * as a selected swatch until another palette color is picked.\n * Defaults to `false`.\n */\n allowCustom?: boolean;\n /** Swatch size. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n}\n\n/**\n * Color palette picker following the Adwaita `GtkColorButton` + swatch pattern.\n *\n * Renders a row of circular `ColorSwatch` items. Keyboard navigation uses\n * arrow keys (roving tabindex). Optionally adds a \"Custom…\" button backed\n * by a hidden `<input type=\"color\">`.\n *\n * ```tsx\n * <ColorPicker value={color} onChange={setColor} />\n * <ColorPicker value={color} onChange={setColor} allowCustom />\n * <ColorPicker\n * value={color}\n * onChange={setColor}\n * colors={[{ value: \"#ff0000\", label: \"Red\" }, …]}\n * />\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ColorButton.html\n */\nexport function ColorPicker({\n value,\n onChange,\n colors = GNOME_PALETTE,\n allowCustom = false,\n size = 'md',\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorPickerProps) {\n const customInputRef = useRef<HTMLInputElement>(null);\n\n // Roving tabindex: only the selected (or first) swatch is in the tab order.\n const activeIndex = colors.findIndex((c) => c.value === value);\n const rovingIndex = activeIndex >= 0 ? activeIndex : 0;\n\n // Arrow-key navigation within the radiogroup.\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const all = Array.from(\n e.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([disabled])'),\n );\n const focused = document.activeElement as HTMLButtonElement;\n const idx = all.indexOf(focused);\n\n if (idx === -1) {\n return;\n }\n\n let next = -1;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n next = (idx + 1) % all.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n next = (idx - 1 + all.length) % all.length;\n }\n\n if (next >= 0) {\n all[next].focus();\n const color = all[next].dataset.color;\n\n if (color) {\n onChange?.(color);\n }\n }\n }\n\n // Decide whether the current `value` is a custom (not in palette) color.\n const isCustom = value !== undefined && !colors.some((c) => c.value === value);\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel ?? 'Color'}\n className={[styles.picker, className].filter(Boolean).join(' ')}\n style={style}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {colors.map((color, i) => (\n <ColorSwatch\n key={color.value}\n color={color.value}\n size={size}\n selected={color.value === value}\n onSelect={onChange}\n aria-label={color.label ?? color.value}\n tabIndex={i === rovingIndex && !isCustom ? 0 : -1}\n data-color={color.value}\n />\n ))}\n\n {allowCustom && (\n <>\n {/* Custom swatch — shows the picked color when active */}\n {isCustom && value && (\n <ColorSwatch\n color={value}\n size={size}\n selected\n onSelect={() => customInputRef.current?.click()}\n aria-label=\"Custom color\"\n tabIndex={0}\n data-color={value}\n />\n )}\n\n {/* + button that opens the native color input */}\n <button\n type=\"button\"\n aria-label=\"Choose custom color\"\n className={[styles.swatch, styles[`swatch-${size}`], styles.customButton]\n .filter(Boolean)\n .join(' ')}\n tabIndex={isCustom ? -1 : -1}\n onClick={() => customInputRef.current?.click()}\n >\n <svg viewBox=\"0 0 16 16\" className={styles.plusIcon} aria-hidden=\"true\">\n <path\n d=\"M8 3v10M3 8h10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n <input\n ref={customInputRef}\n type=\"color\"\n value={isCustom && value ? value : '#000000'}\n className={styles.nativeInput}\n aria-hidden=\"true\"\n tabIndex={-1}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.cjs","names":[],"sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type KeyboardEvent, useRef } from 'react';\n\nimport styles from './ColorPicker.module.css';\n\n// ─── ColorSwatch ─────────────────────────────────────────────────────────────\n\nexport type ColorSwatchSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSelect'> {\n /** CSS color value displayed as the swatch background. */\n color: string;\n /** Whether this swatch is the currently selected color. */\n selected?: boolean;\n /** Swatch diameter. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n /** Called when the user clicks or activates the swatch. */\n onSelect?: (color: string) => void;\n /** Accessible label. Defaults to the color value. */\n 'aria-label'?: string;\n disabled?: boolean;\n}\n\n/**\n * Single circular color swatch button.\n *\n * Can be used standalone or composed inside `ColorPicker`.\n * Shows a white checkmark when `selected`.\n */\nexport const ColorSwatch = ({\n color,\n selected = false,\n size = 'md',\n onSelect,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorSwatchProps) => {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n aria-label={ariaLabel ?? color}\n disabled={disabled}\n className={[\n styles.swatch,\n styles[`swatch-${size}`],\n selected ? styles.swatchSelected : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--swatch-color': color, ...style } as CSSProperties}\n onClick={() => onSelect?.(color)}\n {...props}\n >\n {selected && (\n <svg className={styles.checkmark} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n );\n};\n\n// ─── ColorPicker ─────────────────────────────────────────────────────────────\n\nexport interface ColorPickerColor {\n /** CSS color value (hex recommended). */\n value: string;\n /** Human-readable name shown as aria-label and tooltip. */\n label?: string;\n}\n\n/** Default Adwaita-named palette (matches Avatar color set). */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const GNOME_PALETTE: ColorPickerColor[] = [\n { value: '#3584e4', label: 'Blue' },\n { value: '#2ec27e', label: 'Green' },\n { value: '#f6d32d', label: 'Yellow' },\n { value: '#ff7800', label: 'Orange' },\n { value: '#e01b24', label: 'Red' },\n { value: '#9141ac', label: 'Purple' },\n { value: '#986a44', label: 'Brown' },\n { value: '#2190a4', label: 'Teal' },\n { value: '#5e5c64', label: 'Slate' },\n];\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Currently selected color value. */\n value?: string;\n /** Called when the user selects a color. */\n onChange?: (value: string) => void;\n /**\n * Palette of colors to display.\n * Defaults to `GNOME_PALETTE` (the 9 Adwaita named colors).\n */\n colors?: ColorPickerColor[];\n /**\n * Show a \"Custom…\" button at the end that opens a native color picker.\n * When a custom color is chosen it is passed to `onChange` and shown\n * as a selected swatch until another palette color is picked.\n * Defaults to `false`.\n */\n allowCustom?: boolean;\n /** Swatch size. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n}\n\n/**\n * Color palette picker following the Adwaita `GtkColorButton` + swatch pattern.\n *\n * Renders a row of circular `ColorSwatch` items. Keyboard navigation uses\n * arrow keys (roving tabindex). Optionally adds a \"Custom…\" button backed\n * by a hidden `<input type=\"color\">`.\n *\n * ```tsx\n * <ColorPicker value={color} onChange={setColor} />\n * <ColorPicker value={color} onChange={setColor} allowCustom />\n * <ColorPicker\n * value={color}\n * onChange={setColor}\n * colors={[{ value: \"#ff0000\", label: \"Red\" }, …]}\n * />\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ColorButton.html\n */\nexport const ColorPicker = ({\n value,\n onChange,\n colors = GNOME_PALETTE,\n allowCustom = false,\n size = 'md',\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorPickerProps) => {\n const customInputRef = useRef<HTMLInputElement>(null);\n\n // Roving tabindex: only the selected (or first) swatch is in the tab order.\n const activeIndex = colors.findIndex((c) => c.value === value);\n const rovingIndex = activeIndex >= 0 ? activeIndex : 0;\n\n // Arrow-key navigation within the radiogroup.\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const all = Array.from(\n e.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([disabled])'),\n );\n const focused = document.activeElement as HTMLButtonElement;\n const idx = all.indexOf(focused);\n\n if (idx === -1) {\n return;\n }\n\n let next = -1;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n next = (idx + 1) % all.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n next = (idx - 1 + all.length) % all.length;\n }\n\n if (next >= 0) {\n all[next].focus();\n const color = all[next].dataset.color;\n\n if (color) {\n onChange?.(color);\n }\n }\n }\n\n // Decide whether the current `value` is a custom (not in palette) color.\n const isCustom = value !== undefined && !colors.some((c) => c.value === value);\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel ?? 'Color'}\n className={[styles.picker, className].filter(Boolean).join(' ')}\n style={style}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {colors.map((color, i) => (\n <ColorSwatch\n key={color.value}\n color={color.value}\n size={size}\n selected={color.value === value}\n onSelect={onChange}\n aria-label={color.label ?? color.value}\n tabIndex={i === rovingIndex && !isCustom ? 0 : -1}\n data-color={color.value}\n />\n ))}\n\n {allowCustom && (\n <>\n {/* Custom swatch — shows the picked color when active */}\n {isCustom && value && (\n <ColorSwatch\n color={value}\n size={size}\n selected\n onSelect={() => customInputRef.current?.click()}\n aria-label=\"Custom color\"\n tabIndex={0}\n data-color={value}\n />\n )}\n\n {/* + button that opens the native color input */}\n <button\n type=\"button\"\n aria-label=\"Choose custom color\"\n className={[styles.swatch, styles[`swatch-${size}`], styles.customButton]\n .filter(Boolean)\n .join(' ')}\n tabIndex={isCustom ? -1 : -1}\n onClick={() => customInputRef.current?.click()}\n >\n <svg viewBox=\"0 0 16 16\" className={styles.plusIcon} aria-hidden=\"true\">\n <path\n d=\"M8 3v10M3 8h10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n <input\n ref={customInputRef}\n type=\"color\"\n value={isCustom && value ? value : '#000000'}\n className={styles.nativeInput}\n aria-hidden=\"true\"\n tabIndex={-1}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -19,7 +19,7 @@ export interface ColorSwatchProps extends Omit<HTMLAttributes<HTMLButtonElement>
19
19
  * Can be used standalone or composed inside `ColorPicker`.
20
20
  * Shows a white checkmark when `selected`.
21
21
  */
22
- export declare function ColorSwatch({ color, selected, size, onSelect, disabled, className, style, 'aria-label': ariaLabel, ...props }: ColorSwatchProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare const ColorSwatch: ({ color, selected, size, onSelect, disabled, className, style, "aria-label": ariaLabel, ...props }: ColorSwatchProps) => import("react/jsx-runtime").JSX.Element;
23
23
  export interface ColorPickerColor {
24
24
  /** CSS color value (hex recommended). */
25
25
  value: string;
@@ -67,4 +67,4 @@ export interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, '
67
67
  *
68
68
  * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ColorButton.html
69
69
  */
70
- export declare function ColorPicker({ value, onChange, colors, allowCustom, size, className, style, 'aria-label': ariaLabel, ...props }: ColorPickerProps): import("react/jsx-runtime").JSX.Element;
70
+ export declare const ColorPicker: ({ value, onChange, colors, allowCustom, size, className, style, "aria-label": ariaLabel, ...props }: ColorPickerProps) => import("react/jsx-runtime").JSX.Element;
@@ -2,41 +2,38 @@ import e from "./ColorPicker.module.css.js";
2
2
  import { useRef as t } from "react";
3
3
  import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
4
  //#region src/components/ColorPicker/ColorPicker.tsx
5
- function a({ color: t, selected: n = !1, size: i = "md", onSelect: a, disabled: o = !1, className: s, style: c, "aria-label": l, ...u }) {
6
- return /* @__PURE__ */ r("button", {
7
- type: "button",
8
- role: "radio",
9
- "aria-checked": n,
10
- "aria-label": l ?? t,
11
- disabled: o,
12
- className: [
13
- e.swatch,
14
- e[`swatch-${i}`],
15
- n ? e.swatchSelected : null,
16
- s
17
- ].filter(Boolean).join(" "),
18
- style: {
19
- "--swatch-color": t,
20
- ...c
21
- },
22
- onClick: () => a?.(t),
23
- ...u,
24
- children: n && /* @__PURE__ */ r("svg", {
25
- className: e.checkmark,
26
- viewBox: "0 0 16 16",
27
- fill: "none",
28
- "aria-hidden": "true",
29
- children: /* @__PURE__ */ r("path", {
30
- d: "M3 8l3.5 3.5L13 5",
31
- stroke: "white",
32
- strokeWidth: "2",
33
- strokeLinecap: "round",
34
- strokeLinejoin: "round"
35
- })
5
+ var a = ({ color: t, selected: n = !1, size: i = "md", onSelect: a, disabled: o = !1, className: s, style: c, "aria-label": l, ...u }) => /* @__PURE__ */ r("button", {
6
+ type: "button",
7
+ role: "radio",
8
+ "aria-checked": n,
9
+ "aria-label": l ?? t,
10
+ disabled: o,
11
+ className: [
12
+ e.swatch,
13
+ e[`swatch-${i}`],
14
+ n ? e.swatchSelected : null,
15
+ s
16
+ ].filter(Boolean).join(" "),
17
+ style: {
18
+ "--swatch-color": t,
19
+ ...c
20
+ },
21
+ onClick: () => a?.(t),
22
+ ...u,
23
+ children: n && /* @__PURE__ */ r("svg", {
24
+ className: e.checkmark,
25
+ viewBox: "0 0 16 16",
26
+ fill: "none",
27
+ "aria-hidden": "true",
28
+ children: /* @__PURE__ */ r("path", {
29
+ d: "M3 8l3.5 3.5L13 5",
30
+ stroke: "white",
31
+ strokeWidth: "2",
32
+ strokeLinecap: "round",
33
+ strokeLinejoin: "round"
36
34
  })
37
- });
38
- }
39
- var o = [
35
+ })
36
+ }), o = [
40
37
  {
41
38
  value: "#3584e4",
42
39
  label: "Blue"
@@ -73,8 +70,7 @@ var o = [
73
70
  value: "#5e5c64",
74
71
  label: "Slate"
75
72
  }
76
- ];
77
- function s({ value: s, onChange: c, colors: l = o, allowCustom: u = !1, size: d = "md", className: f, style: p, "aria-label": m, ...h }) {
73
+ ], s = ({ value: s, onChange: c, colors: l = o, allowCustom: u = !1, size: d = "md", className: f, style: p, "aria-label": m, ...h }) => {
78
74
  let g = t(null), _ = l.findIndex((e) => e.value === s), v = _ >= 0 ? _ : 0;
79
75
  function y(e) {
80
76
  let t = Array.from(e.currentTarget.querySelectorAll("[role=\"radio\"]:not([disabled])")), n = document.activeElement, r = t.indexOf(n);
@@ -145,7 +141,7 @@ function s({ value: s, onChange: c, colors: l = o, allowCustom: u = !1, size: d
145
141
  })
146
142
  ] })]
147
143
  });
148
- }
144
+ };
149
145
  //#endregion
150
146
  export { s as ColorPicker, a as ColorSwatch, o as GNOME_PALETTE };
151
147
 
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.js","names":[],"sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type KeyboardEvent, useRef } from 'react';\n\nimport styles from './ColorPicker.module.css';\n\n// ─── ColorSwatch ─────────────────────────────────────────────────────────────\n\nexport type ColorSwatchSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSelect'> {\n /** CSS color value displayed as the swatch background. */\n color: string;\n /** Whether this swatch is the currently selected color. */\n selected?: boolean;\n /** Swatch diameter. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n /** Called when the user clicks or activates the swatch. */\n onSelect?: (color: string) => void;\n /** Accessible label. Defaults to the color value. */\n 'aria-label'?: string;\n disabled?: boolean;\n}\n\n/**\n * Single circular color swatch button.\n *\n * Can be used standalone or composed inside `ColorPicker`.\n * Shows a white checkmark when `selected`.\n */\nexport function ColorSwatch({\n color,\n selected = false,\n size = 'md',\n onSelect,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorSwatchProps) {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n aria-label={ariaLabel ?? color}\n disabled={disabled}\n className={[\n styles.swatch,\n styles[`swatch-${size}`],\n selected ? styles.swatchSelected : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--swatch-color': color, ...style } as CSSProperties}\n onClick={() => onSelect?.(color)}\n {...props}\n >\n {selected && (\n <svg className={styles.checkmark} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n );\n}\n\n// ─── ColorPicker ─────────────────────────────────────────────────────────────\n\nexport interface ColorPickerColor {\n /** CSS color value (hex recommended). */\n value: string;\n /** Human-readable name shown as aria-label and tooltip. */\n label?: string;\n}\n\n/** Default Adwaita-named palette (matches Avatar color set). */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const GNOME_PALETTE: ColorPickerColor[] = [\n { value: '#3584e4', label: 'Blue' },\n { value: '#2ec27e', label: 'Green' },\n { value: '#f6d32d', label: 'Yellow' },\n { value: '#ff7800', label: 'Orange' },\n { value: '#e01b24', label: 'Red' },\n { value: '#9141ac', label: 'Purple' },\n { value: '#986a44', label: 'Brown' },\n { value: '#2190a4', label: 'Teal' },\n { value: '#5e5c64', label: 'Slate' },\n];\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Currently selected color value. */\n value?: string;\n /** Called when the user selects a color. */\n onChange?: (value: string) => void;\n /**\n * Palette of colors to display.\n * Defaults to `GNOME_PALETTE` (the 9 Adwaita named colors).\n */\n colors?: ColorPickerColor[];\n /**\n * Show a \"Custom…\" button at the end that opens a native color picker.\n * When a custom color is chosen it is passed to `onChange` and shown\n * as a selected swatch until another palette color is picked.\n * Defaults to `false`.\n */\n allowCustom?: boolean;\n /** Swatch size. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n}\n\n/**\n * Color palette picker following the Adwaita `GtkColorButton` + swatch pattern.\n *\n * Renders a row of circular `ColorSwatch` items. Keyboard navigation uses\n * arrow keys (roving tabindex). Optionally adds a \"Custom…\" button backed\n * by a hidden `<input type=\"color\">`.\n *\n * ```tsx\n * <ColorPicker value={color} onChange={setColor} />\n * <ColorPicker value={color} onChange={setColor} allowCustom />\n * <ColorPicker\n * value={color}\n * onChange={setColor}\n * colors={[{ value: \"#ff0000\", label: \"Red\" }, …]}\n * />\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ColorButton.html\n */\nexport function ColorPicker({\n value,\n onChange,\n colors = GNOME_PALETTE,\n allowCustom = false,\n size = 'md',\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorPickerProps) {\n const customInputRef = useRef<HTMLInputElement>(null);\n\n // Roving tabindex: only the selected (or first) swatch is in the tab order.\n const activeIndex = colors.findIndex((c) => c.value === value);\n const rovingIndex = activeIndex >= 0 ? activeIndex : 0;\n\n // Arrow-key navigation within the radiogroup.\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const all = Array.from(\n e.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([disabled])'),\n );\n const focused = document.activeElement as HTMLButtonElement;\n const idx = all.indexOf(focused);\n\n if (idx === -1) {\n return;\n }\n\n let next = -1;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n next = (idx + 1) % all.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n next = (idx - 1 + all.length) % all.length;\n }\n\n if (next >= 0) {\n all[next].focus();\n const color = all[next].dataset.color;\n\n if (color) {\n onChange?.(color);\n }\n }\n }\n\n // Decide whether the current `value` is a custom (not in palette) color.\n const isCustom = value !== undefined && !colors.some((c) => c.value === value);\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel ?? 'Color'}\n className={[styles.picker, className].filter(Boolean).join(' ')}\n style={style}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {colors.map((color, i) => (\n <ColorSwatch\n key={color.value}\n color={color.value}\n size={size}\n selected={color.value === value}\n onSelect={onChange}\n aria-label={color.label ?? color.value}\n tabIndex={i === rovingIndex && !isCustom ? 0 : -1}\n data-color={color.value}\n />\n ))}\n\n {allowCustom && (\n <>\n {/* Custom swatch — shows the picked color when active */}\n {isCustom && value && (\n <ColorSwatch\n color={value}\n size={size}\n selected\n onSelect={() => customInputRef.current?.click()}\n aria-label=\"Custom color\"\n tabIndex={0}\n data-color={value}\n />\n )}\n\n {/* + button that opens the native color input */}\n <button\n type=\"button\"\n aria-label=\"Choose custom color\"\n className={[styles.swatch, styles[`swatch-${size}`], styles.customButton]\n .filter(Boolean)\n .join(' ')}\n tabIndex={isCustom ? -1 : -1}\n onClick={() => customInputRef.current?.click()}\n >\n <svg viewBox=\"0 0 16 16\" className={styles.plusIcon} aria-hidden=\"true\">\n <path\n d=\"M8 3v10M3 8h10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n <input\n ref={customInputRef}\n type=\"color\"\n value={isCustom && value ? value : '#000000'}\n className={styles.nativeInput}\n aria-hidden=\"true\"\n tabIndex={-1}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPicker.js","names":[],"sources":["../../../src/components/ColorPicker/ColorPicker.tsx"],"sourcesContent":["import { type CSSProperties, type HTMLAttributes, type KeyboardEvent, useRef } from 'react';\n\nimport styles from './ColorPicker.module.css';\n\n// ─── ColorSwatch ─────────────────────────────────────────────────────────────\n\nexport type ColorSwatchSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorSwatchProps\n extends Omit<HTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSelect'> {\n /** CSS color value displayed as the swatch background. */\n color: string;\n /** Whether this swatch is the currently selected color. */\n selected?: boolean;\n /** Swatch diameter. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n /** Called when the user clicks or activates the swatch. */\n onSelect?: (color: string) => void;\n /** Accessible label. Defaults to the color value. */\n 'aria-label'?: string;\n disabled?: boolean;\n}\n\n/**\n * Single circular color swatch button.\n *\n * Can be used standalone or composed inside `ColorPicker`.\n * Shows a white checkmark when `selected`.\n */\nexport const ColorSwatch = ({\n color,\n selected = false,\n size = 'md',\n onSelect,\n disabled = false,\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorSwatchProps) => {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n aria-label={ariaLabel ?? color}\n disabled={disabled}\n className={[\n styles.swatch,\n styles[`swatch-${size}`],\n selected ? styles.swatchSelected : null,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ '--swatch-color': color, ...style } as CSSProperties}\n onClick={() => onSelect?.(color)}\n {...props}\n >\n {selected && (\n <svg className={styles.checkmark} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M3 8l3.5 3.5L13 5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </button>\n );\n};\n\n// ─── ColorPicker ─────────────────────────────────────────────────────────────\n\nexport interface ColorPickerColor {\n /** CSS color value (hex recommended). */\n value: string;\n /** Human-readable name shown as aria-label and tooltip. */\n label?: string;\n}\n\n/** Default Adwaita-named palette (matches Avatar color set). */\n// eslint-disable-next-line react-refresh/only-export-components\nexport const GNOME_PALETTE: ColorPickerColor[] = [\n { value: '#3584e4', label: 'Blue' },\n { value: '#2ec27e', label: 'Green' },\n { value: '#f6d32d', label: 'Yellow' },\n { value: '#ff7800', label: 'Orange' },\n { value: '#e01b24', label: 'Red' },\n { value: '#9141ac', label: 'Purple' },\n { value: '#986a44', label: 'Brown' },\n { value: '#2190a4', label: 'Teal' },\n { value: '#5e5c64', label: 'Slate' },\n];\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Currently selected color value. */\n value?: string;\n /** Called when the user selects a color. */\n onChange?: (value: string) => void;\n /**\n * Palette of colors to display.\n * Defaults to `GNOME_PALETTE` (the 9 Adwaita named colors).\n */\n colors?: ColorPickerColor[];\n /**\n * Show a \"Custom…\" button at the end that opens a native color picker.\n * When a custom color is chosen it is passed to `onChange` and shown\n * as a selected swatch until another palette color is picked.\n * Defaults to `false`.\n */\n allowCustom?: boolean;\n /** Swatch size. Defaults to `\"md\"`. */\n size?: ColorSwatchSize;\n}\n\n/**\n * Color palette picker following the Adwaita `GtkColorButton` + swatch pattern.\n *\n * Renders a row of circular `ColorSwatch` items. Keyboard navigation uses\n * arrow keys (roving tabindex). Optionally adds a \"Custom…\" button backed\n * by a hidden `<input type=\"color\">`.\n *\n * ```tsx\n * <ColorPicker value={color} onChange={setColor} />\n * <ColorPicker value={color} onChange={setColor} allowCustom />\n * <ColorPicker\n * value={color}\n * onChange={setColor}\n * colors={[{ value: \"#ff0000\", label: \"Red\" }, …]}\n * />\n * ```\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ColorButton.html\n */\nexport const ColorPicker = ({\n value,\n onChange,\n colors = GNOME_PALETTE,\n allowCustom = false,\n size = 'md',\n className,\n style,\n 'aria-label': ariaLabel,\n ...props\n}: ColorPickerProps) => {\n const customInputRef = useRef<HTMLInputElement>(null);\n\n // Roving tabindex: only the selected (or first) swatch is in the tab order.\n const activeIndex = colors.findIndex((c) => c.value === value);\n const rovingIndex = activeIndex >= 0 ? activeIndex : 0;\n\n // Arrow-key navigation within the radiogroup.\n function handleKeyDown(e: KeyboardEvent<HTMLDivElement>) {\n const all = Array.from(\n e.currentTarget.querySelectorAll<HTMLButtonElement>('[role=\"radio\"]:not([disabled])'),\n );\n const focused = document.activeElement as HTMLButtonElement;\n const idx = all.indexOf(focused);\n\n if (idx === -1) {\n return;\n }\n\n let next = -1;\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n next = (idx + 1) % all.length;\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n next = (idx - 1 + all.length) % all.length;\n }\n\n if (next >= 0) {\n all[next].focus();\n const color = all[next].dataset.color;\n\n if (color) {\n onChange?.(color);\n }\n }\n }\n\n // Decide whether the current `value` is a custom (not in palette) color.\n const isCustom = value !== undefined && !colors.some((c) => c.value === value);\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={ariaLabel ?? 'Color'}\n className={[styles.picker, className].filter(Boolean).join(' ')}\n style={style}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {colors.map((color, i) => (\n <ColorSwatch\n key={color.value}\n color={color.value}\n size={size}\n selected={color.value === value}\n onSelect={onChange}\n aria-label={color.label ?? color.value}\n tabIndex={i === rovingIndex && !isCustom ? 0 : -1}\n data-color={color.value}\n />\n ))}\n\n {allowCustom && (\n <>\n {/* Custom swatch — shows the picked color when active */}\n {isCustom && value && (\n <ColorSwatch\n color={value}\n size={size}\n selected\n onSelect={() => customInputRef.current?.click()}\n aria-label=\"Custom color\"\n tabIndex={0}\n data-color={value}\n />\n )}\n\n {/* + button that opens the native color input */}\n <button\n type=\"button\"\n aria-label=\"Choose custom color\"\n className={[styles.swatch, styles[`swatch-${size}`], styles.customButton]\n .filter(Boolean)\n .join(' ')}\n tabIndex={isCustom ? -1 : -1}\n onClick={() => customInputRef.current?.click()}\n >\n <svg viewBox=\"0 0 16 16\" className={styles.plusIcon} aria-hidden=\"true\">\n <path\n d=\"M8 3v10M3 8h10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n\n <input\n ref={customInputRef}\n type=\"color\"\n value={isCustom && value ? value : '#000000'}\n className={styles.nativeInput}\n aria-hidden=\"true\"\n tabIndex={-1}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </>\n )}\n </div>\n );\n};\n"],"mappings":"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"}