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