{"id":36351188,"url":"https://github.com/userorient/orient-ui","last_synced_at":"2026-03-10T14:07:13.095Z","repository":{"id":331864370,"uuid":"1127438182","full_name":"UserOrient/orient-ui","owner":"UserOrient","description":"🧩 Beautiful Flutter widgets without Material or Cupertino","archived":false,"fork":false,"pushed_at":"2026-03-03T07:35:33.000Z","size":22149,"stargazers_count":49,"open_issues_count":2,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-03T08:41:10.015Z","etag":null,"topics":["design-system","flutter"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/orient_ui","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UserOrient.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-03T22:11:11.000Z","updated_at":"2026-03-03T07:33:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/UserOrient/orient-ui","commit_stats":null,"previous_names":["userorient/orient-ui","kamranbekirovyz/orient"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/UserOrient/orient-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UserOrient%2Forient-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UserOrient%2Forient-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UserOrient%2Forient-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UserOrient%2Forient-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UserOrient","download_url":"https://codeload.github.com/UserOrient/orient-ui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UserOrient%2Forient-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30334410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T12:41:07.687Z","status":"ssl_error","status_checked_at":"2026-03-10T12:41:06.728Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["design-system","flutter"],"created_at":"2026-01-11T13:34:22.861Z","updated_at":"2026-03-10T14:07:13.079Z","avatar_url":"https://github.com/UserOrient.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eOrient UI\u003c/h1\u003e\n  \u003cp align=\"center\"\u003eThe missing pieces for Flutter Web \u0026 Desktop. Finally!\u003c/p\u003e\n  \u003cp align=\"center\"\u003eBeautiful widgets with zero dependencies.\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://widgets.userorient.com\"\u003eLive Demo\u003c/a\u003e •\n  \u003ca href=\"https://app.userorient.com\"\u003eSee in Production\u003c/a\u003e •\n  \u003ca href=\"https://pub.dev/packages/orient_ui\"\u003ePub.dev\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://twitter.com/kamranbekirovyz\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/kamranbekirovyz?style=social\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/userorient\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/userorient?style=social\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://ui.userorient.com/_next/image?url=%2Fassets%2Fui%2Fhero.png\u0026w=1920\u0026q=75\" alt=\"Orient UI Components\" /\u003e\n\u003c/p\u003e\n\n## Features\n\n- 🧩 **Works alongside Material.** Add one widget today. No rewrite needed.\n- 📦 **You own the code.** Every widget is a file in your project. Edit it however you want.\n- 🖥️ **Built for web \u0026 desktop.** Hover states, keyboard navigation, responsive out of the box.\n- 🔓 **Zero dependencies.** Nothing in your pubspec. No lock-in.\n- 🎨 **14 widgets and growing.** Buttons, toggles, popups, navigation, toasts, and more.\n\n## 🎬 Getting Started\n\n### 1. Install the CLI\n\n```bash\ndart pub global activate orient_ui\n```\n\n### 2. Initialize\n\nNavigate to your Flutter project and run:\n\n```bash\norient_ui init\n```\n\nThis creates `lib/style.dart` in your project. **You own this file**: move it wherever you want (e.g., `lib/core/style.dart`).\n\n### 3. Add Components\n\n```bash\norient_ui add button\n```\n\nThis creates `lib/button.dart`. Move it wherever you want (e.g., `lib/widgets/button.dart`).\n\n**Important:** Update the import inside the component file to match where you placed `style.dart`:\n\n```dart\n// In button.dart, update this line:\nimport 'package:your_app/style.dart'; // adjust to your path\n```\n\n### 4. Use\n\n```dart\nButton(\n  label: 'Click me',\n  onPressed: () {},\n)\n```\n\nWidgets follow system brightness by default. No wrapping needed.\n\n### Dark Mode\n\nTo control dark mode manually, wrap your app with `Style`:\n\n```dart\nStyle(\n  brightness: Brightness.dark,\n  child: MaterialApp(\n    home: MyHomePage(),\n  ),\n)\n```\n\n## 🎨 Components\n\n### Available Now\n- [x] Button (6 variants)\n- [x] Spinner\n- [x] NavBar (Navigation Rail + Bottom Bar)\n- [x] Toast\n- [x] EmptyState\n- [x] CopyButton\n- [x] Popup\n- [x] AlertPopup\n- [x] ConfirmationPopup\n- [x] SearchField\n- [x] CardBox\n- [x] Tile\n- [x] Toggle\n- [x] ToggleTile\n- [x] SingleChoice\n- [x] SingleChoiceTile\n- [x] MultiChoice\n- [x] MultiChoiceTile\n\n### Coming Soon\n- [ ] Typography\n- [ ] TextField\n- [ ] Dropdown\n- [ ] Tabs\n- [ ] InlineTabs\n- [ ] Checkbox\n- [ ] Label\n- [ ] Tip\n- [ ] PopoverMenu\n- [ ] PickerPopup\n- [ ] VerticalTile\n- [ ] SocialButton\n- [ ] AdaptivePageTransition\n\nCheck them out at [interactive web demo](https://widgets.userorient.com).\n\n## ✅ Quality\n\n![Tests](https://github.com/userorient/orient-ui/actions/workflows/test.yml/badge.svg?branch=main)\n\nAll widgets are tested.\n\n## ✨ Customizing Colors\n\nOpen `style.dart` and edit the constants at the top. That's it. You own the file.\n\n```dart\n// Light Theme - Base\nconst Color _lightBackground = Color(0xFFFFFFFF);\nconst Color _lightBorder = Color(0xFFE4E4E7);\nconst Color _lightForeground = Color(0xFF2A2A2A);\n// ... change these to match your brand\n```\n\n## 📄 License\n\n[MIT](https://raw.githubusercontent.com/userorient/orient-ui/main/LICENSE)\n\n---\n\nBuilt by the team at [UserOrient](https://app.userorient.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserorient%2Forient-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuserorient%2Forient-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserorient%2Forient-ui/lists"}