Move UI out of `storybook2` and into `ui2`

Marshall Bowers created

Change summary

crates/storybook2/src/collab_panel.rs             |  2 
crates/storybook2/src/stories/components/panel.rs |  4 +-
crates/storybook2/src/stories/elements/avatar.rs  |  4 +-
crates/storybook2/src/stories/elements/icon.rs    |  5 +-
crates/storybook2/src/stories/elements/label.rs   |  4 +-
crates/storybook2/src/stories/kitchen_sink.rs     |  2 
crates/storybook2/src/story.rs                    |  4 +-
crates/storybook2/src/story_selector.rs           |  2 
crates/storybook2/src/storybook2.rs               |  6 +--
crates/storybook2/src/themes/rose_pine.rs         |  2 
crates/storybook2/src/ui.rs                       | 12 -------
crates/storybook2/src/workspace.rs                | 14 ++++----
crates/ui2/src/children.rs                        |  0 
crates/ui2/src/components.rs                      |  0 
crates/ui2/src/components/list.rs                 |  4 +-
crates/ui2/src/components/panel.rs                |  7 +--
crates/ui2/src/element_ext.rs                     |  0 
crates/ui2/src/elements.rs                        |  0 
crates/ui2/src/elements/avatar.rs                 |  2 
crates/ui2/src/elements/icon.rs                   |  2 
crates/ui2/src/elements/label.rs                  |  2 
crates/ui2/src/elements/stack.rs                  |  2 
crates/ui2/src/lib.rs                             | 28 +++++++++-------
crates/ui2/src/prelude.rs                         |  2 
crates/ui2/src/theme.rs                           | 19 +----------
crates/ui2/src/tokens.rs                          |  0 
26 files changed, 51 insertions(+), 78 deletions(-)

Detailed changes

crates/storybook2/src/collab_panel.rs 🔗

@@ -1,8 +1,8 @@
-use crate::theme::{theme, Theme};
 use gpui3::{
     div, img, svg, view, AppContext, Context, Element, IntoAnyElement, ParentElement, ScrollState,
     SharedString, StyleHelpers, View, ViewContext, WindowContext,
 };
