Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T01:32:33.460Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

component_preview.rs

157 lines · 5.4 KB · rust
1//! Component Preview Example
2//!
3//! Run with: `cargo run -p component_preview --example component_preview"`
4use assets::Assets;
5use fs::RealFs;
6use gpui::{AppContext as _, Bounds, KeyBinding, WindowBounds, WindowOptions, actions, size};
7
8use client::{Client, UserStore};
9use language::LanguageRegistry;
10use node_runtime::NodeRuntime;
11use project::Project;
12use reqwest_client::ReqwestClient;
13use session::{AppSession, Session};
14use std::sync::Arc;
15use ui::{App, px};
16use workspace::{AppState, Workspace, WorkspaceStore};
17
18use component_preview::{ComponentPreview, init};
19
20actions!(component_preview, [Quit]);
21
22fn quit(_: &Quit, cx: &mut App) {
23    cx.quit();
24}
25
26fn main() {
27    env_logger::builder()
28        .filter_level(log::LevelFilter::Warn)
29        .init();
30
31    gpui_platform::application().with_assets(Assets).run(|cx| {
32        component::init();
33
34        cx.on_action(quit);
35        cx.bind_keys([KeyBinding::new("cmd-q", Quit, None)]);
36        let version = release_channel::AppVersion::load(env!("CARGO_PKG_VERSION"), None, None);
37        release_channel::init(version, cx);
38        cx.set_global(db::AppDatabase::new());
39        Assets
40            .load_fonts(cx)
41            .expect("Failed to load embedded fonts");
42
43        let http_client =
44            ReqwestClient::user_agent("component_preview").expect("Failed to create HTTP client");
45        cx.set_http_client(Arc::new(http_client));
46
47        let fs = Arc::new(RealFs::new(None, cx.background_executor().clone()));
48        <dyn fs::Fs>::set_global(fs.clone(), cx);
49
50        settings::init(cx);
51        theme_settings::init(theme::LoadThemes::JustBase, cx);
52
53        let languages = Arc::new(LanguageRegistry::new(cx.background_executor().clone()));
54        let client = Client::production(cx);
55        client::init(&client, cx);
56
57        let user_store = cx.new(|cx| UserStore::new(client.clone(), cx));
58        let workspace_store = cx.new(|cx| WorkspaceStore::new(client.clone(), cx));
59        let session_id = uuid::Uuid::new_v4().to_string();
60        let kvp = db::kvp::KeyValueStore::global(cx);
61        let session = cx
62            .foreground_executor()
63            .block_on(Session::new(session_id, kvp));
64        let session = cx.new(|cx| AppSession::new(session, cx));
65        let node_runtime = NodeRuntime::unavailable();
66
67        let app_state = Arc::new(AppState {
68            languages,
69            client,
70            user_store,
71            workspace_store,
72            fs,
73            build_window_options: |_, _| Default::default(),
74            node_runtime,
75            session,
76        });
77        AppState::set_global(app_state.clone(), cx);
78
79        workspace::init(app_state.clone(), cx);
80        editor::init(cx);
81        init(app_state.clone(), cx);
82
83        let size = size(px(1200.), px(800.));
84        let bounds = Bounds::centered(None, size, cx);
85
86        cx.open_window(
87            WindowOptions {
88                window_bounds: Some(WindowBounds::Windowed(bounds)),
89                ..Default::default()
90            },
91            {
92                move |window, cx| {
93                    let app_state = app_state;
94                    theme_settings::setup_ui_font(window, cx);
95
96                    let project = Project::local(
97                        app_state.client.clone(),
98                        app_state.node_runtime.clone(),
99                        app_state.user_store.clone(),
100                        app_state.languages.clone(),
101                        app_state.fs.clone(),
102                        None,
103                        project::LocalProjectFlags {
104                            init_worktree_trust: false,
105                            ..Default::default()
106                        },
107                        cx,
108                    );
109
110                    let workspace = cx.new(|cx| {
111                        Workspace::new(
112                            Default::default(),
113                            project.clone(),
114                            app_state.clone(),
115                            window,
116                            cx,
117                        )
118                    });
119
120                    workspace.update(cx, |workspace, cx| {
121                        let weak_workspace = cx.entity().downgrade();
122                        let language_registry = app_state.languages.clone();
123                        let user_store = app_state.user_store.clone();
124
125                        let component_preview = cx.new(|cx| {
126                            ComponentPreview::new(
127                                weak_workspace,
128                                project,
129                                language_registry,
130                                user_store,
131                                None,
132                                None,
133                                window,
134                                cx,
135                            )
136                            .expect("Failed to create component preview")
137                        });
138
139                        workspace.add_item_to_active_pane(
140                            Box::new(component_preview),
141                            None,
142                            true,
143                            window,
144                            cx,
145                        );
146                    });
147
148                    workspace
149                }
150            },
151        )
152        .expect("Failed to open component preview window");
153
154        cx.activate(true);
155    });
156}
157
Served at tenant.openagents/omega Member data and write actions are omitted.