@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,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@emotion/react/jsx-runtime";
2
+ import { EuiIcon, useEuiTheme } from '@elastic/eui';
3
+ import { css } from '@emotion/react';
4
+ import { Glyph } from '../chrome/primitive_glyph.js';
5
+ import { useStudio } from '../studio_context.js';
6
+ import { PREVIEW_ICONS } from '../surfaces/surface_select.js';
7
+ import { APPS_DOCS_URL, STUDIO_CONFIG_DOCS_URL, VIEWS_DOCS_URL } from './links.js';
8
+ import { HOME } from './tokens.js';
9
+ const Section = ({ title, count, children, }) => {
10
+ const { euiTheme: { font }, } = useEuiTheme();
11
+ return (_jsxs("section", { "aria-label": title, css: css `
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 7px;
15
+ `, children: [_jsxs("div", { css: css `
16
+ display: flex;
17
+ align-items: baseline;
18
+ justify-content: space-between;
19
+ font-size: 11px;
20
+ letter-spacing: 0.06em;
21
+ text-transform: uppercase;
22
+ color: ${HOME.fg3};
23
+ `, children: [_jsx("span", { children: title }), _jsx("span", { css: css `
24
+ font-family: ${font.familyCode};
25
+ letter-spacing: 0;
26
+ text-transform: none;
27
+ `, children: count })] }), children] }));
28
+ };
29
+ const row = css `
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: 1px;
33
+ min-width: 0;
34
+ font-size: 12px;
35
+ `;
36
+ const code = (familyCode) => css `
37
+ font-family: ${familyCode};
38
+ color: ${HOME.fg};
39
+ overflow-wrap: anywhere;
40
+ `;
41
+ const meta = css `
42
+ color: ${HOME.fg3};
43
+ text-wrap: pretty;
44
+ `;
45
+ const link = css `
46
+ font-weight: 600;
47
+ color: ${HOME.accent};
48
+ text-decoration: none;
49
+ &:hover {
50
+ text-decoration: underline;
51
+ }
52
+ `;
53
+ /** A dashed box saying what is missing, how to add it, and where that is documented. */
54
+ const Empty = ({ children, href, action, }) => (_jsxs("div", { css: css `
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: 6px;
58
+ font-size: 12px;
59
+ color: ${HOME.fg3};
60
+ padding: 8px 10px;
61
+ border: 1px dashed rgba(255, 255, 255, 0.25);
62
+ border-radius: 6px;
63
+ text-wrap: pretty;
64
+ `, children: [_jsx("span", { children: children }), _jsxs("a", { href: href, target: "_blank", rel: "noopener", css: link, children: [action, " \u2197"] })] }));
65
+ /** What the runtime loaded: packs, views, apps and surfaces, then where that is configured. */
66
+ export const LoadedPanel = ({ surfaces, }) => {
67
+ const { euiTheme: { font }, } = useEuiTheme();
68
+ const { runtime, apps, docs: { primitives, views }, } = useStudio();
69
+ const mono = code(font.familyCode);
70
+ return (_jsxs(_Fragment, { children: [_jsx("h2", { css: css `
71
+ margin: 0;
72
+ font-size: 13px;
73
+ font-weight: 600;
74
+ color: ${HOME.fg};
75
+ `, children: "Loaded in this Studio" }), _jsx(Section, { title: "Primitive packs", count: runtime.packs.length, children: runtime.packs.map((pack) => {
76
+ const groups = pack.authoring?.groups?.length ?? 0;
77
+ const count = pack.primitives.length;
78
+ return (_jsxs("div", { css: row, children: [_jsx("span", { css: mono, children: pack.id }), _jsxs("span", { css: meta, children: [count, " ", count === 1 ? 'primitive' : 'primitives', groups
79
+ ? ` · ${groups} ${groups === 1 ? 'group' : 'groups'}`
80
+ : ''] })] }, pack.id));
81
+ }) }), _jsx(Section, { title: "Views", count: views.length, children: views.length ? (views.map(({ id, title, description }) => (_jsxs("div", { css: row, children: [_jsx("span", { css: mono, children: id }), _jsx("span", { css: meta, children: description || title })] }, id)))) : (_jsxs(Empty, { href: VIEWS_DOCS_URL, action: "Read about views", children: ["None registered. A view is a host-owned composition the runtime builds by id: define one with defineView and pass it in createIsomerRuntime(", '{ views }', "), or register it on runtime.viewRegistry."] })) }), _jsx(Section, { title: "Apps", count: apps.length, children: apps.length ? (apps.map(({ id, title, description, icon }) => (_jsxs("div", { css: css `
82
+ display: flex;
83
+ align-items: flex-start;
84
+ gap: 10px;
85
+ min-width: 0;
86
+ `, children: [_jsx("span", { css: css `
87
+ color: ${HOME.app};
88
+ margin-top: 2px;
89
+ `, children: _jsx(Glyph, { svg: icon?.svg, label: title, size: 18 }) }), _jsxs("div", { css: row, children: [_jsx("span", { css: css `
90
+ font-weight: 600;
91
+ color: ${HOME.fg};
92
+ `, children: title }), description ? _jsx("span", { css: meta, children: description }) : null] })] }, id)))) : (_jsxs(Empty, { href: APPS_DOCS_URL, action: "Read about apps", children: ["None configured. An app is a page of the Studio that shows the pack in use: add ", '{ id, title, description, load }', " to the config's apps."] })) }), _jsx(Section, { title: "Surfaces", count: surfaces.length, children: _jsx("div", { css: css `
93
+ display: grid;
94
+ grid-template-columns: repeat(2, minmax(0, 1fr));
95
+ gap: 6px 12px;
96
+ `, children: surfaces.map((surface) => (_jsxs("span", { css: css `
97
+ display: flex;
98
+ align-items: center;
99
+ gap: 8px;
100
+ font-family: ${font.familyCode};
101
+ font-size: 12px;
102
+ color: ${HOME.fg};
103
+ `, children: [_jsx(EuiIcon, { type: PREVIEW_ICONS[surface], size: "m" }), surface] }, surface))) }) }), _jsxs("div", { css: css `
104
+ display: flex;
105
+ flex-direction: column;
106
+ gap: 6px;
107
+ border-top: 1px solid ${HOME.line1};
108
+ padding-top: 16px;
109
+ font-size: 12px;
110
+ color: ${HOME.fg3};
111
+ text-wrap: pretty;
112
+ `, children: [_jsxs("p", { css: css `
113
+ margin: 0;
114
+ `, children: ["Everything here comes from the Studio config: the runtime and its packs, the apps, and which primitives are featured.", ' ', primitives.length, ' ', primitives.length === 1 ? 'primitive is' : 'primitives are', " loaded."] }), _jsx("a", { href: STUDIO_CONFIG_DOCS_URL, target: "_blank", rel: "noopener", css: link, children: "Edit the config \u2197" })] })] }));
115
+ };
116
+ //# sourceMappingURL=loaded_panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loaded_panel.js","sourceRoot":"","sources":["../../src/home/loaded_panel.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,GAAG,CAAC,EACf,KAAK,EACL,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE;IACH,MAAM,EACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,GACnB,GAAG,WAAW,EAAE,CAAC;IAClB,OAAO,CACL,iCACc,KAAK,EACjB,GAAG,EAAE,GAAG,CAAA;;;;OAIP,aACD,eACE,GAAG,EAAE,GAAG,CAAA;;;;;;;mBAOG,IAAI,CAAC,GAAG;SAClB,aACD,yBAAO,KAAK,GAAQ,EACpB,eACE,GAAG,EAAE,GAAG,CAAA;2BACS,IAAI,CAAC,UAAU;;;WAG/B,YACA,KAAK,GACD,IACH,EACL,QAAQ,IACD,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,GAAG,CAAA;;;;;;CAMd,CAAC;AACF,MAAM,IAAI,GAAG,CAAC,UAA8B,EAAE,EAAE,CAAC,GAAG,CAAA;iBACnC,UAAU;WAChB,IAAI,CAAC,EAAE;;CAEjB,CAAC;AACF,MAAM,IAAI,GAAG,GAAG,CAAA;WACL,IAAI,CAAC,GAAG;;CAElB,CAAC;AACF,MAAM,IAAI,GAAG,GAAG,CAAA;;WAEL,IAAI,CAAC,MAAM;;;;;CAKrB,CAAC;AAEF,wFAAwF;AACxF,MAAM,KAAK,GAAG,CAAC,EACb,QAAQ,EACR,IAAI,EACJ,MAAM,GAKP,EAAE,EAAE,CAAC,CACJ,eACE,GAAG,EAAE,GAAG,CAAA;;;;;eAKG,IAAI,CAAC,GAAG;;;;;KAKlB,aACD,yBAAO,QAAQ,GAAQ,EACvB,aAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,UAAU,EAAC,GAAG,EAAE,IAAI,aACpD,MAAM,eACL,IACA,CACP,CAAC;AAEF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,QAAQ,GAGT,EAAE,EAAE;IACH,MAAM,EACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,GACnB,GAAG,WAAW,EAAE,CAAC;IAClB,MAAM,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAC5B,GAAG,SAAS,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnC,OAAO,CACL,8BACE,aACE,GAAG,EAAE,GAAG,CAAA;;;;mBAIG,IAAI,CAAC,EAAE;SACjB,sCAEE,EAEL,KAAC,OAAO,IAAC,KAAK,EAAC,iBAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,YACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACrC,OAAO,CACL,eAAmB,GAAG,EAAE,GAAG,aACzB,eAAM,GAAG,EAAE,IAAI,YAAG,IAAI,CAAC,EAAE,GAAQ,EACjC,gBAAM,GAAG,EAAE,IAAI,aACZ,KAAK,OAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAChD,MAAM;wCACL,CAAC,CAAC,MAAM,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;wCACrD,CAAC,CAAC,EAAE,IACD,KAPC,IAAI,CAAC,EAAE,CAQX,CACP,CAAC;gBACJ,CAAC,CAAC,GACM,EAEV,KAAC,OAAO,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,CAAC,MAAM,YACvC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CACd,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACxC,eAAc,GAAG,EAAE,GAAG,aACpB,eAAM,GAAG,EAAE,IAAI,YAAG,EAAE,GAAQ,EAC5B,eAAM,GAAG,EAAE,IAAI,YAAG,WAAW,IAAI,KAAK,GAAQ,KAFtC,EAAE,CAGN,CACP,CAAC,CACH,CAAC,CAAC,CAAC,CACF,MAAC,KAAK,IAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAC,kBAAkB,6JAG/B,WAAW,kDAE1B,CACT,GACO,EAEV,KAAC,OAAO,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,YACrC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACb,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC7C,eAEE,GAAG,EAAE,GAAG,CAAA;;;;;eAKP,aACD,eACE,GAAG,EAAE,GAAG,CAAA;2BACG,IAAI,CAAC,GAAG;;iBAElB,YACD,KAAC,KAAK,IAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAI,GAC5C,EACP,eAAK,GAAG,EAAE,GAAG,aACX,eACE,GAAG,EAAE,GAAG,CAAA;;6BAEG,IAAI,CAAC,EAAE;mBACjB,YACA,KAAK,GACD,EACN,WAAW,CAAC,CAAC,CAAC,eAAM,GAAG,EAAE,IAAI,YAAG,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IACvD,KAvBD,EAAE,CAwBH,CACP,CAAC,CACH,CAAC,CAAC,CAAC,CACF,MAAC,KAAK,IAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAC,iBAAiB,iGAErC,kCAAkC,8BAEzC,CACT,GACO,EAEV,KAAC,OAAO,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,YAC9C,cACE,GAAG,EAAE,GAAG,CAAA;;;;WAIP,YACA,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,gBAEE,GAAG,EAAE,GAAG,CAAA;;;;+BAIS,IAAI,CAAC,UAAU;;yBAErB,IAAI,CAAC,EAAE;eACjB,aACD,KAAC,OAAO,IAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,GAAG,GAAG,EACjD,OAAO,KAVH,OAAO,CAWP,CACR,CAAC,GACE,GACE,EAEV,eACE,GAAG,EAAE,GAAG,CAAA;;;;kCAIkB,IAAI,CAAC,KAAK;;;mBAGzB,IAAI,CAAC,GAAG;;SAElB,aACD,aACE,GAAG,EAAE,GAAG,CAAA;;WAEP,sIAEmD,GAAG,EACtD,UAAU,CAAC,MAAM,EAAE,GAAG,EACtB,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,gBAC1D,EACJ,YACE,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,UAAU,EACd,GAAG,EAAE,IAAI,uCAEP,IACA,IACL,CACJ,CAAC;AACJ,CAAC,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 type { ReactNode } from 'react';\nimport React from 'react';\nimport { EuiIcon, useEuiTheme } from '@elastic/eui';\nimport { css } from '@emotion/react';\n\nimport { Glyph } from '../chrome/primitive_glyph';\nimport { useStudio } from '../studio_context';\nimport type { PreviewSurface } from '../surfaces/surface_select';\nimport { PREVIEW_ICONS } from '../surfaces/surface_select';\n\nimport { APPS_DOCS_URL, STUDIO_CONFIG_DOCS_URL, VIEWS_DOCS_URL } from './links';\nimport { HOME } from './tokens';\n\nconst Section = ({\n title,\n count,\n children,\n}: {\n title: string;\n count: number;\n children: ReactNode;\n}) => {\n const {\n euiTheme: { font },\n } = useEuiTheme();\n return (\n <section\n aria-label={title}\n css={css`\n display: flex;\n flex-direction: column;\n gap: 7px;\n `}>\n <div\n css={css`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n font-size: 11px;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: ${HOME.fg3};\n `}>\n <span>{title}</span>\n <span\n css={css`\n font-family: ${font.familyCode};\n letter-spacing: 0;\n text-transform: none;\n `}>\n {count}\n </span>\n </div>\n {children}\n </section>\n );\n};\n\nconst row = css`\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n font-size: 12px;\n`;\nconst code = (familyCode: string | undefined) => css`\n font-family: ${familyCode};\n color: ${HOME.fg};\n overflow-wrap: anywhere;\n`;\nconst meta = css`\n color: ${HOME.fg3};\n text-wrap: pretty;\n`;\nconst link = css`\n font-weight: 600;\n color: ${HOME.accent};\n text-decoration: none;\n &:hover {\n text-decoration: underline;\n }\n`;\n\n/** A dashed box saying what is missing, how to add it, and where that is documented. */\nconst Empty = ({\n children,\n href,\n action,\n}: {\n children: ReactNode;\n href: string;\n action: string;\n}) => (\n <div\n css={css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n font-size: 12px;\n color: ${HOME.fg3};\n padding: 8px 10px;\n border: 1px dashed rgba(255, 255, 255, 0.25);\n border-radius: 6px;\n text-wrap: pretty;\n `}>\n <span>{children}</span>\n <a href={href} target=\"_blank\" rel=\"noopener\" css={link}>\n {action} ↗\n </a>\n </div>\n);\n\n/** What the runtime loaded: packs, views, apps and surfaces, then where that is configured. */\nexport const LoadedPanel = ({\n surfaces,\n}: {\n surfaces: readonly PreviewSurface[];\n}) => {\n const {\n euiTheme: { font },\n } = useEuiTheme();\n const {\n runtime,\n apps,\n docs: { primitives, views },\n } = useStudio();\n const mono = code(font.familyCode);\n\n return (\n <>\n <h2\n css={css`\n margin: 0;\n font-size: 13px;\n font-weight: 600;\n color: ${HOME.fg};\n `}>\n Loaded in this Studio\n </h2>\n\n <Section title=\"Primitive packs\" count={runtime.packs.length}>\n {runtime.packs.map((pack) => {\n const groups = pack.authoring?.groups?.length ?? 0;\n const count = pack.primitives.length;\n return (\n <div key={pack.id} css={row}>\n <span css={mono}>{pack.id}</span>\n <span css={meta}>\n {count} {count === 1 ? 'primitive' : 'primitives'}\n {groups\n ? ` · ${groups} ${groups === 1 ? 'group' : 'groups'}`\n : ''}\n </span>\n </div>\n );\n })}\n </Section>\n\n <Section title=\"Views\" count={views.length}>\n {views.length ? (\n views.map(({ id, title, description }) => (\n <div key={id} css={row}>\n <span css={mono}>{id}</span>\n <span css={meta}>{description || title}</span>\n </div>\n ))\n ) : (\n <Empty href={VIEWS_DOCS_URL} action=\"Read about views\">\n None registered. A view is a host-owned composition the runtime\n builds by id: define one with defineView and pass it in\n createIsomerRuntime({'{ views }'}), or register it on\n runtime.viewRegistry.\n </Empty>\n )}\n </Section>\n\n <Section title=\"Apps\" count={apps.length}>\n {apps.length ? (\n apps.map(({ id, title, description, icon }) => (\n <div\n key={id}\n css={css`\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n `}>\n <span\n css={css`\n color: ${HOME.app};\n margin-top: 2px;\n `}>\n <Glyph svg={icon?.svg} label={title} size={18} />\n </span>\n <div css={row}>\n <span\n css={css`\n font-weight: 600;\n color: ${HOME.fg};\n `}>\n {title}\n </span>\n {description ? <span css={meta}>{description}</span> : null}\n </div>\n </div>\n ))\n ) : (\n <Empty href={APPS_DOCS_URL} action=\"Read about apps\">\n None configured. An app is a page of the Studio that shows the pack\n in use: add {'{ id, title, description, load }'} to the\n config&apos;s apps.\n </Empty>\n )}\n </Section>\n\n <Section title=\"Surfaces\" count={surfaces.length}>\n <div\n css={css`\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 6px 12px;\n `}>\n {surfaces.map((surface) => (\n <span\n key={surface}\n css={css`\n display: flex;\n align-items: center;\n gap: 8px;\n font-family: ${font.familyCode};\n font-size: 12px;\n color: ${HOME.fg};\n `}>\n <EuiIcon type={PREVIEW_ICONS[surface]} size=\"m\" />\n {surface}\n </span>\n ))}\n </div>\n </Section>\n\n <div\n css={css`\n display: flex;\n flex-direction: column;\n gap: 6px;\n border-top: 1px solid ${HOME.line1};\n padding-top: 16px;\n font-size: 12px;\n color: ${HOME.fg3};\n text-wrap: pretty;\n `}>\n <p\n css={css`\n margin: 0;\n `}>\n Everything here comes from the Studio config: the runtime and its\n packs, the apps, and which primitives are featured.{' '}\n {primitives.length}{' '}\n {primitives.length === 1 ? 'primitive is' : 'primitives are'} loaded.\n </p>\n <a\n href={STUDIO_CONFIG_DOCS_URL}\n target=\"_blank\"\n rel=\"noopener\"\n css={link}>\n Edit the config ↗\n </a>\n </div>\n </>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import type { PreviewSurface } from '../surfaces/surface_select.js';
2
+ /** The composition on top, wired like an org chart to one white card per surface the runtime has. */
3
+ export declare const SurfaceChart: ({ surfaces, }: {
4
+ surfaces: readonly PreviewSurface[];
5
+ }) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=surface_chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface_chart.d.ts","sourceRoot":"","sources":["../../src/home/surface_chart.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA2BjE,qGAAqG;AACrG,eAAO,MAAM,YAAY,GAAI,eAE1B;IACD,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,qDA4UA,CAAC"}
@@ -0,0 +1,263 @@
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 { useLayoutEffect, useRef, useState } from 'react';
9
+ import { EuiIcon, useEuiTheme } from '@elastic/eui';
10
+ import { css } from '@emotion/react';
11
+ import { IsomerMark } from '../chrome/isomer_mark.js';
12
+ import { PREVIEW_ICONS, PREVIEW_LABELS, SURFACE_NOTES, } from '../surfaces/surface_select.js';
13
+ import { CONTENT_WIDTH, HOME, quietLabel, WIDE } from './tokens.js';
14
+ const COMPOSITION_NOTE = 'composition: one typed Composition, validated once, rendered to every surface the runtime has.';
15
+ /** Percent of the stage: the pill's center, the bus below it, the row of cards, and half a card's height. */
16
+ const PILL_Y = 16;
17
+ const HUB_Y = 26;
18
+ const BUS_Y = 48;
19
+ const ROW_Y = 74;
20
+ const CARD_HALF = 15.8;
21
+ const CARD_WIDTH = 64;
22
+ const CARD_HEIGHT = 82;
23
+ const spotsFor = (count) => count === 1
24
+ ? [50]
25
+ : Array.from({ length: count }, (_, i) => 10 + (i * 80) / (count - 1));
26
+ /** The composition on top, wired like an org chart to one white card per surface the runtime has. */
27
+ export const SurfaceChart = ({ surfaces, }) => {
28
+ const { euiTheme: { font }, } = useEuiTheme();
29
+ const [note, setNote] = useState('');
30
+ const stageRef = useRef(null);
31
+ const [connections, setConnections] = useState([]);
32
+ useLayoutEffect(() => {
33
+ const element = stageRef.current;
34
+ if (!element) {
35
+ return;
36
+ }
37
+ const measure = () => {
38
+ const stageBox = element.getBoundingClientRect();
39
+ const [source, ...cards] = Array.from(element.querySelectorAll('[tabindex="0"]')).map((item) => item.getBoundingClientRect());
40
+ if (!source) {
41
+ return;
42
+ }
43
+ const sourceX = source.left + source.width / 2 - stageBox.left;
44
+ const sourceY = source.bottom - stageBox.top;
45
+ const hubY = sourceY + 14;
46
+ setConnections(cards.map((box) => {
47
+ const x = box.left + box.width / 2 - stageBox.left;
48
+ const y = box.top - stageBox.top;
49
+ return `M ${sourceX} ${sourceY} V ${hubY} H 4 V ${y - 14} H ${x} V ${y}`;
50
+ }));
51
+ };
52
+ measure();
53
+ if (typeof ResizeObserver === 'undefined') {
54
+ window.addEventListener('resize', measure);
55
+ return () => window.removeEventListener('resize', measure);
56
+ }
57
+ const observer = new ResizeObserver(measure);
58
+ observer.observe(element);
59
+ return () => observer.disconnect();
60
+ }, [surfaces]);
61
+ const spots = spotsFor(surfaces.length);
62
+ const first = spots[0] ?? 50;
63
+ const last = spots[spots.length - 1] ?? 50;
64
+ const stage = css `
65
+ position: relative;
66
+ width: 100%;
67
+ max-width: ${CONTENT_WIDTH}px;
68
+ margin-inline: auto;
69
+ aspect-ratio: 62 / 26;
70
+ @container (max-width: ${CONTENT_WIDTH - 1}px) {
71
+ aspect-ratio: auto;
72
+ display: grid;
73
+ grid-template-columns: repeat(auto-fit, minmax(${CARD_WIDTH}px, 1fr));
74
+ justify-items: center;
75
+ gap: 28px 10px;
76
+ padding: 8px 0 8px 16px;
77
+ box-sizing: border-box;
78
+ }
79
+ `;
80
+ const wires = css `
81
+ position: absolute;
82
+ inset: 0;
83
+ width: 100%;
84
+ height: 100%;
85
+ color: ${HOME.accent};
86
+ pointer-events: none;
87
+ @container (max-width: ${CONTENT_WIDTH - 1}px) {
88
+ display: none;
89
+ }
90
+ `;
91
+ const wrappedWires = css `
92
+ ${wires};
93
+ display: none;
94
+ @container (max-width: ${CONTENT_WIDTH - 1}px) {
95
+ display: block;
96
+ }
97
+ `;
98
+ const pill = css `
99
+ position: absolute;
100
+ left: 50%;
101
+ top: ${PILL_Y}%;
102
+ translate: -50% -50%;
103
+ z-index: 1;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ gap: 10px;
108
+ width: clamp(150px, 30%, 190px);
109
+ height: 50px;
110
+ border-radius: 999px;
111
+ background: ${HOME.surface3};
112
+ border: 1px solid ${HOME.accentBorder};
113
+ box-shadow:
114
+ 0 0 0 4px rgba(240, 78, 152, 0.18),
115
+ 0 4px 14px rgba(0, 0, 0, 0.4);
116
+ font-family: ${font.familyCode};
117
+ font-size: 13px;
118
+ font-weight: 500;
119
+ letter-spacing: 0.08em;
120
+ text-transform: uppercase;
121
+ color: ${HOME.accent};
122
+ cursor: default;
123
+ transition:
124
+ scale 0.12s,
125
+ box-shadow 0.12s,
126
+ background 0.12s;
127
+ &:hover,
128
+ &:focus-visible {
129
+ background: rgba(255, 255, 255, 0.16);
130
+ box-shadow:
131
+ 0 0 0 6px rgba(240, 78, 152, 0.28),
132
+ 0 6px 18px rgba(0, 0, 0, 0.45);
133
+ scale: 1.04;
134
+ }
135
+ @media (prefers-reduced-motion: reduce) {
136
+ transition: none;
137
+ &:hover,
138
+ &:focus-visible {
139
+ scale: none;
140
+ }
141
+ }
142
+ @container (max-width: ${CONTENT_WIDTH - 1}px) {
143
+ position: static;
144
+ translate: none;
145
+ grid-column: 1 / -1;
146
+ width: 190px;
147
+ }
148
+ `;
149
+ const card = (x) => css `
150
+ position: absolute;
151
+ left: ${x}%;
152
+ top: ${ROW_Y}%;
153
+ margin: -${CARD_HEIGHT / 2}px 0 0 -${CARD_WIDTH / 2}px;
154
+ display: flex;
155
+ flex-direction: column;
156
+ align-items: center;
157
+ justify-content: center;
158
+ gap: 4px;
159
+ width: ${CARD_WIDTH}px;
160
+ height: ${CARD_HEIGHT}px;
161
+ border-radius: 8px;
162
+ background: #ffffff;
163
+ color: ${HOME.shell};
164
+ box-shadow:
165
+ 0 2px 6px rgba(0, 0, 0, 0.35),
166
+ 0 0 0 1px rgba(0, 0, 0, 0.08);
167
+ font-family: ${font.familyCode};
168
+ font-size: 11px;
169
+ letter-spacing: 0.02em;
170
+ text-transform: uppercase;
171
+ cursor: default;
172
+ transition: transform 0.12s;
173
+ &:hover,
174
+ &:focus-visible {
175
+ z-index: 1;
176
+ transform: translateY(-6px);
177
+ }
178
+ @media (prefers-reduced-motion: reduce) {
179
+ transition: none;
180
+ &:hover,
181
+ &:focus-visible {
182
+ transform: none;
183
+ outline: 2px solid ${HOME.accent};
184
+ outline-offset: 2px;
185
+ }
186
+ }
187
+ @container (max-width: ${CONTENT_WIDTH - 1}px) {
188
+ position: static;
189
+ margin: 0;
190
+ }
191
+ `;
192
+ const body = css `
193
+ display: grid;
194
+ grid-template-columns: minmax(0, 1fr);
195
+ grid-template-areas:
196
+ 'blurb'
197
+ 'chart';
198
+ gap: 20px;
199
+ ${WIDE} {
200
+ grid-template-columns: ${CONTENT_WIDTH}px minmax(0, 1fr);
201
+ grid-template-areas: 'chart blurb';
202
+ gap: 32px;
203
+ align-items: center;
204
+ }
205
+ `;
206
+ const blurb = css `
207
+ grid-area: blurb;
208
+ display: flex;
209
+ flex-direction: column;
210
+ gap: 10px;
211
+ max-width: 52ch;
212
+ `;
213
+ const blurbTitle = css `
214
+ margin: 0;
215
+ font-size: 18px;
216
+ font-weight: 600;
217
+ letter-spacing: -0.01em;
218
+ line-height: 1.25;
219
+ text-wrap: balance;
220
+ color: ${HOME.fg};
221
+ `;
222
+ const blurbText = css `
223
+ margin: 0;
224
+ font-size: 14px;
225
+ color: ${HOME.fg2};
226
+ text-wrap: pretty;
227
+ `;
228
+ const chart = css `
229
+ grid-area: chart;
230
+ container-type: inline-size;
231
+ display: flex;
232
+ flex-direction: column;
233
+ gap: 10px;
234
+ min-width: 0;
235
+ `;
236
+ return (_jsxs("section", { "aria-labelledby": "isomer-studio-surfaces", css: css `
237
+ display: flex;
238
+ flex-direction: column;
239
+ gap: 10px;
240
+ `, children: [_jsx("div", { css: quietLabel, children: _jsx("span", { id: "isomer-studio-surfaces", children: "One composition, every surface" }) }), _jsxs("div", { css: body, children: [_jsxs("div", { css: blurb, children: [_jsx("h2", { css: blurbTitle, children: "Author once, render anywhere." }), _jsx("p", { css: blurbText, children: "Isomer turns one typed composition into every surface your product speaks: web, Slack, Markdown, images." }), _jsx("p", { css: blurbText, children: "Hosts keep their data, authorization and routing. Isomer owns the contract, the primitive catalog, validation and rendering." })] }), _jsxs("div", { css: chart, children: [_jsxs("div", { ref: stageRef, css: stage, onMouseLeave: () => setNote(''), onBlur: (event) => {
241
+ if (!event.currentTarget.contains(event.relatedTarget)) {
242
+ setNote('');
243
+ }
244
+ }, children: [_jsxs("div", { css: pill, tabIndex: 0, onMouseEnter: () => setNote(COMPOSITION_NOTE), onFocus: () => setNote(COMPOSITION_NOTE), children: [_jsx(IsomerMark, { size: 26 }), _jsx("span", { children: "composition" })] }), _jsx("svg", { "data-surface-connections": "wide", css: wires, viewBox: "0 0 100 100", preserveAspectRatio: "none", "aria-hidden": true, children: [
245
+ [50, HUB_Y, 50, BUS_Y],
246
+ [first, BUS_Y, last, BUS_Y],
247
+ ...spots.map((x) => [x, BUS_Y, x, ROW_Y - CARD_HALF]),
248
+ ].map(([x1, y1, x2, y2], index) => (_jsx("line", { x1, y1, x2, y2, stroke: "currentColor", strokeWidth: "1", opacity: "0.55", vectorEffect: "non-scaling-stroke" }, index))) }), _jsx("svg", { "data-surface-connections": "wrapped", css: wrappedWires, opacity: "0.55", "aria-hidden": true, children: connections.map((d, index) => (_jsx("path", { d: d, fill: "none", stroke: "currentColor", strokeWidth: "1" }, surfaces[index]))) }), surfaces.map((surface, index) => {
249
+ const text = `${surface}: ${SURFACE_NOTES[surface]}`;
250
+ return (_jsxs("div", { css: card(spots[index] ?? 50), tabIndex: 0, "aria-label": PREVIEW_LABELS[surface], onMouseEnter: () => setNote(text), onFocus: () => setNote(text), children: [_jsx(EuiIcon, { type: PREVIEW_ICONS[surface], size: "xl" }), _jsx("span", { children: surface === 'snapshot'
251
+ ? 'snap'
252
+ : surface === 'markdown'
253
+ ? 'md'
254
+ : surface })] }, surface));
255
+ })] }), _jsx("div", { "aria-live": "polite", css: css `
256
+ min-height: 20px;
257
+ text-align: center;
258
+ font-size: 12.5px;
259
+ color: ${HOME.fg2};
260
+ text-wrap: pretty;
261
+ `, children: note })] })] })] }));
262
+ };
263
+ //# sourceMappingURL=surface_chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface_chart.js","sourceRoot":"","sources":["../../src/home/surface_chart.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, { useLayoutEffect, useRef, useState } from 'react';\nimport { EuiIcon, useEuiTheme } from '@elastic/eui';\nimport { css } from '@emotion/react';\n\nimport { IsomerMark } from '../chrome/isomer_mark';\nimport type { PreviewSurface } from '../surfaces/surface_select';\nimport {\n PREVIEW_ICONS,\n PREVIEW_LABELS,\n SURFACE_NOTES,\n} from '../surfaces/surface_select';\n\nimport { CONTENT_WIDTH, HOME, quietLabel, WIDE } from './tokens';\n\nconst COMPOSITION_NOTE =\n 'composition: one typed Composition, validated once, rendered to every surface the runtime has.';\n\n/** Percent of the stage: the pill's center, the bus below it, the row of cards, and half a card's height. */\nconst PILL_Y = 16;\nconst HUB_Y = 26;\nconst BUS_Y = 48;\nconst ROW_Y = 74;\nconst CARD_HALF = 15.8;\n\nconst CARD_WIDTH = 64;\nconst CARD_HEIGHT = 82;\n\nconst spotsFor = (count: number): number[] =>\n count === 1\n ? [50]\n : Array.from({ length: count }, (_, i) => 10 + (i * 80) / (count - 1));\n\n/** The composition on top, wired like an org chart to one white card per surface the runtime has. */\nexport const SurfaceChart = ({\n surfaces,\n}: {\n surfaces: readonly PreviewSurface[];\n}) => {\n const {\n euiTheme: { font },\n } = useEuiTheme();\n const [note, setNote] = useState('');\n const stageRef = useRef<HTMLDivElement>(null);\n const [connections, setConnections] = useState<readonly string[]>([]);\n useLayoutEffect(() => {\n const element = stageRef.current;\n if (!element) {\n return;\n }\n const measure = () => {\n const stageBox = element.getBoundingClientRect();\n const [source, ...cards] = Array.from(\n element.querySelectorAll<HTMLElement>('[tabindex=\"0\"]')\n ).map((item) => item.getBoundingClientRect());\n if (!source) {\n return;\n }\n const sourceX = source.left + source.width / 2 - stageBox.left;\n const sourceY = source.bottom - stageBox.top;\n const hubY = sourceY + 14;\n setConnections(\n cards.map((box) => {\n const x = box.left + box.width / 2 - stageBox.left;\n const y = box.top - stageBox.top;\n return `M ${sourceX} ${sourceY} V ${hubY} H 4 V ${y - 14} H ${x} V ${y}`;\n })\n );\n };\n measure();\n if (typeof ResizeObserver === 'undefined') {\n window.addEventListener('resize', measure);\n return () => window.removeEventListener('resize', measure);\n }\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [surfaces]);\n const spots = spotsFor(surfaces.length);\n const first = spots[0] ?? 50;\n const last = spots[spots.length - 1] ?? 50;\n\n const stage = css`\n position: relative;\n width: 100%;\n max-width: ${CONTENT_WIDTH}px;\n margin-inline: auto;\n aspect-ratio: 62 / 26;\n @container (max-width: ${CONTENT_WIDTH - 1}px) {\n aspect-ratio: auto;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(${CARD_WIDTH}px, 1fr));\n justify-items: center;\n gap: 28px 10px;\n padding: 8px 0 8px 16px;\n box-sizing: border-box;\n }\n `;\n const wires = css`\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n color: ${HOME.accent};\n pointer-events: none;\n @container (max-width: ${CONTENT_WIDTH - 1}px) {\n display: none;\n }\n `;\n const wrappedWires = css`\n ${wires};\n display: none;\n @container (max-width: ${CONTENT_WIDTH - 1}px) {\n display: block;\n }\n `;\n const pill = css`\n position: absolute;\n left: 50%;\n top: ${PILL_Y}%;\n translate: -50% -50%;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n width: clamp(150px, 30%, 190px);\n height: 50px;\n border-radius: 999px;\n background: ${HOME.surface3};\n border: 1px solid ${HOME.accentBorder};\n box-shadow:\n 0 0 0 4px rgba(240, 78, 152, 0.18),\n 0 4px 14px rgba(0, 0, 0, 0.4);\n font-family: ${font.familyCode};\n font-size: 13px;\n font-weight: 500;\n letter-spacing: 0.08em;\n text-transform: uppercase;\n color: ${HOME.accent};\n cursor: default;\n transition:\n scale 0.12s,\n box-shadow 0.12s,\n background 0.12s;\n &:hover,\n &:focus-visible {\n background: rgba(255, 255, 255, 0.16);\n box-shadow:\n 0 0 0 6px rgba(240, 78, 152, 0.28),\n 0 6px 18px rgba(0, 0, 0, 0.45);\n scale: 1.04;\n }\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n &:hover,\n &:focus-visible {\n scale: none;\n }\n }\n @container (max-width: ${CONTENT_WIDTH - 1}px) {\n position: static;\n translate: none;\n grid-column: 1 / -1;\n width: 190px;\n }\n `;\n const card = (x: number) => css`\n position: absolute;\n left: ${x}%;\n top: ${ROW_Y}%;\n margin: -${CARD_HEIGHT / 2}px 0 0 -${CARD_WIDTH / 2}px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 4px;\n width: ${CARD_WIDTH}px;\n height: ${CARD_HEIGHT}px;\n border-radius: 8px;\n background: #ffffff;\n color: ${HOME.shell};\n box-shadow:\n 0 2px 6px rgba(0, 0, 0, 0.35),\n 0 0 0 1px rgba(0, 0, 0, 0.08);\n font-family: ${font.familyCode};\n font-size: 11px;\n letter-spacing: 0.02em;\n text-transform: uppercase;\n cursor: default;\n transition: transform 0.12s;\n &:hover,\n &:focus-visible {\n z-index: 1;\n transform: translateY(-6px);\n }\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n &:hover,\n &:focus-visible {\n transform: none;\n outline: 2px solid ${HOME.accent};\n outline-offset: 2px;\n }\n }\n @container (max-width: ${CONTENT_WIDTH - 1}px) {\n position: static;\n margin: 0;\n }\n `;\n\n const body = css`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n grid-template-areas:\n 'blurb'\n 'chart';\n gap: 20px;\n ${WIDE} {\n grid-template-columns: ${CONTENT_WIDTH}px minmax(0, 1fr);\n grid-template-areas: 'chart blurb';\n gap: 32px;\n align-items: center;\n }\n `;\n const blurb = css`\n grid-area: blurb;\n display: flex;\n flex-direction: column;\n gap: 10px;\n max-width: 52ch;\n `;\n const blurbTitle = css`\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n letter-spacing: -0.01em;\n line-height: 1.25;\n text-wrap: balance;\n color: ${HOME.fg};\n `;\n const blurbText = css`\n margin: 0;\n font-size: 14px;\n color: ${HOME.fg2};\n text-wrap: pretty;\n `;\n const chart = css`\n grid-area: chart;\n container-type: inline-size;\n display: flex;\n flex-direction: column;\n gap: 10px;\n min-width: 0;\n `;\n\n return (\n <section\n aria-labelledby=\"isomer-studio-surfaces\"\n css={css`\n display: flex;\n flex-direction: column;\n gap: 10px;\n `}>\n <div css={quietLabel}>\n <span id=\"isomer-studio-surfaces\">One composition, every surface</span>\n </div>\n <div css={body}>\n <div css={blurb}>\n <h2 css={blurbTitle}>Author once, render anywhere.</h2>\n <p css={blurbText}>\n Isomer turns one typed composition into every surface your product\n speaks: web, Slack, Markdown, images.\n </p>\n <p css={blurbText}>\n Hosts keep their data, authorization and routing. Isomer owns the\n contract, the primitive catalog, validation and rendering.\n </p>\n </div>\n <div css={chart}>\n <div\n ref={stageRef}\n css={stage}\n onMouseLeave={() => setNote('')}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n setNote('');\n }\n }}>\n <div\n css={pill}\n tabIndex={0}\n onMouseEnter={() => setNote(COMPOSITION_NOTE)}\n onFocus={() => setNote(COMPOSITION_NOTE)}>\n <IsomerMark size={26} />\n <span>composition</span>\n </div>\n <svg\n data-surface-connections=\"wide\"\n css={wires}\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n aria-hidden={true}>\n {[\n [50, HUB_Y, 50, BUS_Y],\n [first, BUS_Y, last, BUS_Y],\n ...spots.map((x) => [x, BUS_Y, x, ROW_Y - CARD_HALF]),\n ].map(([x1, y1, x2, y2], index) => (\n <line\n key={index}\n {...{ x1, y1, x2, y2 }}\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n opacity=\"0.55\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n </svg>\n <svg\n data-surface-connections=\"wrapped\"\n css={wrappedWires}\n opacity=\"0.55\"\n aria-hidden={true}>\n {connections.map((d, index) => (\n <path\n key={surfaces[index]}\n d={d}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n ))}\n </svg>\n {surfaces.map((surface, index) => {\n const text = `${surface}: ${SURFACE_NOTES[surface]}`;\n return (\n <div\n key={surface}\n css={card(spots[index] ?? 50)}\n tabIndex={0}\n aria-label={PREVIEW_LABELS[surface]}\n onMouseEnter={() => setNote(text)}\n onFocus={() => setNote(text)}>\n <EuiIcon type={PREVIEW_ICONS[surface]} size=\"xl\" />\n <span>\n {surface === 'snapshot'\n ? 'snap'\n : surface === 'markdown'\n ? 'md'\n : surface}\n </span>\n </div>\n );\n })}\n </div>\n <div\n aria-live=\"polite\"\n css={css`\n min-height: 20px;\n text-align: center;\n font-size: 12.5px;\n color: ${HOME.fg2};\n text-wrap: pretty;\n `}>\n {note}\n </div>\n </div>\n </div>\n </section>\n );\n};\n"]}
@@ -0,0 +1,49 @@
1
+ /** Home's own palette: one dark look on the plum shell, whatever the color mode. */
2
+ export declare const HOME: {
3
+ readonly shell: "#3E3748";
4
+ readonly fg: "#FFFFFF";
5
+ readonly fg2: "rgba(255, 255, 255, 0.72)";
6
+ readonly fg3: "rgba(255, 255, 255, 0.55)";
7
+ readonly surface1: "rgba(255, 255, 255, 0.05)";
8
+ readonly surface2: "rgba(255, 255, 255, 0.07)";
9
+ readonly surface3: "rgba(255, 255, 255, 0.11)";
10
+ readonly field: "rgba(22, 12, 30, 0.5)";
11
+ readonly line1: "rgba(255, 255, 255, 0.12)";
12
+ readonly line2: "rgba(255, 255, 255, 0.14)";
13
+ readonly line3: "rgba(255, 255, 255, 0.18)";
14
+ readonly accent: "#F78BBB";
15
+ readonly accentBorder: "#F04E98";
16
+ readonly docs: "#1BA9F5";
17
+ readonly dev: "#00BFB3";
18
+ readonly app: "#FEC514";
19
+ readonly actionSurface: "#302938";
20
+ readonly actionSurfaceHover: "#382F40";
21
+ };
22
+ /** The glows behind the shell: the same stops as Workbench and Reference, in the logo's palette. */
23
+ export declare const homeBackground: import("@emotion/react").SerializedStyles;
24
+ export declare const CONTENT_WIDTH = 620;
25
+ export declare const HOME_NARROW = "@container isomer-home (max-width: 619px)";
26
+ export declare const WIDE_CONTENT_WIDTH = 880;
27
+ export declare const PANEL_WIDTH = 360;
28
+ export declare const GUTTER = 48;
29
+ /** Where the main column fits {@link WIDE_CONTENT_WIDTH} beside the panel. */
30
+ export declare const WIDE = "@media (min-width: 1400px)";
31
+ /** Tiles per row, set on the main column and read by every tile grid inside it. */
32
+ export declare const TILE_COLUMNS = "--isomer-studio-tile-columns";
33
+ export declare const sectionLabel: import("@emotion/react").SerializedStyles;
34
+ export declare const sectionHeading: import("@emotion/react").SerializedStyles;
35
+ export declare const quietLabel: import("@emotion/react").SerializedStyles;
36
+ /** A tile's chrome. Rows line up across a grid through subgrid, so a wrapped title shifts its neighbours too. */
37
+ export declare const tile: (rows: number) => import("@emotion/react").SerializedStyles;
38
+ /** Opaque plum keeps the logo-colored actions readable over the shell's glows. */
39
+ export declare const actionCard: import("@emotion/react").SerializedStyles;
40
+ export declare const tileTop: import("@emotion/react").SerializedStyles;
41
+ export declare const tileName: import("@emotion/react").SerializedStyles;
42
+ export declare const tileDescription: import("@emotion/react").SerializedStyles;
43
+ /** The bottom row of links, shown on hover or focus; always shown where there is no hover. */
44
+ export declare const tileActions: import("@emotion/react").SerializedStyles;
45
+ /** A dashed tile that points somewhere else: the gallery, or the docs on adding an app. */
46
+ export declare const helpTile: (rows: number, color: string) => import("@emotion/react").SerializedStyles;
47
+ export declare const tilesGrid: import("@emotion/react").SerializedStyles;
48
+ export declare const monoFont: (familyCode: string) => import("@emotion/react").SerializedStyles;
49
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/home/tokens.ts"],"names":[],"mappings":"AAWA,oFAAoF;AACpF,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;CAmBP,CAAC;AAEX,oGAAoG;AACpG,eAAO,MAAM,cAAc,2CAU1B,CAAC;AAEF,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,WAAW,8CAA+D,CAAC;AACxF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,MAAM,KAAK,CAAC;AAEzB,8EAA8E;AAC9E,eAAO,MAAM,IAAI,+BAAgF,CAAC;AAElG,mFAAmF;AACnF,eAAO,MAAM,YAAY,iCAAiC,CAAC;AAE3D,eAAO,MAAM,YAAY,2CAQxB,CAAC;AAEF,eAAO,MAAM,cAAc,2CAG1B,CAAC;AAEF,eAAO,MAAM,UAAU,2CAOtB,CAAC;AAEF,iHAAiH;AACjH,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,8CAqBhC,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,UAAU,2CAMtB,CAAC;AAEF,eAAO,MAAM,OAAO,2CAKnB,CAAC;AAEF,eAAO,MAAM,QAAQ,2CAIpB,CAAC;AAEF,eAAO,MAAM,eAAe,2CAI3B,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,WAAW,2CAsBvB,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,8CAenD,CAAC;AAEF,eAAO,MAAM,SAAS,2CAOrB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,YAAY,MAAM,8CAE1C,CAAC"}