+use ui::{theme, Theme};
 
 pub struct CollabPanel {
     scroll_state: ScrollState,

crates/storybook2/src/stories/elements/icon.rs 🔗

@@ -1,9 +1,8 @@
 use std::marker::PhantomData;
 
 use strum::IntoEnumIterator;
-
-use crate::ui::prelude::*;
-use crate::ui::{Icon, IconElement};
+use ui::prelude::*;
+use ui::{Icon, IconElement};
 
 use crate::story::Story;
 

crates/storybook2/src/stories/kitchen_sink.rs 🔗

@@ -1,10 +1,10 @@
 use std::marker::PhantomData;
 
 use strum::IntoEnumIterator;
+use ui::prelude::*;
 
 use crate::story::Story;
 use crate::story_selector::{ComponentStory, ElementStory};
-use crate::ui::prelude::*;
 
 #[derive(Element)]
 pub struct KitchenSinkStory<S: 'static + Send + Sync + Clone> {

crates/storybook2/src/story.rs 🔗

@@ -1,6 +1,6 @@
-use crate::theme::theme;
-use crate::ui::prelude::*;
 use gpui3::Div;
+use ui::prelude::*;
+use ui::theme;
 
 pub struct Story {}
 

crates/storybook2/src/story_selector.rs 🔗

@@ -7,7 +7,7 @@ use clap::ValueEnum;
 use gpui3::AnyElement;
 use strum::{EnumIter, EnumString, IntoEnumIterator};
 
-use crate::ui::prelude::*;
+use ui::prelude::*;
 
 #[derive(Debug, PartialEq, Eq, Clone, Copy, strum::Display, EnumString, EnumIter)]
 #[strum(serialize_all = "snake_case")]

crates/storybook2/src/storybook2.rs 🔗

@@ -5,9 +5,7 @@ mod collab_panel;
 mod stories;
 mod story;
 mod story_selector;
-mod theme;
 mod themes;
-mod ui;
 mod workspace;
 
 use std::sync::Arc;
@@ -18,12 +16,12 @@ use gpui3::{
 };
 use log::LevelFilter;
 use simplelog::SimpleLogger;
+use ui::prelude::*;
+use ui::themed;
 
 use crate::assets::Assets;
 use crate::story_selector::StorySelector;
-use crate::theme::themed;
 use crate::themes::rose_pine_dawn;
-use crate::ui::prelude::*;
 use crate::workspace::workspace;
 
 // gpui2::actions! {

crates/storybook2/src/ui.rs 🔗

@@ -1,12 +0,0 @@
-mod children;
-mod components;
-mod element_ext;
-mod elements;
-pub mod prelude;
-mod tokens;
-
-pub use children::*;
-pub use components::*;
-pub use element_ext::*;
-pub use elements::*;
-pub use tokens::*;

crates/storybook2/src/workspace.rs 🔗

@@ -1,14 +1,14 @@
-use crate::ui::prelude::*;
-use crate::ui::{Panel, Stack};
-use crate::{
-    collab_panel::{collab_panel, CollabPanel},
-    theme::{theme, themed},
-    themes::rose_pine_dawn,
-};
 use gpui3::{
     div, img, svg, view, Context, Element, ParentElement, RootView, StyleHelpers, View,
     ViewContext, WindowContext,
 };
+use ui::prelude::*;
+use ui::{theme, themed, Panel, Stack};
+
+use crate::{
+    collab_panel::{collab_panel, CollabPanel},
+    themes::rose_pine_dawn,
+};
 
 pub struct Workspace {
     left_panel: View<CollabPanel, Self>,

crates/storybook2/src/ui/components/list.rs → crates/ui2/src/components/list.rs 🔗

@@ -3,8 +3,8 @@ use std::marker::PhantomData;
 use gpui3::{div, Div, Hsla, WindowContext};
 
 use crate::theme::theme;
-use crate::ui::prelude::*;
-use crate::ui::{
+use crate::prelude::*;
+use crate::{
     h_stack, token, v_stack, Avatar, Icon, IconColor, IconElement, IconSize, Label, LabelColor,
     LabelSize,
 };

crates/storybook2/src/ui/components/panel.rs → crates/ui2/src/components/panel.rs 🔗

@@ -2,9 +2,8 @@ use std::marker::PhantomData;
 
 use gpui3::AbsoluteLength;
 
-use crate::themes::rose_pine_dawn;
-use crate::ui::prelude::*;
-use crate::ui::{token, v_stack};
+use crate::{prelude::*, theme};
+use crate::{token, v_stack};
 
 #[derive(Default, Debug, PartialEq, Eq, Hash, Clone, Copy)]
 pub enum PanelAllowedSides {
@@ -103,7 +102,7 @@ impl<S: 'static + Send + Sync> Panel<S> {
 
     fn render(&mut self, cx: &mut ViewContext<S>) -> impl Element<State = S> {
         let token = token();
-        let theme = rose_pine_dawn();
+        let theme = theme(cx);
 
         let panel_base;
         let current_width = self.width.unwrap_or(self.initial_width);

crates/storybook2/src/ui/elements/avatar.rs → crates/ui2/src/elements/avatar.rs 🔗

@@ -3,7 +3,7 @@ use std::marker::PhantomData;
 use gpui3::{img, ArcCow};
 
 use crate::theme::theme;
-use crate::ui::prelude::*;
+use crate::prelude::*;
 
 #[derive(Element, Clone)]
 pub struct Avatar<S: 'static + Send + Sync> {

crates/storybook2/src/ui/elements/icon.rs → crates/ui2/src/elements/icon.rs 🔗

@@ -5,7 +5,7 @@ use gpui3::{svg, Hsla};
 use strum::EnumIter;
 
 use crate::theme::{theme, Theme};
-use crate::ui::prelude::*;
+use crate::prelude::*;
 
 #[derive(Default, PartialEq, Copy, Clone)]
 pub enum IconSize {

crates/storybook2/src/ui/elements/label.rs → crates/ui2/src/elements/label.rs 🔗

@@ -4,7 +4,7 @@ use gpui3::{Hsla, WindowContext};
 use smallvec::SmallVec;
 
 use crate::theme::theme;
-use crate::ui::prelude::*;
+use crate::prelude::*;
 
 #[derive(Default, PartialEq, Copy, Clone)]
 pub enum LabelColor {

crates/storybook2/src/ui/elements/stack.rs → crates/ui2/src/elements/stack.rs 🔗

@@ -1,6 +1,6 @@
 use gpui3::{div, Div};
 
-use crate::ui::prelude::*;
+use crate::prelude::*;
 
 pub trait Stack: StyleHelpers {
     /// Horizontally stacks elements.

crates/ui2/src/lib.rs 🔗

@@ -1,14 +1,18 @@
-pub fn add(left: usize, right: usize) -> usize {
-    left + right
-}
+#![allow(dead_code, unused_variables)]
 
-#[cfg(test)]
-mod tests {
-    use super::*;
+mod children;
+mod components;
+mod element_ext;
+mod elements;
+pub mod prelude;
+mod theme;
+mod tokens;
 
-    #[test]
-    fn it_works() {
-        let result = add(2, 2);
-        assert_eq!(result, 4);
-    }
-}
+pub use children::*;
+pub use components::*;
+pub use element_ext::*;
+pub use elements::*;
+pub use prelude::*;
+pub use tokens::*;
+
+pub use crate::theme::*;

crates/storybook2/src/ui/prelude.rs → crates/ui2/src/prelude.rs 🔗

@@ -3,7 +3,7 @@ pub use gpui3::{
     WindowContext,
 };
 
-pub use crate::ui::{HackyChildren, HackyChildrenPayload, ElementExt};
+pub use crate::{HackyChildren, HackyChildrenPayload, ElementExt};
 
 use gpui3::{hsla, rgb, Hsla};
 use strum::EnumIter;

crates/storybook2/src/theme.rs → crates/ui2/src/theme.rs 🔗

@@ -1,5 +1,6 @@
+use std::collections::HashMap;
+use std::fmt;
 use std::sync::Arc;
-use std::{collections::HashMap, fmt};
 
 use gpui3::{
     BorrowAppContext, Bounds, Element, Hsla, LayoutId, Pixels, Result, ViewContext, WindowContext,
@@ -176,22 +177,6 @@ impl<E: Element> Element for Themed<E> {
     }
 }
 
-// fn preferred_theme<V: 'static>(cx: &AppContext) -> Theme {
-//     settings::get::<ThemeSettings>(cx)
-//         .theme
-//         .deserialized_base_theme
-//         .lock()
-//         .get_or_insert_with(|| {
-//             let theme: Theme =
-//                 serde_json::from_value(settings::get::<ThemeSettings>(cx).theme.base_theme.clone())
-//                     .unwrap();
-//             Box::new(theme)
-//         })
-//         .downcast_ref::<Theme>()
-//         .unwrap()
-//         .clone()
-// }
-
 pub fn theme(cx: &WindowContext) -> Arc<Theme> {
     Arc::new(cx.state::<Theme>().clone())
 }