@apify/ui-library 0.51.6-featurepublishuilibrary-0a4729.38266

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 (349) hide show
  1. package/.eslintrc +39 -0
  2. package/.stylelintrc +12 -0
  3. package/CHANGELOG.md +2804 -0
  4. package/README.md +15 -0
  5. package/dist/src/components/action_link.d.ts +5 -0
  6. package/dist/src/components/action_link.d.ts.map +1 -0
  7. package/dist/src/components/action_link.jsx +35 -0
  8. package/dist/src/components/action_link.jsx.map +1 -0
  9. package/dist/src/components/actor_template_card.d.ts +10 -0
  10. package/dist/src/components/actor_template_card.d.ts.map +1 -0
  11. package/dist/src/components/actor_template_card.jsx +73 -0
  12. package/dist/src/components/actor_template_card.jsx.map +1 -0
  13. package/dist/src/components/badge.d.ts +26 -0
  14. package/dist/src/components/badge.d.ts.map +1 -0
  15. package/dist/src/components/badge.jsx +96 -0
  16. package/dist/src/components/badge.jsx.map +1 -0
  17. package/dist/src/components/banner.d.ts +11 -0
  18. package/dist/src/components/banner.d.ts.map +1 -0
  19. package/dist/src/components/banner.jsx +73 -0
  20. package/dist/src/components/banner.jsx.map +1 -0
  21. package/dist/src/components/blog_article.d.ts +9 -0
  22. package/dist/src/components/blog_article.d.ts.map +1 -0
  23. package/dist/src/components/blog_article.jsx +73 -0
  24. package/dist/src/components/blog_article.jsx.map +1 -0
  25. package/dist/src/components/box.d.ts +41 -0
  26. package/dist/src/components/box.d.ts.map +1 -0
  27. package/dist/src/components/box.jsx +48 -0
  28. package/dist/src/components/box.jsx.map +1 -0
  29. package/dist/src/components/button.d.ts +35 -0
  30. package/dist/src/components/button.d.ts.map +1 -0
  31. package/dist/src/components/button.jsx +193 -0
  32. package/dist/src/components/button.jsx.map +1 -0
  33. package/dist/src/components/chip.d.ts +52 -0
  34. package/dist/src/components/chip.d.ts.map +1 -0
  35. package/dist/src/components/chip.jsx +89 -0
  36. package/dist/src/components/chip.jsx.map +1 -0
  37. package/dist/src/components/code/action_button.d.ts +11 -0
  38. package/dist/src/components/code/action_button.d.ts.map +1 -0
  39. package/dist/src/components/code/action_button.jsx +67 -0
  40. package/dist/src/components/code/action_button.jsx.map +1 -0
  41. package/dist/src/components/code/code_block/code_block.d.ts +38 -0
  42. package/dist/src/components/code/code_block/code_block.d.ts.map +1 -0
  43. package/dist/src/components/code/code_block/code_block.jsx +99 -0
  44. package/dist/src/components/code/code_block/code_block.jsx.map +1 -0
  45. package/dist/src/components/code/code_block/code_block.styled.d.ts +13 -0
  46. package/dist/src/components/code/code_block/code_block.styled.d.ts.map +1 -0
  47. package/dist/src/components/code/code_block/code_block.styled.jsx +215 -0
  48. package/dist/src/components/code/code_block/code_block.styled.jsx.map +1 -0
  49. package/dist/src/components/code/code_block/utils.d.ts +2 -0
  50. package/dist/src/components/code/code_block/utils.d.ts.map +1 -0
  51. package/dist/src/components/code/code_block/utils.js +20 -0
  52. package/dist/src/components/code/code_block/utils.js.map +1 -0
  53. package/dist/src/components/code/index.d.ts +4 -0
  54. package/dist/src/components/code/index.d.ts.map +1 -0
  55. package/dist/src/components/code/index.js +4 -0
  56. package/dist/src/components/code/index.js.map +1 -0
  57. package/dist/src/components/code/inline_code/inline_code.d.ts +11 -0
  58. package/dist/src/components/code/inline_code/inline_code.d.ts.map +1 -0
  59. package/dist/src/components/code/inline_code/inline_code.jsx +24 -0
  60. package/dist/src/components/code/inline_code/inline_code.jsx.map +1 -0
  61. package/dist/src/components/code/one_line_code/one_line_code.d.ts +27 -0
  62. package/dist/src/components/code/one_line_code/one_line_code.d.ts.map +1 -0
  63. package/dist/src/components/code/one_line_code/one_line_code.jsx +157 -0
  64. package/dist/src/components/code/one_line_code/one_line_code.jsx.map +1 -0
  65. package/dist/src/components/code/syntax_highlighter.d.ts +16 -0
  66. package/dist/src/components/code/syntax_highlighter.d.ts.map +1 -0
  67. package/dist/src/components/code/syntax_highlighter.jsx +94 -0
  68. package/dist/src/components/code/syntax_highlighter.jsx.map +1 -0
  69. package/dist/src/components/color_wheel_gradient.d.ts +9 -0
  70. package/dist/src/components/color_wheel_gradient.d.ts.map +1 -0
  71. package/dist/src/components/color_wheel_gradient.jsx +23 -0
  72. package/dist/src/components/color_wheel_gradient.jsx.map +1 -0
  73. package/dist/src/components/floating/index.d.ts +4 -0
  74. package/dist/src/components/floating/index.d.ts.map +1 -0
  75. package/dist/src/components/floating/index.js +4 -0
  76. package/dist/src/components/floating/index.js.map +1 -0
  77. package/dist/src/components/floating/menu.d.ts +33 -0
  78. package/dist/src/components/floating/menu.d.ts.map +1 -0
  79. package/dist/src/components/floating/menu.jsx +95 -0
  80. package/dist/src/components/floating/menu.jsx.map +1 -0
  81. package/dist/src/components/floating/menu_common.d.ts +42 -0
  82. package/dist/src/components/floating/menu_common.d.ts.map +1 -0
  83. package/dist/src/components/floating/menu_common.jsx +20 -0
  84. package/dist/src/components/floating/menu_common.jsx.map +1 -0
  85. package/dist/src/components/floating/menu_components.d.ts +29 -0
  86. package/dist/src/components/floating/menu_components.d.ts.map +1 -0
  87. package/dist/src/components/floating/menu_components.jsx +73 -0
  88. package/dist/src/components/floating/menu_components.jsx.map +1 -0
  89. package/dist/src/components/image.d.ts +12 -0
  90. package/dist/src/components/image.d.ts.map +1 -0
  91. package/dist/src/components/image.jsx +8 -0
  92. package/dist/src/components/image.jsx.map +1 -0
  93. package/dist/src/components/index.d.ts +21 -0
  94. package/dist/src/components/index.d.ts.map +1 -0
  95. package/dist/src/components/index.js +21 -0
  96. package/dist/src/components/index.js.map +1 -0
  97. package/dist/src/components/link.d.ts +24 -0
  98. package/dist/src/components/link.d.ts.map +1 -0
  99. package/dist/src/components/link.jsx +67 -0
  100. package/dist/src/components/link.jsx.map +1 -0
  101. package/dist/src/components/message.d.ts +31 -0
  102. package/dist/src/components/message.d.ts.map +1 -0
  103. package/dist/src/components/message.jsx +105 -0
  104. package/dist/src/components/message.jsx.map +1 -0
  105. package/dist/src/components/readme_renderer/index.d.ts +4 -0
  106. package/dist/src/components/readme_renderer/index.d.ts.map +1 -0
  107. package/dist/src/components/readme_renderer/index.js +4 -0
  108. package/dist/src/components/readme_renderer/index.js.map +1 -0
  109. package/dist/src/components/readme_renderer/pythonize_value.d.ts +3 -0
  110. package/dist/src/components/readme_renderer/pythonize_value.d.ts.map +1 -0
  111. package/dist/src/components/readme_renderer/pythonize_value.js +81 -0
  112. package/dist/src/components/readme_renderer/pythonize_value.js.map +1 -0
  113. package/dist/src/components/readme_renderer/table_of_contents.d.ts +10 -0
  114. package/dist/src/components/readme_renderer/table_of_contents.d.ts.map +1 -0
  115. package/dist/src/components/readme_renderer/table_of_contents.jsx +197 -0
  116. package/dist/src/components/readme_renderer/table_of_contents.jsx.map +1 -0
  117. package/dist/src/components/readme_renderer/utils.d.ts +6 -0
  118. package/dist/src/components/readme_renderer/utils.d.ts.map +1 -0
  119. package/dist/src/components/readme_renderer/utils.jsx +42 -0
  120. package/dist/src/components/readme_renderer/utils.jsx.map +1 -0
  121. package/dist/src/components/simple_markdown/index.d.ts +3 -0
  122. package/dist/src/components/simple_markdown/index.d.ts.map +1 -0
  123. package/dist/src/components/simple_markdown/index.jsx +3 -0
  124. package/dist/src/components/simple_markdown/index.jsx.map +1 -0
  125. package/dist/src/components/simple_markdown/simple_markdown.d.ts +16 -0
  126. package/dist/src/components/simple_markdown/simple_markdown.d.ts.map +1 -0
  127. package/dist/src/components/simple_markdown/simple_markdown.jsx +137 -0
  128. package/dist/src/components/simple_markdown/simple_markdown.jsx.map +1 -0
  129. package/dist/src/components/simple_markdown/simple_markdown_components.d.ts +26 -0
  130. package/dist/src/components/simple_markdown/simple_markdown_components.d.ts.map +1 -0
  131. package/dist/src/components/simple_markdown/simple_markdown_components.jsx +193 -0
  132. package/dist/src/components/simple_markdown/simple_markdown_components.jsx.map +1 -0
  133. package/dist/src/components/tag.d.ts +38 -0
  134. package/dist/src/components/tag.d.ts.map +1 -0
  135. package/dist/src/components/tag.jsx +126 -0
  136. package/dist/src/components/tag.jsx.map +1 -0
  137. package/dist/src/components/text/heading_content.d.ts +10 -0
  138. package/dist/src/components/text/heading_content.d.ts.map +1 -0
  139. package/dist/src/components/text/heading_content.jsx +31 -0
  140. package/dist/src/components/text/heading_content.jsx.map +1 -0
  141. package/dist/src/components/text/heading_marketing.d.ts +10 -0
  142. package/dist/src/components/text/heading_marketing.d.ts.map +1 -0
  143. package/dist/src/components/text/heading_marketing.jsx +31 -0
  144. package/dist/src/components/text/heading_marketing.jsx.map +1 -0
  145. package/dist/src/components/text/heading_shared.d.ts +10 -0
  146. package/dist/src/components/text/heading_shared.d.ts.map +1 -0
  147. package/dist/src/components/text/heading_shared.jsx +32 -0
  148. package/dist/src/components/text/heading_shared.jsx.map +1 -0
  149. package/dist/src/components/text/index.d.ts +12 -0
  150. package/dist/src/components/text/index.d.ts.map +1 -0
  151. package/dist/src/components/text/index.js +11 -0
  152. package/dist/src/components/text/index.js.map +1 -0
  153. package/dist/src/components/text/text_base.d.ts +13 -0
  154. package/dist/src/components/text/text_base.d.ts.map +1 -0
  155. package/dist/src/components/text/text_base.jsx +23 -0
  156. package/dist/src/components/text/text_base.jsx.map +1 -0
  157. package/dist/src/components/text/text_content.d.ts +11 -0
  158. package/dist/src/components/text/text_content.d.ts.map +1 -0
  159. package/dist/src/components/text/text_content.jsx +68 -0
  160. package/dist/src/components/text/text_content.jsx.map +1 -0
  161. package/dist/src/components/text/text_marketing.d.ts +11 -0
  162. package/dist/src/components/text/text_marketing.d.ts.map +1 -0
  163. package/dist/src/components/text/text_marketing.jsx +116 -0
  164. package/dist/src/components/text/text_marketing.jsx.map +1 -0
  165. package/dist/src/components/text/text_shared.d.ts +14 -0
  166. package/dist/src/components/text/text_shared.d.ts.map +1 -0
  167. package/dist/src/components/text/text_shared.jsx +55 -0
  168. package/dist/src/components/text/text_shared.jsx.map +1 -0
  169. package/dist/src/components/tile/horizontal_tile.d.ts +9 -0
  170. package/dist/src/components/tile/horizontal_tile.d.ts.map +1 -0
  171. package/dist/src/components/tile/horizontal_tile.jsx +43 -0
  172. package/dist/src/components/tile/horizontal_tile.jsx.map +1 -0
  173. package/dist/src/components/tile/index.d.ts +3 -0
  174. package/dist/src/components/tile/index.d.ts.map +1 -0
  175. package/dist/src/components/tile/index.js +3 -0
  176. package/dist/src/components/tile/index.js.map +1 -0
  177. package/dist/src/components/tile/shared.d.ts +17 -0
  178. package/dist/src/components/tile/shared.d.ts.map +1 -0
  179. package/dist/src/components/tile/shared.js +12 -0
  180. package/dist/src/components/tile/shared.js.map +1 -0
  181. package/dist/src/components/tile/vertical_tile.d.ts +10 -0
  182. package/dist/src/components/tile/vertical_tile.d.ts.map +1 -0
  183. package/dist/src/components/tile/vertical_tile.jsx +32 -0
  184. package/dist/src/components/tile/vertical_tile.jsx.map +1 -0
  185. package/dist/src/components/to_consolidate/card.d.ts +27 -0
  186. package/dist/src/components/to_consolidate/card.d.ts.map +1 -0
  187. package/dist/src/components/to_consolidate/card.jsx +93 -0
  188. package/dist/src/components/to_consolidate/card.jsx.map +1 -0
  189. package/dist/src/components/to_consolidate/index.d.ts +5 -0
  190. package/dist/src/components/to_consolidate/index.d.ts.map +1 -0
  191. package/dist/src/components/to_consolidate/index.js +5 -0
  192. package/dist/src/components/to_consolidate/index.js.map +1 -0
  193. package/dist/src/components/to_consolidate/markdown.d.ts +40 -0
  194. package/dist/src/components/to_consolidate/markdown.d.ts.map +1 -0
  195. package/dist/src/components/to_consolidate/markdown.jsx +454 -0
  196. package/dist/src/components/to_consolidate/markdown.jsx.map +1 -0
  197. package/dist/src/components/to_consolidate/pagination.d.ts +8 -0
  198. package/dist/src/components/to_consolidate/pagination.d.ts.map +1 -0
  199. package/dist/src/components/to_consolidate/pagination.jsx +88 -0
  200. package/dist/src/components/to_consolidate/pagination.jsx.map +1 -0
  201. package/dist/src/components/to_consolidate/tab_number_chip.d.ts +7 -0
  202. package/dist/src/components/to_consolidate/tab_number_chip.d.ts.map +1 -0
  203. package/dist/src/components/to_consolidate/tab_number_chip.jsx +22 -0
  204. package/dist/src/components/to_consolidate/tab_number_chip.jsx.map +1 -0
  205. package/dist/src/design_system/colors_theme.d.ts +213 -0
  206. package/dist/src/design_system/colors_theme.d.ts.map +1 -0
  207. package/dist/src/design_system/colors_theme.js +213 -0
  208. package/dist/src/design_system/colors_theme.js.map +1 -0
  209. package/dist/src/design_system/properties_theme.d.ts +175 -0
  210. package/dist/src/design_system/properties_theme.d.ts.map +1 -0
  211. package/dist/src/design_system/properties_theme.js +315 -0
  212. package/dist/src/design_system/properties_theme.js.map +1 -0
  213. package/dist/src/design_system/theme.d.ts +630 -0
  214. package/dist/src/design_system/theme.d.ts.map +1 -0
  215. package/dist/src/design_system/theme.js +17 -0
  216. package/dist/src/design_system/theme.js.map +1 -0
  217. package/dist/src/design_system/tokens/index.d.ts +6 -0
  218. package/dist/src/design_system/tokens/index.d.ts.map +1 -0
  219. package/dist/src/design_system/tokens/index.js +6 -0
  220. package/dist/src/design_system/tokens/index.js.map +1 -0
  221. package/dist/src/design_system/tokens/layouts.d.ts +29 -0
  222. package/dist/src/design_system/tokens/layouts.d.ts.map +1 -0
  223. package/dist/src/design_system/tokens/layouts.js +29 -0
  224. package/dist/src/design_system/tokens/layouts.js.map +1 -0
  225. package/dist/src/design_system/tokens/radiuses.d.ts +23 -0
  226. package/dist/src/design_system/tokens/radiuses.d.ts.map +1 -0
  227. package/dist/src/design_system/tokens/radiuses.js +23 -0
  228. package/dist/src/design_system/tokens/radiuses.js.map +1 -0
  229. package/dist/src/design_system/tokens/shadows.d.ts +23 -0
  230. package/dist/src/design_system/tokens/shadows.d.ts.map +1 -0
  231. package/dist/src/design_system/tokens/shadows.js +23 -0
  232. package/dist/src/design_system/tokens/shadows.js.map +1 -0
  233. package/dist/src/design_system/tokens/spaces.d.ts +15 -0
  234. package/dist/src/design_system/tokens/spaces.d.ts.map +1 -0
  235. package/dist/src/design_system/tokens/spaces.js +14 -0
  236. package/dist/src/design_system/tokens/spaces.js.map +1 -0
  237. package/dist/src/design_system/tokens/transitions.d.ts +20 -0
  238. package/dist/src/design_system/tokens/transitions.d.ts.map +1 -0
  239. package/dist/src/design_system/tokens/transitions.js +20 -0
  240. package/dist/src/design_system/tokens/transitions.js.map +1 -0
  241. package/dist/src/design_system/typography_theme.d.ts +189 -0
  242. package/dist/src/design_system/typography_theme.d.ts.map +1 -0
  243. package/dist/src/design_system/typography_theme.js +190 -0
  244. package/dist/src/design_system/typography_theme.js.map +1 -0
  245. package/dist/src/index.d.ts +7 -0
  246. package/dist/src/index.d.ts.map +1 -0
  247. package/dist/src/index.js +7 -0
  248. package/dist/src/index.js.map +1 -0
  249. package/dist/src/type_utils.d.ts +6 -0
  250. package/dist/src/type_utils.d.ts.map +1 -0
  251. package/dist/src/type_utils.js +2 -0
  252. package/dist/src/type_utils.js.map +1 -0
  253. package/dist/src/ui_dependency_provider.d.ts +29 -0
  254. package/dist/src/ui_dependency_provider.d.ts.map +1 -0
  255. package/dist/src/ui_dependency_provider.jsx +14 -0
  256. package/dist/src/ui_dependency_provider.jsx.map +1 -0
  257. package/dist/src/utils/copy_to_clipboard.d.ts +7 -0
  258. package/dist/src/utils/copy_to_clipboard.d.ts.map +1 -0
  259. package/dist/src/utils/copy_to_clipboard.js +16 -0
  260. package/dist/src/utils/copy_to_clipboard.js.map +1 -0
  261. package/dist/src/utils/image_color.d.ts +7 -0
  262. package/dist/src/utils/image_color.d.ts.map +1 -0
  263. package/dist/src/utils/image_color.js +35 -0
  264. package/dist/src/utils/image_color.js.map +1 -0
  265. package/dist/src/utils/index.d.ts +4 -0
  266. package/dist/src/utils/index.d.ts.map +1 -0
  267. package/dist/src/utils/index.js +4 -0
  268. package/dist/src/utils/index.js.map +1 -0
  269. package/dist/src/utils/sanitization.d.ts +11 -0
  270. package/dist/src/utils/sanitization.d.ts.map +1 -0
  271. package/dist/src/utils/sanitization.js +16 -0
  272. package/dist/src/utils/sanitization.js.map +1 -0
  273. package/dist/tsconfig.build.tsbuildinfo +1 -0
  274. package/package.json +71 -0
  275. package/src/codemods/generate_color_property_tokens.mjs +97 -0
  276. package/src/codemods/generate_color_theme_files.mjs +46 -0
  277. package/src/codemods/generate_typograpy_tokens_files.mjs +136 -0
  278. package/src/components/action_link.tsx +59 -0
  279. package/src/components/actor_template_card.tsx +99 -0
  280. package/src/components/badge.tsx +144 -0
  281. package/src/components/banner.tsx +95 -0
  282. package/src/components/blog_article.tsx +85 -0
  283. package/src/components/box.tsx +127 -0
  284. package/src/components/button.tsx +303 -0
  285. package/src/components/chip.tsx +121 -0
  286. package/src/components/code/action_button.tsx +96 -0
  287. package/src/components/code/code_block/code_block.styled.tsx +228 -0
  288. package/src/components/code/code_block/code_block.tsx +235 -0
  289. package/src/components/code/code_block/utils.ts +19 -0
  290. package/src/components/code/index.ts +3 -0
  291. package/src/components/code/inline_code/inline_code.tsx +44 -0
  292. package/src/components/code/one_line_code/one_line_code.tsx +232 -0
  293. package/src/components/code/syntax_highlighter.tsx +125 -0
  294. package/src/components/color_wheel_gradient.tsx +31 -0
  295. package/src/components/floating/index.ts +3 -0
  296. package/src/components/floating/menu.tsx +191 -0
  297. package/src/components/floating/menu_common.tsx +31 -0
  298. package/src/components/floating/menu_components.tsx +94 -0
  299. package/src/components/image.tsx +23 -0
  300. package/src/components/index.ts +20 -0
  301. package/src/components/link.tsx +114 -0
  302. package/src/components/message.tsx +157 -0
  303. package/src/components/readme_renderer/index.ts +3 -0
  304. package/src/components/readme_renderer/pythonize_value.ts +78 -0
  305. package/src/components/readme_renderer/table_of_contents.tsx +257 -0
  306. package/src/components/readme_renderer/utils.tsx +46 -0
  307. package/src/components/simple_markdown/index.tsx +2 -0
  308. package/src/components/simple_markdown/simple_markdown.tsx +181 -0
  309. package/src/components/simple_markdown/simple_markdown_components.tsx +295 -0
  310. package/src/components/tag.tsx +185 -0
  311. package/src/components/text/heading_content.tsx +56 -0
  312. package/src/components/text/heading_marketing.tsx +55 -0
  313. package/src/components/text/heading_shared.tsx +57 -0
  314. package/src/components/text/index.ts +18 -0
  315. package/src/components/text/text_base.tsx +52 -0
  316. package/src/components/text/text_content.tsx +104 -0
  317. package/src/components/text/text_marketing.tsx +152 -0
  318. package/src/components/text/text_shared.tsx +96 -0
  319. package/src/components/tile/horizontal_tile.tsx +76 -0
  320. package/src/components/tile/index.ts +2 -0
  321. package/src/components/tile/shared.ts +27 -0
  322. package/src/components/tile/vertical_tile.tsx +58 -0
  323. package/src/components/to_consolidate/card.tsx +141 -0
  324. package/src/components/to_consolidate/index.ts +4 -0
  325. package/src/components/to_consolidate/markdown.tsx +593 -0
  326. package/src/components/to_consolidate/pagination.tsx +139 -0
  327. package/src/components/to_consolidate/tab_number_chip.tsx +31 -0
  328. package/src/design_system/colors_theme.ts +213 -0
  329. package/src/design_system/generate_color_definitions.js +43 -0
  330. package/src/design_system/properties_theme.ts +453 -0
  331. package/src/design_system/supernova_color_tokens.json +1766 -0
  332. package/src/design_system/supernova_typography_tokens.json +657 -0
  333. package/src/design_system/theme.ts +26 -0
  334. package/src/design_system/tokens/index.ts +5 -0
  335. package/src/design_system/tokens/layouts.ts +29 -0
  336. package/src/design_system/tokens/radiuses.ts +22 -0
  337. package/src/design_system/tokens/shadows.ts +22 -0
  338. package/src/design_system/tokens/spaces.ts +15 -0
  339. package/src/design_system/tokens/transitions.ts +19 -0
  340. package/src/design_system/typography_theme.ts +197 -0
  341. package/src/index.ts +7 -0
  342. package/src/type_utils.ts +7 -0
  343. package/src/ui_dependency_provider.tsx +50 -0
  344. package/src/utils/copy_to_clipboard.ts +24 -0
  345. package/src/utils/image_color.ts +44 -0
  346. package/src/utils/index.ts +3 -0
  347. package/src/utils/sanitization.ts +14 -0
  348. package/tsconfig.build.json +18 -0
  349. package/tsconfig.json +10 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Layouts (device screen size) tokens - used for media queries.
