Initial public release of Warp.

Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
David Stern
2026-04-28 08:43:33 -05:00
commit 0dbd3d567a
4982 changed files with 1431549 additions and 0 deletions
@@ -0,0 +1,73 @@
use warp_core::ui::appearance::Appearance;
use warpui::{
elements::{
Align, ClippedScrollStateHandle, ClippedScrollable, Container, CrossAxisAlignment, Flex,
MainAxisSize, ParentElement, ScrollbarWidth, Shrinkable,
},
Element,
};
pub fn onboarding_slide_content(
children: Vec<Box<dyn Element>>,
bottom_nav: Box<dyn Element>,
scroll_state: ClippedScrollStateHandle,
appearance: &Appearance,
) -> Box<dyn Element> {
const PADDING: f32 = 64.;
// Build the content column with its natural (minimum) height.
let mut content_column = Flex::column()
.with_main_axis_size(MainAxisSize::Min)
.with_cross_axis_alignment(CrossAxisAlignment::Stretch);
for child in children {
content_column = content_column.with_child(child);
}
// Apply right padding inside the scrollable so the scrollbar sits at the
// outer edge of the slide rather than overlapping the content.
let padded_content = Container::new(content_column.finish())
.with_padding_right(PADDING)
.finish();
// Wrap the content in Align so it is centered within the visible area
// when there is enough space.
let centered_content = Align::new(padded_content).finish();
let theme = appearance.theme();
// Create a scrollable content area using vertical_centered so the child's
// min-height matches the visible height (enabling Align to center).
let scrollable = ClippedScrollable::vertical_centered(
scroll_state,
centered_content,
ScrollbarWidth::Auto,
theme.disabled_text_color(theme.background()).into(),
theme.main_text_color(theme.background()).into(),
theme.background().into(),
)
.with_overlayed_scrollbar()
.finish();
// Outer layout: scrollable content takes remaining space, bottom nav
// is always visible at the bottom.
let outer = Flex::column()
.with_main_axis_size(MainAxisSize::Max)
.with_cross_axis_alignment(CrossAxisAlignment::Stretch)
.with_child(Shrinkable::new(1., scrollable).finish())
.with_child(
Container::new(bottom_nav)
.with_margin_top(24.)
.with_padding_right(PADDING)
.finish(),
)
.finish();
// Left/top/bottom padding on the outer container; right padding is handled
// inside the scrollable and bottom nav so the scrollbar stays at the edge.
Container::new(outer)
.with_padding_top(PADDING)
.with_padding_bottom(PADDING)
.with_padding_left(PADDING)
.finish()
}