@dalcvil/steam-green-react 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +25 -25
  2. package/README.md +38 -12
  3. package/dist/components/Avatar/Avatar.css +136 -0
  4. package/dist/components/Avatar/Avatar.d.ts +22 -0
  5. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  6. package/dist/components/Avatar/Avatar.js +49 -0
  7. package/dist/components/Avatar/Avatar.js.map +1 -0
  8. package/dist/components/Avatar/index.d.ts +3 -0
  9. package/dist/components/Avatar/index.d.ts.map +1 -0
  10. package/dist/components/Button/Button.css +117 -0
  11. package/dist/components/Button/Button.css.d.ts +1 -0
  12. package/dist/components/Button/Button.d.ts +18 -0
  13. package/dist/components/Button/Button.d.ts.map +1 -0
  14. package/dist/components/Button/Button.js +29 -0
  15. package/dist/components/Button/Button.js.map +1 -0
  16. package/dist/components/Button/index.d.ts +3 -0
  17. package/dist/components/Button/index.d.ts.map +1 -0
  18. package/dist/components/Checkbox/Checkbox.css +116 -0
  19. package/dist/components/Checkbox/Checkbox.css.d.ts +1 -0
  20. package/dist/components/Checkbox/Checkbox.d.ts +19 -0
  21. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  22. package/dist/components/Checkbox/Checkbox.js +51 -0
  23. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  24. package/dist/components/Checkbox/index.d.ts +3 -0
  25. package/dist/components/Checkbox/index.d.ts.map +1 -0
  26. package/dist/components/ColorPicker/ColorPicker.css +331 -0
  27. package/dist/components/ColorPicker/ColorPicker.css.d.ts +1 -0
  28. package/dist/components/ColorPicker/ColorPicker.d.ts +29 -0
  29. package/dist/components/ColorPicker/ColorPicker.d.ts.map +1 -0
  30. package/dist/components/ColorPicker/ColorPicker.js +534 -0
  31. package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
  32. package/dist/components/ColorPicker/index.d.ts +3 -0
  33. package/dist/components/{GreenButton → ColorPicker}/index.d.ts.map +1 -1
  34. package/dist/components/Console/Console.css +96 -0
  35. package/dist/components/Console/Console.css.d.ts +1 -0
  36. package/dist/components/Console/Console.d.ts +26 -0
  37. package/dist/components/Console/Console.d.ts.map +1 -0
  38. package/dist/components/Console/Console.js +59 -0
  39. package/dist/components/Console/Console.js.map +1 -0
  40. package/dist/components/Console/index.d.ts +3 -0
  41. package/dist/components/Console/index.d.ts.map +1 -0
  42. package/dist/components/Dialog/Dialog.css +137 -0
  43. package/dist/components/Dialog/Dialog.css.d.ts +1 -0
  44. package/dist/components/Dialog/Dialog.d.ts +28 -0
  45. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  46. package/dist/components/Dialog/Dialog.js +151 -0
  47. package/dist/components/Dialog/Dialog.js.map +1 -0
  48. package/dist/components/Dialog/index.d.ts +3 -0
  49. package/dist/components/Dialog/index.d.ts.map +1 -0
  50. package/dist/components/Divider/Divider.css +68 -0
  51. package/dist/components/Divider/Divider.css.d.ts +1 -0
  52. package/dist/components/Divider/Divider.d.ts +12 -0
  53. package/dist/components/Divider/Divider.d.ts.map +1 -0
  54. package/dist/components/Divider/Divider.js +23 -0
  55. package/dist/components/Divider/Divider.js.map +1 -0
  56. package/dist/components/Divider/index.d.ts +3 -0
  57. package/dist/components/Divider/index.d.ts.map +1 -0
  58. package/dist/components/FieldLabel/FieldLabel.css +98 -0
  59. package/dist/components/FieldLabel/FieldLabel.css.d.ts +1 -0
  60. package/dist/components/FieldLabel/FieldLabel.d.ts +29 -0
  61. package/dist/components/FieldLabel/FieldLabel.d.ts.map +1 -0
  62. package/dist/components/FieldLabel/FieldLabel.js +42 -0
  63. package/dist/components/FieldLabel/FieldLabel.js.map +1 -0
  64. package/dist/components/FieldLabel/index.d.ts +3 -0
  65. package/dist/components/FieldLabel/index.d.ts.map +1 -0
  66. package/dist/components/GroupBox/GroupBox.css +101 -0
  67. package/dist/components/GroupBox/GroupBox.css.d.ts +1 -0
  68. package/dist/components/GroupBox/GroupBox.d.ts +14 -0
  69. package/dist/components/GroupBox/GroupBox.d.ts.map +1 -0
  70. package/dist/components/GroupBox/GroupBox.js +25 -0
  71. package/dist/components/GroupBox/GroupBox.js.map +1 -0
  72. package/dist/components/GroupBox/index.d.ts +3 -0
  73. package/dist/components/GroupBox/index.d.ts.map +1 -0
  74. package/dist/components/IconButton/IconButton.css +184 -0
  75. package/dist/components/IconButton/IconButton.css.d.ts +1 -0
  76. package/dist/components/IconButton/IconButton.d.ts +56 -0
  77. package/dist/components/IconButton/IconButton.d.ts.map +1 -0
  78. package/dist/components/IconButton/IconButton.js +77 -0
  79. package/dist/components/IconButton/IconButton.js.map +1 -0
  80. package/dist/components/IconButton/index.d.ts +3 -0
  81. package/dist/components/IconButton/index.d.ts.map +1 -0
  82. package/dist/components/LevelMeter/LevelMeter.css +117 -0
  83. package/dist/components/LevelMeter/LevelMeter.css.d.ts +1 -0
  84. package/dist/components/LevelMeter/LevelMeter.d.ts +20 -0
  85. package/dist/components/LevelMeter/LevelMeter.d.ts.map +1 -0
  86. package/dist/components/LevelMeter/LevelMeter.js +44 -0
  87. package/dist/components/LevelMeter/LevelMeter.js.map +1 -0
  88. package/dist/components/LevelMeter/index.d.ts +3 -0
  89. package/dist/components/LevelMeter/index.d.ts.map +1 -0
  90. package/dist/components/Link/Link.css +127 -0
  91. package/dist/components/Link/Link.css.d.ts +1 -0
  92. package/dist/components/Link/Link.d.ts +26 -0
  93. package/dist/components/Link/Link.d.ts.map +1 -0
  94. package/dist/components/Link/Link.js +60 -0
  95. package/dist/components/Link/Link.js.map +1 -0
  96. package/dist/components/Link/index.d.ts +3 -0
  97. package/dist/components/Link/index.d.ts.map +1 -0
  98. package/dist/components/List/List.css +224 -0
  99. package/dist/components/List/List.css.d.ts +1 -0
  100. package/dist/components/List/List.d.ts +49 -0
  101. package/dist/components/List/List.d.ts.map +1 -0
  102. package/dist/components/List/List.js +300 -0
  103. package/dist/components/List/List.js.map +1 -0
  104. package/dist/components/List/index.d.ts +3 -0
  105. package/dist/components/List/index.d.ts.map +1 -0
  106. package/dist/components/Menu/Menu.css +122 -0
  107. package/dist/components/Menu/Menu.css.d.ts +1 -0
  108. package/dist/components/Menu/Menu.d.ts +46 -0
  109. package/dist/components/Menu/Menu.d.ts.map +1 -0
  110. package/dist/components/Menu/Menu.js +246 -0
  111. package/dist/components/Menu/Menu.js.map +1 -0
  112. package/dist/components/Menu/index.d.ts +3 -0
  113. package/dist/components/Menu/index.d.ts.map +1 -0
  114. package/dist/components/MenuBar/MenuBar.css +94 -0
  115. package/dist/components/MenuBar/MenuBar.css.d.ts +1 -0
  116. package/dist/components/MenuBar/MenuBar.d.ts +34 -0
  117. package/dist/components/MenuBar/MenuBar.d.ts.map +1 -0
  118. package/dist/components/MenuBar/MenuBar.js +129 -0
  119. package/dist/components/MenuBar/MenuBar.js.map +1 -0
  120. package/dist/components/MenuBar/index.d.ts +3 -0
  121. package/dist/components/MenuBar/index.d.ts.map +1 -0
  122. package/dist/components/NavBar/NavBar.css +179 -0
  123. package/dist/components/NavBar/NavBar.css.d.ts +1 -0
  124. package/dist/components/NavBar/NavBar.d.ts +39 -0
  125. package/dist/components/NavBar/NavBar.d.ts.map +1 -0
  126. package/dist/components/NavBar/NavBar.js +198 -0
  127. package/dist/components/NavBar/NavBar.js.map +1 -0
  128. package/dist/components/NavBar/index.d.ts +3 -0
  129. package/dist/components/NavBar/index.d.ts.map +1 -0
  130. package/dist/components/Notification/Notification.css +176 -0
  131. package/dist/components/Notification/Notification.css.d.ts +1 -0
  132. package/dist/components/Notification/Notification.d.ts +26 -0
  133. package/dist/components/Notification/Notification.d.ts.map +1 -0
  134. package/dist/components/Notification/Notification.js +181 -0
  135. package/dist/components/Notification/Notification.js.map +1 -0
  136. package/dist/components/Notification/index.d.ts +3 -0
  137. package/dist/components/Notification/index.d.ts.map +1 -0
  138. package/dist/components/Panel/Panel.css +56 -0
  139. package/dist/components/Panel/Panel.css.d.ts +1 -0
  140. package/dist/components/Panel/Panel.d.ts +14 -0
  141. package/dist/components/Panel/Panel.d.ts.map +1 -0
  142. package/dist/components/Panel/Panel.js +42 -0
  143. package/dist/components/Panel/Panel.js.map +1 -0
  144. package/dist/components/Panel/index.d.ts +3 -0
  145. package/dist/components/Panel/index.d.ts.map +1 -0
  146. package/dist/components/ProgressBar/ProgressBar.css +108 -0
  147. package/dist/components/ProgressBar/ProgressBar.css.d.ts +1 -0
  148. package/dist/components/ProgressBar/ProgressBar.d.ts +22 -0
  149. package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -0
  150. package/dist/components/ProgressBar/ProgressBar.js +43 -0
  151. package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
  152. package/dist/components/ProgressBar/index.d.ts +3 -0
  153. package/dist/components/ProgressBar/index.d.ts.map +1 -0
  154. package/dist/components/Radio/Radio.css +125 -0
  155. package/dist/components/Radio/Radio.css.d.ts +1 -0
  156. package/dist/components/Radio/Radio.d.ts +40 -0
  157. package/dist/components/Radio/Radio.d.ts.map +1 -0
  158. package/dist/components/Radio/Radio.js +91 -0
  159. package/dist/components/Radio/Radio.js.map +1 -0
  160. package/dist/components/Radio/index.d.ts +3 -0
  161. package/dist/components/Radio/index.d.ts.map +1 -0
  162. package/dist/components/RichText/RichText.css +96 -0
  163. package/dist/components/RichText/RichText.css.d.ts +1 -0
  164. package/dist/components/RichText/RichText.d.ts +25 -0
  165. package/dist/components/RichText/RichText.d.ts.map +1 -0
  166. package/dist/components/RichText/RichText.js +56 -0
  167. package/dist/components/RichText/RichText.js.map +1 -0
  168. package/dist/components/RichText/index.d.ts +3 -0
  169. package/dist/components/RichText/index.d.ts.map +1 -0
  170. package/dist/components/ScrollArea/ScrollArea.css +236 -0
  171. package/dist/components/ScrollArea/ScrollArea.css.d.ts +1 -0
  172. package/dist/components/ScrollArea/ScrollArea.d.ts +25 -0
  173. package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
  174. package/dist/components/ScrollArea/ScrollArea.js +124 -0
  175. package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
  176. package/dist/components/ScrollArea/index.d.ts +3 -0
  177. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  178. package/dist/components/Scrollbar/Scrollbar.css +260 -0
  179. package/dist/components/Scrollbar/Scrollbar.css.d.ts +1 -0
  180. package/dist/components/Scrollbar/Scrollbar.d.ts +31 -0
  181. package/dist/components/Scrollbar/Scrollbar.d.ts.map +1 -0
  182. package/dist/components/Scrollbar/Scrollbar.js +277 -0
  183. package/dist/components/Scrollbar/Scrollbar.js.map +1 -0
  184. package/dist/components/Scrollbar/index.d.ts +3 -0
  185. package/dist/components/Scrollbar/index.d.ts.map +1 -0
  186. package/dist/components/Select/Select.css +299 -0
  187. package/dist/components/Select/Select.css.d.ts +1 -0
  188. package/dist/components/Select/Select.d.ts +52 -0
  189. package/dist/components/Select/Select.d.ts.map +1 -0
  190. package/dist/components/Select/Select.js +281 -0
  191. package/dist/components/Select/Select.js.map +1 -0
  192. package/dist/components/Select/index.d.ts +3 -0
  193. package/dist/components/Select/index.d.ts.map +1 -0
  194. package/dist/components/Slider/Slider.css +158 -0
  195. package/dist/components/Slider/Slider.css.d.ts +1 -0
  196. package/dist/components/Slider/Slider.d.ts +26 -0
  197. package/dist/components/Slider/Slider.d.ts.map +1 -0
  198. package/dist/components/Slider/Slider.js +67 -0
  199. package/dist/components/Slider/Slider.js.map +1 -0
  200. package/dist/components/Slider/index.d.ts +3 -0
  201. package/dist/components/Slider/index.d.ts.map +1 -0
  202. package/dist/components/SpinBox/SpinBox.css +152 -0
  203. package/dist/components/SpinBox/SpinBox.css.d.ts +1 -0
  204. package/dist/components/SpinBox/SpinBox.d.ts +28 -0
  205. package/dist/components/SpinBox/SpinBox.d.ts.map +1 -0
  206. package/dist/components/SpinBox/SpinBox.js +207 -0
  207. package/dist/components/SpinBox/SpinBox.js.map +1 -0
  208. package/dist/components/SpinBox/index.d.ts +3 -0
  209. package/dist/components/SpinBox/index.d.ts.map +1 -0
  210. package/dist/components/Spinner/Spinner.css +137 -0
  211. package/dist/components/Spinner/Spinner.css.d.ts +1 -0
  212. package/dist/components/Spinner/Spinner.d.ts +20 -0
  213. package/dist/components/Spinner/Spinner.d.ts.map +1 -0
  214. package/dist/components/Spinner/Spinner.js +36 -0
  215. package/dist/components/Spinner/Spinner.js.map +1 -0
  216. package/dist/components/Spinner/index.d.ts +3 -0
  217. package/dist/components/Spinner/index.d.ts.map +1 -0
  218. package/dist/components/Splitter/Splitter.css +119 -0
  219. package/dist/components/Splitter/Splitter.css.d.ts +1 -0
  220. package/dist/components/Splitter/Splitter.d.ts +25 -0
  221. package/dist/components/Splitter/Splitter.d.ts.map +1 -0
  222. package/dist/components/Splitter/Splitter.js +212 -0
  223. package/dist/components/Splitter/Splitter.js.map +1 -0
  224. package/dist/components/Splitter/index.d.ts +3 -0
  225. package/dist/components/Splitter/index.d.ts.map +1 -0
  226. package/dist/components/StatusBar/StatusBar.css +97 -0
  227. package/dist/components/StatusBar/StatusBar.css.d.ts +1 -0
  228. package/dist/components/StatusBar/StatusBar.d.ts +22 -0
  229. package/dist/components/StatusBar/StatusBar.d.ts.map +1 -0
  230. package/dist/components/StatusBar/StatusBar.js +56 -0
  231. package/dist/components/StatusBar/StatusBar.js.map +1 -0
  232. package/dist/components/StatusBar/index.d.ts +3 -0
  233. package/dist/components/StatusBar/index.d.ts.map +1 -0
  234. package/dist/components/StatusLabel/StatusLabel.css +93 -0
  235. package/dist/components/StatusLabel/StatusLabel.css.d.ts +1 -0
  236. package/dist/components/StatusLabel/StatusLabel.d.ts +20 -0
  237. package/dist/components/StatusLabel/StatusLabel.d.ts.map +1 -0
  238. package/dist/components/StatusLabel/StatusLabel.js +42 -0
  239. package/dist/components/StatusLabel/StatusLabel.js.map +1 -0
  240. package/dist/components/StatusLabel/index.d.ts +3 -0
  241. package/dist/components/StatusLabel/index.d.ts.map +1 -0
  242. package/dist/components/Table/Table.css +253 -0
  243. package/dist/components/Table/Table.css.d.ts +1 -0
  244. package/dist/components/Table/Table.d.ts +67 -0
  245. package/dist/components/Table/Table.d.ts.map +1 -0
  246. package/dist/components/Table/Table.js +429 -0
  247. package/dist/components/Table/Table.js.map +1 -0
  248. package/dist/components/Table/index.d.ts +3 -0
  249. package/dist/components/Table/index.d.ts.map +1 -0
  250. package/dist/components/Tabs/Tabs.css +138 -0
  251. package/dist/components/Tabs/Tabs.css.d.ts +1 -0
  252. package/dist/components/Tabs/Tabs.d.ts +34 -0
  253. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  254. package/dist/components/Tabs/Tabs.js +140 -0
  255. package/dist/components/Tabs/Tabs.js.map +1 -0
  256. package/dist/components/Tabs/index.d.ts +3 -0
  257. package/dist/components/Tabs/index.d.ts.map +1 -0
  258. package/dist/components/TextInput/TextInput.css +133 -0
  259. package/dist/components/TextInput/TextInput.css.d.ts +1 -0
  260. package/dist/components/TextInput/TextInput.d.ts +16 -0
  261. package/dist/components/TextInput/TextInput.d.ts.map +1 -0
  262. package/dist/components/TextInput/TextInput.js +38 -0
  263. package/dist/components/TextInput/TextInput.js.map +1 -0
  264. package/dist/components/TextInput/index.d.ts +3 -0
  265. package/dist/components/TextInput/index.d.ts.map +1 -0
  266. package/dist/components/Textarea/Textarea.css +121 -0
  267. package/dist/components/Textarea/Textarea.css.d.ts +1 -0
  268. package/dist/components/Textarea/Textarea.d.ts +21 -0
  269. package/dist/components/Textarea/Textarea.d.ts.map +1 -0
  270. package/dist/components/Textarea/Textarea.js +61 -0
  271. package/dist/components/Textarea/Textarea.js.map +1 -0
  272. package/dist/components/Textarea/index.d.ts +3 -0
  273. package/dist/components/Textarea/index.d.ts.map +1 -0
  274. package/dist/components/TitleBar/TitleBar.css +76 -0
  275. package/dist/components/TitleBar/TitleBar.css.d.ts +1 -0
  276. package/dist/components/TitleBar/TitleBar.d.ts +20 -0
  277. package/dist/components/TitleBar/TitleBar.d.ts.map +1 -0
  278. package/dist/components/TitleBar/TitleBar.js +43 -0
  279. package/dist/components/TitleBar/TitleBar.js.map +1 -0
  280. package/dist/components/TitleBar/index.d.ts +3 -0
  281. package/dist/components/TitleBar/index.d.ts.map +1 -0
  282. package/dist/components/ToggleButton/ToggleButton.css +162 -0
  283. package/dist/components/ToggleButton/ToggleButton.css.d.ts +1 -0
  284. package/dist/components/ToggleButton/ToggleButton.d.ts +27 -0
  285. package/dist/components/ToggleButton/ToggleButton.d.ts.map +1 -0
  286. package/dist/components/ToggleButton/ToggleButton.js +52 -0
  287. package/dist/components/ToggleButton/ToggleButton.js.map +1 -0
  288. package/dist/components/ToggleButton/index.d.ts +3 -0
  289. package/dist/components/ToggleButton/index.d.ts.map +1 -0
  290. package/dist/components/Toolbar/Toolbar.css +202 -0
  291. package/dist/components/Toolbar/Toolbar.css.d.ts +1 -0
  292. package/dist/components/Toolbar/Toolbar.d.ts +46 -0
  293. package/dist/components/Toolbar/Toolbar.d.ts.map +1 -0
  294. package/dist/components/Toolbar/Toolbar.js +102 -0
  295. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  296. package/dist/components/Toolbar/index.d.ts +3 -0
  297. package/dist/components/Toolbar/index.d.ts.map +1 -0
  298. package/dist/components/Tooltip/Tooltip.css +86 -0
  299. package/dist/components/Tooltip/Tooltip.css.d.ts +1 -0
  300. package/dist/components/Tooltip/Tooltip.d.ts +22 -0
  301. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  302. package/dist/components/Tooltip/Tooltip.js +92 -0
  303. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  304. package/dist/components/Tooltip/index.d.ts +3 -0
  305. package/dist/components/Tooltip/index.d.ts.map +1 -0
  306. package/dist/components/TreeView/TreeView.css +191 -0
  307. package/dist/components/TreeView/TreeView.css.d.ts +1 -0
  308. package/dist/components/TreeView/TreeView.d.ts +46 -0
  309. package/dist/components/TreeView/TreeView.d.ts.map +1 -0
  310. package/dist/components/TreeView/TreeView.js +331 -0
  311. package/dist/components/TreeView/TreeView.js.map +1 -0
  312. package/dist/components/TreeView/index.d.ts +3 -0
  313. package/dist/components/TreeView/index.d.ts.map +1 -0
  314. package/dist/components/Window/Window.css +218 -0
  315. package/dist/components/Window/Window.css.d.ts +1 -0
  316. package/dist/components/Window/Window.d.ts +30 -0
  317. package/dist/components/Window/Window.d.ts.map +1 -0
  318. package/dist/components/Window/Window.js +156 -0
  319. package/dist/components/Window/Window.js.map +1 -0
  320. package/dist/components/Window/index.d.ts +3 -0
  321. package/dist/components/Window/index.d.ts.map +1 -0
  322. package/dist/index.d.ts +91 -8
  323. package/dist/index.d.ts.map +1 -1
  324. package/dist/index.js +41 -2
  325. package/dist/styles/scrollbars.css +123 -0
  326. package/dist/styles/scrollbars.css.d.ts +1 -0
  327. package/dist/styles/theme.css +167 -122
  328. package/dist/styles/tokens.css +202 -0
  329. package/dist/styles/tokens.css.d.ts +1 -0
  330. package/dist/test/a11y.d.ts +3 -0
  331. package/dist/test/a11y.d.ts.map +1 -0
  332. package/dist/test/index.d.ts +2 -0
  333. package/dist/test/index.d.ts.map +1 -0
  334. package/dist/test/setup.d.ts +2 -0
  335. package/dist/test/setup.d.ts.map +1 -0
  336. package/package.json +23 -14
  337. package/dist/components/GreenButton/GreenButton.css +0 -47
  338. package/dist/components/GreenButton/GreenButton.d.ts +0 -8
  339. package/dist/components/GreenButton/GreenButton.d.ts.map +0 -1
  340. package/dist/components/GreenButton/GreenButton.js +0 -20
  341. package/dist/components/GreenButton/GreenButton.js.map +0 -1
  342. package/dist/components/GreenButton/index.d.ts +0 -3
  343. /package/dist/components/{GreenButton/GreenButton.css.d.ts → Avatar/Avatar.css.d.ts} +0 -0
