Skip to main content

ui_storybook/stories/
workspace_menu.rs

1//! Workspace switcher menu stories (M-UI.5 / AUT-125).
2
3use leptos::prelude::*;
4
5use crate::components::shell::WorkspaceSwitcherMenu;
6use crate::fixtures::workspaces::{
7    sample_workspace_views, sample_workspace_views_long_names, sample_workspace_views_many,
8};
9
10use super::{Story, StoryViewport, render};
11
12/// All workspace-switcher stories.
13#[must_use]
14pub fn stories() -> Vec<Story> {
15    vec![
16        Story {
17            id: "workspace-menu-default",
18            category: "Menus",
19            title: "Workspace switcher — default",
20            viewport: StoryViewport::Fixed {
21                width: 360,
22                height: 480,
23            },
24            render: render_default,
25        },
26        Story {
27            id: "workspace-menu-many",
28            category: "Menus",
29            title: "Workspace switcher — many workspaces",
30            viewport: StoryViewport::Fixed {
31                width: 360,
32                height: 600,
33            },
34            render: render_many,
35        },
36        Story {
37            id: "workspace-menu-long-names",
38            category: "Menus",
39            title: "Workspace switcher — long names truncate",
40            viewport: StoryViewport::Fixed {
41                width: 360,
42                height: 360,
43            },
44            render: render_long_names,
45        },
46        Story {
47            id: "workspace-menu-no-selection",
48            category: "Menus",
49            title: "Workspace switcher — no selection",
50            viewport: StoryViewport::Fixed {
51                width: 360,
52                height: 480,
53            },
54            render: render_no_selection,
55        },
56    ]
57}
58
59fn render_default() -> String {
60    render(view! {
61        <WorkspaceSwitcherMenu
62            workspaces=sample_workspace_views()
63            selected_id="ws-northwind"
64        />
65    })
66}
67
68fn render_many() -> String {
69    render(view! {
70        <WorkspaceSwitcherMenu
71            workspaces=sample_workspace_views_many()
72            selected_id="ws-northwind"
73        />
74    })
75}
76
77fn render_long_names() -> String {
78    render(view! {
79        <WorkspaceSwitcherMenu
80            workspaces=sample_workspace_views_long_names()
81            selected_id="ws-extremely-long"
82        />
83    })
84}
85
86fn render_no_selection() -> String {
87    render(view! {
88        <WorkspaceSwitcherMenu
89            workspaces=sample_workspace_views()
90            selected_id=""
91        />
92    })
93}