@gnome-ui/react 1.36.2 → 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,2 @@
1
+ export * from './ComboRow/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ import { ComboRow as e } from "./ComboRow/ComboRow.js";
2
+ export { e as ComboRow };
@@ -0,0 +1,2 @@
1
+ const e=require(`./ContributionGraph.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);var r=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],i=[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],a=28,o=20,s=[`var(--gnome-card-shade-color, rgba(0,0,0,0.07))`,`var(--gnome-green-1, #8ff0a4)`,`var(--gnome-green-2, #57e389)`,`var(--gnome-green-4, #2ec27e)`,`var(--gnome-green-5, #26a269)`];function c(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function l(e){let[t,n,r]=e.split(`-`).map(Number);return new Date(t,n-1,r)}function u(e){return l(e).toLocaleDateString(`en-US`,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`})}function d({data:l,maxLevel:d=4,colorScale:f,cellSize:p=12,cellGap:m=3,weekStartDay:h=1,showMonthLabels:g=!0,showDayLabels:_=!0,showLegend:v=!0,weeks:y=52,ariaLabel:b=`Contribution graph`,onDayClick:x,tooltipContent:S,className:C}){let w=p+m,T=(0,t.useRef)(null),E=(0,t.useRef)(null),D=f??s,[O,k]=(0,t.useState)({col:0,row:0}),[A,j]=(0,t.useState)(null),M=(0,t.useMemo)(()=>{let e=new Map;for(let t of l)e.set(t.date,t.count);return e},[l]),N=(0,t.useMemo)(()=>Math.max(1,...l.map(e=>e.count)),[l]),{grid:P,monthLabels:F}=(0,t.useMemo)(()=>{let e=new Date;e.setHours(0,0,0,0);let t=(e.getDay()-h+7)%7,n=new Date(e);n.setDate(e.getDate()-t);let i=new Date(n);i.setDate(n.getDate()-(y-1)*7);let a=[],o=[],s=-1;for(let t=0;t<y;t++){let n=new Date(i);n.setDate(i.getDate()+t*7),n.getMonth()!==s&&(o.push({col:t,month:r[n.getMonth()]}),s=n.getMonth());let l=[];for(let n=0;n<7;n++){let r=new Date(i);r.setDate(i.getDate()+t*7+n);let a=r>e,o=c(r),s=a?0:M.get(o)??0,u=s===0?0:Math.min(d,Math.ceil(s/N*d));l.push({iso:o,count:s,level:u,future:a})}a.push(l)}return{grid:a,monthLabels:o}},[M,N,d,y,h]),I=(0,t.useMemo)(()=>[1,3,5].map(e=>({row:(e-h+7)%7,label:i[e]})),[h]),L=_?a:0,R=g?o:0,z=L+y*w-m,B=R+7*w-m,V=Math.min(4,Math.floor(p/3));function H(e,t){let n=Math.max(0,Math.min(y-1,e)),r=Math.max(0,Math.min(6,t));k({col:n,row:r}),T.current?.querySelector(`[data-col="${n}"][data-row="${r}"]`)?.focus()}function U(e,t,n){let r={ArrowRight:[t+1,n],ArrowLeft:[t-1,n],ArrowDown:[t,n+1],ArrowUp:[t,n-1]};if(r[e.key])e.preventDefault(),H(...r[e.key]);else if(e.key===`Enter`||e.key===` `){e.preventDefault();let r=P[t]?.[n];r&&!r.future&&x?.({date:r.iso,count:r.count})}}function W(e,t){let n=E.current;if(!n)return;let r=n.getBoundingClientRect(),i=e.currentTarget.getBoundingClientRect();j({x:i.left-r.left+p/2,y:i.top-r.top,text:t})}function G(e){return e.future?D[0]:D[Math.min(e.level,D.length-1)]??D[D.length-1]}function K(e){return e.future?u(e.iso):S?.({date:e.iso,count:e.count})??`${e.count} contribution${e.count===1?``:`s`} on ${u(e.iso)}`}return(0,n.jsxs)(`div`,{ref:E,className:[e.default.wrapper,C].filter(Boolean).join(` `),children:[(0,n.jsxs)(`svg`,{ref:T,width:z,height:B,className:e.default.svg,"aria-label":b,role:`img`,children:[g&&F.map(({col:t,month:r})=>(0,n.jsx)(`text`,{x:L+t*w,y:12,className:e.default.label,children:r},`m-${t}`)),_&&I.map(({row:t,label:r})=>(0,n.jsx)(`text`,{x:0,y:R+t*w+p-1,className:e.default.label,children:r},`d-${t}`)),(0,n.jsx)(`g`,{role:`grid`,"aria-label":b,children:P.map((t,r)=>(0,n.jsx)(`g`,{role:`row`,children:t.map((t,i)=>{let a=K(t),o=O.col===r&&O.row===i;return(0,n.jsx)(`rect`,{"data-col":r,"data-row":i,x:L+r*w,y:R+i*w,width:p,height:p,rx:V,fill:G(t),opacity:t.future?.35:1,className:e.default.cell,role:`gridcell`,"aria-label":a,"aria-disabled":t.future||void 0,tabIndex:o?0:-1,onClick:()=>!t.future&&x?.({date:t.iso,count:t.count}),onKeyDown:e=>U(e,r,i),onFocus:()=>k({col:r,row:i}),onMouseEnter:e=>W(e,a),onMouseLeave:()=>j(null)},`${r}-${i}`)})},r))})]}),A&&(0,n.jsx)(`div`,{className:e.default.tooltip,style:{left:A.x,top:A.y},role:`tooltip`,children:A.text}),v&&(0,n.jsxs)(`div`,{className:e.default.legend,children:[(0,n.jsx)(`span`,{className:e.default.legendLabel,children:`Less`}),Array.from({length:d+1},(t,r)=>(0,n.jsx)(`svg`,{width:p,height:p,"aria-hidden":`true`,className:e.default.legendCell,children:(0,n.jsx)(`rect`,{width:p,height:p,rx:V,fill:D[Math.min(r,D.length-1)]})},r)),(0,n.jsx)(`span`,{className:e.default.legendLabel,children:`More`})]})]})}exports.ContributionGraph=d;
2
+ //# sourceMappingURL=ContributionGraph.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributionGraph.cjs","names":[],"sources":["../../../src/components/ContributionGraph/ContributionGraph.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent } from \"react\";\nimport styles from \"./ContributionGraph.module.css\";\n\nexport interface ContributionDay {\n /** ISO 8601 date — \"YYYY-MM-DD\". */\n date: string;\n /** Non-negative activity count. */\n count: number;\n}\n\nexport interface ContributionGraphProps {\n /** Activity data. Days absent from the array are treated as count = 0. */\n data: ContributionDay[];\n /**\n * Number of intensity levels (excluding 0).\n * @default 4\n */\n maxLevel?: number;\n /**\n * Colour scale — length must be maxLevel + 1 (index 0 = empty).\n * Defaults to the Adwaita green palette.\n */\n colorScale?: string[];\n /** Cell side length in pixels. @default 12 */\n cellSize?: number;\n /** Gap between cells in pixels. @default 3 */\n cellGap?: number;\n /** 0 = Sunday · 1 = Monday (GNOME locale default). @default 1 */\n weekStartDay?: 0 | 1;\n /** @default true */\n showMonthLabels?: boolean;\n /** @default true */\n showDayLabels?: boolean;\n /** @default true */\n showLegend?: boolean;\n /** Number of week columns to display. @default 52 */\n weeks?: number;\n /** @default \"Contribution graph\" */\n ariaLabel?: string;\n onDayClick?: (day: ContributionDay) => void;\n /** Returns a plain-text tooltip string for a day. */\n tooltipContent?: (day: ContributionDay) => string;\n className?: string;\n}\n\nconst SHORT_MONTHS = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\",\n];\n// 0=Sun … 6=Sat\nconst SHORT_DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\nconst DAY_LABEL_WIDTH = 28;\nconst MONTH_LABEL_HEIGHT = 20;\n\nconst DEFAULT_COLORS = [\n \"var(--gnome-card-shade-color, rgba(0,0,0,0.07))\",\n \"var(--gnome-green-1, #8ff0a4)\",\n \"var(--gnome-green-2, #57e389)\",\n \"var(--gnome-green-4, #2ec27e)\",\n \"var(--gnome-green-5, #26a269)\",\n];\n\nfunction dateToIso(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction isoToLocal(iso: string): Date {\n const [y, m, d] = iso.split(\"-\").map(Number);\n return new Date(y, m - 1, d);\n}\n\nfunction fullDateLabel(iso: string): string {\n return isoToLocal(iso).toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n}\n\ninterface GridCell {\n iso: string;\n count: number;\n level: number;\n future: boolean;\n}\n\nexport function ContributionGraph({\n data,\n maxLevel = 4,\n colorScale,\n cellSize = 12,\n cellGap = 3,\n weekStartDay = 1,\n showMonthLabels = true,\n showDayLabels = true,\n showLegend = true,\n weeks = 52,\n ariaLabel = \"Contribution graph\",\n onDayClick,\n tooltipContent,\n className,\n}: ContributionGraphProps) {\n const stride = cellSize + cellGap;\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const colors = colorScale ?? DEFAULT_COLORS;\n\n const [focusedCell, setFocusedCell] = useState({ col: 0, row: 0 });\n const [tooltip, setTooltip] = useState<{\n x: number;\n y: number;\n text: string;\n } | null>(null);\n\n const countMap = useMemo(() => {\n const map = new Map<string, number>();\n for (const d of data) map.set(d.date, d.count);\n return map;\n }, [data]);\n\n const maxCount = useMemo(\n () => Math.max(1, ...data.map((d) => d.count)),\n [data],\n );\n\n const { grid, monthLabels } = useMemo(() => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n // Align to start of current week\n const daysFromWeekStart = (today.getDay() - weekStartDay + 7) % 7;\n const lastWeekStart = new Date(today);\n lastWeekStart.setDate(today.getDate() - daysFromWeekStart);\n\n const firstDay = new Date(lastWeekStart);\n firstDay.setDate(lastWeekStart.getDate() - (weeks - 1) * 7);\n\n const gridResult: GridCell[][] = [];\n const labels: { col: number; month: string }[] = [];\n let lastMonth = -1;\n\n for (let col = 0; col < weeks; col++) {\n const colStart = new Date(firstDay);\n colStart.setDate(firstDay.getDate() + col * 7);\n\n // Month label when the column starts a new month\n if (colStart.getMonth() !== lastMonth) {\n labels.push({ col, month: SHORT_MONTHS[colStart.getMonth()] });\n lastMonth = colStart.getMonth();\n }\n\n const column: GridCell[] = [];\n for (let row = 0; row < 7; row++) {\n const date = new Date(firstDay);\n date.setDate(firstDay.getDate() + col * 7 + row);\n const future = date > today;\n const iso = dateToIso(date);\n const count = future ? 0 : (countMap.get(iso) ?? 0);\n const level =\n count === 0\n ? 0\n : Math.min(maxLevel, Math.ceil((count / maxCount) * maxLevel));\n column.push({ iso, count, level, future });\n }\n gridResult.push(column);\n }\n\n return { grid: gridResult, monthLabels: labels };\n }, [countMap, maxCount, maxLevel, weeks, weekStartDay]);\n\n // Always label Mon(1), Wed(3), Fri(5) — rows shift with weekStartDay\n const labelRows = useMemo(\n () =>\n [1, 3, 5].map((dayIndex) => ({\n row: (dayIndex - weekStartDay + 7) % 7,\n label: SHORT_DAYS[dayIndex],\n })),\n [weekStartDay],\n );\n\n const dayLabelW = showDayLabels ? DAY_LABEL_WIDTH : 0;\n const monthLabelH = showMonthLabels ? MONTH_LABEL_HEIGHT : 0;\n const svgWidth = dayLabelW + weeks * stride - cellGap;\n const svgHeight = monthLabelH + 7 * stride - cellGap;\n const cellRx = Math.min(4, Math.floor(cellSize / 3));\n\n function focusCell(col: number, row: number) {\n const c = Math.max(0, Math.min(weeks - 1, col));\n const r = Math.max(0, Math.min(6, row));\n setFocusedCell({ col: c, row: r });\n svgRef.current\n ?.querySelector<SVGRectElement>(`[data-col=\"${c}\"][data-row=\"${r}\"]`)\n ?.focus();\n }\n\n function handleCellKey(e: KeyboardEvent, col: number, row: number) {\n const moves: Record<string, [number, number]> = {\n ArrowRight: [col + 1, row],\n ArrowLeft: [col - 1, row],\n ArrowDown: [col, row + 1],\n ArrowUp: [col, row - 1],\n };\n if (moves[e.key]) {\n e.preventDefault();\n focusCell(...moves[e.key]);\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const cell = grid[col]?.[row];\n if (cell && !cell.future) onDayClick?.({ date: cell.iso, count: cell.count });\n }\n }\n\n function handleMouseEnter(\n e: React.MouseEvent<SVGRectElement>,\n text: string,\n ) {\n const wrapper = wrapperRef.current;\n if (!wrapper) return;\n const wRect = wrapper.getBoundingClientRect();\n const rRect = (e.currentTarget as Element).getBoundingClientRect();\n setTooltip({\n x: rRect.left - wRect.left + cellSize / 2,\n y: rRect.top - wRect.top,\n text,\n });\n }\n\n function cellColor(cell: GridCell): string {\n if (cell.future) return colors[0];\n return colors[Math.min(cell.level, colors.length - 1)] ?? colors[colors.length - 1];\n }\n\n function cellTooltip(cell: GridCell): string {\n if (cell.future) return fullDateLabel(cell.iso);\n return (\n tooltipContent?.({ date: cell.iso, count: cell.count }) ??\n `${cell.count} contribution${cell.count !== 1 ? \"s\" : \"\"} on ${fullDateLabel(cell.iso)}`\n );\n }\n\n return (\n <div\n ref={wrapperRef}\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\n >\n <svg\n ref={svgRef}\n width={svgWidth}\n height={svgHeight}\n className={styles.svg}\n aria-label={ariaLabel}\n role=\"img\"\n >\n {/* Month labels */}\n {showMonthLabels &&\n monthLabels.map(({ col, month }) => (\n <text\n key={`m-${col}`}\n x={dayLabelW + col * stride}\n y={12}\n className={styles.label}\n >\n {month}\n </text>\n ))}\n\n {/* Day-of-week labels: Mon, Wed, Fri */}\n {showDayLabels &&\n labelRows.map(({ row, label }) => (\n <text\n key={`d-${row}`}\n x={0}\n y={monthLabelH + row * stride + cellSize - 1}\n className={styles.label}\n >\n {label}\n </text>\n ))}\n\n {/* Activity grid */}\n <g role=\"grid\" aria-label={ariaLabel}>\n {grid.map((column, col) => (\n <g key={col} role=\"row\">\n {column.map((cell, row) => {\n const tipText = cellTooltip(cell);\n const isFocused =\n focusedCell.col === col && focusedCell.row === row;\n\n return (\n <rect\n key={`${col}-${row}`}\n data-col={col}\n data-row={row}\n x={dayLabelW + col * stride}\n y={monthLabelH + row * stride}\n width={cellSize}\n height={cellSize}\n rx={cellRx}\n fill={cellColor(cell)}\n opacity={cell.future ? 0.35 : 1}\n className={styles.cell}\n role=\"gridcell\"\n aria-label={tipText}\n aria-disabled={cell.future || undefined}\n tabIndex={isFocused ? 0 : -1}\n onClick={() => !cell.future && onDayClick?.({ date: cell.iso, count: cell.count })}\n onKeyDown={(e) => handleCellKey(e, col, row)}\n onFocus={() => setFocusedCell({ col, row })}\n onMouseEnter={(e) => handleMouseEnter(e, tipText)}\n onMouseLeave={() => setTooltip(null)}\n />\n );\n })}\n </g>\n ))}\n </g>\n </svg>\n\n {tooltip && (\n <div\n className={styles.tooltip}\n style={{ left: tooltip.x, top: tooltip.y }}\n role=\"tooltip\"\n >\n {tooltip.text}\n </div>\n )}\n\n {showLegend && (\n <div className={styles.legend}>\n <span className={styles.legendLabel}>Less</span>\n {Array.from({ length: maxLevel + 1 }, (_, i) => (\n <svg\n key={i}\n width={cellSize}\n height={cellSize}\n aria-hidden=\"true\"\n className={styles.legendCell}\n >\n <rect\n width={cellSize}\n height={cellSize}\n rx={cellRx}\n fill={colors[Math.min(i, colors.length - 1)]}\n />\n </svg>\n ))}\n <span className={styles.legendLabel}>More</span>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import e from "./ContributionGraph.module.css.js";
2
+ import { useMemo 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/ContributionGraph/ContributionGraph.tsx
5
+ var o = [
6
+ "Jan",
7
+ "Feb",
8
+ "Mar",
9
+ "Apr",
10
+ "May",
11
+ "Jun",
12
+ "Jul",
13
+ "Aug",
14
+ "Sep",
15
+ "Oct",
16
+ "Nov",
17
+ "Dec"
18
+ ], s = [
19
+ "Sun",
20
+ "Mon",
21
+ "Tue",
22
+ "Wed",
23
+ "Thu",
24
+ "Fri",
25
+ "Sat"
26
+ ], c = 28, l = 20, u = [
27
+ "var(--gnome-card-shade-color, rgba(0,0,0,0.07))",
28
+ "var(--gnome-green-1, #8ff0a4)",
29
+ "var(--gnome-green-2, #57e389)",
30
+ "var(--gnome-green-4, #2ec27e)",
31
+ "var(--gnome-green-5, #26a269)"
32
+ ];
33
+ function d(e) {
34
+ return `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`;
35
+ }
36
+ function f(e) {
37
+ let [t, n, r] = e.split("-").map(Number);
38
+ return new Date(t, n - 1, r);
39
+ }
40
+ function p(e) {
41
+ return f(e).toLocaleDateString("en-US", {
42
+ weekday: "long",
43
+ year: "numeric",
44
+ month: "long",
45
+ day: "numeric"
46
+ });
47
+ }
48
+ function m({ data: f, maxLevel: m = 4, colorScale: h, cellSize: g = 12, cellGap: _ = 3, weekStartDay: v = 1, showMonthLabels: y = !0, showDayLabels: b = !0, showLegend: x = !0, weeks: S = 52, ariaLabel: C = "Contribution graph", onDayClick: w, tooltipContent: T, className: E }) {
49
+ let D = g + _, O = n(null), k = n(null), A = h ?? u, [j, M] = r({
50
+ col: 0,
51
+ row: 0
52
+ }), [N, P] = r(null), F = t(() => {
53
+ let e = /* @__PURE__ */ new Map();
54
+ for (let t of f) e.set(t.date, t.count);
55
+ return e;
56
+ }, [f]), I = t(() => Math.max(1, ...f.map((e) => e.count)), [f]), { grid: L, monthLabels: R } = t(() => {
57
+ let e = /* @__PURE__ */ new Date();
58
+ e.setHours(0, 0, 0, 0);
59
+ let t = (e.getDay() - v + 7) % 7, n = new Date(e);
60
+ n.setDate(e.getDate() - t);
61
+ let r = new Date(n);
62
+ r.setDate(n.getDate() - (S - 1) * 7);
63
+ let i = [], a = [], s = -1;
64
+ for (let t = 0; t < S; t++) {
65
+ let n = new Date(r);
66
+ n.setDate(r.getDate() + t * 7), n.getMonth() !== s && (a.push({
67
+ col: t,
68
+ month: o[n.getMonth()]
69
+ }), s = n.getMonth());
70
+ let c = [];
71
+ for (let n = 0; n < 7; n++) {
72
+ let i = new Date(r);
73
+ i.setDate(r.getDate() + t * 7 + n);
74
+ let a = i > e, o = d(i), s = a ? 0 : F.get(o) ?? 0, l = s === 0 ? 0 : Math.min(m, Math.ceil(s / I * m));
75
+ c.push({
76
+ iso: o,
77
+ count: s,
78
+ level: l,
79
+ future: a
80
+ });
81
+ }
82
+ i.push(c);
83
+ }
84
+ return {
85
+ grid: i,
86
+ monthLabels: a
87
+ };
88
+ }, [
89
+ F,
90
+ I,
91
+ m,
92
+ S,
93
+ v
94
+ ]), z = t(() => [
95
+ 1,
96
+ 3,
97
+ 5
98
+ ].map((e) => ({
99
+ row: (e - v + 7) % 7,
100
+ label: s[e]
101
+ })), [v]), B = b ? c : 0, V = y ? l : 0, H = B + S * D - _, U = V + 7 * D - _, W = Math.min(4, Math.floor(g / 3));
102
+ function G(e, t) {
103
+ let n = Math.max(0, Math.min(S - 1, e)), r = Math.max(0, Math.min(6, t));
104
+ M({
105
+ col: n,
106
+ row: r
107
+ }), O.current?.querySelector(`[data-col="${n}"][data-row="${r}"]`)?.focus();
108
+ }
109
+ function K(e, t, n) {
110
+ let r = {
111
+ ArrowRight: [t + 1, n],
112
+ ArrowLeft: [t - 1, n],
113
+ ArrowDown: [t, n + 1],
114
+ ArrowUp: [t, n - 1]
115
+ };
116
+ if (r[e.key]) e.preventDefault(), G(...r[e.key]);
117
+ else if (e.key === "Enter" || e.key === " ") {
118
+ e.preventDefault();
119
+ let r = L[t]?.[n];
120
+ r && !r.future && w?.({
121
+ date: r.iso,
122
+ count: r.count
123
+ });
124
+ }
125
+ }
126
+ function q(e, t) {
127
+ let n = k.current;
128
+ if (!n) return;
129
+ let r = n.getBoundingClientRect(), i = e.currentTarget.getBoundingClientRect();
130
+ P({
131
+ x: i.left - r.left + g / 2,
132
+ y: i.top - r.top,
133
+ text: t
134
+ });
135
+ }
136
+ function J(e) {
137
+ return e.future ? A[0] : A[Math.min(e.level, A.length - 1)] ?? A[A.length - 1];
138
+ }
139
+ function Y(e) {
140
+ return e.future ? p(e.iso) : T?.({
141
+ date: e.iso,
142
+ count: e.count
143
+ }) ?? `${e.count} contribution${e.count === 1 ? "" : "s"} on ${p(e.iso)}`;
144
+ }
145
+ return /* @__PURE__ */ a("div", {
146
+ ref: k,
147
+ className: [e.wrapper, E].filter(Boolean).join(" "),
148
+ children: [
149
+ /* @__PURE__ */ a("svg", {
150
+ ref: O,
151
+ width: H,
152
+ height: U,
153
+ className: e.svg,
154
+ "aria-label": C,
155
+ role: "img",
156
+ children: [
157
+ y && R.map(({ col: t, month: n }) => /* @__PURE__ */ i("text", {
158
+ x: B + t * D,
159
+ y: 12,
160
+ className: e.label,
161
+ children: n
162
+ }, `m-${t}`)),
163
+ b && z.map(({ row: t, label: n }) => /* @__PURE__ */ i("text", {
164
+ x: 0,
165
+ y: V + t * D + g - 1,
166
+ className: e.label,
167
+ children: n
168
+ }, `d-${t}`)),
169
+ /* @__PURE__ */ i("g", {
170
+ role: "grid",
171
+ "aria-label": C,
172
+ children: L.map((t, n) => /* @__PURE__ */ i("g", {
173
+ role: "row",
174
+ children: t.map((t, r) => {
175
+ let a = Y(t), o = j.col === n && j.row === r;
176
+ return /* @__PURE__ */ i("rect", {
177
+ "data-col": n,
178
+ "data-row": r,
179
+ x: B + n * D,
180
+ y: V + r * D,
181
+ width: g,
182
+ height: g,
183
+ rx: W,
184
+ fill: J(t),
185
+ opacity: t.future ? .35 : 1,
186
+ className: e.cell,
187
+ role: "gridcell",
188
+ "aria-label": a,
189
+ "aria-disabled": t.future || void 0,
190
+ tabIndex: o ? 0 : -1,
191
+ onClick: () => !t.future && w?.({
192
+ date: t.iso,
193
+ count: t.count
194
+ }),
195
+ onKeyDown: (e) => K(e, n, r),
196
+ onFocus: () => M({
197
+ col: n,
198
+ row: r
199
+ }),
200
+ onMouseEnter: (e) => q(e, a),
201
+ onMouseLeave: () => P(null)
202
+ }, `${n}-${r}`);
203
+ })
204
+ }, n))
205
+ })
206
+ ]
207
+ }),
208
+ N && /* @__PURE__ */ i("div", {
209
+ className: e.tooltip,
210
+ style: {
211
+ left: N.x,
212
+ top: N.y
213
+ },
214
+ role: "tooltip",
215
+ children: N.text
216
+ }),
217
+ x && /* @__PURE__ */ a("div", {
218
+ className: e.legend,
219
+ children: [
220
+ /* @__PURE__ */ i("span", {
221
+ className: e.legendLabel,
222
+ children: "Less"
223
+ }),
224
+ Array.from({ length: m + 1 }, (t, n) => /* @__PURE__ */ i("svg", {
225
+ width: g,
226
+ height: g,
227
+ "aria-hidden": "true",
228
+ className: e.legendCell,
229
+ children: /* @__PURE__ */ i("rect", {
230
+ width: g,
231
+ height: g,
232
+ rx: W,
233
+ fill: A[Math.min(n, A.length - 1)]
234
+ })
235
+ }, n)),
236
+ /* @__PURE__ */ i("span", {
237
+ className: e.legendLabel,
238
+ children: "More"
239
+ })
240
+ ]
241
+ })
242
+ ]
243
+ });
244
+ }
245
+ //#endregion
246
+ export { m as ContributionGraph };
247
+
248
+ //# sourceMappingURL=ContributionGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributionGraph.js","names":[],"sources":["../../../src/components/ContributionGraph/ContributionGraph.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from \"react\";\nimport type { KeyboardEvent } from \"react\";\nimport styles from \"./ContributionGraph.module.css\";\n\nexport interface ContributionDay {\n /** ISO 8601 date — \"YYYY-MM-DD\". */\n date: string;\n /** Non-negative activity count. */\n count: number;\n}\n\nexport interface ContributionGraphProps {\n /** Activity data. Days absent from the array are treated as count = 0. */\n data: ContributionDay[];\n /**\n * Number of intensity levels (excluding 0).\n * @default 4\n */\n maxLevel?: number;\n /**\n * Colour scale — length must be maxLevel + 1 (index 0 = empty).\n * Defaults to the Adwaita green palette.\n */\n colorScale?: string[];\n /** Cell side length in pixels. @default 12 */\n cellSize?: number;\n /** Gap between cells in pixels. @default 3 */\n cellGap?: number;\n /** 0 = Sunday · 1 = Monday (GNOME locale default). @default 1 */\n weekStartDay?: 0 | 1;\n /** @default true */\n showMonthLabels?: boolean;\n /** @default true */\n showDayLabels?: boolean;\n /** @default true */\n showLegend?: boolean;\n /** Number of week columns to display. @default 52 */\n weeks?: number;\n /** @default \"Contribution graph\" */\n ariaLabel?: string;\n onDayClick?: (day: ContributionDay) => void;\n /** Returns a plain-text tooltip string for a day. */\n tooltipContent?: (day: ContributionDay) => string;\n className?: string;\n}\n\nconst SHORT_MONTHS = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\n \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\",\n];\n// 0=Sun … 6=Sat\nconst SHORT_DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\nconst DAY_LABEL_WIDTH = 28;\nconst MONTH_LABEL_HEIGHT = 20;\n\nconst DEFAULT_COLORS = [\n \"var(--gnome-card-shade-color, rgba(0,0,0,0.07))\",\n \"var(--gnome-green-1, #8ff0a4)\",\n \"var(--gnome-green-2, #57e389)\",\n \"var(--gnome-green-4, #2ec27e)\",\n \"var(--gnome-green-5, #26a269)\",\n];\n\nfunction dateToIso(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction isoToLocal(iso: string): Date {\n const [y, m, d] = iso.split(\"-\").map(Number);\n return new Date(y, m - 1, d);\n}\n\nfunction fullDateLabel(iso: string): string {\n return isoToLocal(iso).toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n}\n\ninterface GridCell {\n iso: string;\n count: number;\n level: number;\n future: boolean;\n}\n\nexport function ContributionGraph({\n data,\n maxLevel = 4,\n colorScale,\n cellSize = 12,\n cellGap = 3,\n weekStartDay = 1,\n showMonthLabels = true,\n showDayLabels = true,\n showLegend = true,\n weeks = 52,\n ariaLabel = \"Contribution graph\",\n onDayClick,\n tooltipContent,\n className,\n}: ContributionGraphProps) {\n const stride = cellSize + cellGap;\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const colors = colorScale ?? DEFAULT_COLORS;\n\n const [focusedCell, setFocusedCell] = useState({ col: 0, row: 0 });\n const [tooltip, setTooltip] = useState<{\n x: number;\n y: number;\n text: string;\n } | null>(null);\n\n const countMap = useMemo(() => {\n const map = new Map<string, number>();\n for (const d of data) map.set(d.date, d.count);\n return map;\n }, [data]);\n\n const maxCount = useMemo(\n () => Math.max(1, ...data.map((d) => d.count)),\n [data],\n );\n\n const { grid, monthLabels } = useMemo(() => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n // Align to start of current week\n const daysFromWeekStart = (today.getDay() - weekStartDay + 7) % 7;\n const lastWeekStart = new Date(today);\n lastWeekStart.setDate(today.getDate() - daysFromWeekStart);\n\n const firstDay = new Date(lastWeekStart);\n firstDay.setDate(lastWeekStart.getDate() - (weeks - 1) * 7);\n\n const gridResult: GridCell[][] = [];\n const labels: { col: number; month: string }[] = [];\n let lastMonth = -1;\n\n for (let col = 0; col < weeks; col++) {\n const colStart = new Date(firstDay);\n colStart.setDate(firstDay.getDate() + col * 7);\n\n // Month label when the column starts a new month\n if (colStart.getMonth() !== lastMonth) {\n labels.push({ col, month: SHORT_MONTHS[colStart.getMonth()] });\n lastMonth = colStart.getMonth();\n }\n\n const column: GridCell[] = [];\n for (let row = 0; row < 7; row++) {\n const date = new Date(firstDay);\n date.setDate(firstDay.getDate() + col * 7 + row);\n const future = date > today;\n const iso = dateToIso(date);\n const count = future ? 0 : (countMap.get(iso) ?? 0);\n const level =\n count === 0\n ? 0\n : Math.min(maxLevel, Math.ceil((count / maxCount) * maxLevel));\n column.push({ iso, count, level, future });\n }\n gridResult.push(column);\n }\n\n return { grid: gridResult, monthLabels: labels };\n }, [countMap, maxCount, maxLevel, weeks, weekStartDay]);\n\n // Always label Mon(1), Wed(3), Fri(5) — rows shift with weekStartDay\n const labelRows = useMemo(\n () =>\n [1, 3, 5].map((dayIndex) => ({\n row: (dayIndex - weekStartDay + 7) % 7,\n label: SHORT_DAYS[dayIndex],\n })),\n [weekStartDay],\n );\n\n const dayLabelW = showDayLabels ? DAY_LABEL_WIDTH : 0;\n const monthLabelH = showMonthLabels ? MONTH_LABEL_HEIGHT : 0;\n const svgWidth = dayLabelW + weeks * stride - cellGap;\n const svgHeight = monthLabelH + 7 * stride - cellGap;\n const cellRx = Math.min(4, Math.floor(cellSize / 3));\n\n function focusCell(col: number, row: number) {\n const c = Math.max(0, Math.min(weeks - 1, col));\n const r = Math.max(0, Math.min(6, row));\n setFocusedCell({ col: c, row: r });\n svgRef.current\n ?.querySelector<SVGRectElement>(`[data-col=\"${c}\"][data-row=\"${r}\"]`)\n ?.focus();\n }\n\n function handleCellKey(e: KeyboardEvent, col: number, row: number) {\n const moves: Record<string, [number, number]> = {\n ArrowRight: [col + 1, row],\n ArrowLeft: [col - 1, row],\n ArrowDown: [col, row + 1],\n ArrowUp: [col, row - 1],\n };\n if (moves[e.key]) {\n e.preventDefault();\n focusCell(...moves[e.key]);\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const cell = grid[col]?.[row];\n if (cell && !cell.future) onDayClick?.({ date: cell.iso, count: cell.count });\n }\n }\n\n function handleMouseEnter(\n e: React.MouseEvent<SVGRectElement>,\n text: string,\n ) {\n const wrapper = wrapperRef.current;\n if (!wrapper) return;\n const wRect = wrapper.getBoundingClientRect();\n const rRect = (e.currentTarget as Element).getBoundingClientRect();\n setTooltip({\n x: rRect.left - wRect.left + cellSize / 2,\n y: rRect.top - wRect.top,\n text,\n });\n }\n\n function cellColor(cell: GridCell): string {\n if (cell.future) return colors[0];\n return colors[Math.min(cell.level, colors.length - 1)] ?? colors[colors.length - 1];\n }\n\n function cellTooltip(cell: GridCell): string {\n if (cell.future) return fullDateLabel(cell.iso);\n return (\n tooltipContent?.({ date: cell.iso, count: cell.count }) ??\n `${cell.count} contribution${cell.count !== 1 ? \"s\" : \"\"} on ${fullDateLabel(cell.iso)}`\n );\n }\n\n return (\n <div\n ref={wrapperRef}\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\n >\n <svg\n ref={svgRef}\n width={svgWidth}\n height={svgHeight}\n className={styles.svg}\n aria-label={ariaLabel}\n role=\"img\"\n >\n {/* Month labels */}\n {showMonthLabels &&\n monthLabels.map(({ col, month }) => (\n <text\n key={`m-${col}`}\n x={dayLabelW + col * stride}\n y={12}\n className={styles.label}\n >\n {month}\n </text>\n ))}\n\n {/* Day-of-week labels: Mon, Wed, Fri */}\n {showDayLabels &&\n labelRows.map(({ row, label }) => (\n <text\n key={`d-${row}`}\n x={0}\n y={monthLabelH + row * stride + cellSize - 1}\n className={styles.label}\n >\n {label}\n </text>\n ))}\n\n {/* Activity grid */}\n <g role=\"grid\" aria-label={ariaLabel}>\n {grid.map((column, col) => (\n <g key={col} role=\"row\">\n {column.map((cell, row) => {\n const tipText = cellTooltip(cell);\n const isFocused =\n focusedCell.col === col && focusedCell.row === row;\n\n return (\n <rect\n key={`${col}-${row}`}\n data-col={col}\n data-row={row}\n x={dayLabelW + col * stride}\n y={monthLabelH + row * stride}\n width={cellSize}\n height={cellSize}\n rx={cellRx}\n fill={cellColor(cell)}\n opacity={cell.future ? 0.35 : 1}\n className={styles.cell}\n role=\"gridcell\"\n aria-label={tipText}\n aria-disabled={cell.future || undefined}\n tabIndex={isFocused ? 0 : -1}\n onClick={() => !cell.future && onDayClick?.({ date: cell.iso, count: cell.count })}\n onKeyDown={(e) => handleCellKey(e, col, row)}\n onFocus={() => setFocusedCell({ col, row })}\n onMouseEnter={(e) => handleMouseEnter(e, tipText)}\n onMouseLeave={() => setTooltip(null)}\n />\n );\n })}\n </g>\n ))}\n </g>\n </svg>\n\n {tooltip && (\n <div\n className={styles.tooltip}\n style={{ left: tooltip.x, top: tooltip.y }}\n role=\"tooltip\"\n >\n {tooltip.text}\n </div>\n )}\n\n {showLegend && (\n <div className={styles.legend}>\n <span className={styles.legendLabel}>Less</span>\n {Array.from({ length: maxLevel + 1 }, (_, i) => (\n <svg\n key={i}\n width={cellSize}\n height={cellSize}\n aria-hidden=\"true\"\n className={styles.legendCell}\n >\n <rect\n width={cellSize}\n height={cellSize}\n rx={cellRx}\n fill={colors[Math.min(i, colors.length - 1)]}\n />\n </svg>\n ))}\n <span className={styles.legendLabel}>More</span>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e={wrapper:`_wrapper_1upmq_1`,svg:`_svg_1upmq_10`,label:`_label_1upmq_15`,cell:`_cell_1upmq_23`,tooltip:`_tooltip_1upmq_58`,legend:`_legend_1upmq_74`,legendLabel:`_legendLabel_1upmq_81`,legendCell:`_legendCell_1upmq_89`};exports.default=e;
2
+ //# sourceMappingURL=ContributionGraph.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributionGraph.module.css.cjs","names":[],"sources":["../../../src/components/ContributionGraph/ContributionGraph.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: var(--gnome-space-1, 6px);\n overflow-x: auto;\n max-width: 100%;\n}\n\n.svg {\n display: block;\n flex-shrink: 0;\n}\n\n.label {\n font-family: var(--gnome-font-family, system-ui);\n font-size: 11px;\n fill: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: 0.6;\n user-select: none;\n}\n\n.cell {\n cursor: default;\n transition: transform var(--gnome-transition-fast, 100ms) ease;\n transform-box: fill-box;\n transform-origin: center;\n outline: none;\n}\n\n.cell:not([aria-disabled=\"true\"]):hover {\n transform: scale(1.2);\n}\n\n.cell:not([aria-disabled=\"true\"]) {\n cursor: pointer;\n}\n\n.cell:focus-visible {\n outline: 2px solid var(--gnome-accent-color, #3584e4);\n outline-offset: 1px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .cell {\n transition: none;\n }\n}\n\n@media (prefers-contrast: more) {\n .cell {\n stroke: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n stroke-width: 0.5;\n stroke-opacity: 0.3;\n }\n}\n\n.tooltip {\n position: absolute;\n transform: translate(-50%, calc(-100% - 6px));\n background: var(--gnome-popover-bg-color, #fff);\n border: 1px solid var(--gnome-light-3, #deddda);\n border-radius: var(--gnome-radius-md, 8px);\n padding: 4px 8px;\n font-family: var(--gnome-font-family, system-ui);\n font-size: 12px;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n box-shadow: var(--gnome-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.12));\n pointer-events: none;\n white-space: nowrap;\n z-index: 10;\n}\n\n.legend {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--gnome-space-1, 6px);\n}\n\n.legendLabel {\n font-family: var(--gnome-font-family, system-ui);\n font-size: 11px;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: 0.6;\n user-select: none;\n}\n\n.legendCell {\n display: block;\n flex-shrink: 0;\n}\n"],"mappings":""}
@@ -0,0 +1,14 @@
1
+ var e = {
2
+ wrapper: "_wrapper_1upmq_1",
3
+ svg: "_svg_1upmq_10",
4
+ label: "_label_1upmq_15",
5
+ cell: "_cell_1upmq_23",
6
+ tooltip: "_tooltip_1upmq_58",
7
+ legend: "_legend_1upmq_74",
8
+ legendLabel: "_legendLabel_1upmq_81",
9
+ legendCell: "_legendCell_1upmq_89"
10
+ };
11
+ //#endregion
12
+ export { e as default };
13
+
14
+ //# sourceMappingURL=ContributionGraph.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContributionGraph.module.css.js","names":[],"sources":["../../../src/components/ContributionGraph/ContributionGraph.module.css"],"sourcesContent":[".wrapper {\n position: relative;\n display: inline-flex;\n flex-direction: column;\n gap: var(--gnome-space-1, 6px);\n overflow-x: auto;\n max-width: 100%;\n}\n\n.svg {\n display: block;\n flex-shrink: 0;\n}\n\n.label {\n font-family: var(--gnome-font-family, system-ui);\n font-size: 11px;\n fill: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: 0.6;\n user-select: none;\n}\n\n.cell {\n cursor: default;\n transition: transform var(--gnome-transition-fast, 100ms) ease;\n transform-box: fill-box;\n transform-origin: center;\n outline: none;\n}\n\n.cell:not([aria-disabled=\"true\"]):hover {\n transform: scale(1.2);\n}\n\n.cell:not([aria-disabled=\"true\"]) {\n cursor: pointer;\n}\n\n.cell:focus-visible {\n outline: 2px solid var(--gnome-accent-color, #3584e4);\n outline-offset: 1px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .cell {\n transition: none;\n }\n}\n\n@media (prefers-contrast: more) {\n .cell {\n stroke: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n stroke-width: 0.5;\n stroke-opacity: 0.3;\n }\n}\n\n.tooltip {\n position: absolute;\n transform: translate(-50%, calc(-100% - 6px));\n background: var(--gnome-popover-bg-color, #fff);\n border: 1px solid var(--gnome-light-3, #deddda);\n border-radius: var(--gnome-radius-md, 8px);\n padding: 4px 8px;\n font-family: var(--gnome-font-family, system-ui);\n font-size: 12px;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n box-shadow: var(--gnome-shadow-sm, 0 1px 3px rgba(0, 0, 0, 0.12));\n pointer-events: none;\n white-space: nowrap;\n z-index: 10;\n}\n\n.legend {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--gnome-space-1, 6px);\n}\n\n.legendLabel {\n font-family: var(--gnome-font-family, system-ui);\n font-size: 11px;\n color: var(--gnome-window-fg-color, rgba(0, 0, 0, 0.8));\n opacity: 0.6;\n user-select: none;\n}\n\n.legendCell {\n display: block;\n flex-shrink: 0;\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./ContributionGraph/ContributionGraph.cjs`);exports.ContributionGraph=e.ContributionGraph;
@@ -0,0 +1,2 @@
1
+ export * from './ContributionGraph/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ import { ContributionGraph as e } from "./ContributionGraph/ContributionGraph.js";
2
+ export { e as ContributionGraph };
@@ -0,0 +1,2 @@
1
+ const e=require(`./CountDownTimer.module.css.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`);function r({start:r,end:i,format:a=`time`,variant:o=`accent`,action:s,className:c,...l}){let[u,d]=(0,t.useState)(null),[f,p]=(0,t.useState)(!1);if((0,t.useEffect)(()=>{let e=()=>{let e=new Date,t=new Date(i).getTime()-e.getTime();return t<=0?{days:0,hours:0,minutes:0,seconds:0,isFinished:!0}:{days:Math.floor(t/(1e3*60*60*24)),hours:Math.floor(t/(1e3*60*60)%24),minutes:Math.floor(t/1e3/60%60),seconds:Math.floor(t/1e3%60),isFinished:!1}};d(e());let t=setInterval(()=>{let t=e();d(t),t.isFinished&&!f&&(s?.(),p(!0))},1e3);return()=>clearInterval(t)},[i,s,f]),!u)return null;let m=()=>{if(a===`date`)return new Date(i).toLocaleDateString();let{days:e,hours:t,minutes:n,seconds:r,isFinished:o}=u;return o?`00:00:00`:a===`datetime`?`${new Date(i).toLocaleDateString()} ${`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`}`:e>0?`${e}d ${String(t).padStart(2,`0`)}h ${String(n).padStart(2,`0`)}m`:`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}:${String(r).padStart(2,`0`)}`},h=u.isFinished?`destructive`:o;return(0,n.jsx)(`div`,{className:[e.default.countdownTimer,e.default[h],u.isFinished?e.default.finished:null,c].filter(Boolean).join(` `),...l,children:(0,n.jsx)(`span`,{className:e.default.value,children:m()})})}exports.CountDownTimer=r;
2
+ //# sourceMappingURL=CountDownTimer.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountDownTimer.cjs","names":[],"sources":["../../../src/components/CountDownTimer/CountDownTimer.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport styles from \"./CountDownTimer.module.css\";\n\nexport type CountDownVariant = \"accent\" | \"destructive\" | \"success\" | \"warning\";\n\nexport interface CountDownTimerProps extends HTMLAttributes<HTMLDivElement> {\n /** Start date for the countdown */\n start: Date;\n /** End date for the countdown */\n end: Date;\n /** Format to display: \"date\", \"time\", or \"datetime\" */\n format?: \"date\" | \"time\" | \"datetime\";\n /** Visual style variant. Defaults to `\"accent\"`. */\n variant?: CountDownVariant;\n /** Callback action to execute when countdown reaches zero */\n action?: () => void;\n}\n\ninterface TimeRemaining {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n isFinished: boolean;\n}\n\n/**\n * CountDown timer component that displays remaining time and executes an action when time runs out.\n *\n * @see https://developer.gnome.org/hig/patterns/\n */\nexport function CountDownTimer({\n start,\n end,\n format = \"time\",\n variant = \"accent\",\n action,\n className,\n ...props\n}: CountDownTimerProps) {\n const [timeRemaining, setTimeRemaining] = useState<TimeRemaining | null>(null);\n const [hasExecutedAction, setHasExecutedAction] = useState(false);\n\n useEffect(() => {\n const calculateTimeRemaining = (): TimeRemaining => {\n const now = new Date();\n const endTime = new Date(end).getTime();\n const nowTime = now.getTime();\n const difference = endTime - nowTime;\n\n if (difference <= 0) {\n return {\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n isFinished: true,\n };\n }\n\n const days = Math.floor(difference / (1000 * 60 * 60 * 24));\n const hours = Math.floor((difference / (1000 * 60 * 60)) % 24);\n const minutes = Math.floor((difference / 1000 / 60) % 60);\n const seconds = Math.floor((difference / 1000) % 60);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n isFinished: false,\n };\n };\n\n // Initial calculation\n setTimeRemaining(calculateTimeRemaining());\n\n // Update every second\n const interval = setInterval(() => {\n const remaining = calculateTimeRemaining();\n setTimeRemaining(remaining);\n\n // Execute action when countdown finishes\n if (remaining.isFinished && !hasExecutedAction) {\n action?.();\n setHasExecutedAction(true);\n }\n }, 1000);\n\n return () => clearInterval(interval);\n }, [end, action, hasExecutedAction]);\n\n if (!timeRemaining) {\n return null;\n }\n\n const formatTime = (): string => {\n if (format === \"date\") {\n const endDate = new Date(end);\n return endDate.toLocaleDateString();\n }\n\n const { days, hours, minutes, seconds, isFinished } = timeRemaining;\n\n if (isFinished) {\n return \"00:00:00\";\n }\n\n if (format === \"datetime\") {\n const endDate = new Date(end);\n const dateString = endDate.toLocaleDateString();\n const timeString = `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n return `${dateString} ${timeString}`;\n }\n\n if (days > 0) {\n return `${days}d ${String(hours).padStart(2, \"0\")}h ${String(minutes).padStart(2, \"0\")}m`;\n }\n\n return `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n };\n\n const displayVariant = timeRemaining.isFinished ? \"destructive\" : variant;\n\n return (\n <div\n className={[\n styles.countdownTimer,\n styles[displayVariant],\n timeRemaining.isFinished ? styles.finished : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n <span className={styles.value}>{formatTime()}</span>\n </div>\n );\n}\n"],"mappings":"yGAgCA,SAAgB,EAAe,CAC3B,QACA,MACA,SAAS,OACT,UAAU,SACV,SACA,YACA,GAAG,GACiB,CACpB,GAAM,CAAC,EAAe,IAAA,EAAA,EAAA,UAAmD,KAAK,CACxE,CAAC,EAAmB,IAAA,EAAA,EAAA,UAAiC,GAAM,CAmDjE,IAjDA,EAAA,EAAA,eAAgB,CACZ,IAAM,MAA8C,CAChD,IAAM,EAAM,IAAI,KAGV,EAFU,IAAI,KAAK,EAAI,CAAC,SAAS,CACvB,EAAI,SAAS,CAkB7B,OAfI,GAAc,EACP,CACH,KAAM,EACN,MAAO,EACP,QAAS,EACT,QAAS,EACT,WAAY,GACf,CAQE,CACH,KANS,KAAK,MAAM,GAAc,IAAO,GAAK,GAAK,IAAI,CAOvD,MANU,KAAK,MAAO,GAAc,IAAO,GAAK,IAAO,GAAG,CAO1D,QANY,KAAK,MAAO,EAAa,IAAO,GAAM,GAAG,CAOrD,QANY,KAAK,MAAO,EAAa,IAAQ,GAAG,CAOhD,WAAY,GACf,EAIL,EAAiB,GAAwB,CAAC,CAG1C,IAAM,EAAW,gBAAkB,CAC/B,IAAM,EAAY,GAAwB,CAC1C,EAAiB,EAAU,CAGvB,EAAU,YAAc,CAAC,IACzB,KAAU,CACV,EAAqB,GAAK,GAE/B,IAAK,CAER,UAAa,cAAc,EAAS,EACrC,CAAC,EAAK,EAAQ,EAAkB,CAAC,CAEhC,CAAC,EACD,OAAO,KAGX,IAAM,MAA2B,CAC7B,GAAI,IAAW,OAEX,OADgB,IAAI,KAAK,EAAI,CACd,oBAAoB,CAGvC,GAAM,CAAE,OAAM,QAAO,UAAS,UAAS,cAAe,EAiBtD,OAfI,EACO,WAGP,IAAW,WAIJ,GAHS,IAAI,KAAK,EAAI,CACF,oBAAoB,CAE1B,GADF,GAAG,OAAO,EAAM,CAAC,SAAS,EAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,EAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,EAAG,IAAI,KAI5H,EAAO,EACA,GAAG,EAAK,IAAI,OAAO,EAAM,CAAC,SAAS,EAAG,IAAI,CAAC,IAAI,OAAO,EAAQ,CAAC,SAAS,EAAG,IAAI,CAAC,GAGpF,GAAG,OAAO,EAAM,CAAC,SAAS,EAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,EAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,EAAG,IAAI,IAG9G,EAAiB,EAAc,WAAa,cAAgB,EAElE,OACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,CACP,EAAA,QAAO,eACP,EAAA,QAAO,GACP,EAAc,WAAa,EAAA,QAAO,SAAW,KAC7C,EACH,CACI,OAAO,QAAQ,CACf,KAAK,IAAI,CACd,GAAI,YAEJ,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,QAAO,eAAQ,GAAY,CAAQ,CAAA,CAClD,CAAA"}
@@ -0,0 +1,57 @@
1
+ import e from "./CountDownTimer.module.css.js";
2
+ import { useEffect as t, useState as n } from "react";
3
+ import { jsx as r } from "react/jsx-runtime";
4
+ //#region src/components/CountDownTimer/CountDownTimer.tsx
5
+ function i({ start: i, end: a, format: o = "time", variant: s = "accent", action: c, className: l, ...u }) {
6
+ let [d, f] = n(null), [p, m] = n(!1);
7
+ if (t(() => {
8
+ let e = () => {
9
+ let e = /* @__PURE__ */ new Date(), t = new Date(a).getTime() - e.getTime();
10
+ return t <= 0 ? {
11
+ days: 0,
12
+ hours: 0,
13
+ minutes: 0,
14
+ seconds: 0,
15
+ isFinished: !0
16
+ } : {
17
+ days: Math.floor(t / (1e3 * 60 * 60 * 24)),
18
+ hours: Math.floor(t / (1e3 * 60 * 60) % 24),
19
+ minutes: Math.floor(t / 1e3 / 60 % 60),
20
+ seconds: Math.floor(t / 1e3 % 60),
21
+ isFinished: !1
22
+ };
23
+ };
24
+ f(e());
25
+ let t = setInterval(() => {
26
+ let t = e();
27
+ f(t), t.isFinished && !p && (c?.(), m(!0));
28
+ }, 1e3);
29
+ return () => clearInterval(t);
30
+ }, [
31
+ a,
32
+ c,
33
+ p
34
+ ]), !d) return null;
35
+ let h = () => {
36
+ if (o === "date") return new Date(a).toLocaleDateString();
37
+ let { days: e, hours: t, minutes: n, seconds: r, isFinished: i } = d;
38
+ return i ? "00:00:00" : o === "datetime" ? `${new Date(a).toLocaleDateString()} ${`${String(t).padStart(2, "0")}:${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`}` : e > 0 ? `${e}d ${String(t).padStart(2, "0")}h ${String(n).padStart(2, "0")}m` : `${String(t).padStart(2, "0")}:${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
39
+ }, g = d.isFinished ? "destructive" : s;
40
+ return /* @__PURE__ */ r("div", {
41
+ className: [
42
+ e.countdownTimer,
43
+ e[g],
44
+ d.isFinished ? e.finished : null,
45
+ l
46
+ ].filter(Boolean).join(" "),
47
+ ...u,
48
+ children: /* @__PURE__ */ r("span", {
49
+ className: e.value,
50
+ children: h()
51
+ })
52
+ });
53
+ }
54
+ //#endregion
55
+ export { i as CountDownTimer };
56
+
57
+ //# sourceMappingURL=CountDownTimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountDownTimer.js","names":[],"sources":["../../../src/components/CountDownTimer/CountDownTimer.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { HTMLAttributes } from \"react\";\nimport styles from \"./CountDownTimer.module.css\";\n\nexport type CountDownVariant = \"accent\" | \"destructive\" | \"success\" | \"warning\";\n\nexport interface CountDownTimerProps extends HTMLAttributes<HTMLDivElement> {\n /** Start date for the countdown */\n start: Date;\n /** End date for the countdown */\n end: Date;\n /** Format to display: \"date\", \"time\", or \"datetime\" */\n format?: \"date\" | \"time\" | \"datetime\";\n /** Visual style variant. Defaults to `\"accent\"`. */\n variant?: CountDownVariant;\n /** Callback action to execute when countdown reaches zero */\n action?: () => void;\n}\n\ninterface TimeRemaining {\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n isFinished: boolean;\n}\n\n/**\n * CountDown timer component that displays remaining time and executes an action when time runs out.\n *\n * @see https://developer.gnome.org/hig/patterns/\n */\nexport function CountDownTimer({\n start,\n end,\n format = \"time\",\n variant = \"accent\",\n action,\n className,\n ...props\n}: CountDownTimerProps) {\n const [timeRemaining, setTimeRemaining] = useState<TimeRemaining | null>(null);\n const [hasExecutedAction, setHasExecutedAction] = useState(false);\n\n useEffect(() => {\n const calculateTimeRemaining = (): TimeRemaining => {\n const now = new Date();\n const endTime = new Date(end).getTime();\n const nowTime = now.getTime();\n const difference = endTime - nowTime;\n\n if (difference <= 0) {\n return {\n days: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n isFinished: true,\n };\n }\n\n const days = Math.floor(difference / (1000 * 60 * 60 * 24));\n const hours = Math.floor((difference / (1000 * 60 * 60)) % 24);\n const minutes = Math.floor((difference / 1000 / 60) % 60);\n const seconds = Math.floor((difference / 1000) % 60);\n\n return {\n days,\n hours,\n minutes,\n seconds,\n isFinished: false,\n };\n };\n\n // Initial calculation\n setTimeRemaining(calculateTimeRemaining());\n\n // Update every second\n const interval = setInterval(() => {\n const remaining = calculateTimeRemaining();\n setTimeRemaining(remaining);\n\n // Execute action when countdown finishes\n if (remaining.isFinished && !hasExecutedAction) {\n action?.();\n setHasExecutedAction(true);\n }\n }, 1000);\n\n return () => clearInterval(interval);\n }, [end, action, hasExecutedAction]);\n\n if (!timeRemaining) {\n return null;\n }\n\n const formatTime = (): string => {\n if (format === \"date\") {\n const endDate = new Date(end);\n return endDate.toLocaleDateString();\n }\n\n const { days, hours, minutes, seconds, isFinished } = timeRemaining;\n\n if (isFinished) {\n return \"00:00:00\";\n }\n\n if (format === \"datetime\") {\n const endDate = new Date(end);\n const dateString = endDate.toLocaleDateString();\n const timeString = `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n return `${dateString} ${timeString}`;\n }\n\n if (days > 0) {\n return `${days}d ${String(hours).padStart(2, \"0\")}h ${String(minutes).padStart(2, \"0\")}m`;\n }\n\n return `${String(hours).padStart(2, \"0\")}:${String(minutes).padStart(2, \"0\")}:${String(seconds).padStart(2, \"0\")}`;\n };\n\n const displayVariant = timeRemaining.isFinished ? \"destructive\" : variant;\n\n return (\n <div\n className={[\n styles.countdownTimer,\n styles[displayVariant],\n timeRemaining.isFinished ? styles.finished : null,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n <span className={styles.value}>{formatTime()}</span>\n </div>\n );\n}\n"],"mappings":";;;;AAgCA,SAAgB,EAAe,EAC3B,UACA,QACA,YAAS,QACT,aAAU,UACV,WACA,cACA,GAAG,KACiB;CACpB,IAAM,CAAC,GAAe,KAAoB,EAA+B,KAAK,EACxE,CAAC,GAAmB,KAAwB,EAAS,GAAM;AAmDjE,KAjDA,QAAgB;EACZ,IAAM,UAA8C;GAChD,IAAM,oBAAM,IAAI,MAAM,EAGhB,IAFU,IAAI,KAAK,EAAI,CAAC,SAAS,GACvB,EAAI,SAAS;AAkB7B,UAfI,KAAc,IACP;IACH,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,YAAY;IACf,GAQE;IACH,MANS,KAAK,MAAM,KAAc,MAAO,KAAK,KAAK,IAAI;IAOvD,OANU,KAAK,MAAO,KAAc,MAAO,KAAK,MAAO,GAAG;IAO1D,SANY,KAAK,MAAO,IAAa,MAAO,KAAM,GAAG;IAOrD,SANY,KAAK,MAAO,IAAa,MAAQ,GAAG;IAOhD,YAAY;IACf;;AAIL,IAAiB,GAAwB,CAAC;EAG1C,IAAM,IAAW,kBAAkB;GAC/B,IAAM,IAAY,GAAwB;AAI1C,GAHA,EAAiB,EAAU,EAGvB,EAAU,cAAc,CAAC,MACzB,KAAU,EACV,EAAqB,GAAK;KAE/B,IAAK;AAER,eAAa,cAAc,EAAS;IACrC;EAAC;EAAK;EAAQ;EAAkB,CAAC,EAEhC,CAAC,EACD,QAAO;CAGX,IAAM,UAA2B;AAC7B,MAAI,MAAW,OAEX,QADgB,IAAI,KAAK,EAAI,CACd,oBAAoB;EAGvC,IAAM,EAAE,SAAM,UAAO,YAAS,YAAS,kBAAe;AAiBtD,SAfI,IACO,aAGP,MAAW,aAIJ,GAHS,IAAI,KAAK,EAAI,CACF,oBAAoB,CAE1B,GADF,GAAG,OAAO,EAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,GAAG,IAAI,OAI5H,IAAO,IACA,GAAG,EAAK,IAAI,OAAO,EAAM,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,OAAO,EAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,KAGpF,GAAG,OAAO,EAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAQ,CAAC,SAAS,GAAG,IAAI;IAG9G,IAAiB,EAAc,aAAa,gBAAgB;AAElE,QACI,kBAAC,OAAD;EACI,WAAW;GACP,EAAO;GACP,EAAO;GACP,EAAc,aAAa,EAAO,WAAW;GAC7C;GACH,CACI,OAAO,QAAQ,CACf,KAAK,IAAI;EACd,GAAI;YAEJ,kBAAC,QAAD;GAAM,WAAW,EAAO;aAAQ,GAAY;GAAQ,CAAA;EAClD,CAAA"}
@@ -0,0 +1,2 @@
1
+ var e={countdownTimer:`_countdownTimer_twhbs_3`,value:`_value_twhbs_25`,accent:`_accent_twhbs_34`,success:`_success_twhbs_46`,warning:`_warning_twhbs_58`,destructive:`_destructive_twhbs_70`,finished:`_finished_twhbs_82`};exports.default=e;
2
+ //# sourceMappingURL=CountDownTimer.module.css.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountDownTimer.module.css.cjs","names":[],"sources":["../../../src/components/CountDownTimer/CountDownTimer.module.css"],"sourcesContent":["/* ─── Base container ──────────────────────────────────────────────────────── */\n\n.countdownTimer {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n\n padding: 0.5rem 1rem;\n border-radius: var(--gnome-radius-default, 6px);\n background-color: var(--gnome-view-bg-color, #f6f5f4);\n\n font-family: var(--gnome-font-family);\n font-size: 1rem;\n font-weight: var(--gnome-font-weight-medium, 500);\n line-height: 1.5;\n letter-spacing: 0.02em;\n\n user-select: none;\n transition: all 200ms ease-out;\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n font-family: \"Fira Mono\", monospace;\n font-size: 1.125rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n}\n\n/* ─── Variant: accent (default) ────────────────────────────────────────────── */\n\n.accent {\n background-color: rgba(53, 132, 228, 0.1);\n color: #3584e4;\n border: 1px solid rgba(53, 132, 228, 0.2);\n}\n\n.accent .value {\n color: #3584e4;\n}\n\n/* ─── Variant: success ─────────────────────────────────────────────────────── */\n\n.success {\n background-color: rgba(51, 209, 122, 0.1);\n color: #33d17a;\n border: 1px solid rgba(51, 209, 122, 0.2);\n}\n\n.success .value {\n color: #33d17a;\n}\n\n/* ─── Variant: warning ─────────────────────────────────────────────────────── */\n\n.warning {\n background-color: rgba(255, 190, 0, 0.1);\n color: #f8e45c;\n border: 1px solid rgba(255, 190, 0, 0.2);\n}\n\n.warning .value {\n color: #f8e45c;\n}\n\n/* ─── Variant: destructive ────────────────────────────────────────────────── */\n\n.destructive {\n background-color: rgba(225, 59, 59, 0.1);\n color: #e13b3b;\n border: 1px solid rgba(225, 59, 59, 0.2);\n}\n\n.destructive .value {\n color: #e13b3b;\n}\n\n/* ─── Finished state ───────────────────────────────────────────────────────── */\n\n.finished {\n opacity: 0.7;\n}\n\n@media (prefers-color-scheme: dark) {\n .countdownTimer {\n background-color: var(--gnome-view-bg-color, #3d3846);\n }\n\n .accent {\n background-color: rgba(53, 132, 228, 0.15);\n border-color: rgba(53, 132, 228, 0.3);\n }\n\n .success {\n background-color: rgba(51, 209, 122, 0.15);\n border-color: rgba(51, 209, 122, 0.3);\n }\n\n .warning {\n background-color: rgba(255, 190, 0, 0.15);\n border-color: rgba(255, 190, 0, 0.3);\n }\n\n .destructive {\n background-color: rgba(225, 59, 59, 0.15);\n border-color: rgba(225, 59, 59, 0.3);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,13 @@
1
+ var e = {
2
+ countdownTimer: "_countdownTimer_twhbs_3",
3
+ value: "_value_twhbs_25",
4
+ accent: "_accent_twhbs_34",
5
+ success: "_success_twhbs_46",
6
+ warning: "_warning_twhbs_58",
7
+ destructive: "_destructive_twhbs_70",
8
+ finished: "_finished_twhbs_82"
9
+ };
10
+ //#endregion
11
+ export { e as default };
12
+
13
+ //# sourceMappingURL=CountDownTimer.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountDownTimer.module.css.js","names":[],"sources":["../../../src/components/CountDownTimer/CountDownTimer.module.css"],"sourcesContent":["/* ─── Base container ──────────────────────────────────────────────────────── */\n\n.countdownTimer {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n\n padding: 0.5rem 1rem;\n border-radius: var(--gnome-radius-default, 6px);\n background-color: var(--gnome-view-bg-color, #f6f5f4);\n\n font-family: var(--gnome-font-family);\n font-size: 1rem;\n font-weight: var(--gnome-font-weight-medium, 500);\n line-height: 1.5;\n letter-spacing: 0.02em;\n\n user-select: none;\n transition: all 200ms ease-out;\n}\n\n/* ─── Value display ────────────────────────────────────────────────────────── */\n\n.value {\n font-family: \"Fira Mono\", monospace;\n font-size: 1.125rem;\n font-weight: 600;\n letter-spacing: 0.025em;\n}\n\n/* ─── Variant: accent (default) ────────────────────────────────────────────── */\n\n.accent {\n background-color: rgba(53, 132, 228, 0.1);\n color: #3584e4;\n border: 1px solid rgba(53, 132, 228, 0.2);\n}\n\n.accent .value {\n color: #3584e4;\n}\n\n/* ─── Variant: success ─────────────────────────────────────────────────────── */\n\n.success {\n background-color: rgba(51, 209, 122, 0.1);\n color: #33d17a;\n border: 1px solid rgba(51, 209, 122, 0.2);\n}\n\n.success .value {\n color: #33d17a;\n}\n\n/* ─── Variant: warning ─────────────────────────────────────────────────────── */\n\n.warning {\n background-color: rgba(255, 190, 0, 0.1);\n color: #f8e45c;\n border: 1px solid rgba(255, 190, 0, 0.2);\n}\n\n.warning .value {\n color: #f8e45c;\n}\n\n/* ─── Variant: destructive ────────────────────────────────────────────────── */\n\n.destructive {\n background-color: rgba(225, 59, 59, 0.1);\n color: #e13b3b;\n border: 1px solid rgba(225, 59, 59, 0.2);\n}\n\n.destructive .value {\n color: #e13b3b;\n}\n\n/* ─── Finished state ───────────────────────────────────────────────────────── */\n\n.finished {\n opacity: 0.7;\n}\n\n@media (prefers-color-scheme: dark) {\n .countdownTimer {\n background-color: var(--gnome-view-bg-color, #3d3846);\n }\n\n .accent {\n background-color: rgba(53, 132, 228, 0.15);\n border-color: rgba(53, 132, 228, 0.3);\n }\n\n .success {\n background-color: rgba(51, 209, 122, 0.15);\n border-color: rgba(51, 209, 122, 0.3);\n }\n\n .warning {\n background-color: rgba(255, 190, 0, 0.15);\n border-color: rgba(255, 190, 0, 0.3);\n }\n\n .destructive {\n background-color: rgba(225, 59, 59, 0.15);\n border-color: rgba(225, 59, 59, 0.3);\n }\n}\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./CountDownTimer/CountDownTimer.cjs`);exports.CountDownTimer=e.CountDownTimer;
@@ -0,0 +1,2 @@
1
+ export * from './CountDownTimer/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ import { CountDownTimer as e } from "./CountDownTimer/CountDownTimer.js";
2
+ export { e as CountDownTimer };
@@ -0,0 +1,2 @@
1
+ const e=require(`./dialogUtils.cjs`),t=require(`./Dialog.module.css.cjs`);let n=require(`react`),r=require(`react-dom`),i=require(`react/jsx-runtime`);function a({open:a,title:o,children:s,buttons:c=[],onClose:l,closeOnBackdrop:u=!0,role:d=`dialog`,responses:f,onResponse:p,className:m,...h}){let g=(0,n.useRef)(null),_=(0,n.useId)(),v=(0,n.useRef)(null),y=!!f,b=e.useVisualViewport();(0,n.useEffect)(()=>{a?(v.current=document.activeElement,(g.current?.querySelector(e.FOCUSABLE))?.focus()):v.current?.focus()},[a]);let x=(0,n.useCallback)(()=>{let e=f?.find(e=>e.variant!==`destructive`&&!e.disabled);e&&p?.(e.id)},[f,p]),S=y?x:u?l:void 0,C=(0,n.useCallback)(t=>{if(t.key===`Escape`){t.preventDefault(),y?x():l?.();return}e.trapFocus(t,g)},[y,x,l]);if(!a)return null;let w=()=>y&&f?(0,i.jsx)(`div`,{className:t.default.footer,children:f.map(e=>(0,i.jsx)(`button`,{type:`button`,disabled:e.disabled,className:[t.default.btn,t.default[`btn-${e.variant??`default`}`]].filter(Boolean).join(` `),onClick:()=>p?.(e.id),children:e.label},e.id))}):c.length>0?(0,i.jsx)(`div`,{className:t.default.footer,children:c.map(e=>(0,i.jsx)(`button`,{type:`button`,disabled:e.disabled,className:[t.default.btn,t.default[`btn-${e.variant??`default`}`]].filter(Boolean).join(` `),onClick:e.onClick,children:e.label},e.label))}):null,T=(0,i.jsx)(`div`,{className:t.default.backdrop,style:b,onClick:S,"aria-hidden":`true`,children:(0,i.jsxs)(`div`,{ref:g,role:d,"aria-modal":`true`,"aria-labelledby":_,className:[t.default.dialog,m].filter(Boolean).join(` `),onKeyDown:C,onClick:e=>e.stopPropagation(),...h,children:[o&&(0,i.jsx)(`div`,{id:_,className:t.default.title,children:o}),s&&(0,i.jsx)(`div`,{className:t.default.body,children:s}),w()]})});return typeof document>`u`?T:(0,r.createPortal)(T,document.body)}exports.Dialog=a;
2
+ //# sourceMappingURL=Dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.cjs","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":"uJAqGA,SAAgB,EAAO,CACrB,OACA,QACA,WACA,UAAU,EAAE,CACZ,UACA,kBAAkB,GAClB,OAAO,SACP,YACA,aACA,YACA,GAAG,GACW,CACd,IAAM,GAAA,EAAA,EAAA,QAAmC,KAAK,CACxC,GAAA,EAAA,EAAA,QAAiB,CACjB,GAAA,EAAA,EAAA,QAA2C,KAAK,CAEhD,EAAU,CAAC,CAAC,EACZ,EAAgB,EAAA,mBAAmB,EAGzC,EAAA,EAAA,eAAgB,CACV,GACF,EAAkB,QAAU,SAAS,eAC1B,EAAU,SAAS,cAA2B,EAAA,UAAU,GAC/D,OAAO,EAEV,EAAkB,SAAgC,OAAO,EAE3D,CAAC,EAAK,CAAC,CAGV,IAAM,GAAA,EAAA,EAAA,iBAAiC,CACrC,IAAM,EAAS,GAAW,KAAM,GAAM,EAAE,UAAY,eAAiB,CAAC,EAAE,SAAS,CAC7E,GAAQ,IAAa,EAAO,GAAG,EAClC,CAAC,EAAW,EAAW,CAAC,CAErB,EAAiB,EAAU,EAAe,EAAkB,EAAU,IAAA,GAGtE,GAAA,EAAA,EAAA,aACH,GAAqC,CACpC,GAAI,EAAE,MAAQ,SAAU,CACtB,EAAE,gBAAgB,CACd,EAAS,GAAc,CACtB,KAAW,CAChB,OAEF,EAAA,UAAU,EAAG,EAAU,EAEzB,CAAC,EAAS,EAAc,EAAQ,CACjC,CAED,GAAI,CAAC,EAAM,OAAO,KAGlB,IAAM,MACA,GAAW,GAEX,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBACpB,EAAU,IAAK,IACd,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,SACL,SAAU,EAAE,SACZ,UAAW,CAAC,EAAA,QAAO,IAAK,EAAA,QAAO,OAAO,EAAE,SAAW,aAAa,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC1F,YAAe,IAAa,EAAE,GAAG,UAEhC,EAAE,MACI,CAPF,EAAE,GAOA,CACT,CACE,CAAA,CAGN,EAAQ,OAAS,GAEjB,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,gBACpB,EAAQ,IAAK,IACZ,EAAA,EAAA,KAAC,SAAD,CAEE,KAAK,SACL,SAAU,EAAI,SACd,UAAW,CAAC,EAAA,QAAO,IAAK,EAAA,QAAO,OAAO,EAAI,SAAW,aAAa,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC5F,QAAS,EAAI,iBAEZ,EAAI,MACE,CAPF,EAAI,MAOF,CACT,CACE,CAAA,CAGH,KAGH,GACJ,EAAA,EAAA,KAAC,MAAD,CACE,UAAW,EAAA,QAAO,SAClB,MAAO,EACP,QAAS,EACT,cAAY,iBAEZ,EAAA,EAAA,MAAC,MAAD,CACE,IAAK,EACC,OACN,aAAW,OACX,kBAAiB,EACjB,UAAW,CAAC,EAAA,QAAO,OAAQ,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,CAC/D,UAAW,EACX,QAAU,GAAM,EAAE,iBAAiB,CACnC,GAAI,WARN,CAUG,IAAS,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,EAAS,UAAW,EAAA,QAAO,eAAQ,EAAY,CAAA,CACjE,IAAY,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAO,WAAe,CAAA,CACzD,GAAe,CACZ,GACF,CAAA,CAIR,OADI,OAAO,SAAa,IAAoB,GAC5C,EAAA,EAAA,cAAoB,EAAM,SAAS,KAAK"}