@gnome-ui/react 1.36.1 → 1.36.3

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 (907) hide show
  1. package/README.md +16 -2
  2. package/dist/components/AboutDialog/AboutDialog.cjs +2 -0
  3. package/dist/components/AboutDialog/AboutDialog.cjs.map +1 -0
  4. package/dist/components/AboutDialog/AboutDialog.js +185 -0
  5. package/dist/components/AboutDialog/AboutDialog.js.map +1 -0
  6. package/dist/components/AboutDialog/AboutDialog.module.css.cjs +2 -0
  7. package/dist/components/AboutDialog/AboutDialog.module.css.cjs.map +1 -0
  8. package/dist/components/AboutDialog/AboutDialog.module.css.js +35 -0
  9. package/dist/components/AboutDialog/AboutDialog.module.css.js.map +1 -0
  10. package/dist/components/AboutDialog.cjs +1 -0
  11. package/dist/components/AboutDialog.d.ts +2 -0
  12. package/dist/components/AboutDialog.js +2 -0
  13. package/dist/components/ActionRow/ActionRow.cjs +2 -0
  14. package/dist/components/ActionRow/ActionRow.cjs.map +1 -0
  15. package/dist/components/ActionRow/ActionRow.js +39 -0
  16. package/dist/components/ActionRow/ActionRow.js.map +1 -0
  17. package/dist/components/ActionRow/ActionRow.module.css.cjs +2 -0
  18. package/dist/components/ActionRow/ActionRow.module.css.cjs.map +1 -0
  19. package/dist/components/ActionRow/ActionRow.module.css.js +15 -0
  20. package/dist/components/ActionRow/ActionRow.module.css.js.map +1 -0
  21. package/dist/components/ActionRow.cjs +1 -0
  22. package/dist/components/ActionRow.d.ts +2 -0
  23. package/dist/components/ActionRow.js +2 -0
  24. package/dist/components/Avatar/Avatar.cjs +2 -0
  25. package/dist/components/Avatar/Avatar.cjs.map +1 -0
  26. package/dist/components/Avatar/Avatar.js +50 -0
  27. package/dist/components/Avatar/Avatar.js.map +1 -0
  28. package/dist/components/Avatar/Avatar.module.css.cjs +2 -0
  29. package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
  30. package/dist/components/Avatar/Avatar.module.css.js +22 -0
  31. package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
  32. package/dist/components/Avatar.cjs +1 -0
  33. package/dist/components/Avatar.d.ts +2 -0
  34. package/dist/components/Avatar.js +2 -0
  35. package/dist/components/Badge/Badge.cjs +2 -0
  36. package/dist/components/Badge/Badge.cjs.map +1 -0
  37. package/dist/components/Badge/Badge.js +24 -0
  38. package/dist/components/Badge/Badge.js.map +1 -0
  39. package/dist/components/Badge/Badge.module.css.cjs +2 -0
  40. package/dist/components/Badge/Badge.module.css.cjs.map +1 -0
  41. package/dist/components/Badge/Badge.module.css.js +15 -0
  42. package/dist/components/Badge/Badge.module.css.js.map +1 -0
  43. package/dist/components/Badge.cjs +1 -0
  44. package/dist/components/Badge.d.ts +2 -0
  45. package/dist/components/Badge.js +2 -0
  46. package/dist/components/Banner/Banner.cjs +2 -0
  47. package/dist/components/Banner/Banner.cjs.map +1 -0
  48. package/dist/components/Banner/Banner.js +44 -0
  49. package/dist/components/Banner/Banner.js.map +1 -0
  50. package/dist/components/Banner/Banner.module.css.cjs +2 -0
  51. package/dist/components/Banner/Banner.module.css.cjs.map +1 -0
  52. package/dist/components/Banner/Banner.module.css.js +20 -0
  53. package/dist/components/Banner/Banner.module.css.js.map +1 -0
  54. package/dist/components/Banner.cjs +1 -0
  55. package/dist/components/Banner.d.ts +2 -0
  56. package/dist/components/Banner.js +2 -0
  57. package/dist/components/Bin/Bin.cjs +2 -0
  58. package/dist/components/Bin/Bin.cjs.map +1 -0
  59. package/dist/components/Bin/Bin.js +12 -0
  60. package/dist/components/Bin/Bin.js.map +1 -0
  61. package/dist/components/Bin.cjs +1 -0
  62. package/dist/components/Bin.d.ts +2 -0
  63. package/dist/components/Bin.js +2 -0
  64. package/dist/components/Blockquote/Blockquote.cjs +2 -0
  65. package/dist/components/Blockquote/Blockquote.cjs.map +1 -0
  66. package/dist/components/Blockquote/Blockquote.js +34 -0
  67. package/dist/components/Blockquote/Blockquote.js.map +1 -0
  68. package/dist/components/Blockquote/Blockquote.module.css.cjs +2 -0
  69. package/dist/components/Blockquote/Blockquote.module.css.cjs.map +1 -0
  70. package/dist/components/Blockquote/Blockquote.module.css.js +17 -0
  71. package/dist/components/Blockquote/Blockquote.module.css.js.map +1 -0
  72. package/dist/components/Blockquote.cjs +1 -0
  73. package/dist/components/Blockquote.d.ts +2 -0
  74. package/dist/components/Blockquote.js +2 -0
  75. package/dist/components/BottomSheet/BottomSheet.cjs +2 -0
  76. package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -0
  77. package/dist/components/BottomSheet/BottomSheet.js +60 -0
  78. package/dist/components/BottomSheet/BottomSheet.js.map +1 -0
  79. package/dist/components/BottomSheet/BottomSheet.module.css.cjs +2 -0
  80. package/dist/components/BottomSheet/BottomSheet.module.css.cjs.map +1 -0
  81. package/dist/components/BottomSheet/BottomSheet.module.css.js +15 -0
  82. package/dist/components/BottomSheet/BottomSheet.module.css.js.map +1 -0
  83. package/dist/components/BottomSheet.cjs +1 -0
  84. package/dist/components/BottomSheet.d.ts +2 -0
  85. package/dist/components/BottomSheet.js +2 -0
  86. package/dist/components/Box/Box.cjs +2 -0
  87. package/dist/components/Box/Box.cjs.map +1 -0
  88. package/dist/components/Box/Box.js +22 -0
  89. package/dist/components/Box/Box.js.map +1 -0
  90. package/dist/components/Box.cjs +1 -0
  91. package/dist/components/Box.d.ts +2 -0
  92. package/dist/components/Box.js +2 -0
  93. package/dist/components/BoxedList/BoxedList.cjs +2 -0
  94. package/dist/components/BoxedList/BoxedList.cjs.map +1 -0
  95. package/dist/components/BoxedList/BoxedList.js +25 -0
  96. package/dist/components/BoxedList/BoxedList.js.map +1 -0
  97. package/dist/components/BoxedList/BoxedList.module.css.cjs +2 -0
  98. package/dist/components/BoxedList/BoxedList.module.css.cjs.map +1 -0
  99. package/dist/components/BoxedList/BoxedList.module.css.js +11 -0
  100. package/dist/components/BoxedList/BoxedList.module.css.js.map +1 -0
  101. package/dist/components/BoxedList.cjs +1 -0
  102. package/dist/components/BoxedList.d.ts +2 -0
  103. package/dist/components/BoxedList.js +2 -0
  104. package/dist/components/BreakpointBin/BreakpointBin.cjs +2 -0
  105. package/dist/components/BreakpointBin/BreakpointBin.cjs.map +1 -0
  106. package/dist/components/BreakpointBin/BreakpointBin.js +37 -0
  107. package/dist/components/BreakpointBin/BreakpointBin.js.map +1 -0
  108. package/dist/components/BreakpointBin.cjs +1 -0
  109. package/dist/components/BreakpointBin.d.ts +2 -0
  110. package/dist/components/BreakpointBin.js +2 -0
  111. package/dist/components/Button/Button.cjs +2 -0
  112. package/dist/components/Button/Button.cjs.map +1 -0
  113. package/dist/components/Button/Button.js +25 -0
  114. package/dist/components/Button/Button.js.map +1 -0
  115. package/dist/components/Button/Button.module.css.cjs +2 -0
  116. package/dist/components/Button/Button.module.css.cjs.map +1 -0
  117. package/dist/components/Button/Button.module.css.js +17 -0
  118. package/dist/components/Button/Button.module.css.js.map +1 -0
  119. package/dist/components/Button.cjs +1 -0
  120. package/dist/components/Button.d.ts +2 -0
  121. package/dist/components/Button.js +2 -0
  122. package/dist/components/ButtonContent/ButtonContent.cjs +2 -0
  123. package/dist/components/ButtonContent/ButtonContent.cjs.map +1 -0
  124. package/dist/components/ButtonContent/ButtonContent.js +33 -0
  125. package/dist/components/ButtonContent/ButtonContent.js.map +1 -0
  126. package/dist/components/ButtonContent/ButtonContent.module.css.cjs +2 -0
  127. package/dist/components/ButtonContent/ButtonContent.module.css.cjs.map +1 -0
  128. package/dist/components/ButtonContent/ButtonContent.module.css.js +9 -0
  129. package/dist/components/ButtonContent/ButtonContent.module.css.js.map +1 -0
  130. package/dist/components/ButtonContent.cjs +1 -0
  131. package/dist/components/ButtonContent.d.ts +2 -0
  132. package/dist/components/ButtonContent.js +2 -0
  133. package/dist/components/ButtonRow/ButtonRow.cjs +2 -0
  134. package/dist/components/ButtonRow/ButtonRow.cjs.map +1 -0
  135. package/dist/components/ButtonRow/ButtonRow.js +31 -0
  136. package/dist/components/ButtonRow/ButtonRow.js.map +1 -0
  137. package/dist/components/ButtonRow/ButtonRow.module.css.cjs +2 -0
  138. package/dist/components/ButtonRow/ButtonRow.module.css.cjs.map +1 -0
  139. package/dist/components/ButtonRow/ButtonRow.module.css.js +13 -0
  140. package/dist/components/ButtonRow/ButtonRow.module.css.js.map +1 -0
  141. package/dist/components/ButtonRow.cjs +1 -0
  142. package/dist/components/ButtonRow.d.ts +2 -0
  143. package/dist/components/ButtonRow.js +2 -0
  144. package/dist/components/Card/Card.cjs +2 -0
  145. package/dist/components/Card/Card.cjs.map +1 -0
  146. package/dist/components/Card/Card.js +19 -0
  147. package/dist/components/Card/Card.js.map +1 -0
  148. package/dist/components/Card/Card.module.css.cjs +2 -0
  149. package/dist/components/Card/Card.module.css.cjs.map +1 -0
  150. package/dist/components/Card/Card.module.css.js +13 -0
  151. package/dist/components/Card/Card.module.css.js.map +1 -0
  152. package/dist/components/Card.cjs +1 -0
  153. package/dist/components/Card.d.ts +2 -0
  154. package/dist/components/Card.js +2 -0
  155. package/dist/components/Carousel/Carousel.cjs +2 -0
  156. package/dist/components/Carousel/Carousel.cjs.map +1 -0
  157. package/dist/components/Carousel/Carousel.js +112 -0
  158. package/dist/components/Carousel/Carousel.js.map +1 -0
  159. package/dist/components/Carousel/Carousel.module.css.cjs +2 -0
  160. package/dist/components/Carousel/Carousel.module.css.cjs.map +1 -0
  161. package/dist/components/Carousel/Carousel.module.css.js +16 -0
  162. package/dist/components/Carousel/Carousel.module.css.js.map +1 -0
  163. package/dist/components/Carousel.cjs +1 -0
  164. package/dist/components/Carousel.d.ts +2 -0
  165. package/dist/components/Carousel.js +2 -0
  166. package/dist/components/CheckRow/CheckRow.cjs +2 -0
  167. package/dist/components/CheckRow/CheckRow.cjs.map +1 -0
  168. package/dist/components/CheckRow/CheckRow.js +66 -0
  169. package/dist/components/CheckRow/CheckRow.js.map +1 -0
  170. package/dist/components/CheckRow/CheckRow.module.css.cjs +2 -0
  171. package/dist/components/CheckRow/CheckRow.module.css.cjs.map +1 -0
  172. package/dist/components/CheckRow/CheckRow.module.css.js +16 -0
  173. package/dist/components/CheckRow/CheckRow.module.css.js.map +1 -0
  174. package/dist/components/CheckRow.cjs +1 -0
  175. package/dist/components/CheckRow.d.ts +2 -0
  176. package/dist/components/CheckRow.js +2 -0
  177. package/dist/components/Checkbox/Checkbox.cjs +2 -0
  178. package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
  179. package/dist/components/Checkbox/Checkbox.js +19 -0
  180. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  181. package/dist/components/Checkbox/Checkbox.module.css.cjs +2 -0
  182. package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
  183. package/dist/components/Checkbox/Checkbox.module.css.js +5 -0
  184. package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
  185. package/dist/components/Checkbox.cjs +1 -0
  186. package/dist/components/Checkbox.d.ts +2 -0
  187. package/dist/components/Checkbox.js +2 -0
  188. package/dist/components/Chip/Chip.cjs +2 -0
  189. package/dist/components/Chip/Chip.cjs.map +1 -0
  190. package/dist/components/Chip/Chip.js +61 -0
  191. package/dist/components/Chip/Chip.js.map +1 -0
  192. package/dist/components/Chip/Chip.module.css.cjs +2 -0
  193. package/dist/components/Chip/Chip.module.css.cjs.map +1 -0
  194. package/dist/components/Chip/Chip.module.css.js +13 -0
  195. package/dist/components/Chip/Chip.module.css.js.map +1 -0
  196. package/dist/components/Chip.cjs +1 -0
  197. package/dist/components/Chip.d.ts +2 -0
  198. package/dist/components/Chip.js +2 -0
  199. package/dist/components/Clamp/Clamp.cjs +2 -0
  200. package/dist/components/Clamp/Clamp.cjs.map +1 -0
  201. package/dist/components/Clamp/Clamp.js +18 -0
  202. package/dist/components/Clamp/Clamp.js.map +1 -0
  203. package/dist/components/Clamp/Clamp.module.css.cjs +2 -0
  204. package/dist/components/Clamp/Clamp.module.css.cjs.map +1 -0
  205. package/dist/components/Clamp/Clamp.module.css.js +5 -0
  206. package/dist/components/Clamp/Clamp.module.css.js.map +1 -0
  207. package/dist/components/Clamp.cjs +1 -0
  208. package/dist/components/Clamp.d.ts +2 -0
  209. package/dist/components/Clamp.js +2 -0
  210. package/dist/components/ColorPicker/ColorPicker.cjs +2 -0
  211. package/dist/components/ColorPicker/ColorPicker.cjs.map +1 -0
  212. package/dist/components/ColorPicker/ColorPicker.js +152 -0
  213. package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
  214. package/dist/components/ColorPicker/ColorPicker.module.css.cjs +2 -0
  215. package/dist/components/ColorPicker/ColorPicker.module.css.cjs.map +1 -0
  216. package/dist/components/ColorPicker/ColorPicker.module.css.js +17 -0
  217. package/dist/components/ColorPicker/ColorPicker.module.css.js.map +1 -0
  218. package/dist/components/ColorPicker.cjs +1 -0
  219. package/dist/components/ColorPicker.d.ts +2 -0
  220. package/dist/components/ColorPicker.js +2 -0
  221. package/dist/components/ColumnView/ColumnView.cjs +2 -0
  222. package/dist/components/ColumnView/ColumnView.cjs.map +1 -0
  223. package/dist/components/ColumnView/ColumnView.js +153 -0
  224. package/dist/components/ColumnView/ColumnView.js.map +1 -0
  225. package/dist/components/ColumnView/ColumnView.module.css.cjs +2 -0
  226. package/dist/components/ColumnView/ColumnView.module.css.cjs.map +1 -0
  227. package/dist/components/ColumnView/ColumnView.module.css.js +28 -0
  228. package/dist/components/ColumnView/ColumnView.module.css.js.map +1 -0
  229. package/dist/components/ColumnView.cjs +1 -0
  230. package/dist/components/ColumnView.d.ts +2 -0
  231. package/dist/components/ColumnView.js +2 -0
  232. package/dist/components/ComboRow/ComboRow.cjs +2 -0
  233. package/dist/components/ComboRow/ComboRow.cjs.map +1 -0
  234. package/dist/components/ComboRow/ComboRow.js +197 -0
  235. package/dist/components/ComboRow/ComboRow.js.map +1 -0
  236. package/dist/components/ComboRow/ComboRow.module.css.cjs +2 -0
  237. package/dist/components/ComboRow/ComboRow.module.css.cjs.map +1 -0
  238. package/dist/components/ComboRow/ComboRow.module.css.js +31 -0
  239. package/dist/components/ComboRow/ComboRow.module.css.js.map +1 -0
  240. package/dist/components/ComboRow.cjs +1 -0
  241. package/dist/components/ComboRow.d.ts +2 -0
  242. package/dist/components/ComboRow.js +2 -0
  243. package/dist/components/ContributionGraph/ContributionGraph.cjs +2 -0
  244. package/dist/components/ContributionGraph/ContributionGraph.cjs.map +1 -0
  245. package/dist/components/ContributionGraph/ContributionGraph.js +248 -0
  246. package/dist/components/ContributionGraph/ContributionGraph.js.map +1 -0
  247. package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs +2 -0
  248. package/dist/components/ContributionGraph/ContributionGraph.module.css.cjs.map +1 -0
  249. package/dist/components/ContributionGraph/ContributionGraph.module.css.js +14 -0
  250. package/dist/components/ContributionGraph/ContributionGraph.module.css.js.map +1 -0
  251. package/dist/components/ContributionGraph.cjs +1 -0
  252. package/dist/components/ContributionGraph.d.ts +2 -0
  253. package/dist/components/ContributionGraph.js +2 -0
  254. package/dist/components/CountDownTimer/CountDownTimer.cjs +2 -0
  255. package/dist/components/CountDownTimer/CountDownTimer.cjs.map +1 -0
  256. package/dist/components/CountDownTimer/CountDownTimer.js +57 -0
  257. package/dist/components/CountDownTimer/CountDownTimer.js.map +1 -0
  258. package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs +2 -0
  259. package/dist/components/CountDownTimer/CountDownTimer.module.css.cjs.map +1 -0
  260. package/dist/components/CountDownTimer/CountDownTimer.module.css.js +13 -0
  261. package/dist/components/CountDownTimer/CountDownTimer.module.css.js.map +1 -0
  262. package/dist/components/CountDownTimer.cjs +1 -0
  263. package/dist/components/CountDownTimer.d.ts +2 -0
  264. package/dist/components/CountDownTimer.js +2 -0
  265. package/dist/components/Dialog/Dialog.cjs +2 -0
  266. package/dist/components/Dialog/Dialog.cjs.map +1 -0
  267. package/dist/components/Dialog/Dialog.js +78 -0
  268. package/dist/components/Dialog/Dialog.js.map +1 -0
  269. package/dist/components/Dialog/Dialog.module.css.cjs +2 -0
  270. package/dist/components/Dialog/Dialog.module.css.cjs.map +1 -0
  271. package/dist/components/Dialog/Dialog.module.css.js +18 -0
  272. package/dist/components/Dialog/Dialog.module.css.js.map +1 -0
  273. package/dist/components/Dialog/dialogUtils.cjs +2 -0
  274. package/dist/components/Dialog/dialogUtils.cjs.map +1 -0
  275. package/dist/components/Dialog/dialogUtils.js +33 -0
  276. package/dist/components/Dialog/dialogUtils.js.map +1 -0
  277. package/dist/components/Dialog.cjs +1 -0
  278. package/dist/components/Dialog.d.ts +2 -0
  279. package/dist/components/Dialog.js +2 -0
  280. package/dist/components/Dropdown/Dropdown.cjs +2 -0
  281. package/dist/components/Dropdown/Dropdown.cjs.map +1 -0
  282. package/dist/components/Dropdown/Dropdown.js +159 -0
  283. package/dist/components/Dropdown/Dropdown.js.map +1 -0
  284. package/dist/components/Dropdown/Dropdown.module.css.cjs +2 -0
  285. package/dist/components/Dropdown/Dropdown.module.css.cjs.map +1 -0
  286. package/dist/components/Dropdown/Dropdown.module.css.js +27 -0
  287. package/dist/components/Dropdown/Dropdown.module.css.js.map +1 -0
  288. package/dist/components/Dropdown.cjs +1 -0
  289. package/dist/components/Dropdown.d.ts +2 -0
  290. package/dist/components/Dropdown.js +2 -0
  291. package/dist/components/EntryRow/EntryRow.cjs +2 -0
  292. package/dist/components/EntryRow/EntryRow.cjs.map +1 -0
  293. package/dist/components/EntryRow/EntryRow.js +50 -0
  294. package/dist/components/EntryRow/EntryRow.js.map +1 -0
  295. package/dist/components/EntryRow/EntryRow.module.css.cjs +2 -0
  296. package/dist/components/EntryRow/EntryRow.module.css.cjs.map +1 -0
  297. package/dist/components/EntryRow/EntryRow.module.css.js +16 -0
  298. package/dist/components/EntryRow/EntryRow.module.css.js.map +1 -0
  299. package/dist/components/EntryRow.cjs +1 -0
  300. package/dist/components/EntryRow.d.ts +2 -0
  301. package/dist/components/EntryRow.js +2 -0
  302. package/dist/components/ExpanderRow/ExpanderRow.cjs +2 -0
  303. package/dist/components/ExpanderRow/ExpanderRow.cjs.map +1 -0
  304. package/dist/components/ExpanderRow/ExpanderRow.js +81 -0
  305. package/dist/components/ExpanderRow/ExpanderRow.js.map +1 -0
  306. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs +2 -0
  307. package/dist/components/ExpanderRow/ExpanderRow.module.css.cjs.map +1 -0
  308. package/dist/components/ExpanderRow/ExpanderRow.module.css.js +20 -0
  309. package/dist/components/ExpanderRow/ExpanderRow.module.css.js.map +1 -0
  310. package/dist/components/ExpanderRow.cjs +1 -0
  311. package/dist/components/ExpanderRow.d.ts +2 -0
  312. package/dist/components/ExpanderRow.js +2 -0
  313. package/dist/components/Footer/Footer.cjs +2 -0
  314. package/dist/components/Footer/Footer.cjs.map +1 -0
  315. package/dist/components/Footer/Footer.js +31 -0
  316. package/dist/components/Footer/Footer.js.map +1 -0
  317. package/dist/components/Footer/Footer.module.css.cjs +2 -0
  318. package/dist/components/Footer/Footer.module.css.cjs.map +1 -0
  319. package/dist/components/Footer/Footer.module.css.js +11 -0
  320. package/dist/components/Footer/Footer.module.css.js.map +1 -0
  321. package/dist/components/Footer.cjs +1 -0
  322. package/dist/components/Footer.d.ts +2 -0
  323. package/dist/components/Footer.js +2 -0
  324. package/dist/components/Frame/Frame.cjs +2 -0
  325. package/dist/components/Frame/Frame.cjs.map +1 -0
  326. package/dist/components/Frame/Frame.js +14 -0
  327. package/dist/components/Frame/Frame.js.map +1 -0
  328. package/dist/components/Frame/Frame.module.css.cjs +2 -0
  329. package/dist/components/Frame/Frame.module.css.cjs.map +1 -0
  330. package/dist/components/Frame/Frame.module.css.js +5 -0
  331. package/dist/components/Frame/Frame.module.css.js.map +1 -0
  332. package/dist/components/Frame.cjs +1 -0
  333. package/dist/components/Frame.d.ts +2 -0
  334. package/dist/components/Frame.js +2 -0
  335. package/dist/components/HeaderBar/HeaderBar.cjs +2 -0
  336. package/dist/components/HeaderBar/HeaderBar.cjs.map +1 -0
  337. package/dist/components/HeaderBar/HeaderBar.js +35 -0
  338. package/dist/components/HeaderBar/HeaderBar.js.map +1 -0
  339. package/dist/components/HeaderBar/HeaderBar.module.css.cjs +2 -0
  340. package/dist/components/HeaderBar/HeaderBar.module.css.cjs.map +1 -0
  341. package/dist/components/HeaderBar/HeaderBar.module.css.js +12 -0
  342. package/dist/components/HeaderBar/HeaderBar.module.css.js.map +1 -0
  343. package/dist/components/HeaderBar.cjs +1 -0
  344. package/dist/components/HeaderBar.d.ts +2 -0
  345. package/dist/components/HeaderBar.js +2 -0
  346. package/dist/components/Icon/Icon.cjs +2 -0
  347. package/dist/components/Icon/Icon.cjs.map +1 -0
  348. package/dist/components/Icon/Icon.js +31 -0
  349. package/dist/components/Icon/Icon.js.map +1 -0
  350. package/dist/components/Icon.cjs +1 -0
  351. package/dist/components/Icon.d.ts +2 -0
  352. package/dist/components/Icon.js +2 -0
  353. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs +2 -0
  354. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.cjs.map +1 -0
  355. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js +47 -0
  356. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.js.map +1 -0
  357. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs +2 -0
  358. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.cjs.map +1 -0
  359. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js +16 -0
  360. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.module.css.js.map +1 -0
  361. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs +2 -0
  362. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.cjs.map +1 -0
  363. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js +38 -0
  364. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.js.map +1 -0
  365. package/dist/components/InlineViewSwitcher.cjs +1 -0
  366. package/dist/components/InlineViewSwitcher.d.ts +2 -0
  367. package/dist/components/InlineViewSwitcher.js +3 -0
  368. package/dist/components/Link/Link.cjs +2 -0
  369. package/dist/components/Link/Link.cjs.map +1 -0
  370. package/dist/components/Link/Link.js +21 -0
  371. package/dist/components/Link/Link.js.map +1 -0
  372. package/dist/components/Link/Link.module.css.cjs +2 -0
  373. package/dist/components/Link/Link.module.css.cjs.map +1 -0
  374. package/dist/components/Link/Link.module.css.js +8 -0
  375. package/dist/components/Link/Link.module.css.js.map +1 -0
  376. package/dist/components/Link.cjs +1 -0
  377. package/dist/components/Link.d.ts +2 -0
  378. package/dist/components/Link.js +2 -0
  379. package/dist/components/LinkedGroup/LinkedGroup.cjs +2 -0
  380. package/dist/components/LinkedGroup/LinkedGroup.cjs.map +1 -0
  381. package/dist/components/LinkedGroup/LinkedGroup.js +18 -0
  382. package/dist/components/LinkedGroup/LinkedGroup.js.map +1 -0
  383. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs +2 -0
  384. package/dist/components/LinkedGroup/LinkedGroup.module.css.cjs.map +1 -0
  385. package/dist/components/LinkedGroup/LinkedGroup.module.css.js +8 -0
  386. package/dist/components/LinkedGroup/LinkedGroup.module.css.js.map +1 -0
  387. package/dist/components/LinkedGroup.cjs +1 -0
  388. package/dist/components/LinkedGroup.d.ts +2 -0
  389. package/dist/components/LinkedGroup.js +2 -0
  390. package/dist/components/NavigationSplitView/NavigationSplitView.cjs +2 -0
  391. package/dist/components/NavigationSplitView/NavigationSplitView.cjs.map +1 -0
  392. package/dist/components/NavigationSplitView/NavigationSplitView.js +39 -0
  393. package/dist/components/NavigationSplitView/NavigationSplitView.js.map +1 -0
  394. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs +2 -0
  395. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.cjs.map +1 -0
  396. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js +14 -0
  397. package/dist/components/NavigationSplitView/NavigationSplitView.module.css.js.map +1 -0
  398. package/dist/components/NavigationSplitView.cjs +1 -0
  399. package/dist/components/NavigationSplitView.d.ts +2 -0
  400. package/dist/components/NavigationSplitView.js +2 -0
  401. package/dist/components/NavigationView/NavigationView.cjs +2 -0
  402. package/dist/components/NavigationView/NavigationView.cjs.map +1 -0
  403. package/dist/components/NavigationView/NavigationView.js +60 -0
  404. package/dist/components/NavigationView/NavigationView.js.map +1 -0
  405. package/dist/components/NavigationView/NavigationView.module.css.cjs +2 -0
  406. package/dist/components/NavigationView/NavigationView.module.css.cjs.map +1 -0
  407. package/dist/components/NavigationView/NavigationView.module.css.js +16 -0
  408. package/dist/components/NavigationView/NavigationView.module.css.js.map +1 -0
  409. package/dist/components/NavigationView.cjs +1 -0
  410. package/dist/components/NavigationView.d.ts +2 -0
  411. package/dist/components/NavigationView.js +2 -0
  412. package/dist/components/OverlaySplitView/OverlaySplitView.cjs +2 -0
  413. package/dist/components/OverlaySplitView/OverlaySplitView.cjs.map +1 -0
  414. package/dist/components/OverlaySplitView/OverlaySplitView.js +75 -0
  415. package/dist/components/OverlaySplitView/OverlaySplitView.js.map +1 -0
  416. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs +2 -0
  417. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.cjs.map +1 -0
  418. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js +18 -0
  419. package/dist/components/OverlaySplitView/OverlaySplitView.module.css.js.map +1 -0
  420. package/dist/components/OverlaySplitView.cjs +1 -0
  421. package/dist/components/OverlaySplitView.d.ts +2 -0
  422. package/dist/components/OverlaySplitView.js +2 -0
  423. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs +2 -0
  424. package/dist/components/PasswordEntryRow/PasswordEntryRow.cjs.map +1 -0
  425. package/dist/components/PasswordEntryRow/PasswordEntryRow.js +35 -0
  426. package/dist/components/PasswordEntryRow/PasswordEntryRow.js.map +1 -0
  427. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs +2 -0
  428. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.cjs.map +1 -0
  429. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js +5 -0
  430. package/dist/components/PasswordEntryRow/PasswordEntryRow.module.css.js.map +1 -0
  431. package/dist/components/PasswordEntryRow.cjs +1 -0
  432. package/dist/components/PasswordEntryRow.d.ts +2 -0
  433. package/dist/components/PasswordEntryRow.js +2 -0
  434. package/dist/components/PathBar/PathBar.cjs +2 -0
  435. package/dist/components/PathBar/PathBar.cjs.map +1 -0
  436. package/dist/components/PathBar/PathBar.js +59 -0
  437. package/dist/components/PathBar/PathBar.js.map +1 -0
  438. package/dist/components/PathBar/PathBar.module.css.cjs +2 -0
  439. package/dist/components/PathBar/PathBar.module.css.cjs.map +1 -0
  440. package/dist/components/PathBar/PathBar.module.css.js +13 -0
  441. package/dist/components/PathBar/PathBar.module.css.js.map +1 -0
  442. package/dist/components/PathBar.cjs +1 -0
  443. package/dist/components/PathBar.d.ts +2 -0
  444. package/dist/components/PathBar.js +2 -0
  445. package/dist/components/Popover/Popover.cjs +2 -0
  446. package/dist/components/Popover/Popover.cjs.map +1 -0
  447. package/dist/components/Popover/Popover.js +157 -0
  448. package/dist/components/Popover/Popover.js.map +1 -0
  449. package/dist/components/Popover/Popover.module.css.cjs +2 -0
  450. package/dist/components/Popover/Popover.module.css.cjs.map +1 -0
  451. package/dist/components/Popover/Popover.module.css.js +13 -0
  452. package/dist/components/Popover/Popover.module.css.js.map +1 -0
  453. package/dist/components/Popover.cjs +1 -0
  454. package/dist/components/Popover.d.ts +2 -0
  455. package/dist/components/Popover.js +2 -0
  456. package/dist/components/PreferencesDialog/PreferencesDialog.cjs +2 -0
  457. package/dist/components/PreferencesDialog/PreferencesDialog.cjs.map +1 -0
  458. package/dist/components/PreferencesDialog/PreferencesDialog.js +119 -0
  459. package/dist/components/PreferencesDialog/PreferencesDialog.js.map +1 -0
  460. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs +2 -0
  461. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.cjs.map +1 -0
  462. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js +25 -0
  463. package/dist/components/PreferencesDialog/PreferencesDialog.module.css.js.map +1 -0
  464. package/dist/components/PreferencesDialog.cjs +1 -0
  465. package/dist/components/PreferencesDialog.d.ts +2 -0
  466. package/dist/components/PreferencesDialog.js +2 -0
  467. package/dist/components/PreferencesGroup/PreferencesGroup.cjs +2 -0
  468. package/dist/components/PreferencesGroup/PreferencesGroup.cjs.map +1 -0
  469. package/dist/components/PreferencesGroup/PreferencesGroup.js +33 -0
  470. package/dist/components/PreferencesGroup/PreferencesGroup.js.map +1 -0
  471. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs +2 -0
  472. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.cjs.map +1 -0
  473. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js +13 -0
  474. package/dist/components/PreferencesGroup/PreferencesGroup.module.css.js.map +1 -0
  475. package/dist/components/PreferencesGroup.cjs +1 -0
  476. package/dist/components/PreferencesGroup.d.ts +2 -0
  477. package/dist/components/PreferencesGroup.js +2 -0
  478. package/dist/components/PreferencesPage/PreferencesPage.cjs +2 -0
  479. package/dist/components/PreferencesPage/PreferencesPage.cjs.map +1 -0
  480. package/dist/components/PreferencesPage/PreferencesPage.js +18 -0
  481. package/dist/components/PreferencesPage/PreferencesPage.js.map +1 -0
  482. package/dist/components/PreferencesPage/PreferencesPage.module.css.cjs +2 -0
  483. package/dist/components/PreferencesPage/PreferencesPage.module.css.cjs.map +1 -0
  484. package/dist/components/PreferencesPage/PreferencesPage.module.css.js +8 -0
  485. package/dist/components/PreferencesPage/PreferencesPage.module.css.js.map +1 -0
  486. package/dist/components/PreferencesPage.cjs +1 -0
  487. package/dist/components/PreferencesPage.d.ts +2 -0
  488. package/dist/components/PreferencesPage.js +2 -0
  489. package/dist/components/ProgressBar/ProgressBar.cjs +2 -0
  490. package/dist/components/ProgressBar/ProgressBar.cjs.map +1 -0
  491. package/dist/components/ProgressBar/ProgressBar.js +28 -0
  492. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  493. package/dist/components/ProgressBar/ProgressBar.module.css.cjs +2 -0
  494. package/dist/components/ProgressBar/ProgressBar.module.css.cjs.map +1 -0
  495. package/dist/components/ProgressBar/ProgressBar.module.css.js +14 -0
  496. package/dist/components/ProgressBar/ProgressBar.module.css.js.map +1 -0
  497. package/dist/components/ProgressBar.cjs +1 -0
  498. package/dist/components/ProgressBar.d.ts +2 -0
  499. package/dist/components/ProgressBar.js +2 -0
  500. package/dist/components/RadioButton/RadioButton.cjs +2 -0
  501. package/dist/components/RadioButton/RadioButton.cjs.map +1 -0
  502. package/dist/components/RadioButton/RadioButton.js +14 -0
  503. package/dist/components/RadioButton/RadioButton.js.map +1 -0
  504. package/dist/components/RadioButton/RadioButton.module.css.cjs +2 -0
  505. package/dist/components/RadioButton/RadioButton.module.css.cjs.map +1 -0
  506. package/dist/components/RadioButton/RadioButton.module.css.js +5 -0
  507. package/dist/components/RadioButton/RadioButton.module.css.js.map +1 -0
  508. package/dist/components/RadioButton.cjs +1 -0
  509. package/dist/components/RadioButton.d.ts +2 -0
  510. package/dist/components/RadioButton.js +2 -0
  511. package/dist/components/SearchBar/SearchBar.cjs +2 -0
  512. package/dist/components/SearchBar/SearchBar.cjs.map +1 -0
  513. package/dist/components/SearchBar/SearchBar.js +160 -0
  514. package/dist/components/SearchBar/SearchBar.js.map +1 -0
  515. package/dist/components/SearchBar/SearchBar.module.css.cjs +2 -0
  516. package/dist/components/SearchBar/SearchBar.module.css.cjs.map +1 -0
  517. package/dist/components/SearchBar/SearchBar.module.css.js +19 -0
  518. package/dist/components/SearchBar/SearchBar.module.css.js.map +1 -0
  519. package/dist/components/SearchBar.cjs +1 -0
  520. package/dist/components/SearchBar.d.ts +2 -0
  521. package/dist/components/SearchBar.js +2 -0
  522. package/dist/components/Separator/Separator.cjs +2 -0
  523. package/dist/components/Separator/Separator.cjs.map +1 -0
  524. package/dist/components/Separator/Separator.js +23 -0
  525. package/dist/components/Separator/Separator.js.map +1 -0
  526. package/dist/components/Separator/Separator.module.css.cjs +2 -0
  527. package/dist/components/Separator/Separator.module.css.cjs.map +1 -0
  528. package/dist/components/Separator/Separator.module.css.js +9 -0
  529. package/dist/components/Separator/Separator.module.css.js.map +1 -0
  530. package/dist/components/Separator.cjs +1 -0
  531. package/dist/components/Separator.d.ts +2 -0
  532. package/dist/components/Separator.js +2 -0
  533. package/dist/components/ShortcutLabel/ShortcutLabel.cjs +2 -0
  534. package/dist/components/ShortcutLabel/ShortcutLabel.cjs.map +1 -0
  535. package/dist/components/ShortcutLabel/ShortcutLabel.js +50 -0
  536. package/dist/components/ShortcutLabel/ShortcutLabel.js.map +1 -0
  537. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs +2 -0
  538. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.cjs.map +1 -0
  539. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js +8 -0
  540. package/dist/components/ShortcutLabel/ShortcutLabel.module.css.js.map +1 -0
  541. package/dist/components/ShortcutLabel.cjs +1 -0
  542. package/dist/components/ShortcutLabel.d.ts +2 -0
  543. package/dist/components/ShortcutLabel.js +2 -0
  544. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs +2 -0
  545. package/dist/components/ShortcutsDialog/ShortcutsDialog.cjs.map +1 -0
  546. package/dist/components/ShortcutsDialog/ShortcutsDialog.js +129 -0
  547. package/dist/components/ShortcutsDialog/ShortcutsDialog.js.map +1 -0
  548. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs +2 -0
  549. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.cjs.map +1 -0
  550. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js +28 -0
  551. package/dist/components/ShortcutsDialog/ShortcutsDialog.module.css.js.map +1 -0
  552. package/dist/components/ShortcutsDialog.cjs +1 -0
  553. package/dist/components/ShortcutsDialog.d.ts +2 -0
  554. package/dist/components/ShortcutsDialog.js +2 -0
  555. package/dist/components/Sidebar/Sidebar.cjs +2 -0
  556. package/dist/components/Sidebar/Sidebar.cjs.map +1 -0
  557. package/dist/components/Sidebar/Sidebar.js +69 -0
  558. package/dist/components/Sidebar/Sidebar.js.map +1 -0
  559. package/dist/components/Sidebar/Sidebar.module.css.cjs +2 -0
  560. package/dist/components/Sidebar/Sidebar.module.css.cjs.map +1 -0
  561. package/dist/components/Sidebar/Sidebar.module.css.js +39 -0
  562. package/dist/components/Sidebar/Sidebar.module.css.js.map +1 -0
  563. package/dist/components/Sidebar/SidebarItem.cjs +2 -0
  564. package/dist/components/Sidebar/SidebarItem.cjs.map +1 -0
  565. package/dist/components/Sidebar/SidebarItem.js +105 -0
  566. package/dist/components/Sidebar/SidebarItem.js.map +1 -0
  567. package/dist/components/Sidebar/SidebarSection.cjs +2 -0
  568. package/dist/components/Sidebar/SidebarSection.cjs.map +1 -0
  569. package/dist/components/Sidebar/SidebarSection.js +89 -0
  570. package/dist/components/Sidebar/SidebarSection.js.map +1 -0
  571. package/dist/components/Sidebar.cjs +1 -0
  572. package/dist/components/Sidebar.d.ts +2 -0
  573. package/dist/components/Sidebar.js +4 -0
  574. package/dist/components/Slider/Slider.cjs +2 -0
  575. package/dist/components/Slider/Slider.cjs.map +1 -0
  576. package/dist/components/Slider/Slider.js +122 -0
  577. package/dist/components/Slider/Slider.js.map +1 -0
  578. package/dist/components/Slider/Slider.module.css.cjs +2 -0
  579. package/dist/components/Slider/Slider.module.css.cjs.map +1 -0
  580. package/dist/components/Slider/Slider.module.css.js +15 -0
  581. package/dist/components/Slider/Slider.module.css.js.map +1 -0
  582. package/dist/components/Slider.cjs +1 -0
  583. package/dist/components/Slider.d.ts +2 -0
  584. package/dist/components/Slider.js +2 -0
  585. package/dist/components/SpinButton/SpinButton.cjs +2 -0
  586. package/dist/components/SpinButton/SpinButton.cjs.map +1 -0
  587. package/dist/components/SpinButton/SpinButton.js +92 -0
  588. package/dist/components/SpinButton/SpinButton.js.map +1 -0
  589. package/dist/components/SpinButton/SpinButton.module.css.cjs +2 -0
  590. package/dist/components/SpinButton/SpinButton.module.css.cjs.map +1 -0
  591. package/dist/components/SpinButton/SpinButton.module.css.js +10 -0
  592. package/dist/components/SpinButton/SpinButton.module.css.js.map +1 -0
  593. package/dist/components/SpinButton.cjs +1 -0
  594. package/dist/components/SpinButton.d.ts +2 -0
  595. package/dist/components/SpinButton.js +2 -0
  596. package/dist/components/SpinRow/SpinRow.cjs +2 -0
  597. package/dist/components/SpinRow/SpinRow.cjs.map +1 -0
  598. package/dist/components/SpinRow/SpinRow.js +119 -0
  599. package/dist/components/SpinRow/SpinRow.js.map +1 -0
  600. package/dist/components/SpinRow/SpinRow.module.css.cjs +2 -0
  601. package/dist/components/SpinRow/SpinRow.module.css.cjs.map +1 -0
  602. package/dist/components/SpinRow/SpinRow.module.css.js +15 -0
  603. package/dist/components/SpinRow/SpinRow.module.css.js.map +1 -0
  604. package/dist/components/SpinRow.cjs +1 -0
  605. package/dist/components/SpinRow.d.ts +2 -0
  606. package/dist/components/SpinRow.js +2 -0
  607. package/dist/components/Spinner/Spinner.cjs +2 -0
  608. package/dist/components/Spinner/Spinner.cjs.map +1 -0
  609. package/dist/components/Spinner/Spinner.js +21 -0
  610. package/dist/components/Spinner/Spinner.js.map +1 -0
  611. package/dist/components/Spinner/Spinner.module.css.cjs +2 -0
  612. package/dist/components/Spinner/Spinner.module.css.cjs.map +1 -0
  613. package/dist/components/Spinner/Spinner.module.css.js +11 -0
  614. package/dist/components/Spinner/Spinner.module.css.js.map +1 -0
  615. package/dist/components/Spinner.cjs +1 -0
  616. package/dist/components/Spinner.d.ts +2 -0
  617. package/dist/components/Spinner.js +2 -0
  618. package/dist/components/SplitButton/SplitButton.cjs +2 -0
  619. package/dist/components/SplitButton/SplitButton.cjs.map +1 -0
  620. package/dist/components/SplitButton/SplitButton.js +104 -0
  621. package/dist/components/SplitButton/SplitButton.js.map +1 -0
  622. package/dist/components/SplitButton/SplitButton.module.css.cjs +2 -0
  623. package/dist/components/SplitButton/SplitButton.module.css.cjs.map +1 -0
  624. package/dist/components/SplitButton/SplitButton.module.css.js +16 -0
  625. package/dist/components/SplitButton/SplitButton.module.css.js.map +1 -0
  626. package/dist/components/SplitButton.cjs +1 -0
  627. package/dist/components/SplitButton.d.ts +2 -0
  628. package/dist/components/SplitButton.js +2 -0
  629. package/dist/components/StatusBadge/StatusBadge.cjs +2 -0
  630. package/dist/components/StatusBadge/StatusBadge.cjs.map +1 -0
  631. package/dist/components/StatusBadge/StatusBadge.js +18 -0
  632. package/dist/components/StatusBadge/StatusBadge.js.map +1 -0
  633. package/dist/components/StatusBadge/StatusBadge.module.css.cjs +2 -0
  634. package/dist/components/StatusBadge/StatusBadge.module.css.cjs.map +1 -0
  635. package/dist/components/StatusBadge/StatusBadge.module.css.js +13 -0
  636. package/dist/components/StatusBadge/StatusBadge.module.css.js.map +1 -0
  637. package/dist/components/StatusBadge.cjs +1 -0
  638. package/dist/components/StatusBadge.d.ts +2 -0
  639. package/dist/components/StatusBadge.js +2 -0
  640. package/dist/components/StatusPage/StatusPage.cjs +2 -0
  641. package/dist/components/StatusPage/StatusPage.cjs.map +1 -0
  642. package/dist/components/StatusPage/StatusPage.js +43 -0
  643. package/dist/components/StatusPage/StatusPage.js.map +1 -0
  644. package/dist/components/StatusPage/StatusPage.module.css.cjs +2 -0
  645. package/dist/components/StatusPage/StatusPage.module.css.cjs.map +1 -0
  646. package/dist/components/StatusPage/StatusPage.module.css.js +12 -0
  647. package/dist/components/StatusPage/StatusPage.module.css.js.map +1 -0
  648. package/dist/components/StatusPage.cjs +1 -0
  649. package/dist/components/StatusPage.d.ts +2 -0
  650. package/dist/components/StatusPage.js +2 -0
  651. package/dist/components/Switch/Switch.cjs +2 -0
  652. package/dist/components/Switch/Switch.cjs.map +1 -0
  653. package/dist/components/Switch/Switch.js +15 -0
  654. package/dist/components/Switch/Switch.js.map +1 -0
  655. package/dist/components/Switch/Switch.module.css.cjs +2 -0
  656. package/dist/components/Switch/Switch.module.css.cjs.map +1 -0
  657. package/dist/components/Switch/Switch.module.css.js +6 -0
  658. package/dist/components/Switch/Switch.module.css.js.map +1 -0
  659. package/dist/components/Switch.cjs +1 -0
  660. package/dist/components/Switch.d.ts +2 -0
  661. package/dist/components/Switch.js +2 -0
  662. package/dist/components/SwitchRow/SwitchRow.cjs +2 -0
  663. package/dist/components/SwitchRow/SwitchRow.cjs.map +1 -0
  664. package/dist/components/SwitchRow/SwitchRow.js +49 -0
  665. package/dist/components/SwitchRow/SwitchRow.js.map +1 -0
  666. package/dist/components/SwitchRow/SwitchRow.module.css.cjs +2 -0
  667. package/dist/components/SwitchRow/SwitchRow.module.css.cjs.map +1 -0
  668. package/dist/components/SwitchRow/SwitchRow.module.css.js +15 -0
  669. package/dist/components/SwitchRow/SwitchRow.module.css.js.map +1 -0
  670. package/dist/components/SwitchRow.cjs +1 -0
  671. package/dist/components/SwitchRow.d.ts +2 -0
  672. package/dist/components/SwitchRow.js +2 -0
  673. package/dist/components/Tabs/TabBar.cjs +2 -0
  674. package/dist/components/Tabs/TabBar.cjs.map +1 -0
  675. package/dist/components/Tabs/TabBar.js +38 -0
  676. package/dist/components/Tabs/TabBar.js.map +1 -0
  677. package/dist/components/Tabs/TabItem.cjs +2 -0
  678. package/dist/components/Tabs/TabItem.cjs.map +1 -0
  679. package/dist/components/Tabs/TabItem.js +52 -0
  680. package/dist/components/Tabs/TabItem.js.map +1 -0
  681. package/dist/components/Tabs/TabPanel.cjs +2 -0
  682. package/dist/components/Tabs/TabPanel.cjs.map +1 -0
  683. package/dist/components/Tabs/TabPanel.js +18 -0
  684. package/dist/components/Tabs/TabPanel.js.map +1 -0
  685. package/dist/components/Tabs/Tabs.module.css.cjs +2 -0
  686. package/dist/components/Tabs/Tabs.module.css.cjs.map +1 -0
  687. package/dist/components/Tabs/Tabs.module.css.js +15 -0
  688. package/dist/components/Tabs/Tabs.module.css.js.map +1 -0
  689. package/dist/components/Tabs.cjs +1 -0
  690. package/dist/components/Tabs.d.ts +2 -0
  691. package/dist/components/Tabs.js +4 -0
  692. package/dist/components/TerminalView/TerminalView.cjs +2 -0
  693. package/dist/components/TerminalView/TerminalView.cjs.map +1 -0
  694. package/dist/components/TerminalView/TerminalView.js +28 -0
  695. package/dist/components/TerminalView/TerminalView.js.map +1 -0
  696. package/dist/components/TerminalView/TerminalView.module.css.cjs +2 -0
  697. package/dist/components/TerminalView/TerminalView.module.css.cjs.map +1 -0
  698. package/dist/components/TerminalView/TerminalView.module.css.js +12 -0
  699. package/dist/components/TerminalView/TerminalView.module.css.js.map +1 -0
  700. package/dist/components/TerminalView.cjs +1 -0
  701. package/dist/components/TerminalView.d.ts +2 -0
  702. package/dist/components/TerminalView.js +2 -0
  703. package/dist/components/Text/Text.cjs +2 -0
  704. package/dist/components/Text/Text.cjs.map +1 -0
  705. package/dist/components/Text/Text.js +33 -0
  706. package/dist/components/Text/Text.js.map +1 -0
  707. package/dist/components/Text/Text.module.css.cjs +2 -0
  708. package/dist/components/Text/Text.module.css.cjs.map +1 -0
  709. package/dist/components/Text/Text.module.css.js +27 -0
  710. package/dist/components/Text/Text.module.css.js.map +1 -0
  711. package/dist/components/Text.cjs +1 -0
  712. package/dist/components/Text.d.ts +2 -0
  713. package/dist/components/Text.js +2 -0
  714. package/dist/components/TextField/TextField.cjs +2 -0
  715. package/dist/components/TextField/TextField.cjs.map +1 -0
  716. package/dist/components/TextField/TextField.js +38 -0
  717. package/dist/components/TextField/TextField.js.map +1 -0
  718. package/dist/components/TextField/TextField.module.css.cjs +2 -0
  719. package/dist/components/TextField/TextField.module.css.cjs.map +1 -0
  720. package/dist/components/TextField/TextField.module.css.js +13 -0
  721. package/dist/components/TextField/TextField.module.css.js.map +1 -0
  722. package/dist/components/TextField.cjs +1 -0
  723. package/dist/components/TextField.d.ts +2 -0
  724. package/dist/components/TextField.js +2 -0
  725. package/dist/components/Timeline/Timeline.cjs +2 -0
  726. package/dist/components/Timeline/Timeline.cjs.map +1 -0
  727. package/dist/components/Timeline/Timeline.js +71 -0
  728. package/dist/components/Timeline/Timeline.js.map +1 -0
  729. package/dist/components/Timeline/Timeline.module.css.cjs +2 -0
  730. package/dist/components/Timeline/Timeline.module.css.cjs.map +1 -0
  731. package/dist/components/Timeline/Timeline.module.css.js +19 -0
  732. package/dist/components/Timeline/Timeline.module.css.js.map +1 -0
  733. package/dist/components/Timeline.cjs +1 -0
  734. package/dist/components/Timeline.d.ts +2 -0
  735. package/dist/components/Timeline.js +2 -0
  736. package/dist/components/Toast/Toast.cjs +2 -0
  737. package/dist/components/Toast/Toast.cjs.map +1 -0
  738. package/dist/components/Toast/Toast.js +63 -0
  739. package/dist/components/Toast/Toast.js.map +1 -0
  740. package/dist/components/Toast/Toast.module.css.cjs +2 -0
  741. package/dist/components/Toast/Toast.module.css.cjs.map +1 -0
  742. package/dist/components/Toast/Toast.module.css.js +16 -0
  743. package/dist/components/Toast/Toast.module.css.js.map +1 -0
  744. package/dist/components/Toast/Toaster.cjs +2 -0
  745. package/dist/components/Toast/Toaster.cjs.map +1 -0
  746. package/dist/components/Toast/Toaster.js +21 -0
  747. package/dist/components/Toast/Toaster.js.map +1 -0
  748. package/dist/components/Toast.cjs +1 -0
  749. package/dist/components/Toast.d.ts +2 -0
  750. package/dist/components/Toast.js +3 -0
  751. package/dist/components/ToggleGroup/ToggleGroup.cjs +2 -0
  752. package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -0
  753. package/dist/components/ToggleGroup/ToggleGroup.js +43 -0
  754. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
  755. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs +2 -0
  756. package/dist/components/ToggleGroup/ToggleGroup.module.css.cjs.map +1 -0
  757. package/dist/components/ToggleGroup/ToggleGroup.module.css.js +12 -0
  758. package/dist/components/ToggleGroup/ToggleGroup.module.css.js.map +1 -0
  759. package/dist/components/ToggleGroup/ToggleGroupItem.cjs +2 -0
  760. package/dist/components/ToggleGroup/ToggleGroupItem.cjs.map +1 -0
  761. package/dist/components/ToggleGroup/ToggleGroupItem.js +38 -0
  762. package/dist/components/ToggleGroup/ToggleGroupItem.js.map +1 -0
  763. package/dist/components/ToggleGroup.cjs +1 -0
  764. package/dist/components/ToggleGroup.d.ts +2 -0
  765. package/dist/components/ToggleGroup.js +3 -0
  766. package/dist/components/Toolbar/Spacer.cjs +2 -0
  767. package/dist/components/Toolbar/Spacer.cjs.map +1 -0
  768. package/dist/components/Toolbar/Spacer.js +14 -0
  769. package/dist/components/Toolbar/Spacer.js.map +1 -0
  770. package/dist/components/Toolbar/Toolbar.cjs +2 -0
  771. package/dist/components/Toolbar/Toolbar.cjs.map +1 -0
  772. package/dist/components/Toolbar/Toolbar.js +14 -0
  773. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  774. package/dist/components/Toolbar/Toolbar.module.css.cjs +2 -0
  775. package/dist/components/Toolbar/Toolbar.module.css.cjs.map +1 -0
  776. package/dist/components/Toolbar/Toolbar.module.css.js +8 -0
  777. package/dist/components/Toolbar/Toolbar.module.css.js.map +1 -0
  778. package/dist/components/Toolbar.cjs +1 -0
  779. package/dist/components/Toolbar.d.ts +2 -0
  780. package/dist/components/Toolbar.js +3 -0
  781. package/dist/components/ToolbarView/ToolbarView.cjs +2 -0
  782. package/dist/components/ToolbarView/ToolbarView.cjs.map +1 -0
  783. package/dist/components/ToolbarView/ToolbarView.js +27 -0
  784. package/dist/components/ToolbarView/ToolbarView.js.map +1 -0
  785. package/dist/components/ToolbarView/ToolbarView.module.css.cjs +2 -0
  786. package/dist/components/ToolbarView/ToolbarView.module.css.cjs.map +1 -0
  787. package/dist/components/ToolbarView/ToolbarView.module.css.js +10 -0
  788. package/dist/components/ToolbarView/ToolbarView.module.css.js.map +1 -0
  789. package/dist/components/ToolbarView.cjs +1 -0
  790. package/dist/components/ToolbarView.d.ts +2 -0
  791. package/dist/components/ToolbarView.js +2 -0
  792. package/dist/components/Tooltip/Tooltip.cjs +2 -0
  793. package/dist/components/Tooltip/Tooltip.cjs.map +1 -0
  794. package/dist/components/Tooltip/Tooltip.js +100 -0
  795. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  796. package/dist/components/Tooltip/Tooltip.module.css.cjs +2 -0
  797. package/dist/components/Tooltip/Tooltip.module.css.cjs.map +1 -0
  798. package/dist/components/Tooltip/Tooltip.module.css.js +12 -0
  799. package/dist/components/Tooltip/Tooltip.module.css.js.map +1 -0
  800. package/dist/components/Tooltip.cjs +1 -0
  801. package/dist/components/Tooltip.d.ts +2 -0
  802. package/dist/components/Tooltip.js +2 -0
  803. package/dist/components/ViewSwitcher/ViewSwitcher.cjs +2 -0
  804. package/dist/components/ViewSwitcher/ViewSwitcher.cjs.map +1 -0
  805. package/dist/components/ViewSwitcher/ViewSwitcher.js +31 -0
  806. package/dist/components/ViewSwitcher/ViewSwitcher.js.map +1 -0
  807. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs +2 -0
  808. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.cjs.map +1 -0
  809. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js +11 -0
  810. package/dist/components/ViewSwitcher/ViewSwitcher.module.css.js.map +1 -0
  811. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs +2 -0
  812. package/dist/components/ViewSwitcher/ViewSwitcherItem.cjs.map +1 -0
  813. package/dist/components/ViewSwitcher/ViewSwitcherItem.js +34 -0
  814. package/dist/components/ViewSwitcher/ViewSwitcherItem.js.map +1 -0
  815. package/dist/components/ViewSwitcher.cjs +1 -0
  816. package/dist/components/ViewSwitcher.d.ts +2 -0
  817. package/dist/components/ViewSwitcher.js +3 -0
  818. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs +2 -0
  819. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.cjs.map +1 -0
  820. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js +16 -0
  821. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.js.map +1 -0
  822. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs +2 -0
  823. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.cjs.map +1 -0
  824. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js +5 -0
  825. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.module.css.js.map +1 -0
  826. package/dist/components/ViewSwitcherBar.cjs +1 -0
  827. package/dist/components/ViewSwitcherBar.d.ts +2 -0
  828. package/dist/components/ViewSwitcherBar.js +2 -0
  829. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs +2 -0
  830. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.cjs.map +1 -0
  831. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js +61 -0
  832. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.js.map +1 -0
  833. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs +2 -0
  834. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.cjs.map +1 -0
  835. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js +18 -0
  836. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.module.css.js.map +1 -0
  837. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs +2 -0
  838. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.cjs.map +1 -0
  839. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js +50 -0
  840. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.js.map +1 -0
  841. package/dist/components/ViewSwitcherSidebar.cjs +1 -0
  842. package/dist/components/ViewSwitcherSidebar.d.ts +2 -0
  843. package/dist/components/ViewSwitcherSidebar.js +3 -0
  844. package/dist/components/WindowTitle/WindowTitle.cjs +2 -0
  845. package/dist/components/WindowTitle/WindowTitle.cjs.map +1 -0
  846. package/dist/components/WindowTitle/WindowTitle.js +20 -0
  847. package/dist/components/WindowTitle/WindowTitle.js.map +1 -0
  848. package/dist/components/WindowTitle/WindowTitle.module.css.cjs +2 -0
  849. package/dist/components/WindowTitle/WindowTitle.module.css.cjs.map +1 -0
  850. package/dist/components/WindowTitle/WindowTitle.module.css.js +9 -0
  851. package/dist/components/WindowTitle/WindowTitle.module.css.js.map +1 -0
  852. package/dist/components/WindowTitle.cjs +1 -0
  853. package/dist/components/WindowTitle.d.ts +2 -0
  854. package/dist/components/WindowTitle.js +2 -0
  855. package/dist/components/WrapBox/WrapBox.cjs +2 -0
  856. package/dist/components/WrapBox/WrapBox.cjs.map +1 -0
  857. package/dist/components/WrapBox/WrapBox.js +26 -0
  858. package/dist/components/WrapBox/WrapBox.js.map +1 -0
  859. package/dist/components/WrapBox/WrapBox.module.css.cjs +2 -0
  860. package/dist/components/WrapBox/WrapBox.module.css.cjs.map +1 -0
  861. package/dist/components/WrapBox/WrapBox.module.css.js +8 -0
  862. package/dist/components/WrapBox/WrapBox.module.css.js.map +1 -0
  863. package/dist/components/WrapBox.cjs +1 -0
  864. package/dist/components/WrapBox.d.ts +2 -0
  865. package/dist/components/WrapBox.js +2 -0
  866. package/dist/hooks/useBreakpoint.cjs +2 -0
  867. package/dist/hooks/useBreakpoint.cjs.map +1 -0
  868. package/dist/hooks/useBreakpoint.js +26 -0
  869. package/dist/hooks/useBreakpoint.js.map +1 -0
  870. package/dist/hooks.cjs +1 -0
  871. package/dist/hooks.d.ts +2 -0
  872. package/dist/hooks.js +2 -0
  873. package/dist/icons/dist/icons/Check.cjs +2 -0
  874. package/dist/icons/dist/icons/Check.cjs.map +1 -0
  875. package/dist/icons/dist/icons/Check.js +12 -0
  876. package/dist/icons/dist/icons/Check.js.map +1 -0
  877. package/dist/icons/dist/icons/Close.cjs +2 -0
  878. package/dist/icons/dist/icons/Close.cjs.map +1 -0
  879. package/dist/icons/dist/icons/Close.js +12 -0
  880. package/dist/icons/dist/icons/Close.js.map +1 -0
  881. package/dist/icons/dist/icons/PanDown.cjs +2 -0
  882. package/dist/icons/dist/icons/PanDown.cjs.map +1 -0
  883. package/dist/icons/dist/icons/PanDown.js +12 -0
  884. package/dist/icons/dist/icons/PanDown.js.map +1 -0
  885. package/dist/icons/dist/icons/PanUp.cjs +2 -0
  886. package/dist/icons/dist/icons/PanUp.cjs.map +1 -0
  887. package/dist/icons/dist/icons/PanUp.js +12 -0
  888. package/dist/icons/dist/icons/PanUp.js.map +1 -0
  889. package/dist/icons/dist/icons/Search.cjs +2 -0
  890. package/dist/icons/dist/icons/Search.cjs.map +1 -0
  891. package/dist/icons/dist/icons/Search.js +12 -0
  892. package/dist/icons/dist/icons/Search.js.map +1 -0
  893. package/dist/icons/dist/icons/ViewConceal.cjs +2 -0
  894. package/dist/icons/dist/icons/ViewConceal.cjs.map +1 -0
  895. package/dist/icons/dist/icons/ViewConceal.js +12 -0
  896. package/dist/icons/dist/icons/ViewConceal.js.map +1 -0
  897. package/dist/icons/dist/icons/ViewReveal.cjs +2 -0
  898. package/dist/icons/dist/icons/ViewReveal.cjs.map +1 -0
  899. package/dist/icons/dist/icons/ViewReveal.js +12 -0
  900. package/dist/icons/dist/icons/ViewReveal.js.map +1 -0
  901. package/dist/index.cjs +1 -2
  902. package/dist/index.js +87 -5166
  903. package/dist/style.css +1 -1
  904. package/package.json +391 -1
  905. package/dist/index.cjs.map +0 -1
  906. package/dist/index.js.map +0 -1
  907. package/dist/test/setup.d.ts +0 -0
