{"id":47142141,"url":"https://github.com/brain2k-0005/lumeo","last_synced_at":"2026-05-30T09:01:15.815Z","repository":{"id":340818237,"uuid":"1167698644","full_name":"Brain2k-0005/Lumeo","owner":"Brain2k-0005","description":"A modern, accessible Blazor component library with 130+ components. Tailwind CSS v4, 8 themes, dark mode, AI chat primitives, full DataGrid, Scheduler, charts, RTL + 14 locales. MIT, .NET 10, 868 KB. Inspired by shadcn/ui.","archived":false,"fork":false,"pushed_at":"2026-05-24T21:42:46.000Z","size":46119,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-24T23:30:18.952Z","etag":null,"topics":["accessibility","ai","blazor","blazor-components","blazor-server","blazor-wasm","charts","component-library","csharp","dark-mode","datagrid","dotnet","i18n","mcp","rtl","shadcn","source-generator","tailwindcss","themes","ui-components"],"latest_commit_sha":null,"homepage":"https://lumeo.nativ.sh/","language":"C#","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/Brain2k-0005.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"github":["Brain2k-0005"]}},"created_at":"2026-02-26T15:30:06.000Z","updated_at":"2026-05-24T21:12:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Brain2k-0005/Lumeo","commit_stats":null,"previous_names":["brain2k-0005/lumeo"],"tags_count":95,"template":false,"template_full_name":null,"purl":"pkg:github/Brain2k-0005/Lumeo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brain2k-0005%2FLumeo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brain2k-0005%2FLumeo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brain2k-0005%2FLumeo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brain2k-0005%2FLumeo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Brain2k-0005","download_url":"https://codeload.github.com/Brain2k-0005/Lumeo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Brain2k-0005%2FLumeo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33686018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["accessibility","ai","blazor","blazor-components","blazor-server","blazor-wasm","charts","component-library","csharp","dark-mode","datagrid","dotnet","i18n","mcp","rtl","shadcn","source-generator","tailwindcss","themes","ui-components"],"created_at":"2026-03-12T22:10:50.656Z","updated_at":"2026-05-30T09:01:15.795Z","avatar_url":"https://github.com/Brain2k-0005.png","language":"C#","funding_links":["https://github.com/sponsors/Brain2k-0005"],"categories":[],"sub_categories":[],"readme":"# Lumeo\n\n**149 accessible Blazor components, AI-ready, motion-integrated, shadcn-inspired.**\n\n**149 components · 2,500+ tests** · 14 locales · mobile-first · MIT · .NET 10\n\n[![NuGet](https://img.shields.io/nuget/v/Lumeo?logo=nuget\u0026label=Lumeo)](https://www.nuget.org/packages/Lumeo)\n[![NuGet Downloads](https://img.shields.io/nuget/dt/Lumeo?logo=nuget\u0026label=downloads)](https://www.nuget.org/packages/Lumeo)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)\n[![Live Demo](https://img.shields.io/badge/demo-lumeo.nativ.sh-black?logo=cloudflare)](https://lumeo.nativ.sh)\n[![Agent Skill on skills.sh](https://img.shields.io/badge/skills.sh-lumeo-000?logo=vercel\u0026logoColor=white)](https://skills.sh/Brain2k-0005/Lumeo/lumeo)\n[![GitHub stars](https://img.shields.io/github/stars/Brain2k-0005/Lumeo?style=flat\u0026logo=github)](https://github.com/Brain2k-0005/Lumeo/stargazers)\n[![Sponsor](https://img.shields.io/github/sponsors/Brain2k-0005?logo=github-sponsors\u0026color=ea4aaa)](https://github.com/sponsors/Brain2k-0005)\n\n\u003e **Lumeo 3.1.0 is on NuGet — AudioPlayer + SignaturePad + PdfViewer + Maps + CodeEditor satellites**. `dotnet add package Lumeo`. See [`MIGRATION.md`](./MIGRATION.md) for upgrade notes from 2.x (3.0.x and 3.1.x patches require no migration).\n\n## What's new in 3.0\n\n- **BREAKING — unified enums.** 39 per-component `Size` / `Side` / `Align` / `Orientation` enums collapsed into `Lumeo.Size`, `Lumeo.Side`, `Lumeo.Align`, `Lumeo.Orientation`. See [`MIGRATION.md`](./MIGRATION.md).\n- **Overlay dismiss gate** — `OnBeforeClose` + `DismissEventArgs` on Dialog / Sheet / Drawer / AlertDialog, with auto-cancelling reasons (`escape` / `outside` / `swipe` / `close` / `action` / `cancel`).\n- **Nested overlay z-stacking** — Dialog-in-Dialog and Sheet-in-Dialog now layer correctly via monotonic z-index allocation.\n- **DatePicker keyboard input** — type a date in the configured `Format`; auto-parses on Enter/blur with an `OnParseError` callback.\n- **DateTimePicker time zone** — bind a `DateTimeOffset` while displaying in a specific `TimeZoneInfo` (DST-aware).\n- **Async field validators** — `FormField.AsyncValidator` with debounce, in-flight cancellation, and a pending spinner. `FormContext.IsAnyFieldValidating` aggregator.\n- **Menu submenus** — `DropdownMenuSub` / `ContextMenuSub` / `MenubarSub` triplets with recursive nesting, hover-open with intent delay, ArrowRight/ArrowLeft keyboard.\n- **Tabs drag-to-reorder** — opt-in `TabsList.Reorderable` with `OnReorder` callback (consumer mutates the collection).\n- **`Form.ResetValues()`** — restore model from initial JSON snapshot; pairs with the existing `Reset()` (which only clears errors).\n- **Toast pause + variant-aware ARIA** — toasts pause auto-dismiss on hover/focus; `Destructive` toasts render `role=\"alert\"` + `aria-live=\"assertive\"`, others `role=\"status\"` + polite.\n- **Tooltip collision flip** — fixed-position with auto-flip away from viewport edges (no API change).\n- **ARIA live error regions** — form-control error text now announces to screen readers.\n- **Internal helpers** — `LumeoIds`, `Cx`, `DebouncedValue\u003cT\u003e` for consistent IDs, class composition, and debounce across the library. All components now inject `IComponentInteropService` (the interface) so test projects can swap a mock.\n\n## Feature overview\n\n- **149 components** — accessible UI primitives, Blazor WASM \u0026 Server\n- **AI primitives** — `PromptInput`, `StreamingText`, `AgentMessageList`, `ToolCallCard`, `ReasoningDisplay`\n- **Motion primitives** — `Marquee`, `NumberTicker`, `TextReveal`, `BlurFade`, `BorderBeam`, `ShimmerButton`, `Sparkles`, `Sparkline`\n- **Dashboard tiles** — `KpiCard`, `SparkCard`, `Delta`, `Bento`, `BentoTile`, `PickList\u003cT\u003e`\n- **Scheduler + Gantt + RichTextEditor** — FullCalendar + Frappe Gantt + TipTap wrappers, lazy-loaded\n- **14 locales + RTL** — EN/DE/ES/FR/IT/PT/NL/PL/JA/ZH-CN/KO/AR/RU/TR via `ILumeoLocalizer`; `IThemeService.SetDirectionAsync()` for RTL\n- **Excel / PDF / CSV export** — `IDataGridExportService` (ClosedXML + QuestPDF)\n- **`[LumeoForm]` source generator** — annotate a POCO, get a fully-bound Form for free\n- **Culture-aware** — `Culture` on DataGrid, DatePicker, DateTimePicker, NumberInput, Slider, Statistic\n- **BottomNav + Splitter** — mobile tab bar (safe-area, optional FAB) and resizable multi-pane layouts\n- **Block templates** — SignIn, SignUp, ResetPassword, OtpVerify, Pricing, Hero, Dashboard, Settings\n- **8 color themes + dark mode** — Zinc, Blue, Green, Rose, Orange, Violet, Amber, Teal; class-based dark mode\n- **Tailwind CSS v4** — CSS variable architecture, zero hardcoded colors\n- **Programmatic OverlayService** — open dialogs, sheets, drawers, toasts from code\n- **30+ chart types** — ECharts-backed; BarChart `LabelStrategy=\"Smart\"` auto-rotates dense labels\n- **DataGrid** — sort, filter, inline edit, column pin, row group, drag-to-reorder, fullscreen, layout JSON, Excel/PDF/CSV export\n- **Form validation** — DataAnnotations + custom validators with styled error states\n- **Accessible** — ARIA roles, keyboard navigation, focus trapping, screen-reader support\n- **Mobile-first** — touch gestures (swipe, pinch, long-press, pull-to-refresh, swipe-actions), 44×44 px hit targets per WCAG 2.5.5, iOS-style wheel pickers, haptic feedback service, safe-area helpers — try it at `/docs/mobile`\n- **2,500+ bUnit tests** — CI-enforced on every PR\n\n## Component Categories\n\n| Category | Components |\n|----------|------------|\n| **Layout** | Stack, Flex, Grid, Container, Center, Spacer, AspectRatio, Resizable, ScrollArea, Separator, Splitter |\n| **Typography** | Text, Heading, Link, Code |\n| **Forms** | Input, Select, Combobox, DatePicker, DateRangePicker, DateTimePicker, TimePicker, NumberInput, PasswordInput, InputMask, Checkbox, Switch, RadioGroup, Slider, Toggle, ToggleGroup, FileUpload, OtpInput, TagInput, ColorPicker, Textarea, Form, Mention, Cascader, PickList, RichTextEditor |\n| **Data Display** | Table, DataTable, DataGrid, Card, Badge, Chip, Avatar, Calendar, Scheduler, Gantt, Descriptions, Statistic, Timeline, Steps, Rating, Image, ImageCompare, TreeView, QRCode, Watermark, Sparkline |\n| **Feedback** | Toast, Alert, Progress, Spinner, Skeleton, EmptyState, Result |\n| **Overlay** | Dialog, Sheet, Drawer, AlertDialog, Popover, Tooltip, HoverCard, ContextMenu, DropdownMenu, Command, PopConfirm, Tour |\n| **Navigation** | Tabs, Breadcrumb, Pagination, Sidebar, BottomNav, Menubar, NavigationMenu, MegaMenu, Accordion, Collapsible, Scrollspy, BackToTop, Affix, SpeedDial |\n| **AI** | PromptInput, StreamingText, AgentMessageList, AgentMessage, ToolCallCard, ReasoningDisplay |\n| **Motion** | *via Lumeo.Motion satellite* — BlurFade, BorderBeam, Marquee, NumberTicker, ShimmerButton, Sparkles, TextReveal, AnimatedBeam, Meteors, Globe, Dock, Spotlight, TypingAnimation, Confetti, MagneticButton, AnimatedGradientText, Ripple, OrbitingCircles, and 12 more |\n| **Dashboard** | Bento, BentoTile, KpiCard, SparkCard, Delta |\n| **Drag \u0026 Drop** | Kanban, SortableList, Transfer |\n| **Charts** | 30+ ECharts types — Bar (smart labels), Line, Area, Pie, Donut, Radar, Scatter, Heatmap, Treemap, Sankey, Funnel, Gauge, Candlestick, Boxplot, Calendar, Sunburst, Graph, Parallel, ThemeRiver, WordCloud, GeoMap |\n\n## Installation\n\nLumeo follows the DevExpress / Telerik / Microsoft.Extensions model: a small core package plus opt-in satellites for heavy components — you only pay for what you use. Live, per-package brotli sizes are tracked at [lumeo.nativ.sh/docs/bundle-facts](https://lumeo.nativ.sh/docs/bundle-facts).\n\n```bash\n# Core — always required (the bulk of the component set)\ndotnet add package Lumeo\n\n# Add satellites only for the components you use:\ndotnet add package Lumeo.Charts      # Chart and 30+ subtypes\ndotnet add package Lumeo.DataGrid    # DataGrid, DataTable, Filter\ndotnet add package Lumeo.Editor      # RichTextEditor\ndotnet add package Lumeo.Scheduler   # Scheduler\ndotnet add package Lumeo.Gantt       # Gantt\ndotnet add package Lumeo.Motion      # 30 motion primitives\n```\n\nOr reference them in your `.csproj`. All packages share one version (lockstep) — always upgrade them together:\n\n```xml\n\u003cItemGroup\u003e\n  \u003cPackageReference Include=\"Lumeo\"            Version=\"3.1.0\" /\u003e\n  \u003c!-- add only the satellites you need: --\u003e\n  \u003cPackageReference Include=\"Lumeo.Charts\"    Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.DataGrid\"  Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.Editor\"    Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.Scheduler\" Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.Gantt\"     Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.Motion\"    Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.PdfViewer\" Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.Maps\"      Version=\"3.1.0\" /\u003e\n  \u003cPackageReference Include=\"Lumeo.CodeEditor\" Version=\"3.1.0\" /\u003e\n\u003c/ItemGroup\u003e\n```\n\n`@using Lumeo` covers all satellite components — no extra `@using` directives needed.\n\n## Companion packages\n\nLumeo ships with three optional companion packages that extend the core library.\n\n### `Lumeo.Cli` — shadcn-style vendoring\n\nCopy component source into your own repo so you can fork and customize it — like shadcn/ui on the JS side.\n\n```bash\ndotnet tool install -g Lumeo.Cli\nlumeo init                # one-time — writes lumeo.config.json\nlumeo add button dialog   # copy components into your repo\nlumeo list                # list all registry entries\nlumeo diff button         # diff vendored copy vs registry\n```\n\n### `Lumeo.Templates` — `dotnet new` scaffolders\n\n```bash\ndotnet new install Lumeo.Templates\ndotnet new lumeo-page       -n SettingsPage\ndotnet new lumeo-form       -n RegisterForm\ndotnet new lumeo-component  -n FancyCard\n```\n\n### `@lumeo-ui/mcp-server` — MCP server for LLM codegen\n\nGive Claude, ChatGPT, Copilot, or Cursor the schemas + examples they need to write correct Lumeo markup. Nine tools: `lumeo_list_components`, `lumeo_search`, `lumeo_get_component` (full per-parameter schema), `lumeo_get_example`, `lumeo_get_install`, `lumeo_validate_markup` (pre-flight check Razor for hallucinated APIs / bad enums / bad nesting), `lumeo_get_theme_tokens`, `lumeo_list_patterns` / `lumeo_get_pattern`, `lumeo_changelog`.\n\n```bash\nnpm install -g @lumeo-ui/mcp-server\n# then wire into Claude Desktop / Cursor / your MCP client config\n```\n\n### Lumeo Agent Skill — `skills/lumeo/`\n\nA portable [agent skill](https://docs.claude.com/en/docs/agents-and-tools/agent-skills) that teaches Claude Code, Cursor, Codex, Gemini CLI, OpenCode and 50+ other AI agents the Lumeo conventions and how to drive the `lumeo-mcp` server.\n\n```bash\nnpx skills add github.com/Brain2k-0005/Lumeo/skills/lumeo\n```\n\nInstalls to `.agents/skills/lumeo/` in your current project with symlinks for every supported agent. Use the Vercel-Labs [`skills` CLI](https://github.com/vercel-labs/skills) — discoverable at [skills.sh](https://skills.sh). The skill auto-activates whenever you mention a Lumeo component.\n\nOther install methods (manual copy, per-project, global) are documented in [`skills/lumeo/README.md`](skills/lumeo/README.md).\n\n## Setup\n\n### 1. Register services\n\n```csharp\n// Program.cs\nusing Lumeo;\n\nbuilder.Services.AddLumeo();\n```\n\n### 2. Add imports\n\n```razor\n@* _Imports.razor *@\n@using Lumeo\n@using Lumeo.Services\n```\n\n### 3. Include scripts and styles\n\nAdd to your `index.html` (WASM) or `_Host.cshtml` (Server):\n\n```html\n\u003c!-- Lumeo design tokens (CSS variables + keyframes) --\u003e\n\u003clink rel=\"stylesheet\" href=\"_content/Lumeo/css/lumeo.css\" /\u003e\n\n\u003c!-- Pre-compiled Tailwind utilities Lumeo's components need (no local Tailwind build required) --\u003e\n\u003clink rel=\"stylesheet\" href=\"_content/Lumeo/css/lumeo-utilities.css\" /\u003e\n\n\u003c!-- Theme initialization (prevents flash of unstyled content) --\u003e\n\u003cscript src=\"_content/Lumeo/js/theme.js\"\u003e\u003c/script\u003e\n\n\u003c!-- Component interop (loaded on demand, but can be preloaded) --\u003e\n\u003cscript src=\"_content/Lumeo/js/components.js\" type=\"module\"\u003e\u003c/script\u003e\n```\n\nThat's enough to make every Lumeo component render correctly. **You don't need Tailwind installed in your app.**\n\n### 4. (Optional) Use Tailwind in your own markup\n\nIf you want to write Tailwind classes yourself (in your pages / your own components), install Tailwind CSS v4 in your app and import Lumeo's tokens so utilities like `bg-primary` resolve against Lumeo's theme:\n\n```css\n@import \"tailwindcss\";\n\n/* Import Lumeo theme variables */\n@import \"./_content/Lumeo/css/lumeo.css\" layer(base);\n\n/* Dark mode variant */\n@variant dark (\u0026:where(.dark, .dark *));\n\n/* Map Lumeo CSS variables to Tailwind theme */\n@theme {\n  --color-background: var(--color-background);\n  --color-foreground: var(--color-foreground);\n  --color-primary: var(--color-primary);\n  --color-primary-foreground: var(--color-primary-foreground);\n  /* ... see lumeo.css for full variable list */\n}\n```\n\nIn this setup you can drop `lumeo-utilities.css` from step 3 — your own Tailwind build will emit every utility Lumeo uses, plus anything you use in your app.\n\nFor alternate color themes, import additional theme files:\n\n```css\n@import \"./_content/Lumeo/css/themes/_blue.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_green.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_rose.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_orange.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_violet.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_amber.css\" layer(base);\n@import \"./_content/Lumeo/css/themes/_teal.css\" layer(base);\n```\n\n## Usage\n\n```razor\n@using Lumeo\n\n\u003cCard\u003e\n    \u003cCardHeader\u003e\n        \u003cHeading Level=\"3\"\u003eHello Lumeo\u003c/Heading\u003e\n        \u003cText Size=\"sm\" Color=\"muted\"\u003eA beautiful component library.\u003c/Text\u003e\n    \u003c/CardHeader\u003e\n    \u003cCardContent\u003e\n        \u003cButton OnClick=\"@(() =\u003e count++)\"\u003e\n            Clicked @count times\n        \u003c/Button\u003e\n    \u003c/CardContent\u003e\n\u003c/Card\u003e\n\n@code {\n    private int count;\n}\n```\n\n### Dialogs\n\n```razor\n\u003cDialog @bind-IsOpen=\"dialogOpen\"\u003e\n    \u003cDialogTrigger\u003e\n        \u003cButton Variant=\"Button.ButtonVariant.Outline\"\u003eOpen Dialog\u003c/Button\u003e\n    \u003c/DialogTrigger\u003e\n    \u003cDialogContent Size=\"DialogContent.DialogSize.Lg\"\u003e\n        \u003cDialogHeader\u003e\n            \u003cDialogTitle\u003eAre you sure?\u003c/DialogTitle\u003e\n            \u003cDialogDescription\u003eThis action cannot be undone.\u003c/DialogDescription\u003e\n        \u003c/DialogHeader\u003e\n        \u003cDialogFooter\u003e\n            \u003cButton Variant=\"Button.ButtonVariant.Secondary\" OnClick=\"@(() =\u003e dialogOpen = false)\"\u003eCancel\u003c/Button\u003e\n            \u003cButton OnClick=\"Confirm\"\u003eConfirm\u003c/Button\u003e\n        \u003c/DialogFooter\u003e\n    \u003c/DialogContent\u003e\n\u003c/Dialog\u003e\n```\n\n### Toasts\n\n```razor\n@inject ToastService Toast\n\n\u003cButton OnClick=\"@(() =\u003e Toast.Success(\"Saved!\", \"Your changes have been saved.\"))\"\u003e\n    Save\n\u003c/Button\u003e\n```\n\n### Form Validation\n\n```razor\n\u003cForm Model=\"model\" OnValidSubmit=\"HandleSubmit\"\u003e\n    \u003cFormField Label=\"Email\" HelpText=\"We'll never share your email.\" Required\u003e\n        \u003cInput @bind-Value=\"model.Email\" type=\"email\" /\u003e\n    \u003c/FormField\u003e\n    \u003cFormField Label=\"Password\" Required\u003e\n        \u003cPasswordInput @bind-Value=\"model.Password\" ShowStrength /\u003e\n    \u003c/FormField\u003e\n    \u003cButton type=\"submit\"\u003eSign Up\u003c/Button\u003e\n\u003c/Form\u003e\n```\n\n## Theming\n\n### Switch color schemes at runtime\n\n```razor\n\u003cThemeSwitcher /\u003e\n```\n\nOr programmatically via `ThemeService`:\n\n```razor\n@inject ThemeService Theme\n\n\u003cButton OnClick=\"@(() =\u003e Theme.SetSchemeAsync(\"blue\"))\"\u003e\n    Switch to Blue\n\u003c/Button\u003e\n```\n\n### Available themes\n\n| Theme  | Primary Color            | Character         |\n|--------|--------------------------|-------------------|\n| Zinc   | `hsl(240 5% 26%)`       | Clean, neutral    |\n| Blue   | `hsl(221 83% 53%)`      | Corporate, trust  |\n| Green  | `hsl(142 71% 45%)`      | Growth, eco       |\n| Rose   | `hsl(347 77% 50%)`      | Warm, energetic   |\n| Orange | `hsl(14 70% 50%)`       | Warm brand        |\n| Violet | `hsl(262 83% 58%)`      | Bold, creative    |\n| Amber  | `hsl(38 92% 50%)`       | Energy, attention |\n| Teal   | `hsl(173 80% 40%)`      | Calm, modern      |\n\n### Dark mode\n\n```razor\n\u003c!-- Toggle button --\u003e\n\u003cThemeToggle /\u003e\n\n\u003c!-- Or programmatically --\u003e\n@inject ThemeService Theme\n\nawait Theme.SetModeAsync(ThemeMode.Dark);   // Force dark\nawait Theme.SetModeAsync(ThemeMode.Light);  // Force light\nawait Theme.SetModeAsync(ThemeMode.System); // Follow OS preference\nawait Theme.ToggleModeAsync();              // Toggle current\n```\n\n## Documentation\n\n- **[Live Docs](https://lumeo.nativ.sh)** — Full component demos and API reference\n- **[Form Validation Guide](https://lumeo.nativ.sh/docs/form-validation)** — DataAnnotations, custom validators, examples\n- **[Accessibility Guide](https://lumeo.nativ.sh/docs/accessibility)** — ARIA roles, keyboard patterns, focus management\n- **[Contributing Guide](https://lumeo.nativ.sh/docs/contributing)** — Setup, component creation, testing, code style\n- **[Changelog](https://lumeo.nativ.sh/docs/changelog)** — Full release history\n- **[Migration Guide](./MIGRATION.md)** — 2.x → 3.0 upgrade notes\n\n## Tech Stack\n\n- .NET 10 / Blazor\n- Tailwind CSS v4\n- ECharts for charts, FullCalendar for Scheduler, Frappe Gantt for Gantt, TipTap for RichTextEditor\n- ClosedXML + QuestPDF for DataGrid export\n- [Blazicons.Lucide](https://github.com/nickvdyck/blazicons) for icons\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrain2k-0005%2Flumeo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrain2k-0005%2Flumeo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrain2k-0005%2Flumeo/lists"}