fossui

Introduction

An open-source Flutter UI library, inspired by coss.com/ui, Cal.com's design system. No app shell required, accessible, one import.

fossui is a component set for developers tired of every Flutter app looking like Material. It drops into any app (a bare WidgetsApp, CupertinoApp, or MaterialApp) and reads its own theme first, not replacing yours. The look comes from coss.com/ui, Cal.com's design system: clean, neutral, superellipse corners. One import, one theme, light and dark out of the box.

Why fossui

  • A look that isn't Material. A neutral, understated aesthetic with superellipse corners, drawn from the coss/Cal.com design language.
  • Framework-agnostic. Built on package:flutter/widgets.dart, with no platform channels and no FossApp wrapper. The widgets work under any app shell.
  • Reads your theme, not the other way around. Components resolve context.fossTheme first, so they keep their look inside an existing app instead of inheriting whatever the surrounding shell imposes.
  • One theme object. A single FossThemeData holds every semantic token: color, type, radius, spacing, shadow, motion. Reskin the whole app, light and dark, in one call.
  • Light on dependencies. One runtime dependency and no bundled icon package. Pass your own icons through plain Widget slots.
  • AI-native. An MCP server, a skill, and a rules snippet hand your coding agent the real component API, so AI-written fossui code compiles the first try.
  • Accessible by default. Semantics, focus, and touch targets are built into each component.

Install

flutter pub add fossui
import 'package:fossui/fossui.dart';

Under 0.x, APIs and tokens can still change between releases, so pin a version you have tested against.

Quick start

Register the theme once, then use the widgets anywhere.

import 'package:flutter/widgets.dart';
import 'package:fossui/fossui.dart';

void main() => runApp(
      FossTheme(
        data: FossThemeData.light,
        child: WidgetsApp(
          color: FossThemeData.light.colors.background,
          builder: (context, _) => Center(
            child: FossButton(
              onPressed: () {},
              child: const Text('Get started'),
            ),
          ),
        ),
      ),
    );

No shell lock-in. FossTheme is a plain InheritedWidget, so context.fossTheme resolves the same way under WidgetsApp, CupertinoApp, or any other app widget. See theming to reskin the set, and AI native to wire up your coding agent.

Components

On this page