@@ -0,0 +1,77 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import "./IconButton.css";
4
+ //#region src/components/IconButton/IconButton.tsx
5
+ var svg = (body) => `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E${body}%3C/svg%3E`;
6
+ /**
7
+ * The built-in glyphs, keyed by the name accepted by `IconButton`'s `icon`
8
+ * prop. Geometry is drawn on a 12×12 grid and centred, rather than transcribed
9
+ * from Valve's sprites — `icon_down_*` is 9×6 while `icon_left_*`/`icon_right_*`
10
+ * are 13×13, so one primitive per direction is the only consistent option
11
+ * (docs/components/IconButton.md, "Assets").
12
+ */
13
+ var glyphs = {
14
+ back: svg(`%3Cpath d='M8 2 4 6l4 4' fill='none' stroke='%23000' stroke-width='2'/%3E`),
15
+ forward: svg(`%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='2'/%3E`),
16
+ home: svg(`%3Cpath d='M6 1 11 5.5V11H7.5V7.5h-3V11H1V5.5z' fill='%23000'/%3E`),
17
+ reload: svg(`%3Cpath d='M9.6 6A3.6 3.6 0 1 1 7.9 3' fill='none' stroke='%23000' stroke-width='1.8'/%3E%3Cpath d='M8.1 1.1 8.6 4.1 5.6 3.4z' fill='%23000'/%3E`),
18
+ stop: svg(`%3Crect x='2' y='2' width='8' height='8' fill='%23000'/%3E`),
19
+ detail: svg(`%3Cpath d='M4 2.5 9.5 6 4 9.5z' fill='%23000'/%3E`),
20
+ close: svg(`%3Cpath d='M2.5 2.5 9.5 9.5M9.5 2.5 2.5 9.5' stroke='%23000' stroke-width='1.8'/%3E`),
21
+ minimize: svg(`%3Crect x='2' y='9' width='8' height='2' fill='%23000'/%3E`),
22
+ maximize: svg(`%3Crect x='2.5' y='2.5' width='7' height='7' fill='none' stroke='%23000' stroke-width='1.6'/%3E`),
23
+ restore: svg(`%3Crect x='2' y='4.5' width='5.5' height='5.5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M4.5 4.5V2h5.5v5.5H7.5' fill='none' stroke='%23000' stroke-width='1.4'/%3E`),
24
+ "chevron-down": svg(`%3Cpath d='M2.5 4.5 6 8.5l3.5-4' fill='none' stroke='%23000' stroke-width='2'/%3E`),
25
+ "chevron-up": svg(`%3Cpath d='M2.5 7.5 6 3.5l3.5 4' fill='none' stroke='%23000' stroke-width='2'/%3E`),
26
+ "arrow-down": svg(`%3Cpath d='M6 9.5 1.5 4h9z' fill='%23000'/%3E`),
27
+ "arrow-up": svg(`%3Cpath d='M6 2.5 1.5 8h9z' fill='%23000'/%3E`),
28
+ "arrow-left": svg(`%3Cpath d='M2.5 6 8 1.5v9z' fill='%23000'/%3E`),
29
+ "arrow-right": svg(`%3Cpath d='M9.5 6 4 1.5v9z' fill='%23000'/%3E`),
30
+ grid: svg(`%3Cpath d='M2 2h3.5v3.5H2zM6.5 2H10v3.5H6.5zM2 6.5h3.5V10H2zM6.5 6.5H10V10H6.5z' fill='%23000'/%3E`),
31
+ list: svg(`%3Cpath d='M2 3h8v1.5H2zM2 5.25h8v1.5H2zM2 7.5h8V9H2z' fill='%23000'/%3E`),
32
+ pin: svg(`%3Cpath d='M7.2 1.2 10.8 4.8 8.6 6.4 6.7 9.8 4.2 7.3 1.6 8.4l4.6-4.6z' fill='%23000'/%3E`),
33
+ question: svg(`%3Ccircle cx='6' cy='6' r='5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M4.4 4.7a1.6 1.6 0 1 1 2.3 1.5c-.5.3-.8.7-.8 1.2' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3Ccircle cx='6' cy='9.2' r='.9' fill='%23000'/%3E`)
34
+ };
35
+ /** Resolves the built-in glyph data URI for a name, or `null` for a node. */
36
+ function glyphMask(icon) {
37
+ return typeof icon === "string" && icon in glyphs ? glyphs[icon] : null;
38
+ }
39
+ /**
40
+ * A square, glyph-only button. The tick target of a 20×20 face is under WCAG
41
+ * 2.5.8's 24×24, so every variant grows an invisible centred hit area rather
42
+ * than relying on the painted box (docs/foundations.md §10, rule 6).
43
+ */
44
+ var IconButton = forwardRef(function IconButton({ className, type = "button", label, icon, size = 20, frameless = false, toggled = false, clay = false, style, ...rest }, ref) {
45
+ const classes = ["vgui-icon-button"];
46
+ if (size === 15) classes.push("vgui-icon-button--small");
47
+ if (size === 18) classes.push("vgui-icon-button--gutter");
48
+ if (size === 25) classes.push("vgui-icon-button--large");
49
+ if (frameless) classes.push("vgui-icon-button--frameless");
50
+ if (toggled) classes.push("vgui-icon-button--toggled");
51
+ if (clay) classes.push("vgui-icon-button--clay");
52
+ if (className) classes.push(className);
53
+ const mask = glyphMask(icon);
54
+ const mergedStyle = mask ? {
55
+ ...style,
56
+ "--vgui-icon-button-glyph": `url("${mask}")`
57
+ } : style;
58
+ return /* @__PURE__ */ jsx("button", {
59
+ ref,
60
+ type,
61
+ className: classes.join(" "),
62
+ "aria-label": label,
63
+ "aria-pressed": toggled || void 0,
64
+ style: mergedStyle,
65
+ ...rest,
66
+ children: /* @__PURE__ */ jsx("span", {
67
+ className: mask ? "vgui-icon-button__glyph" : "vgui-icon-button__glyph vgui-icon-button__glyph--node",
68
+ "aria-hidden": "true",
69
+ children: mask ? null : icon
70
+ })
71
+ });
72
+ });
73
+ IconButton.displayName = "IconButton";
74
+ //#endregion
75
+ export { IconButton, glyphMask, glyphs };
76
+
77
+ //# sourceMappingURL=IconButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.js","names":[],"sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ButtonHTMLAttributes, CSSProperties, ReactNode } from 'react'\n\nimport './IconButton.css'\n\n/*\n * Glyphs are inline SVG data URIs used as `mask-image`, never as\n * `background-image` (docs/components/IconButton.md, \"CSS recipe\"). A `data:`\n * URI cannot read a CSS custom property, so a painted image would need one URI\n * per colour — six variants × four states per glyph. A *mask* keeps one URI and\n * takes its colour from `background-color: currentColor`, which means the glyph\n * recolours for hover/active/disabled and for every theme variant for free.\n *\n * The mask payload is opaque black (`%23000`, percent-encoded so no literal hex\n * value appears in the source): `mask-mode: match-source` reads the image's\n * alpha, so the fill colour is irrelevant — only the silhouette matters.\n */\nconst svg = (body: string) =>\n `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E${body}%3C/svg%3E`\n\n/**\n * The built-in glyphs, keyed by the name accepted by `IconButton`'s `icon`\n * prop. Geometry is drawn on a 12×12 grid and centred, rather than transcribed\n * from Valve's sprites — `icon_down_*` is 9×6 while `icon_left_*`/`icon_right_*`\n * are 13×13, so one primitive per direction is the only consistent option\n * (docs/components/IconButton.md, \"Assets\").\n */\nexport const glyphs = {\n back: svg(`%3Cpath d='M8 2 4 6l4 4' fill='none' stroke='%23000' stroke-width='2'/%3E`),\n forward: svg(`%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='2'/%3E`),\n home: svg(`%3Cpath d='M6 1 11 5.5V11H7.5V7.5h-3V11H1V5.5z' fill='%23000'/%3E`),\n reload: svg(\n `%3Cpath d='M9.6 6A3.6 3.6 0 1 1 7.9 3' fill='none' stroke='%23000' stroke-width='1.8'/%3E%3Cpath d='M8.1 1.1 8.6 4.1 5.6 3.4z' fill='%23000'/%3E`,\n ),\n stop: svg(`%3Crect x='2' y='2' width='8' height='8' fill='%23000'/%3E`),\n detail: svg(`%3Cpath d='M4 2.5 9.5 6 4 9.5z' fill='%23000'/%3E`),\n close: svg(`%3Cpath d='M2.5 2.5 9.5 9.5M9.5 2.5 2.5 9.5' stroke='%23000' stroke-width='1.8'/%3E`),\n minimize: svg(`%3Crect x='2' y='9' width='8' height='2' fill='%23000'/%3E`),\n maximize: svg(\n `%3Crect x='2.5' y='2.5' width='7' height='7' fill='none' stroke='%23000' stroke-width='1.6'/%3E`,\n ),\n restore: svg(\n `%3Crect x='2' y='4.5' width='5.5' height='5.5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M4.5 4.5V2h5.5v5.5H7.5' fill='none' stroke='%23000' stroke-width='1.4'/%3E`,\n ),\n 'chevron-down': svg(\n `%3Cpath d='M2.5 4.5 6 8.5l3.5-4' fill='none' stroke='%23000' stroke-width='2'/%3E`,\n ),\n 'chevron-up': svg(\n `%3Cpath d='M2.5 7.5 6 3.5l3.5 4' fill='none' stroke='%23000' stroke-width='2'/%3E`,\n ),\n // One centred triangle serves all four directions — see the note above.\n 'arrow-down': svg(`%3Cpath d='M6 9.5 1.5 4h9z' fill='%23000'/%3E`),\n 'arrow-up': svg(`%3Cpath d='M6 2.5 1.5 8h9z' fill='%23000'/%3E`),\n 'arrow-left': svg(`%3Cpath d='M2.5 6 8 1.5v9z' fill='%23000'/%3E`),\n 'arrow-right': svg(`%3Cpath d='M9.5 6 4 1.5v9z' fill='%23000'/%3E`),\n grid: svg(\n `%3Cpath d='M2 2h3.5v3.5H2zM6.5 2H10v3.5H6.5zM2 6.5h3.5V10H2zM6.5 6.5H10V10H6.5z' fill='%23000'/%3E`,\n ),\n list: svg(\n `%3Cpath d='M2 3h8v1.5H2zM2 5.25h8v1.5H2zM2 7.5h8V9H2z' fill='%23000'/%3E`,\n ),\n pin: svg(\n `%3Cpath d='M7.2 1.2 10.8 4.8 8.6 6.4 6.7 9.8 4.2 7.3 1.6 8.4l4.6-4.6z' fill='%23000'/%3E`,\n ),\n question: svg(\n `%3Ccircle cx='6' cy='6' r='5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3Cpath d='M4.4 4.7a1.6 1.6 0 1 1 2.3 1.5c-.5.3-.8.7-.8 1.2' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3Ccircle cx='6' cy='9.2' r='.9' fill='%23000'/%3E`,\n ),\n} as const\n\n/** The names accepted by `IconButton`'s `icon` prop. */\nexport type GlyphName = keyof typeof glyphs\n\n/** Resolves the built-in glyph data URI for a name, or `null` for a node. */\nexport function glyphMask(icon: ReactNode | GlyphName): string | null {\n return typeof icon === 'string' && icon in glyphs ? glyphs[icon as GlyphName] : null\n}\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Accessible name. Required — a glyph alone is not a name. */\n label: string\n /** The glyph: an inline SVG node, or the name of one of the built-in glyphs. */\n icon: ReactNode | GlyphName\n /** Edge length in pixels. Defaults to 20. */\n size?: 15 | 18 | 20 | 25\n /** Render without a bevel until hovered. */\n frameless?: boolean\n /** Latched on: an inverted bevel that persists. */\n toggled?: boolean\n /** Render the grey property-sheet face. */\n clay?: boolean\n}\n\n/**\n * A square, glyph-only button. The tick target of a 20×20 face is under WCAG\n * 2.5.8's 24×24, so every variant grows an invisible centred hit area rather\n * than relying on the painted box (docs/foundations.md §10, rule 6).\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n className,\n type = 'button',\n label,\n icon,\n size = 20,\n frameless = false,\n toggled = false,\n clay = false,\n style,\n ...rest\n },\n ref,\n) {\n const classes = ['vgui-icon-button']\n if (size === 15) classes.push('vgui-icon-button--small')\n if (size === 18) classes.push('vgui-icon-button--gutter')\n if (size === 25) classes.push('vgui-icon-button--large')\n if (frameless) classes.push('vgui-icon-button--frameless')\n if (toggled) classes.push('vgui-icon-button--toggled')\n if (clay) classes.push('vgui-icon-button--clay')\n if (className) classes.push(className)\n\n const mask = glyphMask(icon)\n\n // The URI travels as a custom property so the stylesheet stays free of\n // inline images and a caller's own `style` still merges.\n const mergedStyle = mask\n ? ({ ...style, '--vgui-icon-button-glyph': `url(\"${mask}\")` } as CSSProperties)\n : style\n\n return (\n <button\n ref={ref}\n type={type}\n className={classes.join(' ')}\n aria-label={label}\n aria-pressed={toggled || undefined}\n style={mergedStyle}\n {...rest}\n >\n <span\n className={mask ? 'vgui-icon-button__glyph' : 'vgui-icon-button__glyph vgui-icon-button__glyph--node'}\n aria-hidden=\"true\"\n >\n {mask ? null : icon}\n </span>\n </button>\n )\n})\n\nIconButton.displayName = 'IconButton'\n"],"mappings":";;;;AAiBA,IAAM,OAAO,SACX,sFAAsF,KAAK;;;;;;;;AAS7F,IAAa,SAAS;CACpB,MAAM,IAAI,2EAA2E;CACrF,SAAS,IAAI,2EAA2E;CACxF,MAAM,IAAI,mEAAmE;CAC7E,QAAQ,IACN,kJACF;CACA,MAAM,IAAI,4DAA4D;CACtE,QAAQ,IAAI,mDAAmD;CAC/D,OAAO,IAAI,qFAAqF;CAChG,UAAU,IAAI,4DAA4D;CAC1E,UAAU,IACR,iGACF;CACA,SAAS,IACP,wLACF;CACA,gBAAgB,IACd,mFACF;CACA,cAAc,IACZ,mFACF;CAEA,cAAc,IAAI,+CAA+C;CACjE,YAAY,IAAI,+CAA+C;CAC/D,cAAc,IAAI,+CAA+C;CACjE,eAAe,IAAI,+CAA+C;CAClE,MAAM,IACJ,oGACF;CACA,MAAM,IACJ,0EACF;CACA,KAAK,IACH,0FACF;CACA,UAAU,IACR,mPACF;AACF;;AAMA,SAAgB,UAAU,MAA4C;CACpE,OAAO,OAAO,SAAS,YAAY,QAAQ,SAAS,OAAO,QAAqB;AAClF;;;;;;AAsBA,IAAa,aAAa,WAA+C,SAAS,WAChF,EACE,WACA,OAAO,UACP,OACA,MACA,OAAO,IACP,YAAY,OACZ,UAAU,OACV,OAAO,OACP,OACA,GAAG,QAEL,KACA;CACA,MAAM,UAAU,CAAC,kBAAkB;CACnC,IAAI,SAAS,IAAI,QAAQ,KAAK,yBAAyB;CACvD,IAAI,SAAS,IAAI,QAAQ,KAAK,0BAA0B;CACxD,IAAI,SAAS,IAAI,QAAQ,KAAK,yBAAyB;CACvD,IAAI,WAAW,QAAQ,KAAK,6BAA6B;CACzD,IAAI,SAAS,QAAQ,KAAK,2BAA2B;CACrD,IAAI,MAAM,QAAQ,KAAK,wBAAwB;CAC/C,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,MAAM,OAAO,UAAU,IAAI;CAI3B,MAAM,cAAc,OACf;EAAE,GAAG;EAAO,4BAA4B,QAAQ,KAAK;CAAI,IAC1D;CAEJ,OACE,oBAAC,UAAD;EACO;EACC;EACN,WAAW,QAAQ,KAAK,GAAG;EAC3B,cAAY;EACZ,gBAAc,WAAW,KAAA;EACzB,OAAO;EACP,GAAI;EAEJ,UAAA,oBAAC,QAAD;GACE,WAAW,OAAO,4BAA4B;GAC9C,eAAY;GAEX,UAAA,OAAO,OAAO;EACX,CAAA;CACA,CAAA;AAEZ,CAAC;AAED,WAAW,cAAc"}
@@ -0,0 +1,3 @@
1
+ export { IconButton, glyphs } from './IconButton';
2
+ export type { GlyphName, IconButtonProps } from './IconButton';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/IconButton/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACjD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,117 @@
1
+ /*
2
+ * Green Steam level meter — the `rampUp_1..4` / `rampDown_1..4` sprite family
3
+ * drawn procedurally (docs/components/LevelMeter.md).
4
+ *
5
+ * There is no `LevelMeter` block in `steam.styles`, so the meter has no corpus
6
+ * colours at all: shape carries the reading and the palette comes from the ping
7
+ * tokens that `foundations.md` already defines for a table's signal bars.
8
+ *
9
+ * `--vgui-ping-high` (#4C5844) is byte-identical to `--vgui-surface`
10
+ * foundations.md:92/:68) — the "good" reading would be literally invisible on a
11
+ * panel, so levels 3 and 4 use `--vgui-heading` instead, as the component doc
12
+ * instructs. Levels 1 and 2 keep the ping tokens so a table column and a
13
+ * standalone meter never disagree.
14
+ */
15
+
16
+ .vgui-level-meter {
17
+ --vgui-level-meter-segment: 20px;
18
+ --vgui-level-meter-gap: 1px;
19
+ /* The artwork defines four frames; any other count is a deliberate departure. */
20
+ --vgui-level-meter-level: 4;
21
+ --vgui-level-meter-count: var(--vgui-level-meter-level);
22
+
23
+ display: inline-flex;
24
+ align-items: flex-end;
25
+ gap: var(--vgui-level-meter-gap);
26
+ block-size: var(--vgui-level-meter-segment);
27
+ /* A readout, not a target: not focusable, not interactive, no hover state. */
28
+ cursor: default;
29
+ user-select: none;
30
+ }
31
+
32
+ .vgui-level-meter__segment {
33
+ inline-size: var(--vgui-level-meter-segment);
34
+ block-size: var(--vgui-level-meter-segment);
35
+ background-color: var(--vgui-text-dim);
36
+ /* The theme has no rounded corners anywhere, and the sprites are visibly
37
+ discrete: hard-edged segments with a 1px unlit gap, no gradient. The outline
38
+ keeps the segment *shape* readable even when the fill fails contrast. */
39
+ outline: var(--vgui-bevel-width) solid var(--vgui-bevel-dark);
40
+ outline-offset: calc(-1 * var(--vgui-bevel-width));
41
+ }
42
+
43
+ /*
44
+ * Lit segments carry a stepped height profile — 25/50/75/100% for the four-frame
45
+ * family (up) and its mirror (down) — so the level survives without colour. The
46
+ * step is derived from the segment's ordinal rather than written out per count,
47
+ * which keeps the corpus geometry exact while letting `segments` degrade sanely.
48
+ */
49
+ .vgui-level-meter--up .vgui-level-meter__segment.is-lit {
50
+ block-size: calc(var(--vgui-level-meter-index) / var(--vgui-level-meter-count) * 100%);
51
+ }
52
+
53
+ .vgui-level-meter--down .vgui-level-meter__segment.is-lit {
54
+ block-size: calc(
55
+ (var(--vgui-level-meter-count) - var(--vgui-level-meter-index) + 1) /
56
+ var(--vgui-level-meter-count) * 100%
57
+ );
58
+ }
59
+
60
+ /* Severity by level, using the same tokens as a table's ping column. */
61
+ .vgui-level-meter__segment.is-lit {
62
+ background-color: var(--vgui-ping-medium);
63
+ }
64
+
65
+ .vgui-level-meter[data-level='1'] .vgui-level-meter__segment.is-lit {
66
+ background-color: var(--vgui-ping-low);
67
+ }
68
+
69
+ .vgui-level-meter[data-level='2'] .vgui-level-meter__segment.is-lit {
70
+ background-color: var(--vgui-ping-medium);
71
+ }
72
+
73
+ /* `--vgui-ping-high` is the surface colour: use the heading tone for a good
74
+ reading, because a meter that vanishes at 4/4 reads as broken. */
75
+ .vgui-level-meter[data-level='3'] .vgui-level-meter__segment.is-lit,
76
+ .vgui-level-meter[data-level='4'] .vgui-level-meter__segment.is-lit {
77
+ background-color: var(--vgui-heading);
78
+ }
79
+
80
+ /* Compact, for a server-list cell. */
81
+ .vgui-level-meter--inline {
82
+ --vgui-level-meter-segment: 12px;
83
+ }
84
+
85
+ .vgui-level-meter[aria-disabled='true'] .vgui-level-meter__segment {
86
+ opacity: 0.5;
87
+ }
88
+
89
+ /* Dim the reading itself, not just the whole control, so a disabled meter cannot
90
+ be mistaken for a live one. */
91
+ .vgui-level-meter[aria-disabled='true'] .vgui-level-meter__segment.is-lit {
92
+ background-color: var(--vgui-text-dim);
93
+ }
94
+
95
+ /*
96
+ * Meaningful motion only, and CSS-only: no frame timer means nothing to clean up
97
+ * on unmount and no test can hang on it.
98
+ */
99
+ .vgui-level-meter--animating .vgui-level-meter__segment.is-lit {
100
+ animation: vgui-level-pulse 900ms steps(4, end) infinite;
101
+ }
102
+
103
+ @keyframes vgui-level-pulse {
104
+ 0% {
105
+ opacity: 0.35;
106
+ }
107
+
108
+ 100% {
109
+ opacity: 1;
110
+ }
111
+ }
112
+
113
+ @media (prefers-reduced-motion: reduce) {
114
+ .vgui-level-meter--animating .vgui-level-meter__segment.is-lit {
115
+ animation: none;
116
+ }
117
+ }
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,20 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import './LevelMeter.css';
3
+ export interface LevelMeterProps extends HTMLAttributes<HTMLDivElement> {
4
+ /** Current level, 0…segments. Values are clamped. */
5
+ level?: number;
6
+ /** Number of segments. 4 matches the sprite family; other values are an extension. */
7
+ segments?: number;
8
+ /** Descending rather than ascending segment heights. */
9
+ direction?: 'up' | 'down';
10
+ /** Compact 12px segments, for table cells. */
11
+ inline?: boolean;
12
+ /** Pulse the lit segments while the level is being measured. */
13
+ animating?: boolean;
14
+ /** Render and apply a disabled treatment. */
15
+ disabled?: boolean;
16
+ /** Text announced to assistive tech, e.g. "Good". Strongly recommended. */
17
+ valueText?: string;
18
+ }
19
+ export declare const LevelMeter: import("react").ForwardRefExoticComponent<LevelMeterProps & import("react").RefAttributes<HTMLDivElement>>;
20
+ //# sourceMappingURL=LevelMeter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevelMeter.d.ts","sourceRoot":"","sources":["../../../src/components/LevelMeter/LevelMeter.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAA;AAE1D,OAAO,kBAAkB,CAAA;AAEzB,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAKD,eAAO,MAAM,UAAU,4GAqDrB,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import "./LevelMeter.css";
4
+ //#region src/components/LevelMeter/LevelMeter.tsx
5
+ /** Fallback accessible name; `role="meter"` is nameless without one. */
6
+ var DEFAULT_LABEL = "Level";
7
+ var LevelMeter = forwardRef(function LevelMeter({ className, level = 0, segments = 4, direction = "up", inline = false, animating = false, disabled = false, valueText, ...rest }, ref) {
8
+ const segmentCount = Math.max(1, Math.floor(segments));
9
+ const litLevel = Math.min(segmentCount, Math.max(0, Math.round(level)));
10
+ const classes = ["vgui-level-meter", `vgui-level-meter--${direction}`];
11
+ if (inline) classes.push("vgui-level-meter--inline");
12
+ if (animating) classes.push("vgui-level-meter--animating");
13
+ if (className) classes.push(className);
14
+ return /* @__PURE__ */ jsx("div", {
15
+ ref,
16
+ role: "meter",
17
+ "aria-label": valueText ?? DEFAULT_LABEL,
18
+ "aria-valuemin": 0,
19
+ "aria-valuemax": segmentCount,
20
+ "aria-valuenow": litLevel,
21
+ "aria-valuetext": valueText,
22
+ "aria-disabled": disabled || void 0,
23
+ "data-level": litLevel,
24
+ className: classes.join(" "),
25
+ ...rest,
26
+ children: Array.from({ length: segmentCount }, (_, index) => {
27
+ const segmentClasses = ["vgui-level-meter__segment"];
28
+ if (index < litLevel) segmentClasses.push("is-lit");
29
+ const geometry = {
30
+ "--vgui-level-meter-index": String(index + 1),
31
+ "--vgui-level-meter-count": String(segmentCount)
32
+ };
33
+ return /* @__PURE__ */ jsx("span", {
34
+ className: segmentClasses.join(" "),
35
+ style: geometry
36
+ }, index);
37
+ })
38
+ });
39
+ });
40
+ LevelMeter.displayName = "LevelMeter";
41
+ //#endregion
42
+ export { LevelMeter };
43
+
44
+ //# sourceMappingURL=LevelMeter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevelMeter.js","names":[],"sources":["../../../src/components/LevelMeter/LevelMeter.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { CSSProperties, HTMLAttributes } from 'react'\n\nimport './LevelMeter.css'\n\nexport interface LevelMeterProps extends HTMLAttributes<HTMLDivElement> {\n /** Current level, 0…segments. Values are clamped. */\n level?: number\n /** Number of segments. 4 matches the sprite family; other values are an extension. */\n segments?: number\n /** Descending rather than ascending segment heights. */\n direction?: 'up' | 'down'\n /** Compact 12px segments, for table cells. */\n inline?: boolean\n /** Pulse the lit segments while the level is being measured. */\n animating?: boolean\n /** Render and apply a disabled treatment. */\n disabled?: boolean\n /** Text announced to assistive tech, e.g. \"Good\". Strongly recommended. */\n valueText?: string\n}\n\n/** Fallback accessible name; `role=\"meter\"` is nameless without one. */\nconst DEFAULT_LABEL = 'Level'\n\nexport const LevelMeter = forwardRef<HTMLDivElement, LevelMeterProps>(function LevelMeter(\n {\n className,\n level = 0,\n segments = 4,\n direction = 'up',\n inline = false,\n animating = false,\n disabled = false,\n valueText,\n ...rest\n },\n ref,\n) {\n const segmentCount = Math.max(1, Math.floor(segments))\n // A four-frame sprite family has no sub-segment resolution, so the reading is\n // snapped to a step and clamped into range.\n const litLevel = Math.min(segmentCount, Math.max(0, Math.round(level)))\n\n const classes = ['vgui-level-meter', `vgui-level-meter--${direction}`]\n if (inline) classes.push('vgui-level-meter--inline')\n if (animating) classes.push('vgui-level-meter--animating')\n if (className) classes.push(className)\n\n return (\n <div\n ref={ref}\n role=\"meter\"\n aria-label={valueText ?? DEFAULT_LABEL}\n aria-valuemin={0}\n aria-valuemax={segmentCount}\n aria-valuenow={litLevel}\n aria-valuetext={valueText}\n aria-disabled={disabled || undefined}\n data-level={litLevel}\n className={classes.join(' ')}\n {...rest}\n >\n {Array.from({ length: segmentCount }, (_, index) => {\n const segmentClasses = ['vgui-level-meter__segment']\n if (index < litLevel) segmentClasses.push('is-lit')\n\n // The step a segment stands at is its ordinal, so the CSS needs no\n // per-count rule set.\n const geometry = {\n '--vgui-level-meter-index': String(index + 1),\n '--vgui-level-meter-count': String(segmentCount),\n } as CSSProperties\n\n return <span key={index} className={segmentClasses.join(' ')} style={geometry} />\n })}\n </div>\n )\n})\n\nLevelMeter.displayName = 'LevelMeter'\n"],"mappings":";;;;;AAuBA,IAAM,gBAAgB;AAEtB,IAAa,aAAa,WAA4C,SAAS,WAC7E,EACE,WACA,QAAQ,GACR,WAAW,GACX,YAAY,MACZ,SAAS,OACT,YAAY,OACZ,WAAW,OACX,WACA,GAAG,QAEL,KACA;CACA,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,CAAC;CAGrD,MAAM,WAAW,KAAK,IAAI,cAAc,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,CAAC;CAEtE,MAAM,UAAU,CAAC,oBAAoB,qBAAqB,WAAW;CACrE,IAAI,QAAQ,QAAQ,KAAK,0BAA0B;CACnD,IAAI,WAAW,QAAQ,KAAK,6BAA6B;CACzD,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,OACE,oBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY,aAAa;EACzB,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,kBAAgB;EAChB,iBAAe,YAAY,KAAA;EAC3B,cAAY;EACZ,WAAW,QAAQ,KAAK,GAAG;EAC3B,GAAI;EAEH,UAAA,MAAM,KAAK,EAAE,QAAQ,aAAa,IAAI,GAAG,UAAU;GAClD,MAAM,iBAAiB,CAAC,2BAA2B;GACnD,IAAI,QAAQ,UAAU,eAAe,KAAK,QAAQ;GAIlD,MAAM,WAAW;IACf,4BAA4B,OAAO,QAAQ,CAAC;IAC5C,4BAA4B,OAAO,YAAY;GACjD;GAEA,OAAO,oBAAC,QAAD;IAAkB,WAAW,eAAe,KAAK,GAAG;IAAG,OAAO;GAAW,GAA9D,KAA8D;EAClF,CAAC;CACE,CAAA;AAET,CAAC;AAED,WAAW,cAAc"}
@@ -0,0 +1,3 @@
1
+ export { LevelMeter } from './LevelMeter';
2
+ export type { LevelMeterProps } from './LevelMeter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/LevelMeter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,127 @@
1
+ /*
2
+ * Green Steam link / text button (`URLLabel`, `TextButton`).
3
+ * See docs/components/Link.md.
4
+ *
5
+ * Three things are load-bearing:
6
+ *
7
+ * 1. The underline is permanent. It is the whole affordance, and it is what
8
+ * satisfies WCAG 1.4.1 — colour alone never distinguishes a link here.
9
+ * `text-decoration` and not `border-bottom`, so it follows the baseline,
10
+ * survives wrapping and is what forced-colors mode understands.
11
+ * 2. There is no `:visited` state in VGUI, and a browser's default purple
12
+ * would break the period look (and fail contrast), so it is neutralised.
13
+ * 3. `--button` is deliberately NOT underlined, at rest or on hover. The
14
+ * decoration is what encodes "this is an action, not a destination".
15
+ */
16
+
17
+ .vgui-link {
18
+ box-sizing: border-box;
19
+ font: inherit;
20
+ color: var(--vgui-text);
21
+ text-decoration: underline;
22
+ text-underline-offset: 1px;
23
+ cursor: pointer;
24
+ }
25
+
26
+ /* Declared before `:hover`/`:active` so a visited link still brightens. */
27
+ .vgui-link:visited {
28
+ color: var(--vgui-text);
29
+ }
30
+
31
+ .vgui-link:hover {
32
+ color: var(--vgui-text-strong);
33
+ }
34
+
35
+ /* The pressed colour is the theme's single bright yellow. */
36
+ .vgui-link:active {
37
+ color: var(--vgui-text-hover);
38
+ }
39
+
40
+ /*
41
+ * Valve's dotted ring is the documented fallback; the accessible ring is the
42
+ * default (docs/foundations.md §4). `.vgui-crisp` opts back into the literal
43
+ * one along with bitmap text rendering.
44
+ */
45
+ .vgui-link:focus-visible {
46
+ outline: var(--vgui-focus-ring);
47
+ outline-offset: var(--vgui-focus-ring-offset);
48
+ }
49
+
50
+ .vgui-crisp .vgui-link:focus-visible {
51
+ outline: var(--vgui-focus-ring-valve);
52
+ outline-offset: var(--vgui-focus-ring-valve-offset);
53
+ }
54
+
55
+ /*
56
+ * `--quiet` is the literal `Label`/`LinkText` value (4.06:1 on the green
57
+ * surface), so it is only ever legitimate on a link that is redundant — never
58
+ * on the only route to content.
59
+ */
60
+ .vgui-link--quiet,
61
+ .vgui-link--quiet:visited {
62
+ color: var(--vgui-link-quiet, var(--vgui-text-muted));
63
+ }
64
+
65
+ .vgui-link--quiet:hover {
66
+ color: var(--vgui-text-strong);
67
+ }
68
+
69
+ /* TextButton: performs an action, so no underline in any state. */
70
+ .vgui-link--button {
71
+ padding: 0;
72
+ border: 0;
73
+ background: none;
74
+ font: inherit;
75
+ text-decoration: none;
76
+ }
77
+
78
+ .vgui-link--button:hover,
79
+ .vgui-link--button:active {
80
+ text-decoration: none;
81
+ }
82
+
83
+ .vgui-link--button:hover {
84
+ color: var(--vgui-text-strong);
85
+ }
86
+
87
+ .vgui-link--button:active {
88
+ color: var(--vgui-text-hover);
89
+ }
90
+
91
+ .vgui-link--external .vgui-link__external {
92
+ margin-left: 2px;
93
+ }
94
+
95
+ /* DisabledText1 over DisabledText2 — Valve's sunken disabled treatment. */
96
+ .vgui-link--disabled,
97
+ .vgui-link--disabled:visited,
98
+ .vgui-link[aria-disabled='true'],
99
+ .vgui-link[aria-disabled='true']:visited,
100
+ .vgui-link:disabled {
101
+ color: var(--vgui-text-disabled);
102
+ text-shadow: 1px 1px 0 var(--vgui-text-disabled-shadow);
103
+ cursor: not-allowed;
104
+ }
105
+
106
+ /* The anchor form is paired with `tabindex="-1"` in the component. */
107
+ .vgui-link[aria-disabled='true'] {
108
+ pointer-events: none;
109
+ }
110
+
111
+ /*
112
+ * Component-scoped copy of the house screen-reader-only helper, so the
113
+ * "(opens in a new tab)" announcement travels with the component rather than
114
+ * depending on a global stylesheet.
115
+ */
116
+ .vgui-link .vgui-visually-hidden {
117
+ position: absolute;
118
+ width: 1px;
119
+ height: 1px;
120
+ margin: -1px;
121
+ padding: 0;
122
+ overflow: hidden;
123
+ clip: rect(0 0 0 0);
124
+ clip-path: inset(50%);
125
+ white-space: nowrap;
126
+ border: 0;
127
+ }
@@ -0,0 +1 @@
1
+ export {}
@@ -0,0 +1,26 @@
1
+ import type { HTMLAttributes, MouseEvent, ReactNode } from 'react';
2
+ import './Link.css';
3
+ export interface LinkProps extends HTMLAttributes<HTMLElement> {
4
+ /** Destination. Omit to render a button-styled action instead. */
5
+ href?: string;
6
+ /** Low-emphasis `URLLabel` colour instead of the default. */
7
+ quiet?: boolean;
8
+ /** Renders as an action button with no underline (`TextButton`). */
9
+ asButton?: boolean;
10
+ /** Adds target="_blank" and the external glyph. */
11
+ external?: boolean;
12
+ /** Not reachable or clickable. */
13
+ disabled?: boolean;
14
+ /** Rendered content. */
15
+ children: ReactNode;
16
+ /** Called when the link or text button is activated. */
17
+ onClick?: (event: MouseEvent<HTMLElement>) => void;
18
+ }
19
+ /**
20
+ * Inline text that navigates (`URLLabel`), or the same look as a low-emphasis
21
+ * action (`TextButton`). A link is always underlined and a text button never
22
+ * is — that decoration, not the colour, is what separates "navigates" from
23
+ * "acts". See `docs/components/Link.md`.
24
+ */
25
+ export declare const Link: import("react").ForwardRefExoticComponent<LinkProps & import("react").RefAttributes<HTMLElement>>;
26
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/components/Link/Link.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAO,MAAM,OAAO,CAAA;AAEvE,OAAO,YAAY,CAAA;AAEnB,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wBAAwB;IACxB,QAAQ,EAAE,SAAS,CAAA;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAA;CACnD;AAED;;;;;GAKG;AACH,eAAO,MAAM,IAAI,mGA0Ef,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { forwardRef } from "react";
2
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
3
+ import "./Link.css";
4
+ //#region src/components/Link/Link.tsx
5
+ /**
6
+ * Inline text that navigates (`URLLabel`), or the same look as a low-emphasis
7
+ * action (`TextButton`). A link is always underlined and a text button never
8
+ * is — that decoration, not the colour, is what separates "navigates" from
9
+ * "acts". See `docs/components/Link.md`.
10
+ */
11
+ var Link = forwardRef(function Link({ className, href, quiet = false, asButton = false, external = false, disabled = false, children, onClick, ...rest }, ref) {
12
+ const isButton = asButton || href === void 0;
13
+ const showExternal = external && !isButton;
14
+ const classes = ["vgui-link"];
15
+ if (quiet) classes.push("vgui-link--quiet");
16
+ if (isButton) classes.push("vgui-link--button");
17
+ if (showExternal) classes.push("vgui-link--external");
18
+ if (disabled) classes.push("vgui-link--disabled");
19
+ if (className) classes.push(className);
20
+ const handleClick = (event) => {
21
+ if (disabled) {
22
+ event.preventDefault();
23
+ return;
24
+ }
25
+ onClick?.(event);
26
+ };
27
+ if (isButton) return /* @__PURE__ */ jsx("button", {
28
+ ref,
29
+ type: "button",
30
+ className: classes.join(" "),
31
+ disabled,
32
+ onClick: handleClick,
33
+ ...rest,
34
+ children
35
+ });
36
+ return /* @__PURE__ */ jsxs("a", {
37
+ ref,
38
+ className: classes.join(" "),
39
+ href,
40
+ "aria-disabled": disabled || void 0,
41
+ tabIndex: disabled ? -1 : rest.tabIndex,
42
+ target: showExternal ? "_blank" : void 0,
43
+ rel: showExternal ? "noreferrer noopener" : void 0,
44
+ onClick: handleClick,
45
+ ...rest,
46
+ children: [children, showExternal ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
47
+ className: "vgui-link__external",
48
+ "aria-hidden": "true",
49
+ children: "↗"
50
+ }), /* @__PURE__ */ jsx("span", {
51
+ className: "vgui-visually-hidden",
52
+ children: "(opens in a new tab)"
53
+ })] }) : null]
54
+ });
55
+ });
56
+ Link.displayName = "Link";
57
+ //#endregion
58
+ export { Link };
59
+
60
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","names":[],"sources":["../../../src/components/Link/Link.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { HTMLAttributes, MouseEvent, ReactNode, Ref } from 'react'\n\nimport './Link.css'\n\nexport interface LinkProps extends HTMLAttributes<HTMLElement> {\n /** Destination. Omit to render a button-styled action instead. */\n href?: string\n /** Low-emphasis `URLLabel` colour instead of the default. */\n quiet?: boolean\n /** Renders as an action button with no underline (`TextButton`). */\n asButton?: boolean\n /** Adds target=\"_blank\" and the external glyph. */\n external?: boolean\n /** Not reachable or clickable. */\n disabled?: boolean\n /** Rendered content. */\n children: ReactNode\n /** Called when the link or text button is activated. */\n onClick?: (event: MouseEvent<HTMLElement>) => void\n}\n\n/**\n * Inline text that navigates (`URLLabel`), or the same look as a low-emphasis\n * action (`TextButton`). A link is always underlined and a text button never\n * is — that decoration, not the colour, is what separates \"navigates\" from\n * \"acts\". See `docs/components/Link.md`.\n */\nexport const Link = forwardRef<HTMLElement, LinkProps>(function Link(\n {\n className,\n href,\n quiet = false,\n asButton = false,\n external = false,\n disabled = false,\n children,\n onClick,\n ...rest\n },\n ref,\n) {\n // `TextButton` has no destination by definition, so omitting `href` renders\n // the action form even when `asButton` is not passed explicitly.\n const isButton = asButton || href === undefined\n const showExternal = external && !isButton\n\n const classes = ['vgui-link']\n if (quiet) classes.push('vgui-link--quiet')\n if (isButton) classes.push('vgui-link--button')\n if (showExternal) classes.push('vgui-link--external')\n if (disabled) classes.push('vgui-link--disabled')\n if (className) classes.push(className)\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault()\n return\n }\n onClick?.(event)\n }\n\n if (isButton) {\n return (\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type=\"button\"\n className={classes.join(' ')}\n disabled={disabled}\n onClick={handleClick}\n {...rest}\n >\n {children}\n </button>\n )\n }\n\n return (\n <a\n ref={ref as Ref<HTMLAnchorElement>}\n className={classes.join(' ')}\n href={href}\n // A disabled anchor stays visible but leaves the tab order and the click\n // path; `pointer-events` alone would keep it reachable by keyboard.\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : rest.tabIndex}\n target={showExternal ? '_blank' : undefined}\n rel={showExternal ? 'noreferrer noopener' : undefined}\n onClick={handleClick}\n {...rest}\n >\n {children}\n {showExternal ? (\n <>\n <span className=\"vgui-link__external\" aria-hidden=\"true\">\n ↗\n </span>\n <span className=\"vgui-visually-hidden\">(opens in a new tab)</span>\n </>\n ) : null}\n </a>\n )\n})\n\nLink.displayName = 'Link'\n"],"mappings":";;;;;;;;;;AA4BA,IAAa,OAAO,WAAmC,SAAS,KAC9D,EACE,WACA,MACA,QAAQ,OACR,WAAW,OACX,WAAW,OACX,WAAW,OACX,UACA,SACA,GAAG,QAEL,KACA;CAGA,MAAM,WAAW,YAAY,SAAS,KAAA;CACtC,MAAM,eAAe,YAAY,CAAC;CAElC,MAAM,UAAU,CAAC,WAAW;CAC5B,IAAI,OAAO,QAAQ,KAAK,kBAAkB;CAC1C,IAAI,UAAU,QAAQ,KAAK,mBAAmB;CAC9C,IAAI,cAAc,QAAQ,KAAK,qBAAqB;CACpD,IAAI,UAAU,QAAQ,KAAK,qBAAqB;CAChD,IAAI,WAAW,QAAQ,KAAK,SAAS;CAErC,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,UAAU,KAAK;CACjB;CAEA,IAAI,UACF,OACE,oBAAC,UAAD;EACO;EACL,MAAK;EACL,WAAW,QAAQ,KAAK,GAAG;EACjB;EACV,SAAS;EACT,GAAI;EAEH;CACK,CAAA;CAIZ,OACE,qBAAC,KAAD;EACO;EACL,WAAW,QAAQ,KAAK,GAAG;EACrB;EAGN,iBAAe,YAAY,KAAA;EAC3B,UAAU,WAAW,KAAK,KAAK;EAC/B,QAAQ,eAAe,WAAW,KAAA;EAClC,KAAK,eAAe,wBAAwB,KAAA;EAC5C,SAAS;EACT,GAAI;EAXN,UAAA,CAaG,UACA,eACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,QAAD;GAAM,WAAU;GAAsB,eAAY;GAAO,UAAA;EAEnD,CAAA,GACN,oBAAC,QAAD;GAAM,WAAU;GAAuB,UAAA;EAA0B,CAAA,CACjE,EAAA,CAAA,IACA,IACH;;AAEP,CAAC;AAED,KAAK,cAAc"}
@@ -0,0 +1,3 @@
1
+ export { Link } from './Link';
2
+ export type { LinkProps } from './Link';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Link/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA"}