Compare commits
10 Commits
github-tok
...
fake-edito
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e652495dbd | ||
|
|
560e084c5c | ||
|
|
3c688e98dc | ||
|
|
f770538ba3 | ||
|
|
ac0eae3276 | ||
|
|
eb06378c85 | ||
|
|
d907a698a2 | ||
|
|
3d2f0e0d34 | ||
|
|
0e5b32d55d | ||
|
|
9d412702d7 |
20
assets/images/hash_pattern.svg
Normal file
20
assets/images/hash_pattern.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_787_8130)">
|
||||||
|
<mask id="mask0_787_8130" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="12" height="12">
|
||||||
|
<path d="M12 0H0V12H12V0Z" fill="white"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask0_787_8130)">
|
||||||
|
<path d="M16.5 -1.5L-3.5 18.5" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M10.5 -1.5L-9.5 18.5" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M4.5 -1.5L-15.5 18.5" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M22.5 -1.5L-1 22" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M32.5 -1.5L9.5 21.5" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M37.5 -1.5L12 24" stroke="black" stroke-width="2"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_787_8130">
|
||||||
|
<rect width="12" height="12" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 832 B |
20
assets/images/hash_pattern_fine.svg
Normal file
20
assets/images/hash_pattern_fine.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_787_8141)">
|
||||||
|
<mask id="mask0_787_8141" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="12" height="12">
|
||||||
|
<path d="M12 0H0V12H12V0Z" fill="white"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask0_787_8141)">
|
||||||
|
<path d="M16.5 -1.5L-3.5 18.5" stroke="black"/>
|
||||||
|
<path d="M10.5 -1.5L-9.5 18.5" stroke="black"/>
|
||||||
|
<path d="M4.5 -1.5L-15.5 18.5" stroke="black"/>
|
||||||
|
<path d="M22.5 -1.5L-1 22" stroke="black"/>
|
||||||
|
<path d="M32.5 -1.5L9.5 21.5" stroke="black" stroke-width="2"/>
|
||||||
|
<path d="M37.5 -1.5L12 24" stroke="black" stroke-width="2"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_787_8141">
|
||||||
|
<rect width="12" height="12" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 764 B |
@@ -1,6 +1,7 @@
|
|||||||
mod auto_height_editor;
|
mod auto_height_editor;
|
||||||
mod cursor;
|
mod cursor;
|
||||||
mod default_colors;
|
mod default_colors;
|
||||||
|
mod fake_editor;
|
||||||
mod focus;
|
mod focus;
|
||||||
mod kitchen_sink;
|
mod kitchen_sink;
|
||||||
mod overflow_scroll;
|
mod overflow_scroll;
|
||||||
@@ -13,6 +14,7 @@ mod with_rem_size;
|
|||||||
pub use auto_height_editor::*;
|
pub use auto_height_editor::*;
|
||||||
pub use cursor::*;
|
pub use cursor::*;
|
||||||
pub use default_colors::*;
|
pub use default_colors::*;
|
||||||
|
pub use fake_editor::*;
|
||||||
pub use focus::*;
|
pub use focus::*;
|
||||||
pub use kitchen_sink::*;
|
pub use kitchen_sink::*;
|
||||||
pub use overflow_scroll::*;
|
pub use overflow_scroll::*;
|
||||||
|
|||||||
318
crates/storybook/src/stories/fake_editor.rs
Normal file
318
crates/storybook/src/stories/fake_editor.rs
Normal file
@@ -0,0 +1,318 @@
|
|||||||
|
use editor::*;
|
||||||
|
use gpui::*;
|
||||||
|
use settings::Settings as _;
|
||||||
|
use theme::ThemeSettings;
|
||||||
|
use ui::*;
|
||||||
|
|
||||||
|
// const DEFAULT_LINE_HEIGHT: Pixels = Pixels(20.);
|
||||||
|
|
||||||
|
pub struct EditorPrototype {
|
||||||
|
editor: View<Editor>,
|
||||||
|
text_style: TextStyle,
|
||||||
|
elements_above: Vec<(u32, Box<dyn Fn(Pixels, &mut WindowContext) -> AnyElement>)>,
|
||||||
|
elements_below: Vec<(u32, Box<dyn Fn(Pixels, &mut WindowContext) -> AnyElement>)>,
|
||||||
|
height: Length,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl EditorPrototype {
|
||||||
|
pub fn build(
|
||||||
|
cx: &mut WindowContext,
|
||||||
|
f: impl FnOnce(Self, &mut ViewContext<Self>) -> Self,
|
||||||
|
) -> View<Self> {
|
||||||
|
let theme = ThemeSettings::get_global(cx);
|
||||||
|
let line_height = rems(theme.buffer_line_height.value()).to_pixels(cx.rem_size());
|
||||||
|
|
||||||
|
let mut text_style = cx.text_style();
|
||||||
|
let refinement = TextStyleRefinement {
|
||||||
|
font_family: Some(theme.buffer_font.family.clone()),
|
||||||
|
line_height: Some(line_height.into()),
|
||||||
|
background_color: Some(gpui::transparent_black()),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
text_style.refine(&refinement);
|
||||||
|
|
||||||
|
let editor = cx.new_view(|cx| {
|
||||||
|
let mut editor = Editor::auto_height(20, cx);
|
||||||
|
editor.set_text_style_refinement(refinement);
|
||||||
|
editor.set_show_gutter(true, cx);
|
||||||
|
editor.set_show_line_numbers(true, cx);
|
||||||
|
editor
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut height = Length::Auto;
|
||||||
|
|
||||||
|
editor.update(cx, |editor, cx| {
|
||||||
|
let line_count = editor.max_point(cx).row() + 1;
|
||||||
|
println!("line_count: {}", line_count.as_f32());
|
||||||
|
let line_height = line_height.0;
|
||||||
|
println!("line_height: {}", line_height);
|
||||||
|
height = px((line_count.as_f32() * line_height).round()).into();
|
||||||
|
println!("height: {:?}", height);
|
||||||
|
});
|
||||||
|
|
||||||
|
println!("final height: {:?}", height);
|
||||||
|
|
||||||
|
cx.new_view(|cx| {
|
||||||
|
cx.refresh();
|
||||||
|
f(
|
||||||
|
Self {
|
||||||
|
editor,
|
||||||
|
text_style,
|
||||||
|
elements_above: Vec::new(),
|
||||||
|
elements_below: Vec::new(),
|
||||||
|
height,
|
||||||
|
},
|
||||||
|
cx,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn line_height(&self, cx: &ViewContext<Self>) -> Pixels {
|
||||||
|
self.text_style
|
||||||
|
.line_height
|
||||||
|
.to_pixels(self.text_style.font_size, cx.rem_size())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn text(mut self, initial_text: &str, cx: &mut ViewContext<Self>) -> Self {
|
||||||
|
let mut height = self.height;
|
||||||
|
let line_height = self.line_height(cx);
|
||||||
|
|
||||||
|
self.editor.update(cx, |editor, cx| {
|
||||||
|
editor.set_text(initial_text, cx);
|
||||||
|
let line_count = editor.max_point(cx).row() + 1;
|
||||||
|
println!("line_count: {}", line_count.as_f32());
|
||||||
|
let line_height = line_height.0;
|
||||||
|
println!("line_height: {}", line_height);
|
||||||
|
height = px((line_count.as_f32() * line_height).round()).into();
|
||||||
|
println!("height: {:?}", height);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.height = height;
|
||||||
|
|
||||||
|
println!("final height: {:?}", height);
|
||||||
|
|
||||||
|
cx.notify();
|
||||||
|
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn element_above(
|
||||||
|
mut self,
|
||||||
|
row: u32,
|
||||||
|
element_fn: impl Fn(Pixels, &mut WindowContext) -> AnyElement + 'static,
|
||||||
|
) -> Self {
|
||||||
|
self.elements_above.push((row, Box::new(element_fn)));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn element_below(
|
||||||
|
mut self,
|
||||||
|
row: u32,
|
||||||
|
element_fn: impl Fn(Pixels, &mut WindowContext) -> AnyElement + 'static,
|
||||||
|
) -> Self {
|
||||||
|
self.elements_below.push((row, Box::new(element_fn)));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Render for EditorPrototype {
|
||||||
|
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
|
||||||
|
let line_height = self.line_height(cx);
|
||||||
|
|
||||||
|
div()
|
||||||
|
.relative()
|
||||||
|
.flex_shrink_0()
|
||||||
|
.w_full()
|
||||||
|
.h(self.height)
|
||||||
|
.bg(cx.theme().colors().editor_background)
|
||||||
|
.child(div().absolute().top_0().left_0().size_full().children(
|
||||||
|
self.elements_below.iter().map(|(row, element_fn)| {
|
||||||
|
div()
|
||||||
|
.absolute()
|
||||||
|
.top(px(*row as f32) * line_height)
|
||||||
|
.left_0()
|
||||||
|
.w_full()
|
||||||
|
.child(element_fn(line_height, cx))
|
||||||
|
}),
|
||||||
|
))
|
||||||
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.relative()
|
||||||
|
.child(div().w(px(48.)).h_full().flex_shrink_0())
|
||||||
|
.child(div().size_full().child(self.editor.clone())),
|
||||||
|
)
|
||||||
|
.child(div().absolute().top_0().left_0().size_full().children(
|
||||||
|
self.elements_above.iter().map(|(row, element_fn)| {
|
||||||
|
div()
|
||||||
|
.absolute()
|
||||||
|
.top(px(*row as f32) * line_height)
|
||||||
|
.left_0()
|
||||||
|
.w_full()
|
||||||
|
.child(element_fn(line_height, cx))
|
||||||
|
}),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct FakeEditorStory {
|
||||||
|
fake_editor_1: View<EditorPrototype>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FakeEditorStory {
|
||||||
|
pub fn view(cx: &mut WindowContext) -> View<Self> {
|
||||||
|
let editor_text = r###"fn main() {
|
||||||
|
println!("Hello, World!");
|
||||||
|
|
||||||
|
let name = "Rust";
|
||||||
|
println!("Welcome to {}", name);
|
||||||
|
|
||||||
|
let x = 5;
|
||||||
|
let y = 7;
|
||||||
|
println!("{} + {} = {}", x, y, x + y);
|
||||||
|
|
||||||
|
if x < y {
|
||||||
|
println!("{} is less than {}", x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
greet("Rustacean");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn greet(name: &str) {
|
||||||
|
println!("Hello, {}!", name);
|
||||||
|
}"###;
|
||||||
|
|
||||||
|
cx.new_view(|cx| {
|
||||||
|
let fake_editor_1 = EditorPrototype::build(cx, |fake_editor, cx| {
|
||||||
|
fake_editor
|
||||||
|
.text(editor_text, cx)
|
||||||
|
.element_below(3, |line_height, cx| {
|
||||||
|
let pattern_color = hsla(142. / 360., 0.68, 0.45, 0.08);
|
||||||
|
VectorPattern::single_row(
|
||||||
|
VectorName::HashPattern,
|
||||||
|
rems(line_height / cx.rem_size()),
|
||||||
|
pattern_color,
|
||||||
|
99,
|
||||||
|
)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_below(3, |line_height, _| {
|
||||||
|
let green_bg = hsla(142. / 360., 0.68, 0.45, 0.06);
|
||||||
|
div()
|
||||||
|
.id("foo")
|
||||||
|
.bg(green_bg)
|
||||||
|
.w_full()
|
||||||
|
.h(line_height)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_above(3, |line_height, _| {
|
||||||
|
h_flex()
|
||||||
|
.group("")
|
||||||
|
.relative()
|
||||||
|
.overflow_hidden()
|
||||||
|
.occlude()
|
||||||
|
.w_full()
|
||||||
|
.h(line_height)
|
||||||
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.invisible()
|
||||||
|
.group_hover("", |this| this.visible())
|
||||||
|
.w(px(38.))
|
||||||
|
.items_center()
|
||||||
|
.justify_center()
|
||||||
|
.child(Checkbox::new("stage-line", false.into())),
|
||||||
|
)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_above(3, |line_height, _| {
|
||||||
|
let green_fg = hsla(142. / 360., 0.68, 0.45, 0.7);
|
||||||
|
|
||||||
|
div()
|
||||||
|
.relative()
|
||||||
|
.overflow_hidden()
|
||||||
|
.w(px(3.))
|
||||||
|
.h(line_height)
|
||||||
|
.child(
|
||||||
|
div()
|
||||||
|
.id("added-mark")
|
||||||
|
.absolute()
|
||||||
|
.top_0()
|
||||||
|
.left(px(-3.0))
|
||||||
|
.bg(green_fg)
|
||||||
|
.w(px(6.))
|
||||||
|
.rounded_sm()
|
||||||
|
.h(line_height)
|
||||||
|
.into_any_element(),
|
||||||
|
)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_below(4, |line_height, _| {
|
||||||
|
let green_bg = hsla(142. / 360., 0.68, 0.45, 0.08);
|
||||||
|
div()
|
||||||
|
.id("foo")
|
||||||
|
.bg(green_bg)
|
||||||
|
.w_full()
|
||||||
|
.h(line_height)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_above(4, |line_height, _| {
|
||||||
|
h_flex()
|
||||||
|
.group("")
|
||||||
|
.w_full()
|
||||||
|
.relative()
|
||||||
|
.overflow_hidden()
|
||||||
|
.occlude()
|
||||||
|
.h(line_height)
|
||||||
|
.child(
|
||||||
|
h_flex()
|
||||||
|
.invisible()
|
||||||
|
.group_hover("", |this| this.visible())
|
||||||
|
.w(px(38.))
|
||||||
|
.items_center()
|
||||||
|
.justify_center()
|
||||||
|
.child(Checkbox::new("stage-line", true.into())),
|
||||||
|
)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
.element_above(4, |line_height, _| {
|
||||||
|
let green_fg = hsla(142. / 360., 0.68, 0.45, 0.7);
|
||||||
|
|
||||||
|
div()
|
||||||
|
.relative()
|
||||||
|
.overflow_hidden()
|
||||||
|
.w(px(3.))
|
||||||
|
.h(line_height)
|
||||||
|
.child(
|
||||||
|
div()
|
||||||
|
.absolute()
|
||||||
|
.top_0()
|
||||||
|
.left(px(-3.0))
|
||||||
|
.id("added-mark")
|
||||||
|
.bg(green_fg)
|
||||||
|
.w(px(6.))
|
||||||
|
.rounded_sm()
|
||||||
|
.h(line_height)
|
||||||
|
.into_any_element(),
|
||||||
|
)
|
||||||
|
.into_any_element()
|
||||||
|
})
|
||||||
|
});
|
||||||
|
Self { fake_editor_1 }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Render for FakeEditorStory {
|
||||||
|
fn render(&mut self, cx: &mut ViewContext<Self>) -> impl IntoElement {
|
||||||
|
v_flex().size_full().bg(black()).text_sm().flex_1().child(
|
||||||
|
div().size_full().p_4().child(
|
||||||
|
v_flex()
|
||||||
|
.size_full()
|
||||||
|
.rounded_md()
|
||||||
|
.border_1()
|
||||||
|
.border_color(cx.theme().colors().border)
|
||||||
|
.bg(cx.theme().colors().background)
|
||||||
|
.child(self.fake_editor_1.clone()),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ pub enum ComponentStory {
|
|||||||
Focus,
|
Focus,
|
||||||
Icon,
|
Icon,
|
||||||
IconButton,
|
IconButton,
|
||||||
|
FakeEditor,
|
||||||
Keybinding,
|
Keybinding,
|
||||||
Label,
|
Label,
|
||||||
List,
|
List,
|
||||||
@@ -54,6 +55,7 @@ impl ComponentStory {
|
|||||||
Self::CollabNotification => cx
|
Self::CollabNotification => cx
|
||||||
.new_view(|_| collab_ui::notifications::CollabNotificationStory)
|
.new_view(|_| collab_ui::notifications::CollabNotificationStory)
|
||||||
.into(),
|
.into(),
|
||||||
|
Self::FakeEditor => crate::stories::FakeEditorStory::view(cx).into(),
|
||||||
Self::ContextMenu => cx.new_view(|_| ui::ContextMenuStory).into(),
|
Self::ContextMenu => cx.new_view(|_| ui::ContextMenuStory).into(),
|
||||||
Self::Cursor => cx.new_view(|_| crate::stories::CursorStory).into(),
|
Self::Cursor => cx.new_view(|_| crate::stories::CursorStory).into(),
|
||||||
Self::DefaultColors => DefaultColorsStory::view(cx).into(),
|
Self::DefaultColors => DefaultColorsStory::view(cx).into(),
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
#![allow(missing_docs)]
|
#![allow(missing_docs)]
|
||||||
use gpui::{svg, IntoElement, Rems, RenderOnce, Size, Styled, WindowContext};
|
use crate::prelude::*;
|
||||||
|
use gpui::{svg, Hsla, IntoElement, Rems, RenderOnce, Size, Styled, WindowContext};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use strum::{EnumIter, EnumString, IntoStaticStr};
|
use strum::{EnumIter, EnumString, IntoStaticStr};
|
||||||
use ui_macros::{path_str, DerivePathStr};
|
use ui_macros::{path_str, DerivePathStr};
|
||||||
|
|
||||||
use crate::Color;
|
use crate::{Color, ComponentPreview};
|
||||||
|
|
||||||
#[derive(
|
#[derive(
|
||||||
Debug,
|
Debug,
|
||||||
@@ -22,6 +23,8 @@ use crate::Color;
|
|||||||
#[strum(serialize_all = "snake_case")]
|
#[strum(serialize_all = "snake_case")]
|
||||||
#[path_str(prefix = "images", suffix = ".svg")]
|
#[path_str(prefix = "images", suffix = ".svg")]
|
||||||
pub enum VectorName {
|
pub enum VectorName {
|
||||||
|
HashPattern,
|
||||||
|
HashPatternFine,
|
||||||
ZedLogo,
|
ZedLogo,
|
||||||
ZedXCopilot,
|
ZedXCopilot,
|
||||||
}
|
}
|
||||||
@@ -84,6 +87,38 @@ impl RenderOnce for Vector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(IntoElement)]
|
||||||
|
pub struct VectorPattern {
|
||||||
|
vectors: Vec<Vector>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl VectorPattern {
|
||||||
|
pub fn single_row(vector: VectorName, size: Rems, color: Hsla, pattern_cols: usize) -> Self {
|
||||||
|
let vectors = (0..pattern_cols)
|
||||||
|
.map(|_| Vector::square(vector, size).color(Color::Custom(color)))
|
||||||
|
.collect();
|
||||||
|
Self { vectors }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn multi_row(
|
||||||
|
vector: VectorName,
|
||||||
|
size: Rems,
|
||||||
|
pattern_rows: usize,
|
||||||
|
pattern_cols: usize,
|
||||||
|
) -> Self {
|
||||||
|
let vectors = (0..pattern_rows)
|
||||||
|
.flat_map(|_| (0..pattern_cols).map(|_| Vector::square(vector, size)))
|
||||||
|
.collect();
|
||||||
|
Self { vectors }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RenderOnce for VectorPattern {
|
||||||
|
fn render(self, cx: &mut WindowContext) -> impl IntoElement {
|
||||||
|
h_flex().children(self.vectors)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "stories")]
|
#[cfg(feature = "stories")]
|
||||||
pub mod story {
|
pub mod story {
|
||||||
use gpui::Render;
|
use gpui::Render;
|
||||||
@@ -114,3 +149,39 @@ mod tests {
|
|||||||
assert_eq!(VectorName::ZedLogo.path(), "images/zed_logo.svg");
|
assert_eq!(VectorName::ZedLogo.path(), "images/zed_logo.svg");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentPreview for Vector {
|
||||||
|
fn title() -> &'static str {
|
||||||
|
"Vector"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn description() -> impl Into<Option<&'static str>> {
|
||||||
|
"Vectors are scalable images such as SVGs that can be displayed at specific sizes."
|
||||||
|
}
|
||||||
|
|
||||||
|
fn examples(cx: &WindowContext) -> Vec<ComponentExampleGroup<Self>> {
|
||||||
|
vec![
|
||||||
|
example_group_with_title(
|
||||||
|
"Square Vectors",
|
||||||
|
vec![
|
||||||
|
single_example("Zed Logo", Vector::square(VectorName::ZedLogo, rems(1.))),
|
||||||
|
single_example(
|
||||||
|
"Hash Pattern",
|
||||||
|
Vector::square(VectorName::HashPattern, rems(1.)),
|
||||||
|
),
|
||||||
|
single_example(
|
||||||
|
"Fine Hash Pattern",
|
||||||
|
Vector::square(VectorName::HashPatternFine, rems(1.)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
example_group_with_title(
|
||||||
|
"Custom Sized Vectors",
|
||||||
|
vec![single_example(
|
||||||
|
"Wide Logo",
|
||||||
|
Vector::new(VectorName::ZedXCopilot, rems(12.), rems(4.)),
|
||||||
|
)],
|
||||||
|
),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ use ui::{
|
|||||||
element_cell, prelude::*, string_cell, utils::calculate_contrast_ratio, AudioStatus,
|
element_cell, prelude::*, string_cell, utils::calculate_contrast_ratio, AudioStatus,
|
||||||
Availability, Avatar, AvatarAudioStatusIndicator, AvatarAvailabilityIndicator, ButtonLike,
|
Availability, Avatar, AvatarAudioStatusIndicator, AvatarAvailabilityIndicator, ButtonLike,
|
||||||
Checkbox, CheckboxWithLabel, ContentGroup, DecoratedIcon, ElevationIndex, Facepile,
|
Checkbox, CheckboxWithLabel, ContentGroup, DecoratedIcon, ElevationIndex, Facepile,
|
||||||
IconDecoration, Indicator, Table, TintColor, Tooltip,
|
IconDecoration, Indicator, Table, TintColor, Tooltip, Vector,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{Item, Workspace};
|
use crate::{Item, Workspace};
|
||||||
@@ -510,16 +510,17 @@ impl ThemePreview {
|
|||||||
.overflow_scroll()
|
.overflow_scroll()
|
||||||
.size_full()
|
.size_full()
|
||||||
.gap_2()
|
.gap_2()
|
||||||
.child(ContentGroup::render_component_previews(cx))
|
.child(Button::render_component_previews(cx))
|
||||||
.child(IconDecoration::render_component_previews(cx))
|
|
||||||
.child(DecoratedIcon::render_component_previews(cx))
|
|
||||||
.child(Checkbox::render_component_previews(cx))
|
.child(Checkbox::render_component_previews(cx))
|
||||||
.child(CheckboxWithLabel::render_component_previews(cx))
|
.child(CheckboxWithLabel::render_component_previews(cx))
|
||||||
|
.child(ContentGroup::render_component_previews(cx))
|
||||||
|
.child(DecoratedIcon::render_component_previews(cx))
|
||||||
.child(Facepile::render_component_previews(cx))
|
.child(Facepile::render_component_previews(cx))
|
||||||
.child(Button::render_component_previews(cx))
|
|
||||||
.child(Indicator::render_component_previews(cx))
|
|
||||||
.child(Icon::render_component_previews(cx))
|
.child(Icon::render_component_previews(cx))
|
||||||
|
.child(IconDecoration::render_component_previews(cx))
|
||||||
|
.child(Indicator::render_component_previews(cx))
|
||||||
.child(Table::render_component_previews(cx))
|
.child(Table::render_component_previews(cx))
|
||||||
|
.child(Vector::render_component_previews(cx))
|
||||||
.child(self.render_avatars(cx))
|
.child(self.render_avatars(cx))
|
||||||
.child(self.render_buttons(layer, cx))
|
.child(self.render_buttons(layer, cx))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user