🧩 Open SASS Components
Open SASS Components are a growing collection of UI elements designed to be modular, framework-agnostic, and ready for any stack. All components are built with flexibility in mind and work with TailwindCSS, Bootstrap, or vanilla CSS.
📦 Component Categories
| Category | Components |
|---|---|
| Data Display | Accordion, Avatar, Badge, Card, Code, Image, Snippet, Table, User |
| Data Entry | Checkbox, Form, Input, Listbox, OTP, Radio, Select, Slider, Switch |
| Date & Time | Calendar, Date, Time Input |
| Feedback | Alert, Progress, Skeleton, Spinner, Toast, Tooltip |
| Landing Page | Hero |
| Navigation | Breadcrumbs, Browser, Navbar, Pagination, Sidebar, Tabs |
| Overlays | Drawer, Dropdown, Modal, Popover |
| Structure | Divider, Spacer |
| Utilities | Autocomplete, Kbd, OTP |
| Localization | I18n |
| System | ELD, Theme |
| Typography | Kbd, Link |
🚀 Getting Started
To use a component, simply import it via the CLI:
os add component-name framework-name
💡 Example: Accordion Component (Yew / Rust)
✅ Works with Any CSS Framework
🌀 TailwindCSS
<Accordion
size={Size::Medium}
expanded={html! { <h3>{ "Section Expanded" }</h3> }}
collapsed={html! { <h3>{ "Section Collapsed" }</h3> }}
class="bg-white dark:bg-gray-900 border border-gray-300 dark:border-gray-700 rounded-md shadow"
expanded_class="bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200"
collapsed_class="bg-gray-100 dark:bg-gray-800 text-gray-800 dark:text-gray-300"
content_class="p-4"
style=""
expanded_style=""
collapsed_style=""
content_style=""
will_open={on_will_open.clone()}
did_open={on_did_open.clone()}
will_close={on_will_close.clone()}
did_close={on_did_close.clone()}
>
<List>
<Item align={Align::Left}>{ "Item 1 - Left" }</Item>
<Item align={Align::Right}>{ "Item 2 - Right" }</Item>
</List>
</Accordion>
🎩 Bootstrap
<Accordion
size={Size::Medium}
expanded={html! { <h3 class="accordion-header">{ "Section Expanded" }</h3> }}
collapsed={html! { <h3 class="accordion-header collapsed">{ "Section Collapsed" }</h3> }}
class="accordion border border-secondary rounded"
expanded_class="accordion-body bg-light text-dark"
collapsed_class="accordion-body bg-white text-secondary"
content_class="accordion-collapse"
style=""
expanded_style=""
collapsed_style=""
content_style="padding: 1rem;"
will_open={on_will_open.clone()}
did_open={on_did_open.clone()}
will_close={on_will_close.clone()}
did_close={on_did_close.clone()}
>
<List>
<Item align={Align::Left}>{ "Item 1 - Left" }</Item>
<Item align={Align::Right}>{ "Item 2 - Right" }</Item>
</List>
</Accordion>
🧱 Vanilla CSS
<Accordion
size={Size::Medium}
expanded={html! { <h3 class="os-accordion-title">{ "Section Expanded" }</h3> }}
collapsed={html! { <h3 class="os-accordion-title os-collapsed">{ "Section Collapsed" }</h3> }}
class="os-accordion-container"
expanded_class="os-expanded"
collapsed_class="os-collapsed"
content_class="os-content"
style="border: 1px solid #ccc; border-radius: 6px;"
expanded_style="background: #f0f8ff; color: #003366;"
collapsed_style="background: #fafafa; color: #666;"
content_style="padding: 1rem;"
will_open={on_will_open.clone()}
did_open={on_did_open.clone()}
will_close={on_will_close.clone()}
did_close={on_did_close.clone()}
>
<List>
<Item align={Align::Left}>{ "Item 1 - Left" }</Item>
<Item align={Align::Right}>{ "Item 2 - Right" }</Item>
</List>
</Accordion>
🧰 Component Features
- Accessible markup (ARIA support where applicable).
- Mobile-friendly by default.
- Supports theming via CSS custom properties.
- Light/Dark mode compatible.
- Lightweight, no runtime dependencies.
- Multi-language support (i18n-ready components).
- Theme Switcher.
🙋 Need Help?
Join our developer community, open issues, or request a new component:
🔧 Open SASS Components: Made to fit your stack, not the other way around.