@elastic/isomer-studio 0.0.0 → 0.4.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 (406) hide show
  1. package/LICENSE.txt +93 -0
  2. package/NOTICE.txt +17329 -0
  3. package/README.md +64 -0
  4. package/THIRD_PARTY_LICENSES.md +404 -0
  5. package/bin/isomer-studio.js +10 -0
  6. package/dist/app/assets/codicon-5T574S7B.ttf +0 -0
  7. package/dist/app/assets/editor.worker.js +11 -0
  8. package/dist/app/assets/esbuild.wasm +0 -0
  9. package/dist/app/assets/json.worker.js +47 -0
  10. package/dist/app/assets/slack.css +1 -0
  11. package/dist/app/assets/studio.css +11 -0
  12. package/dist/app/assets/ts.worker.js +37029 -0
  13. package/dist/app/index.html +16 -0
  14. package/dist/apps/app_host.d.ts +8 -0
  15. package/dist/apps/app_host.d.ts.map +1 -0
  16. package/dist/apps/app_host.js +73 -0
  17. package/dist/apps/app_host.js.map +1 -0
  18. package/dist/browser/dev_host.d.ts +5 -0
  19. package/dist/browser/dev_host.d.ts.map +1 -0
  20. package/dist/browser/dev_host.js +46 -0
  21. package/dist/browser/dev_host.js.map +1 -0
  22. package/dist/browser/mount.d.ts +16 -0
  23. package/dist/browser/mount.d.ts.map +1 -0
  24. package/dist/browser/mount.js +37 -0
  25. package/dist/browser/mount.js.map +1 -0
  26. package/dist/browser/static_host.d.ts +5 -0
  27. package/dist/browser/static_host.d.ts.map +1 -0
  28. package/dist/browser/static_host.js +55 -0
  29. package/dist/browser/static_host.js.map +1 -0
  30. package/dist/chrome/accent.d.ts +14 -0
  31. package/dist/chrome/accent.d.ts.map +1 -0
  32. package/dist/chrome/accent.js +31 -0
  33. package/dist/chrome/accent.js.map +1 -0
  34. package/dist/chrome/app_pages.d.ts +13 -0
  35. package/dist/chrome/app_pages.d.ts.map +1 -0
  36. package/dist/chrome/app_pages.js +33 -0
  37. package/dist/chrome/app_pages.js.map +1 -0
  38. package/dist/chrome/color_mode.d.ts +10 -0
  39. package/dist/chrome/color_mode.d.ts.map +1 -0
  40. package/dist/chrome/color_mode.js +45 -0
  41. package/dist/chrome/color_mode.js.map +1 -0
  42. package/dist/chrome/dev_tint.d.ts +7 -0
  43. package/dist/chrome/dev_tint.d.ts.map +1 -0
  44. package/dist/chrome/dev_tint.js +31 -0
  45. package/dist/chrome/dev_tint.js.map +1 -0
  46. package/dist/chrome/header.d.ts +20 -0
  47. package/dist/chrome/header.d.ts.map +1 -0
  48. package/dist/chrome/header.js +124 -0
  49. package/dist/chrome/header.js.map +1 -0
  50. package/dist/chrome/icon_data_uri.d.ts +12 -0
  51. package/dist/chrome/icon_data_uri.d.ts.map +1 -0
  52. package/dist/chrome/icon_data_uri.js +21 -0
  53. package/dist/chrome/icon_data_uri.js.map +1 -0
  54. package/dist/chrome/isomer_mark.d.ts +17 -0
  55. package/dist/chrome/isomer_mark.d.ts.map +1 -0
  56. package/dist/chrome/isomer_mark.js +46 -0
  57. package/dist/chrome/isomer_mark.js.map +1 -0
  58. package/dist/chrome/nav.d.ts +22 -0
  59. package/dist/chrome/nav.d.ts.map +1 -0
  60. package/dist/chrome/nav.js +306 -0
  61. package/dist/chrome/nav.js.map +1 -0
  62. package/dist/chrome/nav_groups.d.ts +6 -0
  63. package/dist/chrome/nav_groups.d.ts.map +1 -0
  64. package/dist/chrome/nav_groups.js +48 -0
  65. package/dist/chrome/nav_groups.js.map +1 -0
  66. package/dist/chrome/nav_sections.d.ts +29 -0
  67. package/dist/chrome/nav_sections.d.ts.map +1 -0
  68. package/dist/chrome/nav_sections.js +55 -0
  69. package/dist/chrome/nav_sections.js.map +1 -0
  70. package/dist/chrome/oklch.d.ts +10 -0
  71. package/dist/chrome/oklch.d.ts.map +1 -0
  72. package/dist/chrome/oklch.js +61 -0
  73. package/dist/chrome/oklch.js.map +1 -0
  74. package/dist/chrome/primitive_glyph.d.ts +14 -0
  75. package/dist/chrome/primitive_glyph.d.ts.map +1 -0
  76. package/dist/chrome/primitive_glyph.js +48 -0
  77. package/dist/chrome/primitive_glyph.js.map +1 -0
  78. package/dist/chrome/primitive_heading.d.ts +14 -0
  79. package/dist/chrome/primitive_heading.d.ts.map +1 -0
  80. package/dist/chrome/primitive_heading.js +32 -0
  81. package/dist/chrome/primitive_heading.js.map +1 -0
  82. package/dist/chrome/primitive_peek.d.ts +8 -0
  83. package/dist/chrome/primitive_peek.d.ts.map +1 -0
  84. package/dist/chrome/primitive_peek.js +51 -0
  85. package/dist/chrome/primitive_peek.js.map +1 -0
  86. package/dist/chrome/primitive_search.d.ts +9 -0
  87. package/dist/chrome/primitive_search.d.ts.map +1 -0
  88. package/dist/chrome/primitive_search.js +93 -0
  89. package/dist/chrome/primitive_search.js.map +1 -0
  90. package/dist/chrome/route.d.ts +48 -0
  91. package/dist/chrome/route.d.ts.map +1 -0
  92. package/dist/chrome/route.js +136 -0
  93. package/dist/chrome/route.js.map +1 -0
  94. package/dist/cli/args.d.ts +39 -0
  95. package/dist/cli/args.d.ts.map +1 -0
  96. package/dist/cli/args.js +171 -0
  97. package/dist/cli/args.js.map +1 -0
  98. package/dist/cli/run.d.ts +15 -0
  99. package/dist/cli/run.d.ts.map +1 -0
  100. package/dist/cli/run.js +113 -0
  101. package/dist/cli/run.js.map +1 -0
  102. package/dist/cli.d.ts +2 -0
  103. package/dist/cli.d.ts.map +1 -0
  104. package/dist/cli.js +22 -0
  105. package/dist/cli.js.map +1 -0
  106. package/dist/config.d.ts +118 -0
  107. package/dist/config.d.ts.map +1 -0
  108. package/dist/config.js +11 -0
  109. package/dist/config.js.map +1 -0
  110. package/dist/dev/code_editor.d.ts +10 -0
  111. package/dist/dev/code_editor.d.ts.map +1 -0
  112. package/dist/dev/code_editor.js +22 -0
  113. package/dist/dev/code_editor.js.map +1 -0
  114. package/dist/dev/dev_view.d.ts +9 -0
  115. package/dist/dev/dev_view.d.ts.map +1 -0
  116. package/dist/dev/dev_view.js +65 -0
  117. package/dist/dev/dev_view.js.map +1 -0
  118. package/dist/dev/editor_panel.d.ts +17 -0
  119. package/dist/dev/editor_panel.d.ts.map +1 -0
  120. package/dist/dev/editor_panel.js +51 -0
  121. package/dist/dev/editor_panel.js.map +1 -0
  122. package/dist/dev/monaco_editor.d.ts +15 -0
  123. package/dist/dev/monaco_editor.d.ts.map +1 -0
  124. package/dist/dev/monaco_editor.js +159 -0
  125. package/dist/dev/monaco_editor.js.map +1 -0
  126. package/dist/dev/preview_panel.d.ts +10 -0
  127. package/dist/dev/preview_panel.d.ts.map +1 -0
  128. package/dist/dev/preview_panel.js +45 -0
  129. package/dist/dev/preview_panel.js.map +1 -0
  130. package/dist/dev/prop_reference.d.ts +9 -0
  131. package/dist/dev/prop_reference.d.ts.map +1 -0
  132. package/dist/dev/prop_reference.js +134 -0
  133. package/dist/dev/prop_reference.js.map +1 -0
  134. package/dist/dev/tsx_language.d.ts +10 -0
  135. package/dist/dev/tsx_language.d.ts.map +1 -0
  136. package/dist/dev/tsx_language.js +283 -0
  137. package/dist/dev/tsx_language.js.map +1 -0
  138. package/dist/dev/use_editor.d.ts +23 -0
  139. package/dist/dev/use_editor.d.ts.map +1 -0
  140. package/dist/dev/use_editor.js +124 -0
  141. package/dist/dev/use_editor.js.map +1 -0
  142. package/dist/docs/docs_view.d.ts +10 -0
  143. package/dist/docs/docs_view.d.ts.map +1 -0
  144. package/dist/docs/docs_view.js +80 -0
  145. package/dist/docs/docs_view.js.map +1 -0
  146. package/dist/docs/example_source.d.ts +7 -0
  147. package/dist/docs/example_source.d.ts.map +1 -0
  148. package/dist/docs/example_source.js +56 -0
  149. package/dist/docs/example_source.js.map +1 -0
  150. package/dist/docs/examples_panel.d.ts +10 -0
  151. package/dist/docs/examples_panel.d.ts.map +1 -0
  152. package/dist/docs/examples_panel.js +51 -0
  153. package/dist/docs/examples_panel.js.map +1 -0
  154. package/dist/docs/gallery_view.d.ts +9 -0
  155. package/dist/docs/gallery_view.d.ts.map +1 -0
  156. package/dist/docs/gallery_view.js +98 -0
  157. package/dist/docs/gallery_view.js.map +1 -0
  158. package/dist/docs/inline_code.d.ts +11 -0
  159. package/dist/docs/inline_code.d.ts.map +1 -0
  160. package/dist/docs/inline_code.js +24 -0
  161. package/dist/docs/inline_code.js.map +1 -0
  162. package/dist/docs/on_this_page.d.ts +17 -0
  163. package/dist/docs/on_this_page.d.ts.map +1 -0
  164. package/dist/docs/on_this_page.js +77 -0
  165. package/dist/docs/on_this_page.js.map +1 -0
  166. package/dist/docs/props_table.d.ts +14 -0
  167. package/dist/docs/props_table.d.ts.map +1 -0
  168. package/dist/docs/props_table.js +34 -0
  169. package/dist/docs/props_table.js.map +1 -0
  170. package/dist/home/apps_section.d.ts +6 -0
  171. package/dist/home/apps_section.d.ts.map +1 -0
  172. package/dist/home/apps_section.js +44 -0
  173. package/dist/home/apps_section.js.map +1 -0
  174. package/dist/home/featured_strip.d.ts +12 -0
  175. package/dist/home/featured_strip.d.ts.map +1 -0
  176. package/dist/home/featured_strip.js +176 -0
  177. package/dist/home/featured_strip.js.map +1 -0
  178. package/dist/home/home_view.d.ts +11 -0
  179. package/dist/home/home_view.d.ts.map +1 -0
  180. package/dist/home/home_view.js +261 -0
  181. package/dist/home/home_view.js.map +1 -0
  182. package/dist/home/links.d.ts +8 -0
  183. package/dist/home/links.d.ts.map +1 -0
  184. package/dist/home/links.js +14 -0
  185. package/dist/home/links.js.map +1 -0
  186. package/dist/home/loaded_panel.d.ts +6 -0
  187. package/dist/home/loaded_panel.d.ts.map +1 -0
  188. package/dist/home/loaded_panel.js +116 -0
  189. package/dist/home/loaded_panel.js.map +1 -0
  190. package/dist/home/surface_chart.d.ts +6 -0
  191. package/dist/home/surface_chart.d.ts.map +1 -0
  192. package/dist/home/surface_chart.js +263 -0
  193. package/dist/home/surface_chart.js.map +1 -0
  194. package/dist/home/tokens.d.ts +49 -0
  195. package/dist/home/tokens.d.ts.map +1 -0
  196. package/dist/home/tokens.js +171 -0
  197. package/dist/home/tokens.js.map +1 -0
  198. package/dist/index.d.ts +6 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +9 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/model/app_problems.d.ts +4 -0
  203. package/dist/model/app_problems.d.ts.map +1 -0
  204. package/dist/model/app_problems.js +90 -0
  205. package/dist/model/app_problems.js.map +1 -0
  206. package/dist/model/authoring_types.d.ts +23 -0
  207. package/dist/model/authoring_types.d.ts.map +1 -0
  208. package/dist/model/authoring_types.js +35 -0
  209. package/dist/model/authoring_types.js.map +1 -0
  210. package/dist/model/compile_jsx.d.ts +19 -0
  211. package/dist/model/compile_jsx.d.ts.map +1 -0
  212. package/dist/model/compile_jsx.js +55 -0
  213. package/dist/model/compile_jsx.js.map +1 -0
  214. package/dist/model/compose_example.d.ts +9 -0
  215. package/dist/model/compose_example.d.ts.map +1 -0
  216. package/dist/model/compose_example.js +24 -0
  217. package/dist/model/compose_example.js.map +1 -0
  218. package/dist/model/composition_key.d.ts +6 -0
  219. package/dist/model/composition_key.d.ts.map +1 -0
  220. package/dist/model/composition_key.js +26 -0
  221. package/dist/model/composition_key.js.map +1 -0
  222. package/dist/model/describe_runtime.d.ts +33 -0
  223. package/dist/model/describe_runtime.d.ts.map +1 -0
  224. package/dist/model/describe_runtime.js +77 -0
  225. package/dist/model/describe_runtime.js.map +1 -0
  226. package/dist/model/featured.d.ts +11 -0
  227. package/dist/model/featured.d.ts.map +1 -0
  228. package/dist/model/featured.js +70 -0
  229. package/dist/model/featured.js.map +1 -0
  230. package/dist/model/jsx_transform.d.ts +10 -0
  231. package/dist/model/jsx_transform.d.ts.map +1 -0
  232. package/dist/model/jsx_transform.js +31 -0
  233. package/dist/model/jsx_transform.js.map +1 -0
  234. package/dist/model/png_manifest.d.ts +23 -0
  235. package/dist/model/png_manifest.d.ts.map +1 -0
  236. package/dist/model/png_manifest.js +26 -0
  237. package/dist/model/png_manifest.js.map +1 -0
  238. package/dist/model/read_examples.d.ts +12 -0
  239. package/dist/model/read_examples.d.ts.map +1 -0
  240. package/dist/model/read_examples.js +43 -0
  241. package/dist/model/read_examples.js.map +1 -0
  242. package/dist/model/search.d.ts +4 -0
  243. package/dist/model/search.d.ts.map +1 -0
  244. package/dist/model/search.js +29 -0
  245. package/dist/model/search.js.map +1 -0
  246. package/dist/model/sha256.d.ts +3 -0
  247. package/dist/model/sha256.d.ts.map +1 -0
  248. package/dist/model/sha256.js +72 -0
  249. package/dist/model/sha256.js.map +1 -0
  250. package/dist/model/slack_limits.d.ts +9 -0
  251. package/dist/model/slack_limits.d.ts.map +1 -0
  252. package/dist/model/slack_limits.js +213 -0
  253. package/dist/model/slack_limits.js.map +1 -0
  254. package/dist/node/app_bundle.d.ts +45 -0
  255. package/dist/node/app_bundle.d.ts.map +1 -0
  256. package/dist/node/app_bundle.js +212 -0
  257. package/dist/node/app_bundle.js.map +1 -0
  258. package/dist/node/build_site.d.ts +28 -0
  259. package/dist/node/build_site.d.ts.map +1 -0
  260. package/dist/node/build_site.js +90 -0
  261. package/dist/node/build_site.js.map +1 -0
  262. package/dist/node/check.d.ts +40 -0
  263. package/dist/node/check.d.ts.map +1 -0
  264. package/dist/node/check.js +162 -0
  265. package/dist/node/check.js.map +1 -0
  266. package/dist/node/dev_bundle.d.ts +21 -0
  267. package/dist/node/dev_bundle.d.ts.map +1 -0
  268. package/dist/node/dev_bundle.js +121 -0
  269. package/dist/node/dev_bundle.js.map +1 -0
  270. package/dist/node/dev_server.d.ts +16 -0
  271. package/dist/node/dev_server.d.ts.map +1 -0
  272. package/dist/node/dev_server.js +291 -0
  273. package/dist/node/dev_server.js.map +1 -0
  274. package/dist/node/init_config.d.ts +30 -0
  275. package/dist/node/init_config.d.ts.map +1 -0
  276. package/dist/node/init_config.js +158 -0
  277. package/dist/node/init_config.js.map +1 -0
  278. package/dist/node/load_config.d.ts +34 -0
  279. package/dist/node/load_config.d.ts.map +1 -0
  280. package/dist/node/load_config.js +246 -0
  281. package/dist/node/load_config.js.map +1 -0
  282. package/dist/node/project_resolution.d.ts +17 -0
  283. package/dist/node/project_resolution.d.ts.map +1 -0
  284. package/dist/node/project_resolution.js +66 -0
  285. package/dist/node/project_resolution.js.map +1 -0
  286. package/dist/node/rasterize.d.ts +23 -0
  287. package/dist/node/rasterize.d.ts.map +1 -0
  288. package/dist/node/rasterize.js +79 -0
  289. package/dist/node/rasterize.js.map +1 -0
  290. package/dist/node/report.d.ts +8 -0
  291. package/dist/node/report.d.ts.map +1 -0
  292. package/dist/node/report.js +57 -0
  293. package/dist/node/report.js.map +1 -0
  294. package/dist/node/resolve_hooks.d.ts +16 -0
  295. package/dist/node/resolve_hooks.d.ts.map +1 -0
  296. package/dist/node/resolve_hooks.js +104 -0
  297. package/dist/node/resolve_hooks.js.map +1 -0
  298. package/dist/studio.d.ts +4 -0
  299. package/dist/studio.d.ts.map +1 -0
  300. package/dist/studio.js +188 -0
  301. package/dist/studio.js.map +1 -0
  302. package/dist/studio_context.d.ts +27 -0
  303. package/dist/studio_context.d.ts.map +1 -0
  304. package/dist/studio_context.js +17 -0
  305. package/dist/studio_context.js.map +1 -0
  306. package/dist/surfaces/adopt_stylesheet.d.ts +7 -0
  307. package/dist/surfaces/adopt_stylesheet.d.ts.map +1 -0
  308. package/dist/surfaces/adopt_stylesheet.js +64 -0
  309. package/dist/surfaces/adopt_stylesheet.js.map +1 -0
  310. package/dist/surfaces/app_preview.d.ts +4 -0
  311. package/dist/surfaces/app_preview.d.ts.map +1 -0
  312. package/dist/surfaces/app_preview.js +28 -0
  313. package/dist/surfaces/app_preview.js.map +1 -0
  314. package/dist/surfaces/app_surface.d.ts +9 -0
  315. package/dist/surfaces/app_surface.d.ts.map +1 -0
  316. package/dist/surfaces/app_surface.js +27 -0
  317. package/dist/surfaces/app_surface.js.map +1 -0
  318. package/dist/surfaces/applicable_enhancements.d.ts +4 -0
  319. package/dist/surfaces/applicable_enhancements.d.ts.map +1 -0
  320. package/dist/surfaces/applicable_enhancements.js +16 -0
  321. package/dist/surfaces/applicable_enhancements.js.map +1 -0
  322. package/dist/surfaces/enhancement_select.d.ts +10 -0
  323. package/dist/surfaces/enhancement_select.d.ts.map +1 -0
  324. package/dist/surfaces/enhancement_select.js +28 -0
  325. package/dist/surfaces/enhancement_select.js.map +1 -0
  326. package/dist/surfaces/example_picker.d.ts +11 -0
  327. package/dist/surfaces/example_picker.d.ts.map +1 -0
  328. package/dist/surfaces/example_picker.js +44 -0
  329. package/dist/surfaces/example_picker.js.map +1 -0
  330. package/dist/surfaces/format_source.d.ts +4 -0
  331. package/dist/surfaces/format_source.d.ts.map +1 -0
  332. package/dist/surfaces/format_source.js +30 -0
  333. package/dist/surfaces/format_source.js.map +1 -0
  334. package/dist/surfaces/html_surface.d.ts +14 -0
  335. package/dist/surfaces/html_surface.d.ts.map +1 -0
  336. package/dist/surfaces/html_surface.js +122 -0
  337. package/dist/surfaces/html_surface.js.map +1 -0
  338. package/dist/surfaces/png_surface.d.ts +13 -0
  339. package/dist/surfaces/png_surface.d.ts.map +1 -0
  340. package/dist/surfaces/png_surface.js +68 -0
  341. package/dist/surfaces/png_surface.js.map +1 -0
  342. package/dist/surfaces/react_surface.d.ts +11 -0
  343. package/dist/surfaces/react_surface.d.ts.map +1 -0
  344. package/dist/surfaces/react_surface.js +55 -0
  345. package/dist/surfaces/react_surface.js.map +1 -0
  346. package/dist/surfaces/render_output.d.ts +31 -0
  347. package/dist/surfaces/render_output.d.ts.map +1 -0
  348. package/dist/surfaces/render_output.js +119 -0
  349. package/dist/surfaces/render_output.js.map +1 -0
  350. package/dist/surfaces/scaled_preview.d.ts +17 -0
  351. package/dist/surfaces/scaled_preview.d.ts.map +1 -0
  352. package/dist/surfaces/scaled_preview.js +74 -0
  353. package/dist/surfaces/scaled_preview.js.map +1 -0
  354. package/dist/surfaces/shadow_root.d.ts +8 -0
  355. package/dist/surfaces/shadow_root.d.ts.map +1 -0
  356. package/dist/surfaces/shadow_root.js +41 -0
  357. package/dist/surfaces/shadow_root.js.map +1 -0
  358. package/dist/surfaces/slack_surface.d.ts +12 -0
  359. package/dist/surfaces/slack_surface.d.ts.map +1 -0
  360. package/dist/surfaces/slack_surface.js +27 -0
  361. package/dist/surfaces/slack_surface.js.map +1 -0
  362. package/dist/surfaces/snapshot_surface.d.ts +6 -0
  363. package/dist/surfaces/snapshot_surface.d.ts.map +1 -0
  364. package/dist/surfaces/snapshot_surface.js +5 -0
  365. package/dist/surfaces/snapshot_surface.js.map +1 -0
  366. package/dist/surfaces/surface_board.d.ts +19 -0
  367. package/dist/surfaces/surface_board.d.ts.map +1 -0
  368. package/dist/surfaces/surface_board.js +128 -0
  369. package/dist/surfaces/surface_board.js.map +1 -0
  370. package/dist/surfaces/surface_frame.d.ts +8 -0
  371. package/dist/surfaces/surface_frame.d.ts.map +1 -0
  372. package/dist/surfaces/surface_frame.js +4 -0
  373. package/dist/surfaces/surface_frame.js.map +1 -0
  374. package/dist/surfaces/surface_logos.d.ts +9 -0
  375. package/dist/surfaces/surface_logos.d.ts.map +1 -0
  376. package/dist/surfaces/surface_logos.js +21 -0
  377. package/dist/surfaces/surface_logos.js.map +1 -0
  378. package/dist/surfaces/surface_preview.d.ts +32 -0
  379. package/dist/surfaces/surface_preview.d.ts.map +1 -0
  380. package/dist/surfaces/surface_preview.js +66 -0
  381. package/dist/surfaces/surface_preview.js.map +1 -0
  382. package/dist/surfaces/surface_select.d.ts +34 -0
  383. package/dist/surfaces/surface_select.d.ts.map +1 -0
  384. package/dist/surfaces/surface_select.js +119 -0
  385. package/dist/surfaces/surface_select.js.map +1 -0
  386. package/dist/surfaces/text_surfaces.d.ts +14 -0
  387. package/dist/surfaces/text_surfaces.d.ts.map +1 -0
  388. package/dist/surfaces/text_surfaces.js +31 -0
  389. package/dist/surfaces/text_surfaces.js.map +1 -0
  390. package/dist/surfaces/zoom_select.d.ts +9 -0
  391. package/dist/surfaces/zoom_select.d.ts.map +1 -0
  392. package/dist/surfaces/zoom_select.js +32 -0
  393. package/dist/surfaces/zoom_select.js.map +1 -0
  394. package/dist/types.d.ts +32 -0
  395. package/dist/types.d.ts.map +1 -0
  396. package/dist/types.js +9 -0
  397. package/dist/types.js.map +1 -0
  398. package/docs/ci.md +55 -0
  399. package/docs/commands.md +167 -0
  400. package/docs/config.md +192 -0
  401. package/docs/images/home.png +0 -0
  402. package/docs/images/reference.png +0 -0
  403. package/docs/images/workbench.png +0 -0
  404. package/docs/index.md +96 -0
  405. package/docs/toc.yml +10 -0
  406. package/package.json +89 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps_section.js","sourceRoot":"","sources":["../../src/home/apps_section.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,eAAe,EACf,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,UAAU,CAAC;AAElB,MAAM,OAAO,GAAG,CAAC,EACf,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAGtC,EAAE,EAAE,CAAC,CACJ,aACE,IAAI,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAC3C,GAAG,EAAE;QACH,IAAI,CAAC,CAAC,CAAC;QACP,GAAG,CAAA;;;0BAGiB,IAAI,CAAC,GAAG;;OAE3B;KACF,iBACW,UAAU,aACtB,gBAAM,GAAG,EAAE,OAAO,aAChB,eACE,GAAG,EAAE;wBACH,QAAQ;wBACR,GAAG,CAAA;qBACQ,IAAI,CAAC,GAAG;WAClB;qBACF,YACA,KAAK,GACD,EACP,eACE,GAAG,EAAE,GAAG,CAAA;mBACG,IAAI,CAAC,GAAG;;SAElB,YACD,KAAC,KAAK,IAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,GAC5C,IACF,EACP,eAAM,GAAG,EAAE,eAAe,YAAG,WAAW,IAAI,SAAS,KAAK,GAAG,GAAQ,EACrE,eAAM,GAAG,EAAE,WAAW,YACpB,eACE,GAAG,EAAE,GAAG,CAAA;mBACG,IAAI,CAAC,GAAG;SAClB,4BAEI,GACF,IACL,CACL,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAE,EAAE,CAAC,CACpD,aACE,IAAI,EAAE,aAAa,EACnB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,UAAU,EACd,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,iBACd,cAAc,aAC1B,eACE,GAAG,EAAE;gBACH,QAAQ;gBACR,GAAG,CAAA;mBACQ,IAAI,CAAC,EAAE;SACjB;aACF,YACA,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,8BAA8B,GAC1D,EACP,eAAM,GAAG,EAAE,eAAe,YACvB,KAAK;gBACJ,CAAC,CAAC,gJAAgJ;gBAClJ,CAAC,CAAC,iFAAiF,GAChF,EACP,eACE,GAAG,EAAE,GAAG,CAAA;;;iBAGG,IAAI,CAAC,GAAG;OAClB,4CAEI,IACL,CACL,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAkC,EAAE,EAAE,CAAC,CACvE,sCACkB,4BAA4B,EAC5C,GAAG,EAAE,GAAG,CAAA;;;;KAIP,aACD,cAAK,GAAG,EAAE,YAAY,YACpB,aAAI,EAAE,EAAC,4BAA4B,EAAC,GAAG,EAAE,cAAc,6BAElD,GACD,EACN,eAAK,GAAG,EAAE,SAAS,aAChB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,KAAC,OAAO,IAAoB,GAAG,IAAjB,GAAG,CAAC,EAAE,CAAiB,CACtC,CAAC,EACF,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,GAAI,IACpC,IACE,CACX,CAAC","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport React from 'react';\nimport { css } from '@emotion/react';\n\nimport { Glyph } from '../chrome/primitive_glyph';\nimport { formatLocation } from '../chrome/route';\nimport type { StudioApp } from '../config';\n\nimport { APPS_DOCS_URL } from './links';\nimport {\n helpTile,\n HOME,\n sectionHeading,\n sectionLabel,\n tile,\n tileActions,\n tileDescription,\n tileName,\n tilesGrid,\n tileTop,\n} from './tokens';\n\nconst AppTile = ({\n app: { id, title, description, icon },\n}: {\n app: StudioApp;\n}) => (\n <a\n href={formatLocation({ app: id, path: '' })}\n css={[\n tile(3),\n css`\n &:hover,\n &:focus-within {\n border-color: ${HOME.app};\n }\n `,\n ]}\n data-testid=\"home-app\">\n <span css={tileTop}>\n <span\n css={[\n tileName,\n css`\n color: ${HOME.app};\n `,\n ]}>\n {title}\n </span>\n <span\n css={css`\n color: ${HOME.app};\n margin-top: 1px;\n `}>\n <Glyph svg={icon?.svg} label={title} size={18} />\n </span>\n </span>\n <span css={tileDescription}>{description ?? `Opens ${title}.`}</span>\n <span css={tileActions}>\n <span\n css={css`\n color: ${HOME.app};\n `}>\n Open →\n </span>\n </span>\n </a>\n);\n\nconst AddAppTile = ({ empty }: { empty: boolean }) => (\n <a\n href={APPS_DOCS_URL}\n target=\"_blank\"\n rel=\"noopener\"\n css={helpTile(3, HOME.app)}\n data-testid=\"home-add-app\">\n <span\n css={[\n tileName,\n css`\n color: ${HOME.fg};\n `,\n ]}>\n {empty ? 'No applications yet' : 'How do I add an application?'}\n </span>\n <span css={tileDescription}>\n {empty\n ? 'An app is a page of the Studio that demonstrates the pack. Add one to the config’s apps, with an id, a title and a load that imports its page.'\n : 'A page of the Studio that demonstrates the pack, declared in the config’s apps.'}\n </span>\n <span\n css={css`\n font-size: 12px;\n font-weight: 600;\n color: ${HOME.app};\n `}>\n Read the config docs ↗\n </span>\n </a>\n);\n\n/** One tile per configured app, then how to add one; with none, only the latter, as the empty state. */\nexport const AppsSection = ({ apps }: { apps: readonly StudioApp[] }) => (\n <section\n aria-labelledby=\"isomer-studio-applications\"\n css={css`\n display: flex;\n flex-direction: column;\n gap: 10px;\n `}>\n <div css={sectionLabel}>\n <h2 id=\"isomer-studio-applications\" css={sectionHeading}>\n Applications\n </h2>\n </div>\n <div css={tilesGrid}>\n {apps.map((app) => (\n <AppTile key={app.id} {...{ app }} />\n ))}\n <AddAppTile empty={apps.length === 0} />\n </div>\n </section>\n);\n"]}