3
+ * Defined in px as we need to know exact size of the screen.
4
+ * @typedef {Object} Screen
5
+ * @property {'768px'} tablet
6
+ * @property {'1024px'} desktop
7
+ * @property {'1200px'} mediumDesktop
8
+ * @property {'1440px'} largeDesktop
9
+ */
10
+ /**
11
+ * @type {Screen}
12
+ * @deprecated - use the 'device' value instead - it includes the `(min-width: xxx)` part
13
+ */
14
+ export const layouts = {
15
+ tablet: '768px',
16
+ desktop: '1024px',
17
+ mediumDesktop: '1200px',
18
+ largeDesktop: '1440px',
19
+ } as const;
20
+
21
+ /**
22
+ * @type {Screen}
23
+ */
24
+ export const devices = {
25
+ tablet: '(min-width: 768px)',
26
+ desktop: '(min-width: 1024px)',
27
+ mediumDesktop: '(min-width: 1200px)',
28
+ largeDesktop: '(min-width: 1440px)',
29
+ } as const;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Radius tokens - used for border radius.
3
+ * Needs to be defined in px as we don't want to scale it with font size.
4
+ * @typedef {Object} Radius
5
+ * @property {'4px'} radius4
6
+ * @property {'6px'} radius6
7
+ * @property {'8px'} radius8
8
+ * @property {'12px'} radius12
9
+ * @property {'16px'} radius16
10
+ */
11
+ /**
12
+ * @type {Radius}
13
+ */
14
+ export const radiuses = {
15
+ radius4: '4px',
16
+ radius6: '6px',
17
+ radius8: '8px',
18
+ radius12: '12px',
19
+ radius16: '16px',
20
+ radius20: '20px',
21
+ radiusFull: '100px',
22
+ };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shadow tokens - used box-shadow.
3
+ *
4
+ * @typedef {Object} Shadow
5
+ * @property {string} shadowActive - active shadow.
6
+ * @property {string} shadow1 - shadow 1.
7
+ * @property {string} shadow2 - shadow 2.
8
+ * @property {string} shadow3 - shadow 3.
9
+ * @property {string} shadow4 - shadow 4.
10
+ * @property {string} shadow5 - shadow 5.
11
+ */
12
+ /**
13
+ * @type {Shadow}
14
+ */
15
+ export const shadows = {
16
+ shadowActive: 'var(--shadow-active)',
17
+ shadow1: 'var(--shadow-1)',
18
+ shadow2: 'var(--shadow-2)',
19
+ shadow3: 'var(--shadow-3)',
20
+ shadow4: 'var(--shadow-4)',
21
+ shadow5: 'var(--shadow-5)',
22
+ };
@@ -0,0 +1,15 @@
1
+ export type Size = keyof typeof spaces;
2
+
3
+ export const spaces = {
4
+ space2: '0.2rem',
5
+ space4: '0.4rem',
6
+ space6: '0.6rem',
7
+ space8: '0.8rem',
8
+ space10: '1rem',
9
+ space12: '1.2rem',
10
+ space16: '1.6rem',
11
+ space24: '2.4rem',
12
+ space32: '3.2rem',
13
+ space40: '4rem',
14
+ space80: '8rem',
15
+ } as const;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Transitions tokens - used for smooth state change.
3
+ * @typedef {Object} Transitions
4
+ * @property {'0.3s ease-in'} smoothEaseIn
5
+ * @property {'0.3s ease-out'} smoothEaseOut
6
+ * @property {'0.12s ease-out'} fastEaseOut
7
+ * @property {'0.12s ease-in'} fastEaseIn
8
+ * @property {'0.12s ease-in-out'} fastEaseInOut
9
+ */
10
+ /**
11
+ * @type {Transitions}
12
+ */
13
+ export const transitions = {
14
+ smoothEaseIn: '0.3s ease-in',
15
+ smoothEaseOut: '0.3s ease-out',
16
+ fastEaseIn: '0.12s ease-in',
17
+ fastEaseOut: '0.12s ease-out',
18
+ fastEaseInOut: '0.12s ease-in-out',
19
+ };
@@ -0,0 +1,197 @@
1
+ /* eslint-disable max-len */
2
+ export const typographyTokens = {
3
+ shared: {
4
+ mobile: {
5
+ title3xl: 'font-size: 2.8rem; line-height: 3.2rem; font-weight: 700; font-family: Inter, sans-serif;',
6
+ title2xl: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
7
+ titleXl: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
8
+ titleL: 'font-size: 1.8rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
9
+ titleM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
10
+ titleS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 650; font-family: Inter, sans-serif;',
11
+ titleXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 650; font-family: Inter, sans-serif;',
12
+ bodyL: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
13
+ bodyLMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
14
+ bodyLStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: Inter, sans-serif;',
15
+ bodyM: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
16
+ bodyMMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
17
+ bodyMStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: Inter, sans-serif;',
18
+ bodyS: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
19
+ bodySMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
20
+ bodySStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: Inter, sans-serif;',
21
+ codeL: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
22
+ codeLMedium: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
23
+ codeLStrong: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
24
+ codeM: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
25
+ codeMMedium: "font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
26
+ codeMStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
27
+ codeS: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
28
+ codeSMedium: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
29
+ codeSStrong: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
30
+ },
31
+
32
+ tablet: {
33
+ title3xl: 'font-size: 3.6rem; line-height: 4.4rem; font-weight: 700; font-family: Inter, sans-serif;',
34
+ title2xl: 'font-size: 2.8rem; line-height: 3.2rem; font-weight: 700; font-family: Inter, sans-serif;',
35
+ titleXl: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
36
+ titleL: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
37
+ titleM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
38
+ titleS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 650; font-family: Inter, sans-serif;',
39
+ titleXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 650; font-family: Inter, sans-serif;',
40
+ bodyL: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
41
+ bodyLMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
42
+ bodyLStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: Inter, sans-serif;',
43
+ bodyM: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
44
+ bodyMMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
45
+ bodyMStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: Inter, sans-serif;',
46
+ bodyS: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
47
+ bodySMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
48
+ bodySStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: Inter, sans-serif;',
49
+ codeL: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
50
+ codeLMedium: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
51
+ codeLStrong: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
52
+ codeM: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
53
+ codeMMedium: "font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
54
+ codeMStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
55
+ codeS: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
56
+ codeSMedium: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
57
+ codeSStrong: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
58
+ },
59
+
60
+ desktop: {
61
+ title3xl: 'font-size: 3.6rem; line-height: 4.4rem; font-weight: 700; font-family: Inter, sans-serif;',
62
+ title2xl: 'font-size: 2.8rem; line-height: 3.2rem; font-weight: 700; font-family: Inter, sans-serif;',
63
+ titleXl: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
64
+ titleL: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
65
+ titleM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
66
+ titleS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 650; font-family: Inter, sans-serif;',
67
+ titleXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 650; font-family: Inter, sans-serif;',
68
+ bodyL: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
69
+ bodyLMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
70
+ bodyLStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: Inter, sans-serif;',
71
+ bodyM: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
72
+ bodyMMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
73
+ bodyMStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: Inter, sans-serif;',
74
+ bodyS: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
75
+ bodySMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
76
+ bodySStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: Inter, sans-serif;',
77
+ codeL: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
78
+ codeLMedium: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
79
+ codeLStrong: "font-size: 1.6rem; line-height: 2.4rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
80
+ codeM: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
81
+ codeMMedium: "font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
82
+ codeMStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
83
+ codeS: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
84
+ codeSMedium: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
85
+ codeSStrong: "font-size: 1.2rem; line-height: 1.6rem; font-weight: 600; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
86
+ },
87
+ },
88
+
89
+ marketing: {
90
+ mobile: {
91
+ title3xl: "font-size: 5.2rem; line-height: 6rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
92
+ title2xl: "font-size: 3.6rem; line-height: 4.6rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
93
+ titleXl: "font-size: 3.2rem; line-height: 4.2rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
94
+ titleL: "font-size: 2.8rem; line-height: 3.6rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
95
+ titleM: "font-size: 2.4rem; line-height: 3.2rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
96
+ titleS: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
97
+ titleXs: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
98
+ bodyL: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 400; font-family: Inter, sans-serif;',
99
+ bodyLMedium: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 500; font-family: Inter, sans-serif;',
100
+ bodyLStrong: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
101
+ bodyM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
102
+ bodyMMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
103
+ bodyMStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
104
+ bodyS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
105
+ bodySMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
106
+ bodySStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
107
+ bodyXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
108
+ bodyXsMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
109
+ bodyXsStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
110
+ },
111
+
112
+ tablet: {
113
+ title3xl: "font-size: 6.6rem; line-height: 7.6rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
114
+ title2xl: "font-size: 4.8rem; line-height: 5.8rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
115
+ titleXl: "font-size: 4.4rem; line-height: 5.4rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
116
+ titleL: "font-size: 3.2rem; line-height: 4.2rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
117
+ titleM: "font-size: 2.6rem; line-height: 3rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
118
+ titleS: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
119
+ titleXs: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
120
+ bodyL: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 400; font-family: Inter, sans-serif;',
121
+ bodyLMedium: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 500; font-family: Inter, sans-serif;',
122
+ bodyLStrong: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
123
+ bodyM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
124
+ bodyMMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
125
+ bodyMStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
126
+ bodyS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
127
+ bodySMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
128
+ bodySStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
129
+ bodyXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
130
+ bodyXsMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
131
+ bodyXsStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
132
+ },
133
+
134
+ desktop: {
135
+ title3xl: "font-size: 7.2rem; line-height: 8.2rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
136
+ title2xl: "font-size: 5.8rem; line-height: 6.8rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
137
+ titleXl: "font-size: 4.8rem; line-height: 5.8rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
138
+ titleL: "font-size: 4rem; line-height: 5rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
139
+ titleM: "font-size: 2.6rem; line-height: 3.4rem; font-weight: 400; font-family: 'GT-Walsheim-Regular', sans-serif;",
140
+ titleS: 'font-size: 2rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
141
+ titleXs: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 650; font-family: Inter, sans-serif;',
142
+ bodyL: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 400; font-family: Inter, sans-serif;',
143
+ bodyLMedium: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 500; font-family: Inter, sans-serif;',
144
+ bodyLStrong: 'font-size: 1.8rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
145
+ bodyM: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
146
+ bodyMMedium: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 500; font-family: Inter, sans-serif;',
147
+ bodyMStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
148
+ bodyS: 'font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: Inter, sans-serif;',
149
+ bodySMedium: 'font-size: 1.4rem; line-height: 2rem; font-weight: 500; font-family: Inter, sans-serif;',
150
+ bodySStrong: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
151
+ bodyXs: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 400; font-family: Inter, sans-serif;',
152
+ bodyXsMedium: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 500; font-family: Inter, sans-serif;',
153
+ bodyXsStrong: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
154
+ },
155
+ },
156
+
157
+ content: {
158
+ mobile: {
159
+ heading1: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
160
+ heading2: 'font-size: 2rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
161
+ heading3: 'font-size: 1.8rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
162
+ heading4: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
163
+ heading5: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
164
+ heading6: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
165
+ paragraph: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
166
+ paragraphStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
167
+ snippet: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
168
+ snippetStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
169
+ },
170
+
171
+ tablet: {
172
+ heading1: 'font-size: 3.2rem; line-height: 4rem; font-weight: 700; font-family: Inter, sans-serif;',
173
+ heading2: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
174
+ heading3: 'font-size: 2rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
175
+ heading4: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
176
+ heading5: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
177
+ heading6: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
178
+ paragraph: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
179
+ paragraphStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
180
+ snippet: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
181
+ snippetStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
182
+ },
183
+
184
+ desktop: {
185
+ heading1: 'font-size: 3.2rem; line-height: 4rem; font-weight: 700; font-family: Inter, sans-serif;',
186
+ heading2: 'font-size: 2.4rem; line-height: 2.8rem; font-weight: 700; font-family: Inter, sans-serif;',
187
+ heading3: 'font-size: 2rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
188
+ heading4: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
189
+ heading5: 'font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: Inter, sans-serif;',
190
+ heading6: 'font-size: 1.2rem; line-height: 1.6rem; font-weight: 700; font-family: Inter, sans-serif;',
191
+ paragraph: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 400; font-family: Inter, sans-serif;',
192
+ paragraphStrong: 'font-size: 1.6rem; line-height: 2.4rem; font-weight: 700; font-family: Inter, sans-serif;',
193
+ snippet: "font-size: 1.4rem; line-height: 2rem; font-weight: 400; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
194
+ snippetStrong: "font-size: 1.4rem; line-height: 2rem; font-weight: 700; font-family: 'IBM Plex Mono', Consolas, 'Liberation Mono', Menlo, monospace;",
195
+ },
196
+ },
197
+ } as const;
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './components';
2
+ export * from './utils';
3
+ export * from './design_system/tokens/index';
4
+ export * from './design_system/theme';
5
+ export * from './ui_dependency_provider';
6
+
7
+ export * from './type_utils';
@@ -0,0 +1,7 @@
1
+ // This utility will add $ at the beginning of the each interface prop
2
+ // We do that in order to tell styled component to not propagate the given prop down to the dom element
3
+ // It's called transient props (https://styled-components.com/docs/api#transient-props)
4
+ export type WithTransientProps<T> = { [P in keyof T & string as `$${P}`]: T[P] };
5
+
6
+ export type WithRequired<T, K extends keyof T> = T & Required<Pick<T, K>>
7
+ export type WithOptional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
@@ -0,0 +1,50 @@
1
+ import React, { createContext, useContext } from 'react';
2
+
3
+ import type { UiThemeOption } from './design_system/theme';
4
+
5
+ export interface AgnosticInternalLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
6
+ // Here we should add special props that are supported by all Link implementation we use (react-router on console & next.js on web)
7
+ // The name or api could differ though - but as long as the functionality is supported we are good to go.
8
+ // For example: to is not supported by next.js link but it can be easily mapped. Other example is state which is not supported by next.js
9
+ replace?: boolean;
10
+ href: string;
11
+ }
12
+
13
+ export interface UiDependencies {
14
+ InternalLink: React.ForwardRefExoticComponent<AgnosticInternalLinkProps & React.RefAttributes<HTMLAnchorElement>>,
15
+ InternalImage: React.ForwardRefExoticComponent<React.RefAttributes<HTMLImageElement>>,
16
+ // We want to use Button from 'ui-components' directly in console before reexport doesn't preserve the typing
17
+ // Once console button is in ts, we can just define tracking logic there.
18
+ trackClick?: (id: string, data?: object) => void,
19
+ // We need to pass the current host from outside to be able to seamlessly use Links with next SSR
20
+ windowLocationHost: string,
21
+ // whether the href is trusted depends on setting (web/console location)
22
+ isHrefTrusted: (href: string) => boolean,
23
+ uiTheme?: UiThemeOption, // Optional - as we can just fallback to light theme on the web
24
+ // TODO: Make required once we add it on the web
25
+ generateProxyImageUrl?: (url: string, options: { extension?: string, resize?: { width?: number, height?: number } }) => string
26
+ }
27
+
28
+ interface UiDependencyProviderProps {
29
+ children: React.ReactNode,
30
+ dependencies: UiDependencies
31
+ }
32
+
33
+ const DependencyProviderContext = createContext<UiDependencies | null>(null);
34
+
35
+ export const useSharedUiDependencies = () => {
36
+ const uiDependencies = useContext(DependencyProviderContext);
37
+ if (!uiDependencies) throw new Error('Application must be wrapped by UiDependencyProvider');
38
+ return uiDependencies;
39
+ };
40
+
41
+ export const UiDependencyProvider: React.FC<UiDependencyProviderProps> = ({
42
+ children,
43
+ dependencies,
44
+ }) => {
45
+ return (
46
+ <DependencyProviderContext.Provider value={dependencies}>
47
+ {children}
48
+ </DependencyProviderContext.Provider>
49
+ );
50
+ };
@@ -0,0 +1,24 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ interface UseCopyToClipboardProps {
4
+ text: string;
5
+ transform?: (text: string) => string;
6
+ }
7
+
8
+ export const useCopyToClipboard = ({ text, transform }: UseCopyToClipboardProps): [boolean, () => void] => {
9
+ const [toCopy, setToCopy] = useState(text);
10
+ const [isCopied, setCopied] = useState(false);
11
+
12
+ const handleClick = async () => {
13
+ await navigator.clipboard.writeText(toCopy);
14
+ setCopied(true);
15
+ setTimeout(() => setCopied(false), 1000);
16
+ };
17
+
18
+ // Need the useEffect because of SSR on web
19
+ useEffect(() => {
20
+ setToCopy(transform ? transform(text) : text);
21
+ }, [text, transform]);
22
+
23
+ return [isCopied, handleClick];
24
+ };
@@ -0,0 +1,44 @@
1
+ import type { FastAverageColorResult } from 'fast-average-color';
2
+ import { FastAverageColor } from 'fast-average-color';
3
+ import type { RefCallback } from 'react';
4
+ import { useCallback, useState } from 'react';
5
+
6
+ import log from '@apify/log';
7
+
8
+ // Uses Luma (Y component of YIQ) computed from RGB to determine whether the color is dark.
9
+ // See https://en.wikipedia.org/wiki/YIQ
10
+ const isDark = (rgb: number[]): boolean => {
11
+ const y = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
12
+ return y < 200;
13
+ };
14
+
15
+ // The method used by the fast-average-color library to determine darkness does not fit our needs.
16
+ const patchDarknessInfo = (color: FastAverageColorResult): FastAverageColorResult => ({
17
+ ...color,
18
+ isDark: isDark(color.value),
19
+ isLight: !isDark(color.value),
20
+ });
21
+
22
+ const fac = new FastAverageColor();
23
+
24
+ export const useImageColor = () => {
25
+ const [color, setColor] = useState<FastAverageColorResult>();
26
+
27
+ const refCallback = useCallback<RefCallback<HTMLImageElement>>((element) => {
28
+ const updateColor = async () => {
29
+ if (!element) {
30
+ return;
31
+ }
32
+
33
+ try {
34
+ setColor(patchDarknessInfo(await fac.getColorAsync(element)));
35
+ } catch (error) {
36
+ log.error('Failed to determine the image color.', { error });
37
+ }
38
+ };
39
+
40
+ void updateColor();
41
+ }, []);
42
+
43
+ return { color, refCallback };
44
+ };
@@ -0,0 +1,3 @@
1
+ export * from './copy_to_clipboard';
2
+ export * from './sanitization';
3
+ export * from './image_color';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * This utility function sanitizes a URL by parsing it and returning the string representation of the URL.
3
+ * This removed any UTF-8 characters and replaces them with their ASCII equivalents. This is needed because
4
+ * otherwise users can use UTF-8 characters to obfuscate URLs and make them look like legitimate URLs.
5
+ *
6
+ * @param url URL to sanitize
7
+ * @returns Sanitized URL or empty string if URL is not a string
8
+ * @throws Error if URL is not valid
9
+ */
10
+ export const sanitizeUrl = (url: string) => {
11
+ if (typeof url !== 'string') return '';
12
+ const parsedUrl = new URL(url);
13
+ return parsedUrl.toString();
14
+ };
@@ -0,0 +1,18 @@
1
+ {
2
+ "extends": "../../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "jsx": "preserve",
6
+ "lib": ["dom", "ES2019"],
7
+ "module": "ESNext",
8
+ "skipLibCheck": true,
9
+ },
10
+ "references": [
11
+ { "path": "../icons/tsconfig.build.json" },
12
+ { "path": "../image-proxy-client/tsconfig.build.json" },
13
+ { "path": "../ui-icons/tsconfig.build.json" },
14
+ ],
15
+ "include": [
16
+ "src/**/*"
17
+ ]
18
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "jsx": "preserve",
5
+ "lib": ["dom", "ES2019"],
6
+ "module": "ES2022",
7
+ "skipLibCheck": true,
8
+ "outDir": "./dist"
9
+ },
10
+ }