diff --git a/crates/nemo-storybook-generator/src/lib.rs b/crates/nemo-storybook-generator/src/lib.rs index 2170e23..1ef5ef9 100644 --- a/crates/nemo-storybook-generator/src/lib.rs +++ b/crates/nemo-storybook-generator/src/lib.rs @@ -298,7 +298,49 @@ pub fn generate_storybook_xml() -> String { out.push_str(" \n"); out.push_str(" \n"); - out.push_str(" \n"); + out.push_str(" \n\n"); + + // Collect all component names for the script section + let all_names: Vec = { + let mut names = Vec::new(); + for cat in CATEGORIES { + let mut comps = registry.list_by_category(cat.clone()); + comps.sort_by(|a, b| a.name.cmp(&b.name)); + for comp in comps { + names.push(comp.name.clone()); + } + } + names + }; + + let page_ids_json = all_names + .iter() + .map(|n| format!("\"page_{}\"", n)) + .collect::>() + .join(", "); + let comp_names_json = all_names + .iter() + .map(|n| format!("\"{}\"", n)) + .collect::>() + .join(", "); + + out.push_str(" \n"); + out.push_str("\n"); out } diff --git a/crates/nemo/src/main.rs b/crates/nemo/src/main.rs index 6a157cd..3a94773 100644 --- a/crates/nemo/src/main.rs +++ b/crates/nemo/src/main.rs @@ -286,10 +286,13 @@ fn launch_storybook(sb_args: &args::StorybookArgs, args: &Args) -> Result<()> { let initial_component = sb_args.component.clone(); let initial_search = sb_args.search.clone(); - // Store search term for workspace to pick up + // Store component and search terms as env vars for the runtime to pick up if let Some(ref search) = initial_search { env::set_var("NEMO_STORYBOOK_SEARCH", search); } + if let Some(ref comp) = initial_component { + env::set_var("NEMO_STORYBOOK_COMPONENT", comp); + } // Launch the app with the storybook config let nemo_config = config::NemoConfig::load_from(args.config.as_ref());