Skip to main content

gpui_component/
lib.rs

1use gpui::App;
2use std::ops::Deref;
3
4mod component_traits;
5mod element_ext;
6pub mod global_state;
7mod icon;
8mod index_path;
9#[cfg(any(feature = "inspector", debug_assertions))]
10mod inspector;
11mod root;
12mod sizing;
13mod styled;
14mod time;
15mod title_bar;
16mod virtual_list;
17mod window_border;
18mod window_ext;
19
20pub(crate) mod actions {
21    pub use gpui_base::actions::*;
22}
23
24pub mod accordion;
25pub mod alert;
26pub mod attachment;
27pub mod avatar;
28pub mod badge;
29pub mod breadcrumb;
30pub mod bubble;
31pub mod button;
32pub mod chart;
33pub mod checkbox;
34pub mod clipboard;
35pub mod collapsible;
36pub mod color_picker;
37pub mod combobox;
38pub mod command;
39pub mod description_list;
40pub mod dialog;
41pub mod dock;
42pub mod form;
43pub mod group_box;
44pub mod highlighter;
45pub mod history;
46pub mod hover_card;
47pub mod input;
48pub mod kbd;
49pub mod label;
50pub mod link;
51pub mod list;
52pub mod marker;
53pub mod menu;
54pub mod message;
55pub mod message_scroller;
56pub mod native_menu;
57pub mod notification;
58pub mod pagination;
59pub mod plot;
60pub mod popover;
61pub mod progress;
62pub mod radio;
63pub mod rating;
64/// Backwards-compatible resizable component paths.
65pub mod resizable {
66    pub use super::{
67        ResizablePanel, ResizablePanelEvent, ResizablePanelGroup, ResizableState, h_resizable,
68        resizable_panel, v_resizable,
69    };
70}
71pub mod scroll;
72pub mod searchable_list;
73pub mod select;
74pub mod separator;
75pub mod setting;
76pub mod sheet;
77pub mod shimmer;
78pub mod sidebar;
79pub mod skeleton;
80pub mod slider;
81pub mod spinner;
82pub mod status_bar;
83pub mod stepper;
84pub mod switch;
85pub mod tab;
86pub mod table;
87pub mod tag;
88pub mod text;
89pub mod theme;
90pub mod tooltip;
91pub mod tree;
92
93pub use crate::Disableable;
94pub use element_ext::*;
95pub use global_state::GlobalState;
96pub use gpui_base::animation;
97pub(crate) use gpui_base::measurement_enabled as measure_enable;
98#[doc(hidden)]
99pub(crate) use gpui_base::resize_handle;
100pub use gpui_base::{
101    AxisExt, Edges, FocusTrapElement, InteractiveElementExt, LengthExt, Measure, OngoingScrollExt,
102    Placement, Side, measure, measure_if,
103};
104pub use gpui_base::{
105    ResizablePanel, ResizablePanelEvent, ResizablePanelGroup, ResizableState, h_resizable,
106    resizable_panel, v_resizable,
107};
108pub use gpui_component_macros::icon_named;
109pub use icon::*;
110pub use index_path::IndexPath;
111pub use input::{Rope, RopeExt, RopeLines};
112#[cfg(any(feature = "inspector", debug_assertions))]
113pub use inspector::*;
114pub use root::Root;
115pub use styled::*;
116pub use theme::*;
117pub use time::{calendar, date_picker};
118pub use title_bar::*;
119pub use virtual_list::{VirtualList, VirtualListScrollHandle, h_virtual_list, v_virtual_list};
120pub use window_border::{WindowBorder, window_border, window_paddings};
121pub use window_ext::WindowExt;
122
123rust_i18n::i18n!("locales", fallback = "en");
124
125/// Initialize the components.
126///
127/// You must initialize the components at your application's entry point.
128pub fn init(cx: &mut App) {
129    theme::init(cx);
130    global_state::init(cx);
131    #[cfg(any(feature = "inspector", debug_assertions))]
132    inspector::init(cx);
133    root::init(cx);
134    gpui_base::init(cx);
135    date_picker::init(cx);
136    dock::init(cx);
137    sheet::init(cx);
138    list::init(cx);
139    command::init(cx);
140    notification::init(cx);
141    popover::init(cx);
142    menu::init(cx);
143    table::init(cx);
144    tooltip::init(cx);
145}
146
147#[inline]
148pub fn locale() -> impl Deref<Target = str> {
149    rust_i18n::locale()
150}
151
152#[inline]
153pub fn set_locale(locale: &str) {
154    rust_i18n::set_locale(locale)
155}