@@ -0,0 +1,12 @@
1
+ import type { PrimitiveDoc } from '../model/describe_runtime.js';
2
+ export interface FeaturedStripProps {
3
+ featured: readonly PrimitiveDoc[];
4
+ /** How many primitives the runtime has, for the closing tile. */
5
+ total: number;
6
+ }
7
+ /**
8
+ * The featured primitives in a recessed well, a row at a time, paged by the buttons or scrolled, ending on
9
+ * a tile that opens the gallery.
10
+ */
11
+ export declare const FeaturedStrip: ({ featured, total }: FeaturedStripProps) => import("@emotion/react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=featured_strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featured_strip.d.ts","sourceRoot":"","sources":["../../src/home/featured_strip.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAoB9D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;CACf;AA8DD;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,qBAAqB,kBAAkB,qDA4LpE,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0; you may not use this file except in compliance with the Elastic License
6
+ * 2.0.
7
+ */
8
+ import { useCallback, useEffect, useRef, useState } from 'react';
9
+ import { EuiButtonIcon, useEuiTheme } from '@elastic/eui';
10
+ import { css } from '@emotion/react';
11
+ import { PrimitiveGlyph } from '../chrome/primitive_glyph.js';
12
+ import { formatRoute, GALLERY } from '../chrome/route.js';
13
+ import { actionCard, helpTile, HOME, HOME_NARROW, sectionHeading, sectionLabel, tile, TILE_COLUMNS, tileActions, tileDescription, tileName, tileTop, } from './tokens.js';
14
+ const GAP = 12;
15
+ const STACKED_PAGE_SIZE = 3;
16
+ const PrimitiveTile = ({ doc }) => {
17
+ const { euiTheme: { font }, } = useEuiTheme();
18
+ const { type, label, group, purpose } = doc;
19
+ return (_jsxs("div", { css: [
20
+ tile(4),
21
+ actionCard,
22
+ css `
23
+ scroll-snap-align: start;
24
+ &:hover,
25
+ &:focus-within {
26
+ border-color: rgba(240, 78, 152, 0.75);
27
+ }
28
+ cursor: default;
29
+ `,
30
+ ], "data-testid": "featured-primitive", children: [_jsxs("span", { css: tileTop, children: [_jsx("span", { css: tileName, children: label }), _jsx("span", { css: css `
31
+ color: ${HOME.accent};
32
+ margin-top: 1px;
33
+ `, children: _jsx(PrimitiveGlyph, { type, size: 18 }) })] }), _jsx("span", { css: css `
34
+ font-family: ${font.familyCode};
35
+ font-size: 11px;
36
+ color: ${HOME.fg};
37
+ `, children: group }), _jsx("span", { css: tileDescription, children: purpose }), _jsxs("span", { css: tileActions, children: [_jsx("a", { href: formatRoute({ mode: 'docs', page: type, example: 0 }), css: css `
38
+ color: ${HOME.docs};
39
+ cursor: pointer;
40
+ `, children: "Reference \u2192" }), _jsx("a", { href: formatRoute({ mode: 'dev', page: type, example: 0 }), css: css `
41
+ color: ${HOME.dev};
42
+ `, children: "Workbench \u2192" })] })] }));
43
+ };
44
+ /**
45
+ * The featured primitives in a recessed well, a row at a time, paged by the buttons or scrolled, ending on
46
+ * a tile that opens the gallery.
47
+ */
48
+ export const FeaturedStrip = ({ featured, total }) => {
49
+ const strip = useRef(null);
50
+ const [edges, setEdges] = useState({ start: true, end: true });
51
+ const [stacked, setStacked] = useState(false);
52
+ const [stackedPage, setStackedPage] = useState(0);
53
+ const lastStackedPage = Math.floor(featured.length / STACKED_PAGE_SIZE);
54
+ const currentStackedPage = Math.min(stackedPage, lastStackedPage);
55
+ const firstStackedTile = currentStackedPage * STACKED_PAGE_SIZE;
56
+ const sync = useCallback(() => {
57
+ const element = strip.current;
58
+ if (!element) {
59
+ return;
60
+ }
61
+ setStacked(getComputedStyle(element).gridAutoFlow === 'row');
62
+ setEdges({
63
+ start: element.scrollLeft <= 1,
64
+ end: element.scrollLeft + element.clientWidth >= element.scrollWidth - 1,
65
+ });
66
+ }, []);
67
+ useEffect(() => {
68
+ sync();
69
+ const element = strip.current;
70
+ const observer = typeof ResizeObserver === 'undefined'
71
+ ? undefined
72
+ : new ResizeObserver(sync);
73
+ if (element) {
74
+ observer?.observe(element);
75
+ }
76
+ window.addEventListener('resize', sync);
77
+ return () => {
78
+ observer?.disconnect();
79
+ window.removeEventListener('resize', sync);
80
+ };
81
+ }, [sync, featured]);
82
+ const page = (direction) => {
83
+ if (stacked) {
84
+ setStackedPage(Math.max(0, Math.min(currentStackedPage + direction, lastStackedPage)));
85
+ return;
86
+ }
87
+ const element = strip.current;
88
+ const first = element?.firstElementChild;
89
+ if (!element || !first) {
90
+ return;
91
+ }
92
+ const step = first.getBoundingClientRect().width + GAP;
93
+ const perPage = Math.max(1, Math.round((element.clientWidth + GAP) / step));
94
+ element.scrollBy({
95
+ left: direction * step * perPage,
96
+ behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches
97
+ ? 'instant'
98
+ : 'smooth',
99
+ });
100
+ };
101
+ const well = css `
102
+ display: flex;
103
+ flex-direction: column;
104
+ gap: 10px;
105
+ padding: 14px 16px 16px;
106
+ margin-inline: -16px;
107
+ border-radius: 12px;
108
+ box-sizing: border-box;
109
+ background: rgba(0, 0, 0, 0.18);
110
+ box-shadow:
111
+ inset 0 1px 0 rgba(0, 0, 0, 0.25),
112
+ inset 0 0 0 1px rgba(255, 255, 255, 0.06);
113
+ `;
114
+ const pager = css `
115
+ background-color: ${HOME.surface3};
116
+ border-color: ${HOME.line3};
117
+ color: ${HOME.fg};
118
+ &:disabled {
119
+ background-color: ${HOME.surface1};
120
+ border-color: ${HOME.line1};
121
+ color: ${HOME.fg3};
122
+ }
123
+ `;
124
+ const tiles = css `
125
+ display: grid;
126
+ grid-template-rows: repeat(4, auto);
127
+ grid-auto-flow: column;
128
+ grid-auto-columns: calc(
129
+ (100% - ${GAP}px * (var(${TILE_COLUMNS}, 3) - 1)) /
130
+ var(${TILE_COLUMNS}, 3)
131
+ );
132
+ gap: ${GAP}px;
133
+ overflow-x: auto;
134
+ scroll-snap-type: x mandatory;
135
+ scrollbar-width: none;
136
+ padding: 3px;
137
+ margin: -3px;
138
+ scroll-padding: 3px;
139
+ &::-webkit-scrollbar {
140
+ display: none;
141
+ }
142
+ ${HOME_NARROW} {
143
+ grid-auto-flow: row;
144
+ grid-template-columns: minmax(0, 1fr);
145
+ grid-template-rows: none;
146
+ grid-auto-columns: auto;
147
+ overflow-x: visible;
148
+ scroll-snap-type: none;
149
+ > :nth-child(-n + ${firstStackedTile}),
150
+ > :nth-child(n + ${firstStackedTile + STACKED_PAGE_SIZE + 1}) {
151
+ display: none;
152
+ }
153
+ }
154
+ `;
155
+ return (_jsxs("section", { css: well, "aria-labelledby": "isomer-studio-featured", children: [_jsxs("div", { css: sectionLabel, children: [_jsx("h2", { id: "isomer-studio-featured", css: sectionHeading, children: "Featured primitives" }), _jsxs("span", { css: css `
156
+ display: flex;
157
+ gap: 6px;
158
+ `, children: [_jsx(EuiButtonIcon, { iconType: "chevronSingleLeft", size: "xs", color: "text", display: "base", css: pager, "aria-label": "Previous primitives", isDisabled: stacked ? currentStackedPage === 0 : edges.start, onClick: () => page(-1) }), _jsx(EuiButtonIcon, { iconType: "chevronSingleRight", size: "xs", color: "text", display: "base", css: pager, "aria-label": "Next primitives", isDisabled: stacked ? currentStackedPage === lastStackedPage : edges.end, onClick: () => page(1) })] })] }), _jsxs("div", { ref: strip, css: tiles, onScroll: sync, children: [featured.map((doc) => (_jsx(PrimitiveTile, { doc }, doc.type))), _jsxs("a", { href: formatRoute({ mode: 'docs', page: GALLERY, example: 0 }), css: [
159
+ helpTile(4, HOME.docs),
160
+ actionCard,
161
+ css `
162
+ scroll-snap-align: start;
163
+ `,
164
+ ], children: [_jsx("span", { css: css `
165
+ font-size: 28px;
166
+ font-weight: 600;
167
+ line-height: 1;
168
+ color: ${HOME.fg};
169
+ font-variant-numeric: tabular-nums;
170
+ `, children: total }), _jsxs("span", { css: tileDescription, children: [total === 1 ? 'primitive' : 'primitives', " in this Studio"] }), _jsx("span", { css: css `
171
+ font-size: 12px;
172
+ font-weight: 600;
173
+ color: ${HOME.docs};
174
+ `, children: "Open the gallery \u2192" })] })] })] }));
175
+ };
176
+ //# sourceMappingURL=featured_strip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"featured_strip.js","sourceRoot":"","sources":["../../src/home/featured_strip.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { EuiButtonIcon, useEuiTheme } from '@elastic/eui';\nimport { css } from '@emotion/react';\n\nimport { PrimitiveGlyph } from '../chrome/primitive_glyph';\nimport { formatRoute, GALLERY } from '../chrome/route';\nimport type { PrimitiveDoc } from '../model/describe_runtime';\n\nimport {\n actionCard,\n helpTile,\n HOME,\n HOME_NARROW,\n sectionHeading,\n sectionLabel,\n tile,\n TILE_COLUMNS,\n tileActions,\n tileDescription,\n tileName,\n tileTop,\n} from './tokens';\n\nconst GAP = 12;\nconst STACKED_PAGE_SIZE = 3;\n\nexport interface FeaturedStripProps {\n featured: readonly PrimitiveDoc[];\n /** How many primitives the runtime has, for the closing tile. */\n total: number;\n}\n\nconst PrimitiveTile = ({ doc }: { doc: PrimitiveDoc }) => {\n const {\n euiTheme: { font },\n } = useEuiTheme();\n const { type, label, group, purpose } = doc;\n return (\n <div\n css={[\n tile(4),\n actionCard,\n css`\n scroll-snap-align: start;\n &:hover,\n &:focus-within {\n border-color: rgba(240, 78, 152, 0.75);\n }\n cursor: default;\n `,\n ]}\n data-testid=\"featured-primitive\">\n <span css={tileTop}>\n <span css={tileName}>{label}</span>\n <span\n css={css`\n color: ${HOME.accent};\n margin-top: 1px;\n `}>\n <PrimitiveGlyph {...{ type }} size={18} />\n </span>\n </span>\n <span\n css={css`\n font-family: ${font.familyCode};\n font-size: 11px;\n color: ${HOME.fg};\n `}>\n {group}\n </span>\n <span css={tileDescription}>{purpose}</span>\n <span css={tileActions}>\n <a\n href={formatRoute({ mode: 'docs', page: type, example: 0 })}\n css={css`\n color: ${HOME.docs};\n cursor: pointer;\n `}>\n Reference →\n </a>\n <a\n href={formatRoute({ mode: 'dev', page: type, example: 0 })}\n css={css`\n color: ${HOME.dev};\n `}>\n Workbench →\n </a>\n </span>\n </div>\n );\n};\n\n/**\n * The featured primitives in a recessed well, a row at a time, paged by the buttons or scrolled, ending on\n * a tile that opens the gallery.\n */\nexport const FeaturedStrip = ({ featured, total }: FeaturedStripProps) => {\n const strip = useRef<HTMLDivElement>(null);\n const [edges, setEdges] = useState({ start: true, end: true });\n const [stacked, setStacked] = useState(false);\n const [stackedPage, setStackedPage] = useState(0);\n const lastStackedPage = Math.floor(featured.length / STACKED_PAGE_SIZE);\n const currentStackedPage = Math.min(stackedPage, lastStackedPage);\n const firstStackedTile = currentStackedPage * STACKED_PAGE_SIZE;\n\n const sync = useCallback(() => {\n const element = strip.current;\n if (!element) {\n return;\n }\n setStacked(getComputedStyle(element).gridAutoFlow === 'row');\n setEdges({\n start: element.scrollLeft <= 1,\n end: element.scrollLeft + element.clientWidth >= element.scrollWidth - 1,\n });\n }, []);\n\n useEffect(() => {\n sync();\n const element = strip.current;\n const observer =\n typeof ResizeObserver === 'undefined'\n ? undefined\n : new ResizeObserver(sync);\n if (element) {\n observer?.observe(element);\n }\n window.addEventListener('resize', sync);\n return () => {\n observer?.disconnect();\n window.removeEventListener('resize', sync);\n };\n }, [sync, featured]);\n\n const page = (direction: -1 | 1) => {\n if (stacked) {\n setStackedPage(\n Math.max(0, Math.min(currentStackedPage + direction, lastStackedPage))\n );\n return;\n }\n const element = strip.current;\n const first = element?.firstElementChild;\n if (!element || !first) {\n return;\n }\n const step = first.getBoundingClientRect().width + GAP;\n const perPage = Math.max(1, Math.round((element.clientWidth + GAP) / step));\n element.scrollBy({\n left: direction * step * perPage,\n behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches\n ? 'instant'\n : 'smooth',\n });\n };\n\n const well = css`\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px 16px 16px;\n margin-inline: -16px;\n border-radius: 12px;\n box-sizing: border-box;\n background: rgba(0, 0, 0, 0.18);\n box-shadow:\n inset 0 1px 0 rgba(0, 0, 0, 0.25),\n inset 0 0 0 1px rgba(255, 255, 255, 0.06);\n `;\n const pager = css`\n background-color: ${HOME.surface3};\n border-color: ${HOME.line3};\n color: ${HOME.fg};\n &:disabled {\n background-color: ${HOME.surface1};\n border-color: ${HOME.line1};\n color: ${HOME.fg3};\n }\n `;\n const tiles = css`\n display: grid;\n grid-template-rows: repeat(4, auto);\n grid-auto-flow: column;\n grid-auto-columns: calc(\n (100% - ${GAP}px * (var(${TILE_COLUMNS}, 3) - 1)) /\n var(${TILE_COLUMNS}, 3)\n );\n gap: ${GAP}px;\n overflow-x: auto;\n scroll-snap-type: x mandatory;\n scrollbar-width: none;\n padding: 3px;\n margin: -3px;\n scroll-padding: 3px;\n &::-webkit-scrollbar {\n display: none;\n }\n ${HOME_NARROW} {\n grid-auto-flow: row;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: none;\n grid-auto-columns: auto;\n overflow-x: visible;\n scroll-snap-type: none;\n > :nth-child(-n + ${firstStackedTile}),\n > :nth-child(n + ${firstStackedTile + STACKED_PAGE_SIZE + 1}) {\n display: none;\n }\n }\n `;\n\n return (\n <section css={well} aria-labelledby=\"isomer-studio-featured\">\n <div css={sectionLabel}>\n <h2 id=\"isomer-studio-featured\" css={sectionHeading}>\n Featured primitives\n </h2>\n <span\n css={css`\n display: flex;\n gap: 6px;\n `}>\n <EuiButtonIcon\n iconType=\"chevronSingleLeft\"\n size=\"xs\"\n color=\"text\"\n display=\"base\"\n css={pager}\n aria-label=\"Previous primitives\"\n isDisabled={stacked ? currentStackedPage === 0 : edges.start}\n onClick={() => page(-1)}\n />\n <EuiButtonIcon\n iconType=\"chevronSingleRight\"\n size=\"xs\"\n color=\"text\"\n display=\"base\"\n css={pager}\n aria-label=\"Next primitives\"\n isDisabled={\n stacked ? currentStackedPage === lastStackedPage : edges.end\n }\n onClick={() => page(1)}\n />\n </span>\n </div>\n <div ref={strip} css={tiles} onScroll={sync}>\n {featured.map((doc) => (\n <PrimitiveTile key={doc.type} {...{ doc }} />\n ))}\n <a\n href={formatRoute({ mode: 'docs', page: GALLERY, example: 0 })}\n css={[\n helpTile(4, HOME.docs),\n actionCard,\n css`\n scroll-snap-align: start;\n `,\n ]}>\n <span\n css={css`\n font-size: 28px;\n font-weight: 600;\n line-height: 1;\n color: ${HOME.fg};\n font-variant-numeric: tabular-nums;\n `}>\n {total}\n </span>\n <span css={tileDescription}>\n {total === 1 ? 'primitive' : 'primitives'} in this Studio\n </span>\n <span\n css={css`\n font-size: 12px;\n font-weight: 600;\n color: ${HOME.docs};\n `}>\n Open the gallery →\n </span>\n </a>\n </div>\n </section>\n );\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import type { StudioRouter } from '../chrome/route.js';
2
+ export interface HomeViewProps {
3
+ title: string;
4
+ router: Pick<StudioRouter, 'route' | 'navigate'>;
5
+ /** The config's `featured`; without it Home draws at random. */
6
+ featured?: readonly string[] | undefined;
7
+ configProblems?: readonly string[] | undefined;
8
+ }
9
+ /** The landing page: search, featured primitives, apps, where to go next, and what the runtime loaded. */
10
+ export declare const HomeView: ({ title, router: { route, navigate }, featured: featuredTypes, configProblems, }: HomeViewProps) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=home_view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home_view.d.ts","sourceRoot":"","sources":["../../src/home/home_view.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyBpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IACjD,gEAAgE;IAChE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAChD;AAmGD,0GAA0G;AAC1G,eAAO,MAAM,QAAQ,GAAI,kFAKtB,aAAa,qDAoVf,CAAC"}
@@ -0,0 +1,261 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0; you may not use this file except in compliance with the Elastic License
6
+ * 2.0.
7
+ */
8
+ import { useMemo } from 'react';
9
+ import { EuiCallOut, EuiIcon, useEuiTheme } from '@elastic/eui';
10
+ import { css } from '@emotion/react';
11
+ import { PrimitiveGlyph } from '../chrome/primitive_glyph.js';
12
+ import { PrimitiveSearch } from '../chrome/primitive_search.js';
13
+ import { formatRoute, GALLERY } from '../chrome/route.js';
14
+ import { pickFeatured } from '../model/featured.js';
15
+ import { useStudio } from '../studio_context.js';
16
+ import { previewSurfaces } from '../surfaces/surface_select.js';
17
+ import { AppsSection } from './apps_section.js';
18
+ import { FeaturedStrip } from './featured_strip.js';
19
+ import { DOCS_URL, LICENSE_URL, REPO_URL } from './links.js';
20
+ import { LoadedPanel } from './loaded_panel.js';
21
+ import { SurfaceChart } from './surface_chart.js';
22
+ import { actionCard, CONTENT_WIDTH, GUTTER, HOME, HOME_NARROW, PANEL_WIDTH, sectionHeading, sectionLabel, TILE_COLUMNS, WIDE, WIDE_CONTENT_WIDTH, } from './tokens.js';
23
+ const Door = ({ href, external = false, color, tag, title, children, action, }) => (_jsxs("a", { href: href, ...(external ? { target: '_blank', rel: 'noopener' } : {}), css: css `
24
+ ${actionCard};
25
+ display: grid;
26
+ grid-template-rows: subgrid;
27
+ grid-row: span 3;
28
+ row-gap: 5px;
29
+ padding: 14px 16px;
30
+ border-radius: 10px;
31
+ box-sizing: border-box;
32
+ min-height: 96px;
33
+ border: 1px solid ${HOME.line2};
34
+ color: ${HOME.fg2};
35
+ text-decoration: none;
36
+ transition:
37
+ background 0.12s,
38
+ border-color 0.12s;
39
+ &:hover,
40
+ &:focus-visible {
41
+ border-color: ${color};
42
+ text-decoration: none;
43
+ }
44
+ &:hover .isomer-studio-door-action {
45
+ text-decoration: underline;
46
+ }
47
+ `, children: [_jsxs("span", { css: css `
48
+ display: flex;
49
+ align-items: flex-start;
50
+ justify-content: space-between;
51
+ gap: 8px;
52
+ `, children: [_jsx("b", { css: css `
53
+ font-size: 15px;
54
+ font-weight: 600;
55
+ color: ${HOME.fg};
56
+ `, children: title }), _jsx("span", { css: css `
57
+ margin-top: 3px;
58
+ font-size: 11px;
59
+ font-weight: 500;
60
+ letter-spacing: 0.04em;
61
+ text-transform: uppercase;
62
+ padding: 2px 7px;
63
+ border-radius: 999px;
64
+ border: 1px solid ${color};
65
+ color: ${color};
66
+ white-space: nowrap;
67
+ `, children: tag })] }), _jsx("span", { css: css `
68
+ font-size: 12.5px;
69
+ text-wrap: pretty;
70
+ `, children: children }), _jsx("span", { className: "isomer-studio-door-action", css: css `
71
+ margin-top: auto;
72
+ padding-top: 4px;
73
+ font-size: 12px;
74
+ font-weight: 500;
75
+ color: ${color};
76
+ `, children: action })] }));
77
+ /** The landing page: search, featured primitives, apps, where to go next, and what the runtime loaded. */
78
+ export const HomeView = ({ title, router: { route, navigate }, featured: featuredTypes, configProblems = [], }) => {
79
+ const { euiTheme: { font }, } = useEuiTheme();
80
+ const { docs: { primitives, groups, surfaces: supported }, rasterizePng, apps, } = useStudio();
81
+ const featured = useMemo(() => pickFeatured(primitives, featuredTypes), [primitives, featuredTypes]);
82
+ const surfaces = previewSurfaces(supported, Boolean(rasterizePng));
83
+ const first = groups[0]?.types[0] ?? primitives[0]?.type ?? '';
84
+ const year = new Date().getFullYear();
85
+ const page = css `
86
+ flex: 1;
87
+ min-height: 0;
88
+ overflow: auto;
89
+ display: flex;
90
+ flex-direction: column;
91
+ color: ${HOME.fg2};
92
+ font-size: 14px;
93
+ line-height: 1.5;
94
+ a:focus-visible,
95
+ button:focus-visible {
96
+ outline: 2px solid ${HOME.fg};
97
+ outline-offset: 2px;
98
+ }
99
+ `;
100
+ const columns = css `
101
+ flex: 1;
102
+ display: grid;
103
+ grid-template-columns: minmax(0, 1fr) ${PANEL_WIDTH}px;
104
+ width: 100%;
105
+ max-width: ${WIDE_CONTENT_WIDTH + 5 * GUTTER + PANEL_WIDTH}px;
106
+ margin-inline: auto;
107
+ @media (max-width: 900px) {
108
+ grid-template-columns: minmax(0, 1fr);
109
+ }
110
+ `;
111
+ const main = css `
112
+ min-width: 0;
113
+ padding: 20px ${GUTTER}px 48px;
114
+ @media (max-width: 900px) {
115
+ padding-inline: 16px;
116
+ }
117
+ `;
118
+ const content = css `
119
+ container: isomer-home / inline-size;
120
+ display: flex;
121
+ flex-direction: column;
122
+ gap: 32px;
123
+ max-width: ${CONTENT_WIDTH}px;
124
+ margin-inline: auto;
125
+ ${WIDE} {
126
+ max-width: ${WIDE_CONTENT_WIDTH}px;
127
+ ${TILE_COLUMNS}: 4;
128
+ }
129
+ `;
130
+ const aside = css `
131
+ display: flex;
132
+ flex-direction: column;
133
+ gap: 20px;
134
+ border-left: 1px solid ${HOME.line1};
135
+ border-image: linear-gradient(
136
+ to bottom,
137
+ transparent,
138
+ ${HOME.line1} 70px,
139
+ ${HOME.line1} calc(100% - 70px),
140
+ transparent
141
+ )
142
+ 1;
143
+ padding: 44px ${GUTTER}px 32px 32px;
144
+ @media (max-width: 900px) {
145
+ border-image: none;
146
+ border-left: 0;
147
+ border-top: 1px solid ${HOME.line1};
148
+ padding-inline: 16px;
149
+ }
150
+ `;
151
+ const chips = css `
152
+ display: flex;
153
+ flex-wrap: wrap;
154
+ gap: 8px;
155
+ margin-top: -8px;
156
+ `;
157
+ const chip = css `
158
+ display: inline-flex;
159
+ align-items: center;
160
+ gap: 7px;
161
+ padding: 6px 12px 6px 10px;
162
+ border-radius: 999px;
163
+ border: 1px solid ${HOME.line2};
164
+ background: ${HOME.surface1};
165
+ font-size: 13px;
166
+ font-weight: 500;
167
+ color: ${HOME.fg};
168
+ text-decoration: none;
169
+ &:hover,
170
+ &:focus-visible {
171
+ background: ${HOME.surface3};
172
+ border-color: ${HOME.docs};
173
+ text-decoration: none;
174
+ }
175
+ `;
176
+ const footer = css `
177
+ flex: none;
178
+ display: flex;
179
+ align-items: center;
180
+ justify-content: space-between;
181
+ flex-wrap: wrap;
182
+ gap: 8px 24px;
183
+ font-size: 12px;
184
+ color: ${HOME.fg3};
185
+ padding: 14px ${GUTTER}px;
186
+ a {
187
+ color: ${HOME.fg2};
188
+ text-decoration: none;
189
+ }
190
+ a:hover {
191
+ color: ${HOME.fg};
192
+ text-decoration: underline;
193
+ }
194
+ @media (max-width: 900px) {
195
+ padding-inline: 16px;
196
+ }
197
+ `;
198
+ return (_jsxs("div", { css: page, "data-testid": "home", children: [configProblems.length ? (_jsx(EuiCallOut, { announceOnMount: true, color: "danger", iconType: "error", title: "The config is invalid; the Studio keeps the last valid one", children: _jsx("ul", { children: configProblems.map((problem) => (_jsx("li", { children: problem }, problem))) }) })) : null, _jsxs("div", { css: columns, children: [_jsx("main", { css: main, children: _jsxs("div", { css: content, children: [_jsxs("div", { css: css `
199
+ display: flex;
200
+ flex-direction: column;
201
+ gap: 12px;
202
+ `, children: [_jsxs("div", { css: css `
203
+ font-family: ${font.familyCode};
204
+ font-size: 12px;
205
+ color: ${HOME.accent};
206
+ `, children: ["isomer", ' ', _jsx("span", { css: css `
207
+ color: ${HOME.fg3};
208
+ `, children: "n." }), ' ', "one formula, many forms"] }), _jsx("h1", { css: css `
209
+ margin: 0;
210
+ font-size: 44px;
211
+ font-weight: 600;
212
+ letter-spacing: -0.025em;
213
+ line-height: 1.05;
214
+ color: ${HOME.fg};
215
+ text-wrap: balance;
216
+ @media (max-width: 900px) {
217
+ font-size: 32px;
218
+ }
219
+ `, children: "What are we rendering today?" }), _jsx("p", { css: css `
220
+ margin: 0;
221
+ font-size: 16px;
222
+ text-wrap: pretty;
223
+ `, children: "Isomer Studio is a workbench for primitives, primitive packs, compositions, views, tools, and applications built on Isomer." })] }), _jsx(PrimitiveSearch, { size: "large", placeholder: "Search primitives by name, purpose or prop", onSelectPrimitive: (type) => navigate({ mode: route.mode, page: type, example: 0 }) }), groups.length ? (_jsx("nav", { "aria-label": "Primitive categories", css: chips, children: groups.map(({ title: group, types }) => (_jsxs("a", { href: formatRoute({
224
+ mode: 'docs',
225
+ page: GALLERY,
226
+ example: 0,
227
+ group,
228
+ }), css: chip, children: [types[0] ? (_jsx("span", { css: css `
229
+ color: ${HOME.fg2};
230
+ `, children: _jsx(PrimitiveGlyph, { type: types[0], size: 16 }) })) : null, group, _jsx("span", { css: css `
231
+ font-family: ${font.familyCode};
232
+ font-size: 11px;
233
+ color: ${HOME.fg3};
234
+ `, children: types.length })] }, group))) })) : null, _jsx(FeaturedStrip, { featured, total: primitives.length }), _jsx(AppsSection, { apps }), _jsxs("section", { "aria-labelledby": "isomer-studio-learn", css: css `
235
+ display: flex;
236
+ flex-direction: column;
237
+ gap: 10px;
238
+ `, children: [_jsx("div", { css: sectionLabel, children: _jsx("h2", { id: "isomer-studio-learn", css: sectionHeading, children: "Learn more about Isomer" }) }), _jsxs("div", { css: css `
239
+ display: grid;
240
+ grid-template-columns: repeat(3, minmax(0, 1fr));
241
+ gap: 12px;
242
+ ${HOME_NARROW} {
243
+ grid-template-columns: minmax(0, 1fr);
244
+ }
245
+ `, children: [_jsx(Door, { href: formatRoute({
246
+ mode: 'docs',
247
+ page: GALLERY,
248
+ example: 0,
249
+ }), color: HOME.docs, tag: "Reference", title: "Understand primitives", action: "Browse reference \u2192", children: "Every primitive in the pack, with its purpose, props and examples." }), _jsx(Door, { href: formatRoute({ mode: 'dev', page: first, example: 0 }), color: HOME.dev, tag: "Workbench", title: "Experiment and edit", action: "Open the workbench \u2192", children: "Edit a composition and watch it render on every surface the runtime has." }), _jsx(Door, { href: DOCS_URL, external: true, color: HOME.accent, tag: "Guide", title: "Learn how Isomer works", action: "Read the docs \u2197", children: "The composition contract, packs, surfaces and the agent tools." })] })] }), _jsx(SurfaceChart, { surfaces })] }) }), _jsx("aside", { css: aside, children: _jsx(LoadedPanel, { surfaces }) })] }), _jsxs("footer", { css: footer, children: [_jsxs("span", { css: css `
250
+ display: flex;
251
+ align-items: center;
252
+ gap: 8px;
253
+ color: ${HOME.fg};
254
+ font-weight: 500;
255
+ `, children: [_jsx(EuiIcon, { type: "logoElastic", color: "ghost", size: "m" }), "Built by Elastic"] }), _jsxs("span", { css: css `
256
+ display: flex;
257
+ flex-wrap: wrap;
258
+ gap: 4px 18px;
259
+ `, children: [_jsx("a", { href: REPO_URL, target: "_blank", rel: "noopener", children: "github.com/elastic/isomer \u2197" }), _jsx("a", { href: DOCS_URL, target: "_blank", rel: "noopener", children: "Docs \u2197" }), _jsx("a", { href: LICENSE_URL, target: "_blank", rel: "noopener", children: "Elastic License 2.0" })] }), _jsxs("small", { children: ["\u00A9 ", year, " Elasticsearch B.V. \u00B7 ", title] })] })] }));
260
+ };
261
+ //# sourceMappingURL=home_view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home_view.js","sourceRoot":"","sources":["../../src/home/home_view.tsx"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport React, { useMemo } from 'react';\nimport { EuiCallOut, EuiIcon, useEuiTheme } from '@elastic/eui';\nimport { css } from '@emotion/react';\n\nimport { PrimitiveGlyph } from '../chrome/primitive_glyph';\nimport { PrimitiveSearch } from '../chrome/primitive_search';\nimport type { StudioRouter } from '../chrome/route';\nimport { formatRoute, GALLERY } from '../chrome/route';\nimport { pickFeatured } from '../model/featured';\nimport { useStudio } from '../studio_context';\nimport { previewSurfaces } from '../surfaces/surface_select';\n\nimport { AppsSection } from './apps_section';\nimport { FeaturedStrip } from './featured_strip';\nimport { DOCS_URL, LICENSE_URL, REPO_URL } from './links';\nimport { LoadedPanel } from './loaded_panel';\nimport { SurfaceChart } from './surface_chart';\nimport {\n actionCard,\n CONTENT_WIDTH,\n GUTTER,\n HOME,\n HOME_NARROW,\n PANEL_WIDTH,\n sectionHeading,\n sectionLabel,\n TILE_COLUMNS,\n WIDE,\n WIDE_CONTENT_WIDTH,\n} from './tokens';\n\nexport interface HomeViewProps {\n title: string;\n router: Pick<StudioRouter, 'route' | 'navigate'>;\n /** The config's `featured`; without it Home draws at random. */\n featured?: readonly string[] | undefined;\n configProblems?: readonly string[] | undefined;\n}\n\nconst Door = ({\n href,\n external = false,\n color,\n tag,\n title,\n children,\n action,\n}: {\n href: string;\n external?: boolean;\n color: string;\n tag: string;\n title: string;\n children: string;\n action: string;\n}) => (\n <a\n href={href}\n {...(external ? { target: '_blank', rel: 'noopener' } : {})}\n css={css`\n ${actionCard};\n display: grid;\n grid-template-rows: subgrid;\n grid-row: span 3;\n row-gap: 5px;\n padding: 14px 16px;\n border-radius: 10px;\n box-sizing: border-box;\n min-height: 96px;\n border: 1px solid ${HOME.line2};\n color: ${HOME.fg2};\n text-decoration: none;\n transition:\n background 0.12s,\n border-color 0.12s;\n &:hover,\n &:focus-visible {\n border-color: ${color};\n text-decoration: none;\n }\n &:hover .isomer-studio-door-action {\n text-decoration: underline;\n }\n `}>\n <span\n css={css`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 8px;\n `}>\n <b\n css={css`\n font-size: 15px;\n font-weight: 600;\n color: ${HOME.fg};\n `}>\n {title}\n </b>\n <span\n css={css`\n margin-top: 3px;\n font-size: 11px;\n font-weight: 500;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n padding: 2px 7px;\n border-radius: 999px;\n border: 1px solid ${color};\n color: ${color};\n white-space: nowrap;\n `}>\n {tag}\n </span>\n </span>\n <span\n css={css`\n font-size: 12.5px;\n text-wrap: pretty;\n `}>\n {children}\n </span>\n <span\n className=\"isomer-studio-door-action\"\n css={css`\n margin-top: auto;\n padding-top: 4px;\n font-size: 12px;\n font-weight: 500;\n color: ${color};\n `}>\n {action}\n </span>\n </a>\n);\n\n/** The landing page: search, featured primitives, apps, where to go next, and what the runtime loaded. */\nexport const HomeView = ({\n title,\n router: { route, navigate },\n featured: featuredTypes,\n configProblems = [],\n}: HomeViewProps) => {\n const {\n euiTheme: { font },\n } = useEuiTheme();\n const {\n docs: { primitives, groups, surfaces: supported },\n rasterizePng,\n apps,\n } = useStudio();\n const featured = useMemo(\n () => pickFeatured(primitives, featuredTypes),\n [primitives, featuredTypes]\n );\n const surfaces = previewSurfaces(supported, Boolean(rasterizePng));\n const first = groups[0]?.types[0] ?? primitives[0]?.type ?? '';\n const year = new Date().getFullYear();\n\n const page = css`\n flex: 1;\n min-height: 0;\n overflow: auto;\n display: flex;\n flex-direction: column;\n color: ${HOME.fg2};\n font-size: 14px;\n line-height: 1.5;\n a:focus-visible,\n button:focus-visible {\n outline: 2px solid ${HOME.fg};\n outline-offset: 2px;\n }\n `;\n const columns = css`\n flex: 1;\n display: grid;\n grid-template-columns: minmax(0, 1fr) ${PANEL_WIDTH}px;\n width: 100%;\n max-width: ${WIDE_CONTENT_WIDTH + 5 * GUTTER + PANEL_WIDTH}px;\n margin-inline: auto;\n @media (max-width: 900px) {\n grid-template-columns: minmax(0, 1fr);\n }\n `;\n const main = css`\n min-width: 0;\n padding: 20px ${GUTTER}px 48px;\n @media (max-width: 900px) {\n padding-inline: 16px;\n }\n `;\n const content = css`\n container: isomer-home / inline-size;\n display: flex;\n flex-direction: column;\n gap: 32px;\n max-width: ${CONTENT_WIDTH}px;\n margin-inline: auto;\n ${WIDE} {\n max-width: ${WIDE_CONTENT_WIDTH}px;\n ${TILE_COLUMNS}: 4;\n }\n `;\n const aside = css`\n display: flex;\n flex-direction: column;\n gap: 20px;\n border-left: 1px solid ${HOME.line1};\n border-image: linear-gradient(\n to bottom,\n transparent,\n ${HOME.line1} 70px,\n ${HOME.line1} calc(100% - 70px),\n transparent\n )\n 1;\n padding: 44px ${GUTTER}px 32px 32px;\n @media (max-width: 900px) {\n border-image: none;\n border-left: 0;\n border-top: 1px solid ${HOME.line1};\n padding-inline: 16px;\n }\n `;\n const chips = css`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: -8px;\n `;\n const chip = css`\n display: inline-flex;\n align-items: center;\n gap: 7px;\n padding: 6px 12px 6px 10px;\n border-radius: 999px;\n border: 1px solid ${HOME.line2};\n background: ${HOME.surface1};\n font-size: 13px;\n font-weight: 500;\n color: ${HOME.fg};\n text-decoration: none;\n &:hover,\n &:focus-visible {\n background: ${HOME.surface3};\n border-color: ${HOME.docs};\n text-decoration: none;\n }\n `;\n const footer = css`\n flex: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px 24px;\n font-size: 12px;\n color: ${HOME.fg3};\n padding: 14px ${GUTTER}px;\n a {\n color: ${HOME.fg2};\n text-decoration: none;\n }\n a:hover {\n color: ${HOME.fg};\n text-decoration: underline;\n }\n @media (max-width: 900px) {\n padding-inline: 16px;\n }\n `;\n\n return (\n <div css={page} data-testid=\"home\">\n {configProblems.length ? (\n <EuiCallOut\n announceOnMount\n color=\"danger\"\n iconType=\"error\"\n title=\"The config is invalid; the Studio keeps the last valid one\">\n <ul>\n {configProblems.map((problem) => (\n <li key={problem}>{problem}</li>\n ))}\n </ul>\n </EuiCallOut>\n ) : null}\n <div css={columns}>\n <main css={main}>\n <div css={content}>\n <div\n css={css`\n display: flex;\n flex-direction: column;\n gap: 12px;\n `}>\n <div\n css={css`\n font-family: ${font.familyCode};\n font-size: 12px;\n color: ${HOME.accent};\n `}>\n isomer{' '}\n <span\n css={css`\n color: ${HOME.fg3};\n `}>\n n.\n </span>{' '}\n one formula, many forms\n </div>\n <h1\n css={css`\n margin: 0;\n font-size: 44px;\n font-weight: 600;\n letter-spacing: -0.025em;\n line-height: 1.05;\n color: ${HOME.fg};\n text-wrap: balance;\n @media (max-width: 900px) {\n font-size: 32px;\n }\n `}>\n What are we rendering today?\n </h1>\n <p\n css={css`\n margin: 0;\n font-size: 16px;\n text-wrap: pretty;\n `}>\n Isomer Studio is a workbench for primitives, primitive packs,\n compositions, views, tools, and applications built on Isomer.\n </p>\n </div>\n\n <PrimitiveSearch\n size=\"large\"\n placeholder=\"Search primitives by name, purpose or prop\"\n onSelectPrimitive={(type) =>\n navigate({ mode: route.mode, page: type, example: 0 })\n }\n />\n\n {groups.length ? (\n <nav aria-label=\"Primitive categories\" css={chips}>\n {groups.map(({ title: group, types }) => (\n <a\n key={group}\n href={formatRoute({\n mode: 'docs',\n page: GALLERY,\n example: 0,\n group,\n })}\n css={chip}>\n {types[0] ? (\n <span\n css={css`\n color: ${HOME.fg2};\n `}>\n <PrimitiveGlyph type={types[0]} size={16} />\n </span>\n ) : null}\n {group}\n <span\n css={css`\n font-family: ${font.familyCode};\n font-size: 11px;\n color: ${HOME.fg3};\n `}>\n {types.length}\n </span>\n </a>\n ))}\n </nav>\n ) : null}\n\n <FeaturedStrip {...{ featured }} total={primitives.length} />\n\n <AppsSection {...{ apps }} />\n\n <section\n aria-labelledby=\"isomer-studio-learn\"\n css={css`\n display: flex;\n flex-direction: column;\n gap: 10px;\n `}>\n <div css={sectionLabel}>\n <h2 id=\"isomer-studio-learn\" css={sectionHeading}>\n Learn more about Isomer\n </h2>\n </div>\n <div\n css={css`\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 12px;\n ${HOME_NARROW} {\n grid-template-columns: minmax(0, 1fr);\n }\n `}>\n <Door\n href={formatRoute({\n mode: 'docs',\n page: GALLERY,\n example: 0,\n })}\n color={HOME.docs}\n tag=\"Reference\"\n title=\"Understand primitives\"\n action=\"Browse reference →\">\n Every primitive in the pack, with its purpose, props and\n examples.\n </Door>\n <Door\n href={formatRoute({ mode: 'dev', page: first, example: 0 })}\n color={HOME.dev}\n tag=\"Workbench\"\n title=\"Experiment and edit\"\n action=\"Open the workbench →\">\n Edit a composition and watch it render on every surface the\n runtime has.\n </Door>\n <Door\n href={DOCS_URL}\n external\n color={HOME.accent}\n tag=\"Guide\"\n title=\"Learn how Isomer works\"\n action=\"Read the docs ↗\">\n The composition contract, packs, surfaces and the agent tools.\n </Door>\n </div>\n </section>\n\n <SurfaceChart {...{ surfaces }} />\n </div>\n </main>\n\n <aside css={aside}>\n <LoadedPanel {...{ surfaces }} />\n </aside>\n </div>\n\n <footer css={footer}>\n <span\n css={css`\n display: flex;\n align-items: center;\n gap: 8px;\n color: ${HOME.fg};\n font-weight: 500;\n `}>\n <EuiIcon type=\"logoElastic\" color=\"ghost\" size=\"m\" />\n Built by Elastic\n </span>\n <span\n css={css`\n display: flex;\n flex-wrap: wrap;\n gap: 4px 18px;\n `}>\n <a href={REPO_URL} target=\"_blank\" rel=\"noopener\">\n github.com/elastic/isomer ↗\n </a>\n <a href={DOCS_URL} target=\"_blank\" rel=\"noopener\">\n Docs ↗\n </a>\n <a href={LICENSE_URL} target=\"_blank\" rel=\"noopener\">\n Elastic License 2.0\n </a>\n </span>\n <small>\n © {year} Elasticsearch B.V. · {title}\n </small>\n </footer>\n </div>\n );\n};\n"]}
@@ -0,0 +1,8 @@
1
+ /** The published docs site. */
2
+ export declare const DOCS_URL = "https://elastic.github.io/isomer/";
3
+ export declare const STUDIO_CONFIG_DOCS_URL = "https://elastic.github.io/isomer/studio/config/";
4
+ export declare const APPS_DOCS_URL = "https://elastic.github.io/isomer/studio/config/#apps";
5
+ export declare const VIEWS_DOCS_URL = "https://elastic.github.io/isomer/runtime/view-registry/";
6
+ export declare const REPO_URL = "https://github.com/elastic/isomer";
7
+ export declare const LICENSE_URL = "https://github.com/elastic/isomer/blob/main/LICENSE.txt";
8
+ //# sourceMappingURL=links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/home/links.ts"],"names":[],"mappings":"AAOA,+BAA+B;AAC/B,eAAO,MAAM,QAAQ,sCAAsC,CAAC;AAC5D,eAAO,MAAM,sBAAsB,oDAA8B,CAAC;AAClE,eAAO,MAAM,aAAa,yDAAmC,CAAC;AAC9D,eAAO,MAAM,cAAc,4DAAsC,CAAC;AAClE,eAAO,MAAM,QAAQ,sCAAsC,CAAC;AAC5D,eAAO,MAAM,WAAW,4DAAsC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0; you may not use this file except in compliance with the Elastic License
5
+ * 2.0.
6
+ */
7
+ /** The published docs site. */
8
+ export const DOCS_URL = 'https://elastic.github.io/isomer/';
9
+ export const STUDIO_CONFIG_DOCS_URL = `${DOCS_URL}studio/config/`;
10
+ export const APPS_DOCS_URL = `${STUDIO_CONFIG_DOCS_URL}#apps`;
11
+ export const VIEWS_DOCS_URL = `${DOCS_URL}runtime/view-registry/`;
12
+ export const REPO_URL = 'https://github.com/elastic/isomer';
13
+ export const LICENSE_URL = `${REPO_URL}/blob/main/LICENSE.txt`;
14
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/home/links.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,QAAQ,gBAAgB,CAAC;AAClE,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,sBAAsB,OAAO,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,QAAQ,wBAAwB,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,QAAQ,wBAAwB,CAAC","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\n/** The published docs site. */\nexport const DOCS_URL = 'https://elastic.github.io/isomer/';\nexport const STUDIO_CONFIG_DOCS_URL = `${DOCS_URL}studio/config/`;\nexport const APPS_DOCS_URL = `${STUDIO_CONFIG_DOCS_URL}#apps`;\nexport const VIEWS_DOCS_URL = `${DOCS_URL}runtime/view-registry/`;\nexport const REPO_URL = 'https://github.com/elastic/isomer';\nexport const LICENSE_URL = `${REPO_URL}/blob/main/LICENSE.txt`;\n"]}
@@ -0,0 +1,6 @@
1
+ import type { PreviewSurface } from '../surfaces/surface_select.js';
2
+ /** What the runtime loaded: packs, views, apps and surfaces, then where that is configured. */
3
+ export declare const LoadedPanel: ({ surfaces, }: {
4
+ surfaces: readonly PreviewSurface[];
5
+ }) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=loaded_panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded_panel.d.ts","sourceRoot":"","sources":["../../src/home/loaded_panel.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAyGjE,+FAA+F;AAC/F,eAAO,MAAM,WAAW,GAAI,eAEzB;IACD,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,qDAyJA,CAAC"}