Skip to content

Instantly share code, notes, and snippets.

View airstrike's full-sized avatar
🦀
0-to-1 founder building with Rust + AI

Andy Terra airstrike

🦀
0-to-1 founder building with Rust + AI
View GitHub Profile
@airstrike
airstrike / theme.rs
Created August 26, 2026 13:18
elevato theme as a drop-in theme.rs for iced 0.14 - Mode/Seed, semantic Palette, named style fns for text/container/button/text_editor
//! elevato theme - warm paper, ink text, one lamp-green accent, all mono.
//!
//! The theme behind <https://elevato.rs>, lifted out as a single file you
//! can drop into an iced project. Copy to `src/theme.rs`, add `mod theme;`,
//! then:
//!
//! ```ignore
//! // in your application setup
//! .theme(|state| state.mode.to_theme())
//! .default_font(theme::MONO)
@airstrike
airstrike / elevato.css
Created August 26, 2026 13:18
elevato theme as CSS custom properties - warm paper, ink, lamp-green, mono. Light + dark, ported from elevato.rs
/* elevato theme - warm paper, ink text, one lamp-green accent, all mono.
*
* Ported from the iced theme behind https://elevato.rs (theme.rs, same
* tokens, same names). Dark by default when the system asks for it;
* set data-theme="light" or "dark" on <html> to force one.
*
* Drop in, then use the tokens. The element rules at the bottom are a
* starter kit - a body, a pane, a panel, three button tiers, a link -
* delete what you don't need.
*
@airstrike
airstrike / action.rs
Created August 9, 2026 01:07
Action<Instruction, Message> — a TEA bubbling helper for iced: child update() returns an optional Instruction for the parent plus a Task for the runtime
//! A common API for returning [`Task`](iced::Task)s and/or generic
//! `Instruction`s from views.
//!
//! The `Action` type provides a unified way to tell an ancestor component how
//! to modify its state per some `Instruction` and/or provide a [`Task`] which
//! should be returned to the [`iced`] runtime so it can be executed.
//!
//! Examples of instructions include navigating to a different screen, saving
//! changes, or starting an edit. These instructions work directly in the
//! context of some ancestor component, so they do not need to be sent to the
@airstrike
airstrike / main.rs
Last active August 20, 2026 09:56
Multi-window iced example with custom theme palette
// iced.version = "0.13" # iirc
use std::collections::BTreeMap;
use std::time::Duration;
use iced::theme::Palette;
use iced::widget::{button, center, container, horizontal_space, row, text};
use iced::{time, window, Center, Element, Fill, Subscription, Task, Theme};
struct App {
windows: BTreeMap<window::Id, Window>,
@airstrike
airstrike / now_playing.rs
Created June 30, 2025 01:43
iced • now playing: chill tracks only
use rand::Rng;
use iced::time::{Duration, Instant};
use iced::widget::canvas::{Frame, Geometry, Path, Program};
use iced::widget::{button, canvas, center, column, text};
use iced::{Element, Point, Rectangle, Renderer, Size, Theme};
use iced::{Fill, Subscription, Task};
const NUM_BARS: usize = 20;
const MAX_BAR_HEIGHT: f32 = 0.7;
@airstrike
airstrike / .vimrc
Created February 22, 2025 21:50
latest .vimrc (works in vim and VSCode)
" VIM user interface
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Set 7 lines to the curors - when moving vertical..
set so=4
set ruler "Always show current position
set cmdheight=1 "The commandbar height
" Set backspace config
set backspace=eol,start,indent
set whichwrap+=<,>,h,l
@airstrike
airstrike / window.rs
Created February 7, 2025 01:23
iced::daemon with only two windows
use std::collections::BTreeMap;
use iced::advanced::graphics::image::image_rs::ImageFormat;
use iced::{window, Size, Subscription, Task, Element};
use crate::theme::constants::WINDOW_ICON;
use crate::theme::Theme;
use crate::{app, assistant};
#[derive(Debug)]
pub enum Message {
@airstrike
airstrike / font_sampler.rs
Created January 31, 2025 02:43
iced font sampler
use iced::Alignment::Center;
use iced::Length::Fill;
use iced::font::{self, Font};
use iced::widget::{column, horizontal_rule, pick_list, row, scrollable, text, text_input};
use iced::{Element, Size, Task};
use std::collections::HashMap;
// Font candidates with their names and possible paths
const FONT_CANDIDATES: &[(&str, &[&str])] = &[
("Menlo", &[
@airstrike
airstrike / QualityHuntComponent.tsx
Created January 15, 2025 19:52
A React component for a curated product launch platform that focuses on quality over quantity. Features a daily showcase carousel, ranked submissions, and a clean, minimalist design. Built with React and Tailwind CSS.
import React, { useState } from 'react';
import { Clock, ArrowUp, MessageSquare, ChevronLeft, ChevronRight, Search, ExternalLink } from 'lucide-react';
const LaunchPlatform = () => {
const [currentSlide, setCurrentSlide] = useState(0);
const todaysLaunches = [
{
id: 1,
name: "CodePilot Pro",
@airstrike
airstrike / markdown.rs
Created January 10, 2025 20:05
A variation of iced's markdown widget which includes a "copy" button for codeblocks
use iced::widget::{button, column, container, hover, rich_text, row, scrollable, text, Button};
use iced::widget::{horizontal_space, markdown};
use iced::{padding, Element, Font, Length, Pixels};
pub use iced::widget::markdown::{HeadingLevel, Item, Settings, Style, Url};
/// Display a bunch of Markdown items with copy functionality for code blocks.
pub fn view<'a, Message, Theme, Renderer>(
items: impl IntoIterator<Item = &'a Item>,
settings: Settings,