@@ -0,0 +1,78 @@
1
+ import { FOCUSABLE as e, trapFocus as t, useVisualViewport as n } from "./dialogUtils.js";
2
+ import r from "./Dialog.module.css.js";
3
+ import { useCallback as i, useEffect as a, useId as o, useRef as s } from "react";
4
+ import { createPortal as c } from "react-dom";
5
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
6
+ //#region src/components/Dialog/Dialog.tsx
7
+ function d({ open: d, title: f, children: p, buttons: m = [], onClose: h, closeOnBackdrop: g = !0, role: _ = "dialog", responses: v, onResponse: y, className: b, ...x }) {
8
+ let S = s(null), C = o(), w = s(null), T = !!v, E = n();
9
+ a(() => {
10
+ d ? (w.current = document.activeElement, (S.current?.querySelector(e))?.focus()) : w.current?.focus();
11
+ }, [d]);
12
+ let D = i(() => {
13
+ let e = v?.find((e) => e.variant !== "destructive" && !e.disabled);
14
+ e && y?.(e.id);
15
+ }, [v, y]), O = T ? D : g ? h : void 0, k = i((e) => {
16
+ if (e.key === "Escape") {
17
+ e.preventDefault(), T ? D() : h?.();
18
+ return;
19
+ }
20
+ t(e, S);
21
+ }, [
22
+ T,
23
+ D,
24
+ h
25
+ ]);
26
+ if (!d) return null;
27
+ let A = () => T && v ? /* @__PURE__ */ l("div", {
28
+ className: r.footer,
29
+ children: v.map((e) => /* @__PURE__ */ l("button", {
30
+ type: "button",
31
+ disabled: e.disabled,
32
+ className: [r.btn, r[`btn-${e.variant ?? "default"}`]].filter(Boolean).join(" "),
33
+ onClick: () => y?.(e.id),
34
+ children: e.label
35
+ }, e.id))
36
+ }) : m.length > 0 ? /* @__PURE__ */ l("div", {
37
+ className: r.footer,
38
+ children: m.map((e) => /* @__PURE__ */ l("button", {
39
+ type: "button",
40
+ disabled: e.disabled,
41
+ className: [r.btn, r[`btn-${e.variant ?? "default"}`]].filter(Boolean).join(" "),
42
+ onClick: e.onClick,
43
+ children: e.label
44
+ }, e.label))
45
+ }) : null, j = /* @__PURE__ */ l("div", {
46
+ className: r.backdrop,
47
+ style: E,
48
+ onClick: O,
49
+ "aria-hidden": "true",
50
+ children: /* @__PURE__ */ u("div", {
51
+ ref: S,
52
+ role: _,
53
+ "aria-modal": "true",
54
+ "aria-labelledby": C,
55
+ className: [r.dialog, b].filter(Boolean).join(" "),
56
+ onKeyDown: k,
57
+ onClick: (e) => e.stopPropagation(),
58
+ ...x,
59
+ children: [
60
+ f && /* @__PURE__ */ l("div", {
61
+ id: C,
62
+ className: r.title,
63
+ children: f
64
+ }),
65
+ p && /* @__PURE__ */ l("div", {
66
+ className: r.body,
67
+ children: p
68
+ }),
69
+ A()
70
+ ]
71
+ })
72
+ });
73
+ return typeof document > "u" ? j : c(j, document.body);
74
+ }
75
+ //#endregion
76
+ export { d as Dialog };
77
+
78
+ //# sourceMappingURL=Dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.js","names":[],"sources":["../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import {\n useEffect,\n useRef,\n useCallback,\n useId,\n type KeyboardEvent,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { trapFocus, FOCUSABLE, useVisualViewport } from \"./dialogUtils\";\nimport styles from \"./Dialog.module.css\";\n\n// ─── AlertDialog types ────────────────────────────────────────────────────────\n\nexport type AlertDialogResponseVariant = \"default\" | \"suggested\" | \"destructive\";\n\nexport interface AlertDialogResponse {\n /**\n * Unique identifier returned via `onResponse`.\n * Use `\"cancel\"` by convention for the dismissive action.\n */\n id: string;\n /** Button label. */\n label: string;\n /** Visual emphasis. Defaults to `\"default\"`. */\n variant?: AlertDialogResponseVariant;\n /** Disables the button. */\n disabled?: boolean;\n}\n\n// ─── Dialog ───────────────────────────────────────────────────────────────────\n\nexport interface DialogButton {\n /** Button label. */\n label: string;\n /** Visual variant. Defaults to `\"default\"`. */\n variant?: \"default\" | \"suggested\" | \"destructive\";\n /** Called when the button is clicked. */\n onClick: () => void;\n /** Whether the button is disabled. */\n disabled?: boolean;\n}\n\nexport interface DialogProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Whether the dialog is visible. */\n open: boolean;\n\n // ── Standard dialog ──────────────────────────────────────────────────────\n\n /** Dialog heading. */\n title?: ReactNode;\n /** Body content. */\n children?: ReactNode;\n /** Action buttons (standard dialog API). */\n buttons?: DialogButton[];\n /** Called on Escape or backdrop click. */\n onClose?: () => void;\n /** Whether clicking the backdrop closes the dialog. Defaults to `true`. */\n closeOnBackdrop?: boolean;\n\n // ── AlertDialog extension ─────────────────────────────────────────────────\n\n /**\n * ARIA role. Use `\"alertdialog\"` for confirmations and destructive warnings —\n * screen readers announce it immediately. Defaults to `\"dialog\"`.\n *\n * When using `role=\"alertdialog\"`, prefer the `responses`/`onResponse` API\n * over `buttons`/`onClick` for semantic clarity.\n */\n role?: \"dialog\" | \"alertdialog\";\n\n /**\n * Response buttons (AlertDialog API). Alternative to `buttons` — each\n * response has a semantic `id` returned via `onResponse`.\n * Escape and backdrop click fire the first non-destructive response.\n */\n responses?: AlertDialogResponse[];\n\n /**\n * Called with the `id` of the response button clicked.\n * Required when `responses` is provided.\n */\n onResponse?: (id: string) => void;\n}\n\n/**\n * Blocking modal dialog following the Adwaita pattern.\n *\n * **Standard** — `title` + `children` + `buttons[]`.\n *\n * **Alert** — add `role=\"alertdialog\"` + `responses[]` + `onResponse`.\n * Uses a semantic response id instead of per-button `onClick`.\n * Escape / backdrop fire the first non-destructive response.\n * Mirrors `AdwAlertDialog`.\n *\n * For the app-info dialog, use `<AboutDialog />` instead.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Dialog.html\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.AlertDialog.html\n */\nexport function Dialog({\n open,\n title,\n children,\n buttons = [],\n onClose,\n closeOnBackdrop = true,\n role = \"dialog\",\n responses,\n onResponse,\n className,\n ...props\n}: DialogProps) {\n const dialogRef = useRef<HTMLDivElement>(null);\n const titleId = useId();\n const previouslyFocused = useRef<Element | null>(null);\n\n const isAlert = !!responses;\n const viewportStyle = useVisualViewport();\n\n // ── Focus management ───────────────────────────────────────────────────────\n useEffect(() => {\n if (open) {\n previouslyFocused.current = document.activeElement;\n const el = dialogRef.current?.querySelector<HTMLElement>(FOCUSABLE);\n el?.focus();\n } else {\n (previouslyFocused.current as HTMLElement | null)?.focus();\n }\n }, [open]);\n\n // ── Dismiss helpers ────────────────────────────────────────────────────────\n const dismissAlert = useCallback(() => {\n const cancel = responses?.find((r) => r.variant !== \"destructive\" && !r.disabled);\n if (cancel) onResponse?.(cancel.id);\n }, [responses, onResponse]);\n\n const handleBackdrop = isAlert ? dismissAlert : closeOnBackdrop ? onClose : undefined;\n\n // ── Keyboard ───────────────────────────────────────────────────────────────\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n if (isAlert) dismissAlert();\n else onClose?.();\n return;\n }\n trapFocus(e, dialogRef);\n },\n [isAlert, dismissAlert, onClose]\n );\n\n if (!open) return null;\n\n // ── Render buttons (standard or alert) ────────────────────────────────────\n const renderButtons = () => {\n if (isAlert && responses) {\n return (\n <div className={styles.footer}>\n {responses.map((r) => (\n <button\n key={r.id}\n type=\"button\"\n disabled={r.disabled}\n className={[styles.btn, styles[`btn-${r.variant ?? \"default\"}`]].filter(Boolean).join(\" \")}\n onClick={() => onResponse?.(r.id)}\n >\n {r.label}\n </button>\n ))}\n </div>\n );\n }\n if (buttons.length > 0) {\n return (\n <div className={styles.footer}>\n {buttons.map((btn) => (\n <button\n key={btn.label}\n type=\"button\"\n disabled={btn.disabled}\n className={[styles.btn, styles[`btn-${btn.variant ?? \"default\"}`]].filter(Boolean).join(\" \")}\n onClick={btn.onClick}\n >\n {btn.label}\n </button>\n ))}\n </div>\n );\n }\n return null;\n };\n\n const node = (\n <div\n className={styles.backdrop}\n style={viewportStyle}\n onClick={handleBackdrop}\n aria-hidden=\"true\"\n >\n <div\n ref={dialogRef}\n role={role}\n aria-modal=\"true\"\n aria-labelledby={titleId}\n className={[styles.dialog, className].filter(Boolean).join(\" \")}\n onKeyDown={handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n {...props}\n >\n {title && <div id={titleId} className={styles.title}>{title}</div>}\n {children && <div className={styles.body}>{children}</div>}\n {renderButtons()}\n </div>\n </div>\n );\n\n if (typeof document === \"undefined\") return node;\n return createPortal(node, document.body);\n}\n"],"mappings":";;;;;;AAqGA,SAAgB,EAAO,EACrB,SACA,UACA,aACA,aAAU,EAAE,EACZ,YACA,qBAAkB,IAClB,UAAO,UACP,cACA,eACA,cACA,GAAG,KACW;CACd,IAAM,IAAY,EAAuB,KAAK,EACxC,IAAU,GAAO,EACjB,IAAoB,EAAuB,KAAK,EAEhD,IAAU,CAAC,CAAC,GACZ,IAAgB,GAAmB;AAGzC,SAAgB;AACd,EAAI,KACF,EAAkB,UAAU,SAAS,gBAC1B,EAAU,SAAS,cAA2B,EAAU,GAC/D,OAAO,IAEV,EAAkB,SAAgC,OAAO;IAE3D,CAAC,EAAK,CAAC;CAGV,IAAM,IAAe,QAAkB;EACrC,IAAM,IAAS,GAAW,MAAM,MAAM,EAAE,YAAY,iBAAiB,CAAC,EAAE,SAAS;AACjF,EAAI,KAAQ,IAAa,EAAO,GAAG;IAClC,CAAC,GAAW,EAAW,CAAC,EAErB,IAAiB,IAAU,IAAe,IAAkB,IAAU,KAAA,GAGtE,IAAgB,GACnB,MAAqC;AACpC,MAAI,EAAE,QAAQ,UAAU;AAEtB,GADA,EAAE,gBAAgB,EACd,IAAS,GAAc,GACtB,KAAW;AAChB;;AAEF,IAAU,GAAG,EAAU;IAEzB;EAAC;EAAS;EAAc;EAAQ,CACjC;AAED,KAAI,CAAC,EAAM,QAAO;CAGlB,IAAM,UACA,KAAW,IAEX,kBAAC,OAAD;EAAK,WAAW,EAAO;YACpB,EAAU,KAAK,MACd,kBAAC,UAAD;GAEE,MAAK;GACL,UAAU,EAAE;GACZ,WAAW,CAAC,EAAO,KAAK,EAAO,OAAO,EAAE,WAAW,aAAa,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GAC1F,eAAe,IAAa,EAAE,GAAG;aAEhC,EAAE;GACI,EAPF,EAAE,GAOA,CACT;EACE,CAAA,GAGN,EAAQ,SAAS,IAEjB,kBAAC,OAAD;EAAK,WAAW,EAAO;YACpB,EAAQ,KAAK,MACZ,kBAAC,UAAD;GAEE,MAAK;GACL,UAAU,EAAI;GACd,WAAW,CAAC,EAAO,KAAK,EAAO,OAAO,EAAI,WAAW,aAAa,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GAC5F,SAAS,EAAI;aAEZ,EAAI;GACE,EAPF,EAAI,MAOF,CACT;EACE,CAAA,GAGH,MAGH,IACJ,kBAAC,OAAD;EACE,WAAW,EAAO;EAClB,OAAO;EACP,SAAS;EACT,eAAY;YAEZ,kBAAC,OAAD;GACE,KAAK;GACC;GACN,cAAW;GACX,mBAAiB;GACjB,WAAW,CAAC,EAAO,QAAQ,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GAC/D,WAAW;GACX,UAAU,MAAM,EAAE,iBAAiB;GACnC,GAAI;aARN;IAUG,KAAS,kBAAC,OAAD;KAAK,IAAI;KAAS,WAAW,EAAO;eAAQ;KAAY,CAAA;IACjE,KAAY,kBAAC,OAAD;KAAK,WAAW,EAAO;KAAO;KAAe,CAAA;IACzD,GAAe;IACZ;;EACF,CAAA;AAIR,QADI,OAAO,WAAa,MAAoB,IACrC,EAAa,GAAM,SAAS,KAAK"}
@@ -0,0 +1,2 @@
1
+ var e=`_backdrop_gg1yz_3`,t=`_dialog_gg1yz_26`,n=`_title_gg1yz_56`,r=`_body_gg1yz_68`,i=`_footer_gg1yz_89`,a=`_btn_gg1yz_96`,o={backdrop:e,"backdrop-in":`_backdrop-in_gg1yz_1`,dialog:t,"dialog-in":`_dialog-in_gg1yz_1`,title:n,body:r,footer:i,btn:a,"btn-default":`_btn-default_gg1yz_144`,"btn-suggested":`_btn-suggested_gg1yz_148`,"btn-destructive":`_btn-destructive_gg1yz_153`};exports.default=o;
2
+ //# sourceMappingURL=Dialog.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.module.css.cjs","names":[],"sources":["../../../src/components/Dialog/Dialog.module.css"],"sourcesContent":["/* ─── Backdrop ──────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: fixed;\n inset: 0;\n z-index: 10000;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: var(--gnome-dialog-backdrop-color, rgba(0, 0, 0, 0.5));\n backdrop-filter: blur(var(--gnome-dialog-backdrop-blur, 4px));\n -webkit-backdrop-filter: blur(var(--gnome-dialog-backdrop-blur, 4px));\n\n animation: backdrop-in var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ─── Dialog card ───────────────────────────────────────────────────────────── */\n\n.dialog {\n position: relative;\n width: min(480px, calc(100vw - 48px));\n\n background-color: var(--gnome-dialog-bg-color, var(--gnome-window-bg-color, #fafafa));\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n border-radius: var(--gnome-radius-xl, 16px);\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.25),\n 0 0 0 1px rgba(0, 0, 0, 0.08);\n\n overflow: hidden;\n\n animation: dialog-in var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes dialog-in {\n from {\n opacity: 0;\n transform: scale(0.92) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* ─── Title ─────────────────────────────────────────────────────────────────── */\n\n.title {\n padding: var(--gnome-space-4, 24px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-title-4, 1.125rem);\n font-weight: var(--gnome-font-weight-bold, 700);\n line-height: var(--gnome-line-height-title, 1.3);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n text-align: center;\n}\n\n.dialog:has(.body) .title {\n padding: var(--gnome-space-4, 24px) var(--gnome-space-4, 24px) 0 !important;\n}\n\n/* ─── Body ──────────────────────────────────────────────────────────────────── */\n\n.body {\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px) var(--gnome-space-3, 16px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.7);\n\n text-align: center;\n}\n\n/* ─── Footer (buttons) ──────────────────────────────────────────────────────── */\n\n.footer {\n display: flex;\n flex-direction: column;\n border-top: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.1));\n}\n\n/* Each button gets a full-width row separated by hairlines */\n.btn {\n appearance: none;\n border: none;\n border-bottom: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.08));\n background: transparent;\n width: 100%;\n padding: 14px var(--gnome-space-4, 24px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-accent-color, #3584e4);\n\n cursor: pointer;\n text-align: center;\n\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.btn:last-child {\n border-bottom: none;\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, currentColor 6%, transparent);\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(in srgb, currentColor 12%, transparent);\n}\n\n.btn:focus {\n outline: none;\n}\n\n.btn:focus-visible {\n outline: var(--gnome-focus-ring-width, 3px) solid var(--gnome-focus-ring-color, #3584e4);\n outline-offset: -3px;\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* ─── Button variants ───────────────────────────────────────────────────────── */\n\n.btn-default {\n color: var(--gnome-accent-color, #3584e4);\n}\n\n.btn-suggested {\n color: var(--gnome-accent-color, #3584e4);\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.btn-destructive {\n color: var(--gnome-destructive-color, #e01b24);\n}\n\n/* ─── Dark mode ─────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .dialog {\n background-color: var(--gnome-dialog-bg-color, var(--gnome-window-bg-color, #242424));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.5),\n 0 0 0 1px rgba(255, 255, 255, 0.08);\n }\n\n .footer {\n border-top-color: rgba(255, 255, 255, 0.08);\n }\n\n .btn {\n border-bottom-color: rgba(255, 255, 255, 0.06);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .dialog {\n animation: none;\n }\n\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,18 @@
1
+ //#region src/components/Dialog/Dialog.module.css
2
+ var e = "_backdrop_gg1yz_3", t = "_dialog_gg1yz_26", n = "_title_gg1yz_56", r = "_body_gg1yz_68", i = "_footer_gg1yz_89", a = "_btn_gg1yz_96", o = {
3
+ backdrop: e,
4
+ "backdrop-in": "_backdrop-in_gg1yz_1",
5
+ dialog: t,
6
+ "dialog-in": "_dialog-in_gg1yz_1",
7
+ title: n,
8
+ body: r,
9
+ footer: i,
10
+ btn: a,
11
+ "btn-default": "_btn-default_gg1yz_144",
12
+ "btn-suggested": "_btn-suggested_gg1yz_148",
13
+ "btn-destructive": "_btn-destructive_gg1yz_153"
14
+ };
15
+ //#endregion
16
+ export { o as default };
17
+
18
+ //# sourceMappingURL=Dialog.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.module.css.js","names":[],"sources":["../../../src/components/Dialog/Dialog.module.css"],"sourcesContent":["/* ─── Backdrop ──────────────────────────────────────────────────────────────── */\n\n.backdrop {\n position: fixed;\n inset: 0;\n z-index: 10000;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: var(--gnome-dialog-backdrop-color, rgba(0, 0, 0, 0.5));\n backdrop-filter: blur(var(--gnome-dialog-backdrop-blur, 4px));\n -webkit-backdrop-filter: blur(var(--gnome-dialog-backdrop-blur, 4px));\n\n animation: backdrop-in var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes backdrop-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ─── Dialog card ───────────────────────────────────────────────────────────── */\n\n.dialog {\n position: relative;\n width: min(480px, calc(100vw - 48px));\n\n background-color: var(--gnome-dialog-bg-color, var(--gnome-window-bg-color, #fafafa));\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n border-radius: var(--gnome-radius-xl, 16px);\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.25),\n 0 0 0 1px rgba(0, 0, 0, 0.08);\n\n overflow: hidden;\n\n animation: dialog-in var(--gnome-duration-normal, 200ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes dialog-in {\n from {\n opacity: 0;\n transform: scale(0.92) translateY(-8px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n/* ─── Title ─────────────────────────────────────────────────────────────────── */\n\n.title {\n padding: var(--gnome-space-4, 24px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-title-4, 1.125rem);\n font-weight: var(--gnome-font-weight-bold, 700);\n line-height: var(--gnome-line-height-title, 1.3);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n text-align: center;\n}\n\n.dialog:has(.body) .title {\n padding: var(--gnome-space-4, 24px) var(--gnome-space-4, 24px) 0 !important;\n}\n\n/* ─── Body ──────────────────────────────────────────────────────────────────── */\n\n.body {\n padding: var(--gnome-space-2, 12px) var(--gnome-space-4, 24px) var(--gnome-space-3, 16px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.7);\n\n text-align: center;\n}\n\n/* ─── Footer (buttons) ──────────────────────────────────────────────────────── */\n\n.footer {\n display: flex;\n flex-direction: column;\n border-top: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.1));\n}\n\n/* Each button gets a full-width row separated by hairlines */\n.btn {\n appearance: none;\n border: none;\n border-bottom: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.08));\n background: transparent;\n width: 100%;\n padding: 14px var(--gnome-space-4, 24px);\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n line-height: var(--gnome-line-height-body, 1.5);\n color: var(--gnome-accent-color, #3584e4);\n\n cursor: pointer;\n text-align: center;\n\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.btn:last-child {\n border-bottom: none;\n}\n\n.btn:hover:not(:disabled) {\n background-color: color-mix(in srgb, currentColor 6%, transparent);\n}\n\n.btn:active:not(:disabled) {\n background-color: color-mix(in srgb, currentColor 12%, transparent);\n}\n\n.btn:focus {\n outline: none;\n}\n\n.btn:focus-visible {\n outline: var(--gnome-focus-ring-width, 3px) solid var(--gnome-focus-ring-color, #3584e4);\n outline-offset: -3px;\n}\n\n.btn:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n/* ─── Button variants ───────────────────────────────────────────────────────── */\n\n.btn-default {\n color: var(--gnome-accent-color, #3584e4);\n}\n\n.btn-suggested {\n color: var(--gnome-accent-color, #3584e4);\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.btn-destructive {\n color: var(--gnome-destructive-color, #e01b24);\n}\n\n/* ─── Dark mode ─────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .dialog {\n background-color: var(--gnome-dialog-bg-color, var(--gnome-window-bg-color, #242424));\n box-shadow:\n 0 8px 32px rgba(0, 0, 0, 0.5),\n 0 0 0 1px rgba(255, 255, 255, 0.08);\n }\n\n .footer {\n border-top-color: rgba(255, 255, 255, 0.08);\n }\n\n .btn {\n border-bottom-color: rgba(255, 255, 255, 0.06);\n }\n}\n\n/* ─── Reduced motion ────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .dialog {\n animation: none;\n }\n\n .btn {\n transition: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ let e=require(`react`);var t=`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`;function n(){let[t,n]=(0,e.useState)({});return(0,e.useEffect)(()=>{let{visualViewport:e}=window;if(!e)return;let t=()=>{let{offsetLeft:t,offsetTop:r,width:i,height:a}=e;n({top:r,left:t,width:i,height:a})};return t(),e.addEventListener(`resize`,t),e.addEventListener(`scroll`,t),()=>{e.removeEventListener(`resize`,t),e.removeEventListener(`scroll`,t)}},[]),t}function r(e,t){if(e.key!==`Tab`)return;let n=Array.from(t.current?.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`)??[]);if(!n.length)return;let r=n[0],i=n[n.length-1];e.shiftKey?document.activeElement===r&&(e.preventDefault(),i.focus()):document.activeElement===i&&(e.preventDefault(),r.focus())}exports.FOCUSABLE=t,exports.trapFocus=r,exports.useVisualViewport=n;
2
+ //# sourceMappingURL=dialogUtils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogUtils.cjs","names":[],"sources":["../../../src/components/Dialog/dialogUtils.ts"],"sourcesContent":["import { useState, useEffect, type CSSProperties, type KeyboardEvent, RefObject } from \"react\";\n\nexport const FOCUSABLE =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Returns inline styles that anchor a `position:fixed` backdrop to the visual\n * viewport so the dialog stays centered when the virtual keyboard is open on\n * mobile (iOS Safari / Android Chrome shrink `visualViewport` but not the\n * layout viewport that `position:fixed` is relative to).\n */\nexport function useVisualViewport(): CSSProperties {\n const [style, setStyle] = useState<CSSProperties>({});\n\n useEffect(() => {\n const { visualViewport } = window;\n\n if (!visualViewport) {\n return;\n }\n\n const update = (): void => {\n const { offsetLeft: left, offsetTop: top, width, height } = visualViewport;\n setStyle({\n top,\n left,\n width,\n height,\n });\n };\n\n update();\n visualViewport.addEventListener(\"resize\", update);\n visualViewport.addEventListener(\"scroll\", update);\n\n return () => {\n visualViewport.removeEventListener(\"resize\", update);\n visualViewport.removeEventListener(\"scroll\", update);\n };\n }, []);\n\n return style;\n}\n\nexport function trapFocus(e: KeyboardEvent<HTMLDivElement>, ref: RefObject<HTMLDivElement | null>) {\n if (e.key !== \"Tab\") {\n return;\n }\n\n const focusable = Array.from(ref.current?.querySelectorAll<HTMLElement>(FOCUSABLE) ?? []);\n\n if (!focusable.length) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n}\n"],"mappings":"uBAEA,IAAa,EACX,2IAQF,SAAgB,GAAmC,CACjD,GAAM,CAAC,EAAO,IAAA,EAAA,EAAA,UAAoC,EAAE,CAAC,CA6BrD,OA3BA,EAAA,EAAA,eAAgB,CACd,GAAM,CAAE,kBAAmB,OAE3B,GAAI,CAAC,EACH,OAGF,IAAM,MAAqB,CACzB,GAAM,CAAE,WAAY,EAAM,UAAW,EAAK,QAAO,UAAW,EAC5D,EAAS,CACP,MACA,OACA,QACA,SACD,CAAC,EAOJ,OAJA,GAAQ,CACR,EAAe,iBAAiB,SAAU,EAAO,CACjD,EAAe,iBAAiB,SAAU,EAAO,KAEpC,CACX,EAAe,oBAAoB,SAAU,EAAO,CACpD,EAAe,oBAAoB,SAAU,EAAO,GAErD,EAAE,CAAC,CAEC,EAGT,SAAgB,EAAU,EAAkC,EAAuC,CACjG,GAAI,EAAE,MAAQ,MACZ,OAGF,IAAM,EAAY,MAAM,KAAK,EAAI,SAAS,iBAAA,2IAAwC,EAAI,EAAE,CAAC,CAEzF,GAAI,CAAC,EAAU,OACb,OAGF,IAAM,EAAQ,EAAU,GAClB,EAAO,EAAU,EAAU,OAAS,GAEtC,EAAE,SACA,SAAS,gBAAkB,IAC7B,EAAE,gBAAgB,CAClB,EAAK,OAAO,EAGV,SAAS,gBAAkB,IAC7B,EAAE,gBAAgB,CAClB,EAAM,OAAO"}
@@ -0,0 +1,33 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/components/Dialog/dialogUtils.ts
3
+ var n = "button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
4
+ function r() {
5
+ let [n, r] = t({});
6
+ return e(() => {
7
+ let { visualViewport: e } = window;
8
+ if (!e) return;
9
+ let t = () => {
10
+ let { offsetLeft: t, offsetTop: n, width: i, height: a } = e;
11
+ r({
12
+ top: n,
13
+ left: t,
14
+ width: i,
15
+ height: a
16
+ });
17
+ };
18
+ return t(), e.addEventListener("resize", t), e.addEventListener("scroll", t), () => {
19
+ e.removeEventListener("resize", t), e.removeEventListener("scroll", t);
20
+ };
21
+ }, []), n;
22
+ }
23
+ function i(e, t) {
24
+ if (e.key !== "Tab") return;
25
+ let n = Array.from(t.current?.querySelectorAll("button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])") ?? []);
26
+ if (!n.length) return;
27
+ let r = n[0], i = n[n.length - 1];
28
+ e.shiftKey ? document.activeElement === r && (e.preventDefault(), i.focus()) : document.activeElement === i && (e.preventDefault(), r.focus());
29
+ }
30
+ //#endregion
31
+ export { n as FOCUSABLE, i as trapFocus, r as useVisualViewport };
32
+
33
+ //# sourceMappingURL=dialogUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogUtils.js","names":[],"sources":["../../../src/components/Dialog/dialogUtils.ts"],"sourcesContent":["import { useState, useEffect, type CSSProperties, type KeyboardEvent, RefObject } from \"react\";\n\nexport const FOCUSABLE =\n 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Returns inline styles that anchor a `position:fixed` backdrop to the visual\n * viewport so the dialog stays centered when the virtual keyboard is open on\n * mobile (iOS Safari / Android Chrome shrink `visualViewport` but not the\n * layout viewport that `position:fixed` is relative to).\n */\nexport function useVisualViewport(): CSSProperties {\n const [style, setStyle] = useState<CSSProperties>({});\n\n useEffect(() => {\n const { visualViewport } = window;\n\n if (!visualViewport) {\n return;\n }\n\n const update = (): void => {\n const { offsetLeft: left, offsetTop: top, width, height } = visualViewport;\n setStyle({\n top,\n left,\n width,\n height,\n });\n };\n\n update();\n visualViewport.addEventListener(\"resize\", update);\n visualViewport.addEventListener(\"scroll\", update);\n\n return () => {\n visualViewport.removeEventListener(\"resize\", update);\n visualViewport.removeEventListener(\"scroll\", update);\n };\n }, []);\n\n return style;\n}\n\nexport function trapFocus(e: KeyboardEvent<HTMLDivElement>, ref: RefObject<HTMLDivElement | null>) {\n if (e.key !== \"Tab\") {\n return;\n }\n\n const focusable = Array.from(ref.current?.querySelectorAll<HTMLElement>(FOCUSABLE) ?? []);\n\n if (!focusable.length) {\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n}\n"],"mappings":";;AAEA,IAAa,IACX;AAQF,SAAgB,IAAmC;CACjD,IAAM,CAAC,GAAO,KAAY,EAAwB,EAAE,CAAC;AA6BrD,QA3BA,QAAgB;EACd,IAAM,EAAE,sBAAmB;AAE3B,MAAI,CAAC,EACH;EAGF,IAAM,UAAqB;GACzB,IAAM,EAAE,YAAY,GAAM,WAAW,GAAK,UAAO,cAAW;AAC5D,KAAS;IACP;IACA;IACA;IACA;IACD,CAAC;;AAOJ,SAJA,GAAQ,EACR,EAAe,iBAAiB,UAAU,EAAO,EACjD,EAAe,iBAAiB,UAAU,EAAO,QAEpC;AAEX,GADA,EAAe,oBAAoB,UAAU,EAAO,EACpD,EAAe,oBAAoB,UAAU,EAAO;;IAErD,EAAE,CAAC,EAEC;;AAGT,SAAgB,EAAU,GAAkC,GAAuC;AACjG,KAAI,EAAE,QAAQ,MACZ;CAGF,IAAM,IAAY,MAAM,KAAK,EAAI,SAAS,iBAAA,6IAAwC,IAAI,EAAE,CAAC;AAEzF,KAAI,CAAC,EAAU,OACb;CAGF,IAAM,IAAQ,EAAU,IAClB,IAAO,EAAU,EAAU,SAAS;AAE1C,CAAI,EAAE,WACA,SAAS,kBAAkB,MAC7B,EAAE,gBAAgB,EAClB,EAAK,OAAO,IAGV,SAAS,kBAAkB,MAC7B,EAAE,gBAAgB,EAClB,EAAM,OAAO"}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Dialog/Dialog.cjs`);exports.Dialog=e.Dialog;
@@ -0,0 +1,2 @@
1
+ export * from './Dialog/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ import { Dialog as e } from "./Dialog/Dialog.js";
2
+ export { e as Dialog };
@@ -0,0 +1,2 @@
1
+ const e=require(`../Icon/Icon.cjs`),t=require(`../../icons/dist/icons/PanDown.cjs`),n=require(`../../icons/dist/icons/Check.cjs`),r=require(`./Dropdown.module.css.cjs`);let i=require(`react`),a=require(`react/jsx-runtime`);function o({options:o,value:s,onChange:c,placeholder:l=`Select an option`,disabled:u,className:d,...f}){let[p,m]=(0,i.useState)(!1),[h,g]=(0,i.useState)(-1),[_,v]=(0,i.useState)(!1),y=(0,i.useId)(),b=(0,i.useId)(),x=(0,i.useRef)(null),S=(0,i.useRef)(null),C=o.find(e=>e.value===s),w=(0,i.useCallback)(()=>{if(!x.current)return;let e=x.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,n=Math.min(o.length*48+8,280);v(t<n&&e.top>n)},[o.length]),T=(0,i.useCallback)(()=>{if(u)return;w(),m(!0);let e=o.findIndex(e=>e.value===s&&!e.disabled);g(e>=0?e:o.findIndex(e=>!e.disabled))},[u,w,o,s]),E=(0,i.useCallback)(()=>{m(!1),g(-1),x.current?.focus()},[]),D=(0,i.useCallback)(e=>{e.disabled||(c?.(e.value),E())},[c,E]);(0,i.useEffect)(()=>{!p||h<0||!S.current||S.current.children[h]?.scrollIntoView({block:`nearest`})},[h,p]),(0,i.useEffect)(()=>{if(!p)return;let e=e=>{!x.current?.contains(e.target)&&!S.current?.contains(e.target)&&E()};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[p,E]);let O=(0,i.useCallback)(e=>{switch(e.key){case`Enter`:case` `:case`ArrowDown`:e.preventDefault(),T();break;case`ArrowUp`:e.preventDefault(),w(),m(!0),g(o.reduce((e,t,n)=>t.disabled?e:n,-1));break}},[T,w,o]),k=(0,i.useCallback)(e=>{let t=o.map((e,t)=>({o:e,i:t})).filter(({o:e})=>!e.disabled).map(({i:e})=>e),n=t.indexOf(h);switch(e.key){case`ArrowDown`:{e.preventDefault();let r=t[Math.min(n+1,t.length-1)];g(r??h);break}case`ArrowUp`:{e.preventDefault();let r=t[Math.max(n-1,0)];g(r??h);break}case`Home`:e.preventDefault(),g(t[0]??-1);break;case`End`:e.preventDefault(),g(t[t.length-1]??-1);break;case`Enter`:case` `:e.preventDefault(),h>=0&&D(o[h]);break;case`Escape`:case`Tab`:E();break}},[o,h,D,E]);return(0,a.jsxs)(`div`,{className:[r.default.wrapper,d].filter(Boolean).join(` `),...f,children:[(0,a.jsxs)(`button`,{ref:x,id:y,type:`button`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":p,"aria-controls":b,"aria-activedescendant":p&&h>=0?`${b}-opt-${h}`:void 0,disabled:u,className:[r.default.trigger,p?r.default.triggerOpen:null].filter(Boolean).join(` `),onClick:()=>p?E():T(),onKeyDown:O,children:[(0,a.jsx)(`span`,{className:[r.default.triggerLabel,C?null:r.default.placeholder].filter(Boolean).join(` `),children:C?.label??l}),(0,a.jsx)(e.Icon,{icon:t.e,size:`md`,"aria-hidden":!0,className:[r.default.chevron,p?r.default.chevronOpen:null].filter(Boolean).join(` `)})]}),p&&(0,a.jsx)(`ul`,{ref:S,id:b,role:`listbox`,"aria-labelledby":y,tabIndex:-1,className:[r.default.list,_?r.default.listUp:r.default.listDown].filter(Boolean).join(` `),onKeyDown:k,children:o.map((t,i)=>(0,a.jsxs)(`li`,{id:`${b}-opt-${i}`,role:`option`,"aria-selected":t.value===s,"aria-disabled":t.disabled,className:[r.default.option,t.value===s?r.default.optionSelected:null,i===h?r.default.optionActive:null,t.disabled?r.default.optionDisabled:null].filter(Boolean).join(` `),onMouseEnter:()=>!t.disabled&&g(i),onClick:()=>D(t),children:[(0,a.jsxs)(`span`,{className:r.default.optionText,children:[(0,a.jsx)(`span`,{className:r.default.optionLabel,children:t.label}),t.description&&(0,a.jsx)(`span`,{className:r.default.optionDesc,children:t.description})]}),t.value===s&&(0,a.jsx)(e.Icon,{icon:n.e,size:`md`,"aria-hidden":!0,className:r.default.checkIcon})]},t.value))})]})}exports.Dropdown=o;
2
+ //# sourceMappingURL=Dropdown.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.cjs","names":[],"sources":["../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useId,\n useEffect,\n useCallback,\n type KeyboardEvent,\n type HTMLAttributes,\n} from \"react\";\nimport { PanDown, Check } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport styles from \"./Dropdown.module.css\";\n\nexport interface DropdownOption<V extends string = string> {\n /** The value submitted / returned on selection. */\n value: V;\n /** Display label shown in the list and trigger. */\n label: string;\n /** Optional descriptive text shown below the label. */\n description?: string;\n /** Whether the option is selectable. */\n disabled?: boolean;\n}\n\nexport interface DropdownProps<V extends string = string>\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** The list of selectable options. */\n options: DropdownOption<V>[];\n /** The currently selected value. */\n value?: V;\n /** Called when the user selects an option. */\n onChange?: (value: V) => void;\n /** Placeholder shown when no option is selected. */\n placeholder?: string;\n /** Accessible label for the control (used as `aria-label`). */\n \"aria-label\"?: string;\n /** Disables the entire control. */\n disabled?: boolean;\n}\n\n/**\n * Expandable option list following the Adwaita combo-row / drop-down pattern.\n *\n * - Fully keyboard-navigable: Space/Enter opens; ↑/↓ navigate; Enter selects; Escape closes.\n * - Uses `role=\"combobox\"` + `role=\"listbox\"` + `role=\"option\"` ARIA pattern.\n * - Closes when clicking outside or pressing Escape.\n * - The list flips above the trigger when there is not enough space below.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/drop-down-lists.html\n */\nexport function Dropdown<V extends string = string>({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n disabled,\n className,\n ...props\n}: DropdownProps<V>) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const [flipUp, setFlipUp] = useState(false);\n\n const triggerId = useId();\n const listboxId = useId();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n\n const selected = options.find((o) => o.value === value);\n\n // Compute flip direction when opening\n const computeFlip = useCallback(() => {\n if (!triggerRef.current) return;\n const rect = triggerRef.current.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const listH = Math.min(options.length * 48 + 8, 280);\n setFlipUp(spaceBelow < listH && rect.top > listH);\n }, [options.length]);\n\n const openList = useCallback(() => {\n if (disabled) return;\n computeFlip();\n setOpen(true);\n const idx = options.findIndex((o) => o.value === value && !o.disabled);\n setActiveIndex(idx >= 0 ? idx : options.findIndex((o) => !o.disabled));\n }, [disabled, computeFlip, options, value]);\n\n const closeList = useCallback(() => {\n setOpen(false);\n setActiveIndex(-1);\n triggerRef.current?.focus();\n }, []);\n\n const selectOption = useCallback(\n (opt: DropdownOption<V>) => {\n if (opt.disabled) return;\n onChange?.(opt.value);\n closeList();\n },\n [onChange, closeList]\n );\n\n // Scroll active item into view\n useEffect(() => {\n if (!open || activeIndex < 0 || !listRef.current) return;\n const item = listRef.current.children[activeIndex] as HTMLElement | undefined;\n item?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, open]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (\n !triggerRef.current?.contains(e.target as Node) &&\n !listRef.current?.contains(e.target as Node)\n ) {\n closeList();\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, closeList]);\n\n // Trigger keyboard handler\n const handleTriggerKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"ArrowDown\":\n e.preventDefault();\n openList();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n computeFlip();\n setOpen(true);\n setActiveIndex(\n options.reduce(\n (last, o, i) => (!o.disabled ? i : last),\n -1\n )\n );\n break;\n }\n },\n [openList, computeFlip, options]\n );\n\n // Listbox keyboard handler\n const handleListKeyDown = useCallback(\n (e: KeyboardEvent<HTMLUListElement>) => {\n const enabledIndexes = options\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !o.disabled)\n .map(({ i }) => i);\n\n const currentPos = enabledIndexes.indexOf(activeIndex);\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = enabledIndexes[Math.min(currentPos + 1, enabledIndexes.length - 1)];\n setActiveIndex(next ?? activeIndex);\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = enabledIndexes[Math.max(currentPos - 1, 0)];\n setActiveIndex(prev ?? activeIndex);\n break;\n }\n case \"Home\":\n e.preventDefault();\n setActiveIndex(enabledIndexes[0] ?? -1);\n break;\n case \"End\":\n e.preventDefault();\n setActiveIndex(enabledIndexes[enabledIndexes.length - 1] ?? -1);\n break;\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (activeIndex >= 0) selectOption(options[activeIndex]);\n break;\n }\n case \"Escape\":\n case \"Tab\":\n closeList();\n break;\n }\n },\n [options, activeIndex, selectOption, closeList]\n );\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* Trigger button */}\n <button\n ref={triggerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-activedescendant={\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined\n }\n disabled={disabled}\n className={[styles.trigger, open ? styles.triggerOpen : null]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => (open ? closeList() : openList())}\n onKeyDown={handleTriggerKeyDown}\n >\n <span className={[styles.triggerLabel, !selected ? styles.placeholder : null]\n .filter(Boolean).join(\" \")}>\n {selected?.label ?? placeholder}\n </span>\n <Icon\n icon={PanDown}\n size=\"md\"\n aria-hidden\n className={[styles.chevron, open ? styles.chevronOpen : null]\n .filter(Boolean).join(\" \")}\n />\n </button>\n\n {/* Listbox */}\n {open && (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={[styles.list, flipUp ? styles.listUp : styles.listDown]\n .filter(Boolean)\n .join(\" \")}\n onKeyDown={handleListKeyDown}\n >\n {options.map((opt, i) => (\n <li\n key={opt.value}\n id={`${listboxId}-opt-${i}`}\n role=\"option\"\n aria-selected={opt.value === value}\n aria-disabled={opt.disabled}\n className={[\n styles.option,\n opt.value === value ? styles.optionSelected : null,\n i === activeIndex ? styles.optionActive : null,\n opt.disabled ? styles.optionDisabled : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n onClick={() => selectOption(opt)}\n >\n <span className={styles.optionText}>\n <span className={styles.optionLabel}>{opt.label}</span>\n {opt.description && (\n <span className={styles.optionDesc}>{opt.description}</span>\n )}\n </span>\n {opt.value === value && (\n <Icon icon={Check} size=\"md\" aria-hidden className={styles.checkIcon} />\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ import { Icon as e } from "../Icon/Icon.js";
2
+ import { e as t } from "../../icons/dist/icons/PanDown.js";
3
+ import { e as n } from "../../icons/dist/icons/Check.js";
4
+ import r from "./Dropdown.module.css.js";
5
+ import { useCallback as i, useEffect as a, useId as o, useRef as s, useState as c } from "react";
6
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
7
+ //#region src/components/Dropdown/Dropdown.tsx
8
+ function d({ options: d, value: f, onChange: p, placeholder: m = "Select an option", disabled: h, className: g, ..._ }) {
9
+ let [v, y] = c(!1), [b, x] = c(-1), [S, C] = c(!1), w = o(), T = o(), E = s(null), D = s(null), O = d.find((e) => e.value === f), k = i(() => {
10
+ if (!E.current) return;
11
+ let e = E.current.getBoundingClientRect(), t = window.innerHeight - e.bottom, n = Math.min(d.length * 48 + 8, 280);
12
+ C(t < n && e.top > n);
13
+ }, [d.length]), A = i(() => {
14
+ if (h) return;
15
+ k(), y(!0);
16
+ let e = d.findIndex((e) => e.value === f && !e.disabled);
17
+ x(e >= 0 ? e : d.findIndex((e) => !e.disabled));
18
+ }, [
19
+ h,
20
+ k,
21
+ d,
22
+ f
23
+ ]), j = i(() => {
24
+ y(!1), x(-1), E.current?.focus();
25
+ }, []), M = i((e) => {
26
+ e.disabled || (p?.(e.value), j());
27
+ }, [p, j]);
28
+ a(() => {
29
+ !v || b < 0 || !D.current || D.current.children[b]?.scrollIntoView({ block: "nearest" });
30
+ }, [b, v]), a(() => {
31
+ if (!v) return;
32
+ let e = (e) => {
33
+ !E.current?.contains(e.target) && !D.current?.contains(e.target) && j();
34
+ };
35
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
36
+ }, [v, j]);
37
+ let N = i((e) => {
38
+ switch (e.key) {
39
+ case "Enter":
40
+ case " ":
41
+ case "ArrowDown":
42
+ e.preventDefault(), A();
43
+ break;
44
+ case "ArrowUp":
45
+ e.preventDefault(), k(), y(!0), x(d.reduce((e, t, n) => t.disabled ? e : n, -1));
46
+ break;
47
+ }
48
+ }, [
49
+ A,
50
+ k,
51
+ d
52
+ ]), P = i((e) => {
53
+ let t = d.map((e, t) => ({
54
+ o: e,
55
+ i: t
56
+ })).filter(({ o: e }) => !e.disabled).map(({ i: e }) => e), n = t.indexOf(b);
57
+ switch (e.key) {
58
+ case "ArrowDown": {
59
+ e.preventDefault();
60
+ let r = t[Math.min(n + 1, t.length - 1)];
61
+ x(r ?? b);
62
+ break;
63
+ }
64
+ case "ArrowUp": {
65
+ e.preventDefault();
66
+ let r = t[Math.max(n - 1, 0)];
67
+ x(r ?? b);
68
+ break;
69
+ }
70
+ case "Home":
71
+ e.preventDefault(), x(t[0] ?? -1);
72
+ break;
73
+ case "End":
74
+ e.preventDefault(), x(t[t.length - 1] ?? -1);
75
+ break;
76
+ case "Enter":
77
+ case " ":
78
+ e.preventDefault(), b >= 0 && M(d[b]);
79
+ break;
80
+ case "Escape":
81
+ case "Tab":
82
+ j();
83
+ break;
84
+ }
85
+ }, [
86
+ d,
87
+ b,
88
+ M,
89
+ j
90
+ ]);
91
+ return /* @__PURE__ */ u("div", {
92
+ className: [r.wrapper, g].filter(Boolean).join(" "),
93
+ ..._,
94
+ children: [/* @__PURE__ */ u("button", {
95
+ ref: E,
96
+ id: w,
97
+ type: "button",
98
+ role: "combobox",
99
+ "aria-haspopup": "listbox",
100
+ "aria-expanded": v,
101
+ "aria-controls": T,
102
+ "aria-activedescendant": v && b >= 0 ? `${T}-opt-${b}` : void 0,
103
+ disabled: h,
104
+ className: [r.trigger, v ? r.triggerOpen : null].filter(Boolean).join(" "),
105
+ onClick: () => v ? j() : A(),
106
+ onKeyDown: N,
107
+ children: [/* @__PURE__ */ l("span", {
108
+ className: [r.triggerLabel, O ? null : r.placeholder].filter(Boolean).join(" "),
109
+ children: O?.label ?? m
110
+ }), /* @__PURE__ */ l(e, {
111
+ icon: t,
112
+ size: "md",
113
+ "aria-hidden": !0,
114
+ className: [r.chevron, v ? r.chevronOpen : null].filter(Boolean).join(" ")
115
+ })]
116
+ }), v && /* @__PURE__ */ l("ul", {
117
+ ref: D,
118
+ id: T,
119
+ role: "listbox",
120
+ "aria-labelledby": w,
121
+ tabIndex: -1,
122
+ className: [r.list, S ? r.listUp : r.listDown].filter(Boolean).join(" "),
123
+ onKeyDown: P,
124
+ children: d.map((t, i) => /* @__PURE__ */ u("li", {
125
+ id: `${T}-opt-${i}`,
126
+ role: "option",
127
+ "aria-selected": t.value === f,
128
+ "aria-disabled": t.disabled,
129
+ className: [
130
+ r.option,
131
+ t.value === f ? r.optionSelected : null,
132
+ i === b ? r.optionActive : null,
133
+ t.disabled ? r.optionDisabled : null
134
+ ].filter(Boolean).join(" "),
135
+ onMouseEnter: () => !t.disabled && x(i),
136
+ onClick: () => M(t),
137
+ children: [/* @__PURE__ */ u("span", {
138
+ className: r.optionText,
139
+ children: [/* @__PURE__ */ l("span", {
140
+ className: r.optionLabel,
141
+ children: t.label
142
+ }), t.description && /* @__PURE__ */ l("span", {
143
+ className: r.optionDesc,
144
+ children: t.description
145
+ })]
146
+ }), t.value === f && /* @__PURE__ */ l(e, {
147
+ icon: n,
148
+ size: "md",
149
+ "aria-hidden": !0,
150
+ className: r.checkIcon
151
+ })]
152
+ }, t.value))
153
+ })]
154
+ });
155
+ }
156
+ //#endregion
157
+ export { d as Dropdown };
158
+
159
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","names":[],"sources":["../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useId,\n useEffect,\n useCallback,\n type KeyboardEvent,\n type HTMLAttributes,\n} from \"react\";\nimport { PanDown, Check } from \"@gnome-ui/icons\";\nimport { Icon } from \"../Icon\";\nimport styles from \"./Dropdown.module.css\";\n\nexport interface DropdownOption<V extends string = string> {\n /** The value submitted / returned on selection. */\n value: V;\n /** Display label shown in the list and trigger. */\n label: string;\n /** Optional descriptive text shown below the label. */\n description?: string;\n /** Whether the option is selectable. */\n disabled?: boolean;\n}\n\nexport interface DropdownProps<V extends string = string>\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** The list of selectable options. */\n options: DropdownOption<V>[];\n /** The currently selected value. */\n value?: V;\n /** Called when the user selects an option. */\n onChange?: (value: V) => void;\n /** Placeholder shown when no option is selected. */\n placeholder?: string;\n /** Accessible label for the control (used as `aria-label`). */\n \"aria-label\"?: string;\n /** Disables the entire control. */\n disabled?: boolean;\n}\n\n/**\n * Expandable option list following the Adwaita combo-row / drop-down pattern.\n *\n * - Fully keyboard-navigable: Space/Enter opens; ↑/↓ navigate; Enter selects; Escape closes.\n * - Uses `role=\"combobox\"` + `role=\"listbox\"` + `role=\"option\"` ARIA pattern.\n * - Closes when clicking outside or pressing Escape.\n * - The list flips above the trigger when there is not enough space below.\n *\n * @see https://developer.gnome.org/hig/patterns/controls/drop-down-lists.html\n */\nexport function Dropdown<V extends string = string>({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n disabled,\n className,\n ...props\n}: DropdownProps<V>) {\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const [flipUp, setFlipUp] = useState(false);\n\n const triggerId = useId();\n const listboxId = useId();\n const triggerRef = useRef<HTMLButtonElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n\n const selected = options.find((o) => o.value === value);\n\n // Compute flip direction when opening\n const computeFlip = useCallback(() => {\n if (!triggerRef.current) return;\n const rect = triggerRef.current.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const listH = Math.min(options.length * 48 + 8, 280);\n setFlipUp(spaceBelow < listH && rect.top > listH);\n }, [options.length]);\n\n const openList = useCallback(() => {\n if (disabled) return;\n computeFlip();\n setOpen(true);\n const idx = options.findIndex((o) => o.value === value && !o.disabled);\n setActiveIndex(idx >= 0 ? idx : options.findIndex((o) => !o.disabled));\n }, [disabled, computeFlip, options, value]);\n\n const closeList = useCallback(() => {\n setOpen(false);\n setActiveIndex(-1);\n triggerRef.current?.focus();\n }, []);\n\n const selectOption = useCallback(\n (opt: DropdownOption<V>) => {\n if (opt.disabled) return;\n onChange?.(opt.value);\n closeList();\n },\n [onChange, closeList]\n );\n\n // Scroll active item into view\n useEffect(() => {\n if (!open || activeIndex < 0 || !listRef.current) return;\n const item = listRef.current.children[activeIndex] as HTMLElement | undefined;\n item?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, open]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const handler = (e: MouseEvent) => {\n if (\n !triggerRef.current?.contains(e.target as Node) &&\n !listRef.current?.contains(e.target as Node)\n ) {\n closeList();\n }\n };\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open, closeList]);\n\n // Trigger keyboard handler\n const handleTriggerKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case \"Enter\":\n case \" \":\n case \"ArrowDown\":\n e.preventDefault();\n openList();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n computeFlip();\n setOpen(true);\n setActiveIndex(\n options.reduce(\n (last, o, i) => (!o.disabled ? i : last),\n -1\n )\n );\n break;\n }\n },\n [openList, computeFlip, options]\n );\n\n // Listbox keyboard handler\n const handleListKeyDown = useCallback(\n (e: KeyboardEvent<HTMLUListElement>) => {\n const enabledIndexes = options\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !o.disabled)\n .map(({ i }) => i);\n\n const currentPos = enabledIndexes.indexOf(activeIndex);\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = enabledIndexes[Math.min(currentPos + 1, enabledIndexes.length - 1)];\n setActiveIndex(next ?? activeIndex);\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = enabledIndexes[Math.max(currentPos - 1, 0)];\n setActiveIndex(prev ?? activeIndex);\n break;\n }\n case \"Home\":\n e.preventDefault();\n setActiveIndex(enabledIndexes[0] ?? -1);\n break;\n case \"End\":\n e.preventDefault();\n setActiveIndex(enabledIndexes[enabledIndexes.length - 1] ?? -1);\n break;\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (activeIndex >= 0) selectOption(options[activeIndex]);\n break;\n }\n case \"Escape\":\n case \"Tab\":\n closeList();\n break;\n }\n },\n [options, activeIndex, selectOption, closeList]\n );\n\n return (\n <div\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {/* Trigger button */}\n <button\n ref={triggerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listboxId}\n aria-activedescendant={\n open && activeIndex >= 0 ? `${listboxId}-opt-${activeIndex}` : undefined\n }\n disabled={disabled}\n className={[styles.trigger, open ? styles.triggerOpen : null]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => (open ? closeList() : openList())}\n onKeyDown={handleTriggerKeyDown}\n >\n <span className={[styles.triggerLabel, !selected ? styles.placeholder : null]\n .filter(Boolean).join(\" \")}>\n {selected?.label ?? placeholder}\n </span>\n <Icon\n icon={PanDown}\n size=\"md\"\n aria-hidden\n className={[styles.chevron, open ? styles.chevronOpen : null]\n .filter(Boolean).join(\" \")}\n />\n </button>\n\n {/* Listbox */}\n {open && (\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={triggerId}\n tabIndex={-1}\n className={[styles.list, flipUp ? styles.listUp : styles.listDown]\n .filter(Boolean)\n .join(\" \")}\n onKeyDown={handleListKeyDown}\n >\n {options.map((opt, i) => (\n <li\n key={opt.value}\n id={`${listboxId}-opt-${i}`}\n role=\"option\"\n aria-selected={opt.value === value}\n aria-disabled={opt.disabled}\n className={[\n styles.option,\n opt.value === value ? styles.optionSelected : null,\n i === activeIndex ? styles.optionActive : null,\n opt.disabled ? styles.optionDisabled : null,\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => !opt.disabled && setActiveIndex(i)}\n onClick={() => selectOption(opt)}\n >\n <span className={styles.optionText}>\n <span className={styles.optionLabel}>{opt.label}</span>\n {opt.description && (\n <span className={styles.optionDesc}>{opt.description}</span>\n )}\n </span>\n {opt.value === value && (\n <Icon icon={Check} size=\"md\" aria-hidden className={styles.checkIcon} />\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=`_wrapper_1hi05_3`,t=`_trigger_1hi05_11`,n=`_triggerOpen_1hi05_63`,r=`_triggerLabel_1hi05_73`,i=`_placeholder_1hi05_81`,a=`_chevron_1hi05_87`,o=`_chevronOpen_1hi05_94`,s=`_list_1hi05_100`,c=`_listDown_1hi05_129`,l=`_listUp_1hi05_133`,u=`_option_1hi05_145`,d=`_optionActive_1hi05_162`,f=`_optionSelected_1hi05_166`,p=`_optionDisabled_1hi05_170`,m=`_optionText_1hi05_178`,h=`_optionLabel_1hi05_186`,g=`_optionDesc_1hi05_192`,_=`_checkIcon_1hi05_202`,v={wrapper:e,trigger:t,triggerOpen:n,triggerLabel:r,placeholder:i,chevron:a,chevronOpen:o,list:s,"list-in":`_list-in_1hi05_1`,listDown:c,listUp:l,"list-in-up":`_list-in-up_1hi05_1`,option:u,optionActive:d,optionSelected:f,optionDisabled:p,optionText:m,optionLabel:h,optionDesc:g,checkIcon:_};exports.default=v;
2
+ //# sourceMappingURL=Dropdown.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.module.css.cjs","names":[],"sources":["../../../src/components/Dropdown/Dropdown.module.css"],"sourcesContent":["/* ─── Wrapper ────────────────────────────────────────────────────────────────── */\n\n.wrapper {\n position: relative;\n display: inline-block;\n min-width: 160px;\n}\n\n/* ─── Trigger button ─────────────────────────────────────────────────────────── */\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gnome-space-1, 6px);\n width: 100%;\n\n padding: 7px var(--gnome-space-2, 12px);\n min-height: 36px;\n\n appearance: none;\n background-color: var(--gnome-card-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: var(--gnome-shadow-sm, 0 1px 2px rgba(0,0,0,0.08));\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n cursor: pointer;\n user-select: none;\n text-align: left;\n\n transition:\n background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n border-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.trigger:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-card-bg-color, #ffffff) 90%, black 10%);\n}\n\n.trigger:focus {\n outline: none;\n}\n\n.trigger:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.trigger:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.triggerOpen {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Trigger label ──────────────────────────────────────────────────────────── */\n\n.triggerLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.placeholder {\n opacity: var(--gnome-opacity-dim, 0.55);\n}\n\n/* ─── Chevron icon ───────────────────────────────────────────────────────────── */\n\n.chevron {\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n transition: transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.chevronOpen {\n transform: rotate(180deg);\n}\n\n/* ─── Listbox ────────────────────────────────────────────────────────────────── */\n\n.list {\n position: absolute;\n left: 0;\n right: 0;\n z-index: 1000;\n\n margin: 0;\n padding: 4px 0;\n list-style: none;\n\n background-color: var(--gnome-popover-bg-color, var(--gnome-card-bg-color, #ffffff));\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow:\n 0 4px 16px rgba(0, 0, 0, 0.12),\n 0 1px 3px rgba(0, 0, 0, 0.08);\n\n max-height: 280px;\n overflow-y: auto;\n overscroll-behavior: contain;\n\n animation: list-in var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes list-in {\n from { opacity: 0; transform: scaleY(0.95); transform-origin: top center; }\n to { opacity: 1; transform: scaleY(1); transform-origin: top center; }\n}\n\n.listDown {\n top: calc(100% + 4px);\n}\n\n.listUp {\n bottom: calc(100% + 4px);\n animation-name: list-in-up;\n}\n\n@keyframes list-in-up {\n from { opacity: 0; transform: scaleY(0.95); transform-origin: bottom center; }\n to { opacity: 1; transform: scaleY(1); transform-origin: bottom center; }\n}\n\n/* ─── Option ─────────────────────────────────────────────────────────────────── */\n\n.option {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: 8px var(--gnome-space-2, 12px);\n min-height: 40px;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n cursor: pointer;\n user-select: none;\n\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.optionActive {\n background-color: color-mix(in srgb, var(--gnome-accent-bg-color, #3584e4) 12%, transparent);\n}\n\n.optionSelected {\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.optionDisabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Option text block ──────────────────────────────────────────────────────── */\n\n.optionText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.optionLabel {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.optionDesc {\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Check icon (selected) ──────────────────────────────────────────────────── */\n\n.checkIcon {\n flex-shrink: 0;\n color: var(--gnome-accent-color, #3584e4);\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .trigger {\n background-color: var(--gnome-card-bg-color, #383838);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: none;\n }\n\n .trigger:hover:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .list {\n background-color: var(--gnome-card-bg-color, #383838);\n border-color: rgba(255, 255, 255, 0.1);\n box-shadow:\n 0 4px 16px rgba(0, 0, 0, 0.4),\n 0 1px 3px rgba(0, 0, 0, 0.3);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .trigger,\n .chevron {\n transition: none;\n }\n\n .list {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,27 @@
1
+ //#region src/components/Dropdown/Dropdown.module.css
2
+ var e = "_wrapper_1hi05_3", t = "_trigger_1hi05_11", n = "_triggerOpen_1hi05_63", r = "_triggerLabel_1hi05_73", i = "_placeholder_1hi05_81", a = "_chevron_1hi05_87", o = "_chevronOpen_1hi05_94", s = "_list_1hi05_100", c = "_listDown_1hi05_129", l = "_listUp_1hi05_133", u = "_option_1hi05_145", d = "_optionActive_1hi05_162", f = "_optionSelected_1hi05_166", p = "_optionDisabled_1hi05_170", m = "_optionText_1hi05_178", h = "_optionLabel_1hi05_186", g = "_optionDesc_1hi05_192", _ = "_checkIcon_1hi05_202", v = {
3
+ wrapper: e,
4
+ trigger: t,
5
+ triggerOpen: n,
6
+ triggerLabel: r,
7
+ placeholder: i,
8
+ chevron: a,
9
+ chevronOpen: o,
10
+ list: s,
11
+ "list-in": "_list-in_1hi05_1",
12
+ listDown: c,
13
+ listUp: l,
14
+ "list-in-up": "_list-in-up_1hi05_1",
15
+ option: u,
16
+ optionActive: d,
17
+ optionSelected: f,
18
+ optionDisabled: p,
19
+ optionText: m,
20
+ optionLabel: h,
21
+ optionDesc: g,
22
+ checkIcon: _
23
+ };
24
+ //#endregion
25
+ export { v as default };
26
+
27
+ //# sourceMappingURL=Dropdown.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.module.css.js","names":[],"sources":["../../../src/components/Dropdown/Dropdown.module.css"],"sourcesContent":["/* ─── Wrapper ────────────────────────────────────────────────────────────────── */\n\n.wrapper {\n position: relative;\n display: inline-block;\n min-width: 160px;\n}\n\n/* ─── Trigger button ─────────────────────────────────────────────────────────── */\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--gnome-space-1, 6px);\n width: 100%;\n\n padding: 7px var(--gnome-space-2, 12px);\n min-height: 36px;\n\n appearance: none;\n background-color: var(--gnome-card-bg-color, #ffffff);\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.15));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow: var(--gnome-shadow-sm, 0 1px 2px rgba(0,0,0,0.08));\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n font-weight: var(--gnome-font-weight-normal, 400);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n cursor: pointer;\n user-select: none;\n text-align: left;\n\n transition:\n background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n border-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease),\n box-shadow var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.trigger:hover:not(:disabled) {\n background-color: color-mix(in srgb, var(--gnome-card-bg-color, #ffffff) 90%, black 10%);\n}\n\n.trigger:focus {\n outline: none;\n}\n\n.trigger:focus-visible {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n.trigger:disabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n}\n\n.triggerOpen {\n border-color: var(--gnome-accent-color, #3584e4);\n box-shadow:\n 0 0 0 var(--gnome-focus-ring-offset, 2px) var(--gnome-window-bg-color, #fafafa),\n 0 0 0 calc(var(--gnome-focus-ring-offset, 2px) + var(--gnome-focus-ring-width, 3px))\n var(--gnome-focus-ring-color, #3584e4);\n}\n\n/* ─── Trigger label ──────────────────────────────────────────────────────────── */\n\n.triggerLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.placeholder {\n opacity: var(--gnome-opacity-dim, 0.55);\n}\n\n/* ─── Chevron icon ───────────────────────────────────────────────────────────── */\n\n.chevron {\n flex-shrink: 0;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: var(--gnome-opacity-dim, 0.55);\n transition: transform var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.chevronOpen {\n transform: rotate(180deg);\n}\n\n/* ─── Listbox ────────────────────────────────────────────────────────────────── */\n\n.list {\n position: absolute;\n left: 0;\n right: 0;\n z-index: 1000;\n\n margin: 0;\n padding: 4px 0;\n list-style: none;\n\n background-color: var(--gnome-popover-bg-color, var(--gnome-card-bg-color, #ffffff));\n border: 1px solid var(--gnome-card-shade-color, rgba(0, 0, 0, 0.12));\n border-radius: var(--gnome-radius-md, 8px);\n box-shadow:\n 0 4px 16px rgba(0, 0, 0, 0.12),\n 0 1px 3px rgba(0, 0, 0, 0.08);\n\n max-height: 280px;\n overflow-y: auto;\n overscroll-behavior: contain;\n\n animation: list-in var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease) both;\n}\n\n@keyframes list-in {\n from { opacity: 0; transform: scaleY(0.95); transform-origin: top center; }\n to { opacity: 1; transform: scaleY(1); transform-origin: top center; }\n}\n\n.listDown {\n top: calc(100% + 4px);\n}\n\n.listUp {\n bottom: calc(100% + 4px);\n animation-name: list-in-up;\n}\n\n@keyframes list-in-up {\n from { opacity: 0; transform: scaleY(0.95); transform-origin: bottom center; }\n to { opacity: 1; transform: scaleY(1); transform-origin: bottom center; }\n}\n\n/* ─── Option ─────────────────────────────────────────────────────────────────── */\n\n.option {\n display: flex;\n align-items: center;\n gap: var(--gnome-space-2, 12px);\n padding: 8px var(--gnome-space-2, 12px);\n min-height: 40px;\n\n font-family: var(--gnome-font-family);\n font-size: var(--gnome-font-size-body, 1rem);\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n\n cursor: pointer;\n user-select: none;\n\n transition: background-color var(--gnome-duration-fast, 100ms) var(--gnome-easing-default, ease);\n}\n\n.optionActive {\n background-color: color-mix(in srgb, var(--gnome-accent-bg-color, #3584e4) 12%, transparent);\n}\n\n.optionSelected {\n font-weight: var(--gnome-font-weight-semibold, 600);\n}\n\n.optionDisabled {\n opacity: var(--gnome-opacity-disabled, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* ─── Option text block ──────────────────────────────────────────────────────── */\n\n.optionText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.optionLabel {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.optionDesc {\n font-size: var(--gnome-font-size-caption, 0.8125rem);\n opacity: var(--gnome-opacity-dim, 0.55);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* ─── Check icon (selected) ──────────────────────────────────────────────────── */\n\n.checkIcon {\n flex-shrink: 0;\n color: var(--gnome-accent-color, #3584e4);\n}\n\n/* ─── Dark mode ──────────────────────────────────────────────────────────────── */\n\n@media (prefers-color-scheme: dark) {\n .trigger {\n background-color: var(--gnome-card-bg-color, #383838);\n border-color: rgba(255, 255, 255, 0.12);\n box-shadow: none;\n }\n\n .trigger:hover:not(:disabled) {\n background-color: rgba(255, 255, 255, 0.08);\n }\n\n .list {\n background-color: var(--gnome-card-bg-color, #383838);\n border-color: rgba(255, 255, 255, 0.1);\n box-shadow:\n 0 4px 16px rgba(0, 0, 0, 0.4),\n 0 1px 3px rgba(0, 0, 0, 0.3);\n }\n}\n\n/* ─── Reduced motion ─────────────────────────────────────────────────────────── */\n\n@media (prefers-reduced-motion: reduce) {\n .trigger,\n .chevron {\n transition: none;\n }\n\n .list {\n animation: none;\n }\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./Dropdown/Dropdown.cjs`);exports.Dropdown=e.Dropdown;
@@ -0,0 +1,2 @@
1
+ export * from './Dropdown/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ import { Dropdown as e } from "./Dropdown/Dropdown.js";
2
+ export { e as Dropdown };
@@ -0,0 +1,2 @@
1
+ const e=require(`./EntryRow.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r({title:r,value:i,defaultValue:a=``,onValueChange:o,leading:s,trailing:c,disabled:l,className:u,id:d,onChange:f,...p}){let m=(0,t.useId)(),h=d??m,g=i!==void 0,[_,v]=(0,t.useState)(String(a)),y=g?String(i):_,[b,x]=(0,t.useState)(!1),S=(0,t.useRef)(null),C=b||y.length>0;return(0,n.jsxs)(`div`,{className:[e.default.row,b?e.default.focused:null,l?e.default.disabled:null,u].filter(Boolean).join(` `),onClick:()=>S.current?.focus(),children:[s&&(0,n.jsx)(`span`,{className:e.default.leading,children:s}),(0,n.jsxs)(`span`,{className:e.default.fieldWrap,children:[(0,n.jsx)(`label`,{htmlFor:h,className:[e.default.label,C?e.default.labelFloated:null].filter(Boolean).join(` `),children:r}),(0,n.jsx)(`input`,{ref:S,id:h,className:[e.default.input,C?e.default.inputFloated:null].filter(Boolean).join(` `),value:y,disabled:l,onFocus:()=>x(!0),onBlur:()=>x(!1),onChange:e=>{g||v(e.target.value),o?.(e.target.value),f?.(e)},...p})]}),c&&(0,n.jsx)(`span`,{className:e.default.trailing,children:c})]})}exports.EntryRow=r;
2
+ //# sourceMappingURL=EntryRow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryRow.cjs","names":[],"sources":["../../../src/components/EntryRow/EntryRow.tsx"],"sourcesContent":["import { useState, useId, useRef, type InputHTMLAttributes, type ReactNode } from \"react\";\nimport styles from \"./EntryRow.module.css\";\n\nexport interface EntryRowProps extends InputHTMLAttributes<HTMLInputElement> {\n /**\n * Acts as a floating label: shown small above the input when the field has\n * content or focus, shown as a placeholder when empty and unfocused.\n */\n title: string;\n /** Called when the input value changes. */\n onValueChange?: (value: string) => void;\n /** Icon or widget placed at the leading edge. */\n leading?: ReactNode;\n /** Icon or widget placed at the trailing edge (e.g. a clear button, copy button). */\n trailing?: ReactNode;\n}\n\n/**\n * Row with an inline text entry field.\n *\n * Mirrors `AdwEntryRow` — the `title` floats up as a small label when the\n * field is focused or has content, acting as a placeholder when empty and\n * unfocused. Use inside a `BoxedList` for inline settings that require text input.\n *\n * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.EntryRow.html\n */\nexport function EntryRow({\n title,\n value: controlledValue,\n defaultValue = \"\",\n onValueChange,\n leading,\n trailing,\n disabled,\n className,\n id: externalId,\n onChange,\n ...props\n}: EntryRowProps) {\n const generatedId = useId();\n const inputId = externalId ?? generatedId;\n\n const isControlled = controlledValue !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState(String(defaultValue));\n const inputValue = isControlled ? String(controlledValue) : uncontrolledValue;\n\n const [focused, setFocused] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const floated = focused || inputValue.length > 0;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) setUncontrolledValue(e.target.value);\n onValueChange?.(e.target.value);\n onChange?.(e);\n };\n\n return (\n <div\n className={[\n styles.row,\n focused ? styles.focused : null,\n disabled ? styles.disabled : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => inputRef.current?.focus()}\n >\n {leading && <span className={styles.leading}>{leading}</span>}\n\n <span className={styles.fieldWrap}>\n <label\n htmlFor={inputId}\n className={[styles.label, floated ? styles.labelFloated : null].filter(Boolean).join(\" \")}\n >\n {title}\n </label>\n <input\n ref={inputRef}\n id={inputId}\n className={[styles.input, floated ? styles.inputFloated : null].filter(Boolean).join(\" \")}\n value={inputValue}\n disabled={disabled}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n onChange={handleChange}\n {...props}\n />\n </span>\n\n {trailing && <span className={styles.trailing}>{trailing}</span>}\n </div>\n );\n}\n"],"mappings":"mGA0BA,SAAgB,EAAS,CACvB,QACA,MAAO,EACP,eAAe,GACf,gBACA,UACA,WACA,WACA,YACA,GAAI,EACJ,WACA,GAAG,GACa,CAChB,IAAM,GAAA,EAAA,EAAA,QAAqB,CACrB,EAAU,GAAc,EAExB,EAAe,IAAoB,IAAA,GACnC,CAAC,EAAmB,IAAA,EAAA,EAAA,UAAiC,OAAO,EAAa,CAAC,CAC1E,EAAa,EAAe,OAAO,EAAgB,CAAG,EAEtD,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAoC,KAAK,CAEzC,EAAU,GAAW,EAAW,OAAS,EAQ/C,OACE,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,CACT,EAAA,QAAO,IACP,EAAU,EAAA,QAAO,QAAU,KAC3B,EAAW,EAAA,QAAO,SAAW,KAC7B,EACD,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,CACZ,YAAe,EAAS,SAAS,OAAO,UAT1C,CAWG,IAAW,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,iBAAU,EAAe,CAAA,EAE7D,EAAA,EAAA,MAAC,OAAD,CAAM,UAAW,EAAA,QAAO,mBAAxB,EACE,EAAA,EAAA,KAAC,QAAD,CACE,QAAS,EACT,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,EAAA,QAAO,aAAe,KAAK,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,UAExF,EACK,CAAA,EACR,EAAA,EAAA,KAAC,QAAD,CACE,IAAK,EACL,GAAI,EACJ,UAAW,CAAC,EAAA,QAAO,MAAO,EAAU,EAAA,QAAO,aAAe,KAAK,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CACzF,MAAO,EACG,WACV,YAAe,EAAW,GAAK,CAC/B,WAAc,EAAW,GAAM,CAC/B,SAnCc,GAA2C,CAC1D,GAAc,EAAqB,EAAE,OAAO,MAAM,CACvD,IAAgB,EAAE,OAAO,MAAM,CAC/B,IAAW,EAAE,EAiCP,GAAI,EACJ,CAAA,CACG,GAEN,IAAY,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,kBAAW,EAAgB,CAAA,CAC5D"}
@@ -0,0 +1,50 @@
1
+ import e from "./EntryRow.module.css.js";
2
+ import { useId as t, useRef as n, useState as r } from "react";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ //#region src/components/EntryRow/EntryRow.tsx
5
+ function o({ title: o, value: s, defaultValue: c = "", onValueChange: l, leading: u, trailing: d, disabled: f, className: p, id: m, onChange: h, ...g }) {
6
+ let _ = t(), v = m ?? _, y = s !== void 0, [b, x] = r(String(c)), S = y ? String(s) : b, [C, w] = r(!1), T = n(null), E = C || S.length > 0;
7
+ return /* @__PURE__ */ a("div", {
8
+ className: [
9
+ e.row,
10
+ C ? e.focused : null,
11
+ f ? e.disabled : null,
12
+ p
13
+ ].filter(Boolean).join(" "),
14
+ onClick: () => T.current?.focus(),
15
+ children: [
16
+ u && /* @__PURE__ */ i("span", {
17
+ className: e.leading,
18
+ children: u
19
+ }),
20
+ /* @__PURE__ */ a("span", {
21
+ className: e.fieldWrap,
22
+ children: [/* @__PURE__ */ i("label", {
23
+ htmlFor: v,
24
+ className: [e.label, E ? e.labelFloated : null].filter(Boolean).join(" "),
25
+ children: o
26
+ }), /* @__PURE__ */ i("input", {
27
+ ref: T,
28
+ id: v,
29
+ className: [e.input, E ? e.inputFloated : null].filter(Boolean).join(" "),
30
+ value: S,
31
+ disabled: f,
32
+ onFocus: () => w(!0),
33
+ onBlur: () => w(!1),
34
+ onChange: (e) => {
35
+ y || x(e.target.value), l?.(e.target.value), h?.(e);
36
+ },
37
+ ...g
38
+ })]
39
+ }),
40
+ d && /* @__PURE__ */ i("span", {
41
+ className: e.trailing,
42
+ children: d
43
+ })
44
+ ]
45
+ });
46
+ }
47
+ //#endregion
48
+ export { o as EntryRow };
49
+
50
+ //# sourceMappingURL=EntryRow.js.map