@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,94 @@
1
+ import {
2
+ type UseFloatingReturn,
3
+ type ReferenceType,
4
+ } from '@floating-ui/react';
5
+ import React, { forwardRef } from 'react';
6
+ import styled, { css } from 'styled-components';
7
+
8
+ import { ChevronDown16 } from '@apify/icons';
9
+
10
+ import { theme } from '../../design_system/theme';
11
+ import { Box } from '../box';
12
+
13
+ export type FloatingContext = Pick<UseFloatingReturn<ReferenceType>, 'context'>['context'];
14
+
15
+ /**
16
+ * Menu wrapper component
17
+ */
18
+ export const ListMenuComponent = styled(Box).attrs({
19
+ p: 'space8',
20
+ })`
21
+ display: flex;
22
+ flex-direction: column;
23
+ max-height: 300px;
24
+ min-width: 160px;
25
+ box-shadow: ${theme.shadow.shadow2};
26
+ background: ${theme.color.neutral.background};
27
+ border: 1px solid ${theme.color.neutral.separatorSubtle};
28
+ border-radius: ${theme.radius.radius8};
29
+ scrollbar-color: ${theme.color.neutral.separatorSubtle} ${theme.color.neutral.background};
30
+ outline: none;
31
+ overflow-y: auto;
32
+ z-index: 10;
33
+ `;
34
+
35
+ interface SelectableListMenuItemProps {
36
+ $isActive?: boolean,
37
+ $isSelected?: boolean,
38
+ }
39
+
40
+ /**
41
+ * Menu item component
42
+ */
43
+ export const ListMenuItemComponent = styled(Box).attrs({
44
+ px: 'space8',
45
+ })<SelectableListMenuItemProps>`
46
+ border-radius: ${theme.radius.radius8};
47
+ outline: none;
48
+ cursor: pointer;
49
+ white-space: nowrap;
50
+
51
+ ${({ $isActive }) => $isActive && css`
52
+ background-color: ${theme.color.neutral.hover};
53
+ `}
54
+
55
+ ${({ $isSelected }) => $isSelected && css`
56
+ background-color: ${theme.color.neutral.backgroundSubtle};
57
+ color: ${theme.color.primary.text};
58
+ `}
59
+ `;
60
+
61
+ /**
62
+ * Menu base component WITHOUT dropdown icon
63
+ */
64
+ export const PlainMenuBaseComponent = styled(Box)`
65
+ display: flex;
66
+ align-items: center;
67
+ gap: ${theme.space.space4};
68
+ padding: ${theme.space.space8};
69
+ border-radius: ${theme.radius.radius8};
70
+ border: 1px solid ${theme.color.neutral.separatorSubtle};
71
+ background-color: ${theme.color.neutral.backgroundMuted};
72
+
73
+ cursor: pointer;
74
+ transition: background-color 0.2s ease-in-out;
75
+
76
+ &:hover {
77
+ background-color: ${theme.color.neutral.backgroundSubtle};
78
+ }
79
+ `;
80
+
81
+ /**
82
+ * Menu base component WITH dropdown icon
83
+ */
84
+ export const DropdownMenuBaseComponent = forwardRef<HTMLElement, any>(({
85
+ children,
86
+ ...props
87
+ }, ref) => {
88
+ return (
89
+ <PlainMenuBaseComponent {...props} ref={ref}>
90
+ {children}
91
+ <ChevronDown16 color={theme.color.neutral.icon} />
92
+ </PlainMenuBaseComponent>
93
+ );
94
+ });
@@ -0,0 +1,23 @@
1
+ import React, { forwardRef } from 'react';
2
+
3
+ import { useSharedUiDependencies } from '../ui_dependency_provider';
4
+ import { Box, type BoxProps } from './box';
5
+
6
+ type ImageProps = {
7
+ src: string,
8
+ alt?: string,
9
+ width?: number,
10
+ height?: number,
11
+ loading?: 'eager' | 'lazy' | undefined;
12
+ }
13
+
14
+ export const Image = forwardRef<HTMLImageElement, ImageProps & Omit<BoxProps, 'as'>>((props, ref) => {
15
+ const { InternalImage } = useSharedUiDependencies();
16
+ return (
17
+ <Box
18
+ ref={ref}
19
+ {...props}
20
+ as={InternalImage}
21
+ />
22
+ );
23
+ });
@@ -0,0 +1,20 @@
1
+ export * from './text';
2
+ export * from './box';
3
+ export * from './message';
4
+ export * from './floating';
5
+ export * from './button';
6
+ export * from './link';
7
+ export * from './action_link';
8
+ export * from './simple_markdown';
9
+ export * from './code';
10
+ export * from './color_wheel_gradient';
11
+ export * from './readme_renderer';
12
+ export * from './to_consolidate';
13
+ export * from './tile';
14
+ export * from './blog_article';
15
+ export * from './banner';
16
+ export * from './actor_template_card';
17
+ export * from './chip';
18
+ export * from './image';
19
+ export * from './badge';
20
+ export * from './tag';
@@ -0,0 +1,114 @@
1
+ import clsx from 'clsx';
2
+ import { createPath, type Path } from 'history';
3
+ import React, { forwardRef } from 'react';
4
+ import styled from 'styled-components';
5
+
6
+ import { ExternalLink16 } from '@apify/icons';
7
+
8
+ import { theme } from '../design_system/theme';
9
+ import { useSharedUiDependencies } from '../ui_dependency_provider';
10
+ import { Box, type BoxProps } from './box';
11
+
12
+ export type To = string | Partial<Path>;
13
+ export interface RegularLinkProps {
14
+ to: To,
15
+ hideExternalIcon?: boolean,
16
+ showExternalIcon?: boolean,
17
+ rel?: string,
18
+ target?: string,
19
+ trackingId?: string,
20
+ trackingData?: object,
21
+ }
22
+
23
+ // TODO: This function is copied from tools.client.js. We can remove it from there once this is deployed
24
+ /**
25
+ * Checks if passed url is external
26
+ */
27
+ export const isUrlExternal = (url: To, windowLocationHost: string) => {
28
+ if (!url || typeof (url) !== 'string') return false;
29
+ const domainMatch = url.match(/^https?:\/\/([^/?#]+)(?:[/?#]|$)/i);
30
+ return !!(domainMatch && domainMatch[1] !== windowLocationHost);
31
+ };
32
+
33
+ // TODO: This function is copied from tools.client.js. We can remove it from there once this is deployed
34
+ /**
35
+ * Checks if passed url is email
36
+ */
37
+ export const isUrlEmail = (url: To) => {
38
+ if (!url || typeof (url) !== 'string') return false;
39
+ return url.startsWith('mailto:');
40
+ };
41
+
42
+ const StyledLink = styled(Box)`
43
+ /* Basic positioning */
44
+ display: inline-flex;
45
+ align-items: center;
46
+ gap: ${theme.space.space4};
47
+
48
+ /* Default behavior */
49
+ text-decoration: none;
50
+ transition: color ${theme.transition.fastEaseInOut};
51
+
52
+ &:hover {
53
+ text-decoration: none;
54
+ color: ${theme.color.primary.actionHover};
55
+ }
56
+
57
+ &:active {
58
+ color: ${theme.color.primary.actionActive};
59
+ }
60
+ `;
61
+
62
+ export type LinkProps = RegularLinkProps & BoxProps;
63
+
64
+ export const Link = forwardRef<HTMLElement, LinkProps>(({
65
+ to,
66
+ children,
67
+ rel,
68
+ target,
69
+ hideExternalIcon,
70
+ showExternalIcon,
71
+ onClick,
72
+ trackingId,
73
+ trackingData,
74
+ ...rest
75
+ }, ref) => {
76
+ const {
77
+ windowLocationHost,
78
+ isHrefTrusted,
79
+ trackClick,
80
+ InternalLink,
81
+ } = useSharedUiDependencies();
82
+ const href = typeof (to) === 'string' ? to : createPath(to);
83
+ const isExternal = isUrlExternal(to, windowLocationHost);
84
+ const isEmail = isUrlEmail(to);
85
+ const isTrusted = isHrefTrusted(href);
86
+
87
+ const trackedOnClick = (e: React.MouseEvent) => {
88
+ if (trackingId && trackClick) trackClick(trackingId, trackingData);
89
+ if (onClick) onClick(e);
90
+ };
91
+
92
+ const effectiveRel = clsx(
93
+ rel,
94
+ isExternal && 'external',
95
+ (isExternal || target === '_blank') && 'noopener noreferrer',
96
+ (isExternal && !isTrusted) && 'nofollow',
97
+ );
98
+
99
+ return (
100
+ <StyledLink
101
+ // We use the InternalLink only for internal navigation
102
+ forwardedAs={(isEmail || isExternal) ? 'a' : InternalLink}
103
+ href={href}
104
+ rel={effectiveRel}
105
+ target={target || (isExternal ? '_blank' : '_self')}
106
+ onClick={trackedOnClick}
107
+ ref={ref}
108
+ {...rest}
109
+ >
110
+ {children}
111
+ {((isExternal && !hideExternalIcon) || showExternalIcon) && <ExternalLink16 />}
112
+ </StyledLink>
113
+ );
114
+ });
@@ -0,0 +1,157 @@
1
+ import clsx from 'clsx';
2
+ import React from 'react';
3
+ import styled from 'styled-components';
4
+
5
+ import {
6
+ AlertTriangle20,
7
+ CheckCircle20,
8
+ Info20,
9
+ X16,
10
+ } from '@apify/icons';
11
+
12
+ import { theme } from '../design_system/theme';
13
+ import { Box, type BoxProps } from './box';
14
+ import { Button } from './button';
15
+ import { Heading } from './text';
16
+
17
+ export const messageClassNames = {
18
+ main: 'Message',
19
+ icon: 'icon',
20
+ content: 'content',
21
+ caption: 'caption',
22
+ dismiss: 'dismiss',
23
+ };
24
+
25
+ const StyledMessage = styled(Box)`
26
+ display: flex;
27
+ gap: ${theme.space.space8};
28
+
29
+ border-radius: ${theme.radius.radius8};
30
+ box-shadow: ${theme.shadow.shadow1};
31
+
32
+ .${messageClassNames.content} {
33
+ flex: 1;
34
+ margin-top: 1px; /* This is to align icon with text (align-items: center not possible - icon should be on top) */
35
+ }
36
+
37
+ .${messageClassNames.caption} {
38
+ /* TODO: We should not override the default Heading that is rendered for caption but it doesn't look good without these */
39
+ line-height: 20px;
40
+ font-weight: 600;
41
+ margin-bottom: ${theme.space.space4};
42
+ }
43
+
44
+ .${messageClassNames.dismiss} {
45
+ background: transparent;
46
+
47
+ svg {
48
+ color: ${theme.color.neutral.icon}
49
+ }
50
+ }
51
+
52
+ &.borderless {
53
+ border: none !important;
54
+ background-color: transparent !important;
55
+ box-shadow: none !important;
56
+ }
57
+
58
+ &.info {
59
+ background-color: ${theme.color.neutral.background};
60
+ border: 1px solid ${theme.color.neutral.border};
61
+
62
+ .${messageClassNames.icon} { color: ${theme.color.primary.icon}; }
63
+ }
64
+
65
+ &.success {
66
+ background-color: ${theme.color.success.backgroundSubtle};
67
+ border: 1px solid ${theme.color.success.borderSubtle};
68
+
69
+ .${messageClassNames.icon} { color: ${theme.color.success.icon}; }
70
+ }
71
+
72
+ &.warning {
73
+ background-color: ${theme.color.warning.backgroundSubtle};
74
+ border: 1px solid ${theme.color.warning.borderSubtle};
75
+
76
+ .${messageClassNames.icon} { color: ${theme.color.warning.icon}; }
77
+ }
78
+
79
+ &.danger {
80
+ background-color: ${theme.color.danger.backgroundSubtle};
81
+ border: 1px solid ${theme.color.danger.borderSubtle};
82
+
83
+ .${messageClassNames.icon} { color: ${theme.color.danger.icon}; }
84
+ }
85
+ `;
86
+
87
+ export type MessageType = 'info' | 'warning' | 'success' | 'danger';
88
+
89
+ const typeToIcon: { [key in MessageType]: React.ElementType } = {
90
+ info: Info20,
91
+ success: CheckCircle20,
92
+ warning: AlertTriangle20,
93
+ danger: AlertTriangle20,
94
+ };
95
+
96
+ type MessageProps = BoxProps & {
97
+ type: MessageType,
98
+ caption?: string,
99
+ icon?: React.ElementType,
100
+ onDismissClick?: () => void,
101
+ borderless?: boolean,
102
+ boxless?: boolean,
103
+ as?: React.ElementType,
104
+ dismissTrackingId?: string,
105
+ }
106
+
107
+ /**
108
+ * Component used to display larger messages that are part of the content of the application.
109
+ */
110
+ export const Message: React.FC<MessageProps> = ({
111
+ className,
112
+ icon,
113
+ caption,
114
+ children,
115
+ onDismissClick,
116
+ type = 'warning',
117
+ borderless = false,
118
+ boxless = false,
119
+ dismissTrackingId,
120
+ as,
121
+ ...rest
122
+ }) => {
123
+ const Icon = icon || typeToIcon[type];
124
+ return (
125
+ <StyledMessage
126
+ className={clsx(className, messageClassNames.main, type, borderless && 'borderless')}
127
+ mb={boxless ? 'space8' : 'space16'} // TODO: Export message without margin
128
+ p={boxless ? 'none' : 'space16'}
129
+ forwardedAs={as}
130
+ {...rest}
131
+ >
132
+ <div className={messageClassNames.icon}><Icon /></div>
133
+ <div className={messageClassNames.content}>
134
+ {caption && (<Heading as='div' type='titleM' className={messageClassNames.caption}>{caption}</Heading>)}
135
+ {children}
136
+ </div>
137
+ {onDismissClick && (
138
+ <Button
139
+ size='small'
140
+ variant='text'
141
+ trackingId={dismissTrackingId}
142
+ onClick={onDismissClick}
143
+ className={messageClassNames.dismiss}
144
+ >
145
+ <X16 />
146
+ </Button>
147
+ )}
148
+ </StyledMessage>
149
+ );
150
+ };
151
+
152
+ type SpecificMessageProps = Omit<MessageProps, 'type'>;
153
+ // Semantic classes for all the message types
154
+ export const InfoMessage = (props: SpecificMessageProps) => (<Message {...props} type='info' />);
155
+ export const WarningMessage = (props: SpecificMessageProps) => (<Message {...props} type='warning' />);
156
+ export const SuccessMessage = (props: SpecificMessageProps) => (<Message {...props} type='success' />);
157
+ export const DangerMessage = (props: SpecificMessageProps) => (<Message {...props} type='danger' />);
@@ -0,0 +1,3 @@
1
+ export { useActorTitleHeadingFilter } from './utils';
2
+ export { default as pythonizeValue } from './pythonize_value';
3
+ export { default as TableOfContents } from './table_of_contents';
@@ -0,0 +1,78 @@
1
+ /* eslint-disable prefer-template, no-control-regex */
2
+ // Escaped versions of control characters
3
+ const escapes = {
4
+ 92: '\\\\',
5
+ 34: '\\"',
6
+ 8: '\\b',
7
+ 12: '\\f',
8
+ 13: '\\r',
9
+ 9: '\\t',
10
+ };
11
+
12
+ // Replaces a control character with its escaped value
13
+ const escapeChar = (character: string) => {
14
+ const charCode = character.charCodeAt(0);
15
+ const escaped = escapes[charCode as keyof typeof escapes];
16
+ if (escaped) {
17
+ return escaped;
18
+ }
19
+ return '\\u00' + charCode.toString(16).padStart(2, '0');
20
+ };
21
+
22
+ // Escapes special characters in a string and surrounds it with proper quotes
23
+ const pythonQuoteString = (str: string, escapeNewlines = true) => {
24
+ const escapedValue = str.replace(/[\x00-\x09\x0b-\x1f\x22\x5c]/g, escapeChar);
25
+ if (!escapeNewlines && /\n/.test(escapedValue)) {
26
+ return '"""' + escapedValue + '"""';
27
+ }
28
+ return '"' + escapedValue.replace(/\n/g, '\\n') + '"';
29
+ };
30
+
31
+ const INDENT = ' ';
32
+
33
+ // Converts a Javascript value to its equivalent Python representation
34
+ // Doesn't support everything, because that would be impossible,
35
+ // only the values which are supported in an input schema prefill (booleans, numbers, strings, arrays, objects)
36
+ // Tries to keep the representation short, but readable.
37
+ const pythonizeValue = <T>(value: T, depth = 0): string | T => {
38
+ // None-like values
39
+ if (value === undefined) return 'None';
40
+ if (value === null) return 'None';
41
+
42
+ // Boolean values
43
+ if (value === true) return 'True';
44
+ if (value === false) return 'False';
45
+
46
+ // Number values (sorry, JSON doesn't support infinities)
47
+ if (value === Infinity) return 'None';
48
+ if (value === -Infinity) return 'None';
49
+ if (Number.isNaN(value)) return 'None';
50
+ if (typeof value === 'number') return value;
51
+
52
+ // String values
53
+ if (typeof value === 'string') return pythonQuoteString(value, false);
54
+
55
+ // Arrays of values
56
+ if (Array.isArray(value)) {
57
+ if (value.length === 0) return '[]';
58
+ if (value.length === 1) return '[' + pythonizeValue(value[0], depth + 1) + ']';
59
+ return '[\n'
60
+ + value.map((v) => INDENT.repeat(depth + 1) + pythonizeValue(v, depth + 1) + ',\n').join('')
61
+ + INDENT.repeat(depth) + ']';
62
+ }
63
+
64
+ // Object values
65
+ if (typeof value === 'object') {
66
+ const entries = Object.entries(value);
67
+ if (entries.length === 0) return '{}';
68
+ if (entries.length === 1) return '{ ' + pythonQuoteString(entries[0][0]) + ': ' + pythonizeValue(entries[0][1], depth + 1) + ' }';
69
+ return '{\n'
70
+ + entries.map(([k, v]) => INDENT.repeat(depth + 1) + pythonQuoteString(k) + ': ' + pythonizeValue(v, depth + 1) + ',\n').join('')
71
+ + INDENT.repeat(depth) + '}';
72
+ }
73
+
74
+ // This should never happen, if it did, something went wrong
75
+ return 'UNSUPPORTED VALUE';
76
+ };
77
+
78
+ export default pythonizeValue;