@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.
- package/LICENSE.txt +93 -0
- package/NOTICE.txt +17329 -0
- package/README.md +64 -0
- package/THIRD_PARTY_LICENSES.md +404 -0
- package/bin/isomer-studio.js +10 -0
- package/dist/app/assets/codicon-5T574S7B.ttf +0 -0
- package/dist/app/assets/editor.worker.js +11 -0
- package/dist/app/assets/esbuild.wasm +0 -0
- package/dist/app/assets/json.worker.js +47 -0
- package/dist/app/assets/slack.css +1 -0
- package/dist/app/assets/studio.css +11 -0
- package/dist/app/assets/ts.worker.js +37029 -0
- package/dist/app/index.html +16 -0
- package/dist/apps/app_host.d.ts +8 -0
- package/dist/apps/app_host.d.ts.map +1 -0
- package/dist/apps/app_host.js +73 -0
- package/dist/apps/app_host.js.map +1 -0
- package/dist/browser/dev_host.d.ts +5 -0
- package/dist/browser/dev_host.d.ts.map +1 -0
- package/dist/browser/dev_host.js +46 -0
- package/dist/browser/dev_host.js.map +1 -0
- package/dist/browser/mount.d.ts +16 -0
- package/dist/browser/mount.d.ts.map +1 -0
- package/dist/browser/mount.js +37 -0
- package/dist/browser/mount.js.map +1 -0
- package/dist/browser/static_host.d.ts +5 -0
- package/dist/browser/static_host.d.ts.map +1 -0
- package/dist/browser/static_host.js +55 -0
- package/dist/browser/static_host.js.map +1 -0
- package/dist/chrome/accent.d.ts +14 -0
- package/dist/chrome/accent.d.ts.map +1 -0
- package/dist/chrome/accent.js +31 -0
- package/dist/chrome/accent.js.map +1 -0
- package/dist/chrome/app_pages.d.ts +13 -0
- package/dist/chrome/app_pages.d.ts.map +1 -0
- package/dist/chrome/app_pages.js +33 -0
- package/dist/chrome/app_pages.js.map +1 -0
- package/dist/chrome/color_mode.d.ts +10 -0
- package/dist/chrome/color_mode.d.ts.map +1 -0
- package/dist/chrome/color_mode.js +45 -0
- package/dist/chrome/color_mode.js.map +1 -0
- package/dist/chrome/dev_tint.d.ts +7 -0
- package/dist/chrome/dev_tint.d.ts.map +1 -0
- package/dist/chrome/dev_tint.js +31 -0
- package/dist/chrome/dev_tint.js.map +1 -0
- package/dist/chrome/header.d.ts +20 -0
- package/dist/chrome/header.d.ts.map +1 -0
- package/dist/chrome/header.js +124 -0
- package/dist/chrome/header.js.map +1 -0
- package/dist/chrome/icon_data_uri.d.ts +12 -0
- package/dist/chrome/icon_data_uri.d.ts.map +1 -0
- package/dist/chrome/icon_data_uri.js +21 -0
- package/dist/chrome/icon_data_uri.js.map +1 -0
- package/dist/chrome/isomer_mark.d.ts +17 -0
- package/dist/chrome/isomer_mark.d.ts.map +1 -0
- package/dist/chrome/isomer_mark.js +46 -0
- package/dist/chrome/isomer_mark.js.map +1 -0
- package/dist/chrome/nav.d.ts +22 -0
- package/dist/chrome/nav.d.ts.map +1 -0
- package/dist/chrome/nav.js +306 -0
- package/dist/chrome/nav.js.map +1 -0
- package/dist/chrome/nav_groups.d.ts +6 -0
- package/dist/chrome/nav_groups.d.ts.map +1 -0
- package/dist/chrome/nav_groups.js +48 -0
- package/dist/chrome/nav_groups.js.map +1 -0
- package/dist/chrome/nav_sections.d.ts +29 -0
- package/dist/chrome/nav_sections.d.ts.map +1 -0
- package/dist/chrome/nav_sections.js +55 -0
- package/dist/chrome/nav_sections.js.map +1 -0
- package/dist/chrome/oklch.d.ts +10 -0
- package/dist/chrome/oklch.d.ts.map +1 -0
- package/dist/chrome/oklch.js +61 -0
- package/dist/chrome/oklch.js.map +1 -0
- package/dist/chrome/primitive_glyph.d.ts +14 -0
- package/dist/chrome/primitive_glyph.d.ts.map +1 -0
- package/dist/chrome/primitive_glyph.js +48 -0
- package/dist/chrome/primitive_glyph.js.map +1 -0
- package/dist/chrome/primitive_heading.d.ts +14 -0
- package/dist/chrome/primitive_heading.d.ts.map +1 -0
- package/dist/chrome/primitive_heading.js +32 -0
- package/dist/chrome/primitive_heading.js.map +1 -0
- package/dist/chrome/primitive_peek.d.ts +8 -0
- package/dist/chrome/primitive_peek.d.ts.map +1 -0
- package/dist/chrome/primitive_peek.js +51 -0
- package/dist/chrome/primitive_peek.js.map +1 -0
- package/dist/chrome/primitive_search.d.ts +9 -0
- package/dist/chrome/primitive_search.d.ts.map +1 -0
- package/dist/chrome/primitive_search.js +93 -0
- package/dist/chrome/primitive_search.js.map +1 -0
- package/dist/chrome/route.d.ts +48 -0
- package/dist/chrome/route.d.ts.map +1 -0
- package/dist/chrome/route.js +136 -0
- package/dist/chrome/route.js.map +1 -0
- package/dist/cli/args.d.ts +39 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +171 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/run.d.ts +15 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +113 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +22 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +118 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +11 -0
- package/dist/config.js.map +1 -0
- package/dist/dev/code_editor.d.ts +10 -0
- package/dist/dev/code_editor.d.ts.map +1 -0
- package/dist/dev/code_editor.js +22 -0
- package/dist/dev/code_editor.js.map +1 -0
- package/dist/dev/dev_view.d.ts +9 -0
- package/dist/dev/dev_view.d.ts.map +1 -0
- package/dist/dev/dev_view.js +65 -0
- package/dist/dev/dev_view.js.map +1 -0
- package/dist/dev/editor_panel.d.ts +17 -0
- package/dist/dev/editor_panel.d.ts.map +1 -0
- package/dist/dev/editor_panel.js +51 -0
- package/dist/dev/editor_panel.js.map +1 -0
- package/dist/dev/monaco_editor.d.ts +15 -0
- package/dist/dev/monaco_editor.d.ts.map +1 -0
- package/dist/dev/monaco_editor.js +159 -0
- package/dist/dev/monaco_editor.js.map +1 -0
- package/dist/dev/preview_panel.d.ts +10 -0
- package/dist/dev/preview_panel.d.ts.map +1 -0
- package/dist/dev/preview_panel.js +45 -0
- package/dist/dev/preview_panel.js.map +1 -0
- package/dist/dev/prop_reference.d.ts +9 -0
- package/dist/dev/prop_reference.d.ts.map +1 -0
- package/dist/dev/prop_reference.js +134 -0
- package/dist/dev/prop_reference.js.map +1 -0
- package/dist/dev/tsx_language.d.ts +10 -0
- package/dist/dev/tsx_language.d.ts.map +1 -0
- package/dist/dev/tsx_language.js +283 -0
- package/dist/dev/tsx_language.js.map +1 -0
- package/dist/dev/use_editor.d.ts +23 -0
- package/dist/dev/use_editor.d.ts.map +1 -0
- package/dist/dev/use_editor.js +124 -0
- package/dist/dev/use_editor.js.map +1 -0
- package/dist/docs/docs_view.d.ts +10 -0
- package/dist/docs/docs_view.d.ts.map +1 -0
- package/dist/docs/docs_view.js +80 -0
- package/dist/docs/docs_view.js.map +1 -0
- package/dist/docs/example_source.d.ts +7 -0
- package/dist/docs/example_source.d.ts.map +1 -0
- package/dist/docs/example_source.js +56 -0
- package/dist/docs/example_source.js.map +1 -0
- package/dist/docs/examples_panel.d.ts +10 -0
- package/dist/docs/examples_panel.d.ts.map +1 -0
- package/dist/docs/examples_panel.js +51 -0
- package/dist/docs/examples_panel.js.map +1 -0
- package/dist/docs/gallery_view.d.ts +9 -0
- package/dist/docs/gallery_view.d.ts.map +1 -0
- package/dist/docs/gallery_view.js +98 -0
- package/dist/docs/gallery_view.js.map +1 -0
- package/dist/docs/inline_code.d.ts +11 -0
- package/dist/docs/inline_code.d.ts.map +1 -0
- package/dist/docs/inline_code.js +24 -0
- package/dist/docs/inline_code.js.map +1 -0
- package/dist/docs/on_this_page.d.ts +17 -0
- package/dist/docs/on_this_page.d.ts.map +1 -0
- package/dist/docs/on_this_page.js +77 -0
- package/dist/docs/on_this_page.js.map +1 -0
- package/dist/docs/props_table.d.ts +14 -0
- package/dist/docs/props_table.d.ts.map +1 -0
- package/dist/docs/props_table.js +34 -0
- package/dist/docs/props_table.js.map +1 -0
- package/dist/home/apps_section.d.ts +6 -0
- package/dist/home/apps_section.d.ts.map +1 -0
- package/dist/home/apps_section.js +44 -0
- package/dist/home/apps_section.js.map +1 -0
- package/dist/home/featured_strip.d.ts +12 -0
- package/dist/home/featured_strip.d.ts.map +1 -0
- package/dist/home/featured_strip.js +176 -0
- package/dist/home/featured_strip.js.map +1 -0
- package/dist/home/home_view.d.ts +11 -0
- package/dist/home/home_view.d.ts.map +1 -0
- package/dist/home/home_view.js +261 -0
- package/dist/home/home_view.js.map +1 -0
- package/dist/home/links.d.ts +8 -0
- package/dist/home/links.d.ts.map +1 -0
- package/dist/home/links.js +14 -0
- package/dist/home/links.js.map +1 -0
- package/dist/home/loaded_panel.d.ts +6 -0
- package/dist/home/loaded_panel.d.ts.map +1 -0
- package/dist/home/loaded_panel.js +116 -0
- package/dist/home/loaded_panel.js.map +1 -0
- package/dist/home/surface_chart.d.ts +6 -0
- package/dist/home/surface_chart.d.ts.map +1 -0
- package/dist/home/surface_chart.js +263 -0
- package/dist/home/surface_chart.js.map +1 -0
- package/dist/home/tokens.d.ts +49 -0
- package/dist/home/tokens.d.ts.map +1 -0
- package/dist/home/tokens.js +171 -0
- package/dist/home/tokens.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/model/app_problems.d.ts +4 -0
- package/dist/model/app_problems.d.ts.map +1 -0
- package/dist/model/app_problems.js +90 -0
- package/dist/model/app_problems.js.map +1 -0
- package/dist/model/authoring_types.d.ts +23 -0
- package/dist/model/authoring_types.d.ts.map +1 -0
- package/dist/model/authoring_types.js +35 -0
- package/dist/model/authoring_types.js.map +1 -0
- package/dist/model/compile_jsx.d.ts +19 -0
- package/dist/model/compile_jsx.d.ts.map +1 -0
- package/dist/model/compile_jsx.js +55 -0
- package/dist/model/compile_jsx.js.map +1 -0
- package/dist/model/compose_example.d.ts +9 -0
- package/dist/model/compose_example.d.ts.map +1 -0
- package/dist/model/compose_example.js +24 -0
- package/dist/model/compose_example.js.map +1 -0
- package/dist/model/composition_key.d.ts +6 -0
- package/dist/model/composition_key.d.ts.map +1 -0
- package/dist/model/composition_key.js +26 -0
- package/dist/model/composition_key.js.map +1 -0
- package/dist/model/describe_runtime.d.ts +33 -0
- package/dist/model/describe_runtime.d.ts.map +1 -0
- package/dist/model/describe_runtime.js +77 -0
- package/dist/model/describe_runtime.js.map +1 -0
- package/dist/model/featured.d.ts +11 -0
- package/dist/model/featured.d.ts.map +1 -0
- package/dist/model/featured.js +70 -0
- package/dist/model/featured.js.map +1 -0
- package/dist/model/jsx_transform.d.ts +10 -0
- package/dist/model/jsx_transform.d.ts.map +1 -0
- package/dist/model/jsx_transform.js +31 -0
- package/dist/model/jsx_transform.js.map +1 -0
- package/dist/model/png_manifest.d.ts +23 -0
- package/dist/model/png_manifest.d.ts.map +1 -0
- package/dist/model/png_manifest.js +26 -0
- package/dist/model/png_manifest.js.map +1 -0
- package/dist/model/read_examples.d.ts +12 -0
- package/dist/model/read_examples.d.ts.map +1 -0
- package/dist/model/read_examples.js +43 -0
- package/dist/model/read_examples.js.map +1 -0
- package/dist/model/search.d.ts +4 -0
- package/dist/model/search.d.ts.map +1 -0
- package/dist/model/search.js +29 -0
- package/dist/model/search.js.map +1 -0
- package/dist/model/sha256.d.ts +3 -0
- package/dist/model/sha256.d.ts.map +1 -0
- package/dist/model/sha256.js +72 -0
- package/dist/model/sha256.js.map +1 -0
- package/dist/model/slack_limits.d.ts +9 -0
- package/dist/model/slack_limits.d.ts.map +1 -0
- package/dist/model/slack_limits.js +213 -0
- package/dist/model/slack_limits.js.map +1 -0
- package/dist/node/app_bundle.d.ts +45 -0
- package/dist/node/app_bundle.d.ts.map +1 -0
- package/dist/node/app_bundle.js +212 -0
- package/dist/node/app_bundle.js.map +1 -0
- package/dist/node/build_site.d.ts +28 -0
- package/dist/node/build_site.d.ts.map +1 -0
- package/dist/node/build_site.js +90 -0
- package/dist/node/build_site.js.map +1 -0
- package/dist/node/check.d.ts +40 -0
- package/dist/node/check.d.ts.map +1 -0
- package/dist/node/check.js +162 -0
- package/dist/node/check.js.map +1 -0
- package/dist/node/dev_bundle.d.ts +21 -0
- package/dist/node/dev_bundle.d.ts.map +1 -0
- package/dist/node/dev_bundle.js +121 -0
- package/dist/node/dev_bundle.js.map +1 -0
- package/dist/node/dev_server.d.ts +16 -0
- package/dist/node/dev_server.d.ts.map +1 -0
- package/dist/node/dev_server.js +291 -0
- package/dist/node/dev_server.js.map +1 -0
- package/dist/node/init_config.d.ts +30 -0
- package/dist/node/init_config.d.ts.map +1 -0
- package/dist/node/init_config.js +158 -0
- package/dist/node/init_config.js.map +1 -0
- package/dist/node/load_config.d.ts +34 -0
- package/dist/node/load_config.d.ts.map +1 -0
- package/dist/node/load_config.js +246 -0
- package/dist/node/load_config.js.map +1 -0
- package/dist/node/project_resolution.d.ts +17 -0
- package/dist/node/project_resolution.d.ts.map +1 -0
- package/dist/node/project_resolution.js +66 -0
- package/dist/node/project_resolution.js.map +1 -0
- package/dist/node/rasterize.d.ts +23 -0
- package/dist/node/rasterize.d.ts.map +1 -0
- package/dist/node/rasterize.js +79 -0
- package/dist/node/rasterize.js.map +1 -0
- package/dist/node/report.d.ts +8 -0
- package/dist/node/report.d.ts.map +1 -0
- package/dist/node/report.js +57 -0
- package/dist/node/report.js.map +1 -0
- package/dist/node/resolve_hooks.d.ts +16 -0
- package/dist/node/resolve_hooks.d.ts.map +1 -0
- package/dist/node/resolve_hooks.js +104 -0
- package/dist/node/resolve_hooks.js.map +1 -0
- package/dist/studio.d.ts +4 -0
- package/dist/studio.d.ts.map +1 -0
- package/dist/studio.js +188 -0
- package/dist/studio.js.map +1 -0
- package/dist/studio_context.d.ts +27 -0
- package/dist/studio_context.d.ts.map +1 -0
- package/dist/studio_context.js +17 -0
- package/dist/studio_context.js.map +1 -0
- package/dist/surfaces/adopt_stylesheet.d.ts +7 -0
- package/dist/surfaces/adopt_stylesheet.d.ts.map +1 -0
- package/dist/surfaces/adopt_stylesheet.js +64 -0
- package/dist/surfaces/adopt_stylesheet.js.map +1 -0
- package/dist/surfaces/app_preview.d.ts +4 -0
- package/dist/surfaces/app_preview.d.ts.map +1 -0
- package/dist/surfaces/app_preview.js +28 -0
- package/dist/surfaces/app_preview.js.map +1 -0
- package/dist/surfaces/app_surface.d.ts +9 -0
- package/dist/surfaces/app_surface.d.ts.map +1 -0
- package/dist/surfaces/app_surface.js +27 -0
- package/dist/surfaces/app_surface.js.map +1 -0
- package/dist/surfaces/applicable_enhancements.d.ts +4 -0
- package/dist/surfaces/applicable_enhancements.d.ts.map +1 -0
- package/dist/surfaces/applicable_enhancements.js +16 -0
- package/dist/surfaces/applicable_enhancements.js.map +1 -0
- package/dist/surfaces/enhancement_select.d.ts +10 -0
- package/dist/surfaces/enhancement_select.d.ts.map +1 -0
- package/dist/surfaces/enhancement_select.js +28 -0
- package/dist/surfaces/enhancement_select.js.map +1 -0
- package/dist/surfaces/example_picker.d.ts +11 -0
- package/dist/surfaces/example_picker.d.ts.map +1 -0
- package/dist/surfaces/example_picker.js +44 -0
- package/dist/surfaces/example_picker.js.map +1 -0
- package/dist/surfaces/format_source.d.ts +4 -0
- package/dist/surfaces/format_source.d.ts.map +1 -0
- package/dist/surfaces/format_source.js +30 -0
- package/dist/surfaces/format_source.js.map +1 -0
- package/dist/surfaces/html_surface.d.ts +14 -0
- package/dist/surfaces/html_surface.d.ts.map +1 -0
- package/dist/surfaces/html_surface.js +122 -0
- package/dist/surfaces/html_surface.js.map +1 -0
- package/dist/surfaces/png_surface.d.ts +13 -0
- package/dist/surfaces/png_surface.d.ts.map +1 -0
- package/dist/surfaces/png_surface.js +68 -0
- package/dist/surfaces/png_surface.js.map +1 -0
- package/dist/surfaces/react_surface.d.ts +11 -0
- package/dist/surfaces/react_surface.d.ts.map +1 -0
- package/dist/surfaces/react_surface.js +55 -0
- package/dist/surfaces/react_surface.js.map +1 -0
- package/dist/surfaces/render_output.d.ts +31 -0
- package/dist/surfaces/render_output.d.ts.map +1 -0
- package/dist/surfaces/render_output.js +119 -0
- package/dist/surfaces/render_output.js.map +1 -0
- package/dist/surfaces/scaled_preview.d.ts +17 -0
- package/dist/surfaces/scaled_preview.d.ts.map +1 -0
- package/dist/surfaces/scaled_preview.js +74 -0
- package/dist/surfaces/scaled_preview.js.map +1 -0
- package/dist/surfaces/shadow_root.d.ts +8 -0
- package/dist/surfaces/shadow_root.d.ts.map +1 -0
- package/dist/surfaces/shadow_root.js +41 -0
- package/dist/surfaces/shadow_root.js.map +1 -0
- package/dist/surfaces/slack_surface.d.ts +12 -0
- package/dist/surfaces/slack_surface.d.ts.map +1 -0
- package/dist/surfaces/slack_surface.js +27 -0
- package/dist/surfaces/slack_surface.js.map +1 -0
- package/dist/surfaces/snapshot_surface.d.ts +6 -0
- package/dist/surfaces/snapshot_surface.d.ts.map +1 -0
- package/dist/surfaces/snapshot_surface.js +5 -0
- package/dist/surfaces/snapshot_surface.js.map +1 -0
- package/dist/surfaces/surface_board.d.ts +19 -0
- package/dist/surfaces/surface_board.d.ts.map +1 -0
- package/dist/surfaces/surface_board.js +128 -0
- package/dist/surfaces/surface_board.js.map +1 -0
- package/dist/surfaces/surface_frame.d.ts +8 -0
- package/dist/surfaces/surface_frame.d.ts.map +1 -0
- package/dist/surfaces/surface_frame.js +4 -0
- package/dist/surfaces/surface_frame.js.map +1 -0
- package/dist/surfaces/surface_logos.d.ts +9 -0
- package/dist/surfaces/surface_logos.d.ts.map +1 -0
- package/dist/surfaces/surface_logos.js +21 -0
- package/dist/surfaces/surface_logos.js.map +1 -0
- package/dist/surfaces/surface_preview.d.ts +32 -0
- package/dist/surfaces/surface_preview.d.ts.map +1 -0
- package/dist/surfaces/surface_preview.js +66 -0
- package/dist/surfaces/surface_preview.js.map +1 -0
- package/dist/surfaces/surface_select.d.ts +34 -0
- package/dist/surfaces/surface_select.d.ts.map +1 -0
- package/dist/surfaces/surface_select.js +119 -0
- package/dist/surfaces/surface_select.js.map +1 -0
- package/dist/surfaces/text_surfaces.d.ts +14 -0
- package/dist/surfaces/text_surfaces.d.ts.map +1 -0
- package/dist/surfaces/text_surfaces.js +31 -0
- package/dist/surfaces/text_surfaces.js.map +1 -0
- package/dist/surfaces/zoom_select.d.ts +9 -0
- package/dist/surfaces/zoom_select.d.ts.map +1 -0
- package/dist/surfaces/zoom_select.js +32 -0
- package/dist/surfaces/zoom_select.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/docs/ci.md +55 -0
- package/docs/commands.md +167 -0
- package/docs/config.md +192 -0
- package/docs/images/home.png +0 -0
- package/docs/images/reference.png +0 -0
- package/docs/images/workbench.png +0 -0
- package/docs/index.md +96 -0
- package/docs/toc.yml +10 -0
- 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"}
|