Skip to content

fix(theme): remove extra shade (950) from the color scales for consistency in dark mode#199

Merged
desmondinho merged 2 commits intodevfrom
fix/dark-theme
Mar 12, 2025
Merged

fix(theme): remove extra shade (950) from the color scales for consistency in dark mode#199
desmondinho merged 2 commits intodevfrom
fix/dark-theme

Conversation

@desmondinho
Copy link
Contributor

@desmondinho desmondinho commented Mar 12, 2025

Description

Closes #197

This PR removes the extra 950 shade from the theme color scales to maintain an even number of shades. This ensures that when a scale is reversed for dark mode, it provides a sufficiently contrasting shade.

For example:

Before

// light mode

foreground-50 (shade 50 of the scale)
foreground-100 (shade 100 of the scale)
foreground-200 (shade 200 of the scale)
foreground-300 (shade 300 of the scale)
foreground-400 (shade 400 of the scale)
foreground-500 (shade 500 of the scale) <---
foreground-600 (shade 600 of the scale)
foreground-700 (shade 700 of the scale)
foreground-800 (shade 800 of the scale)
foreground-900 (shade 900 of the scale)
foreground-950 (shade 950 of the scale)
// dark mode (reversed light mode)

foreground-50 (shade 950 of the scale)
foreground-100 (shade 900 of the scale)
foreground-200 (shade 800 of the scale)
foreground-300 (shade 700 of the scale)
foreground-400 (shade 600 of the scale)
foreground-500 (shade 500 of the scale) <---
foreground-600 (shade 400 of the scale)
foreground-700 (shade 300 of the scale)
foreground-800 (shade 200 of the scale)
foreground-900 (shade 100 of the scale)
foreground-950 (shade 50 of the scale)

This setup causes a contrast issue for shade 500 in dark mode because it remains the same in both modes due to the odd number of shades (11).

Now

// light mode

foreground-50 (shade 50 of the scale)
foreground-100 (shade 100 of the scale)
foreground-200 (shade 200 of the scale)
foreground-300 (shade 300 of the scale)
foreground-400 (shade 400 of the scale)
foreground-500 (shade 500 of the scale) <---
foreground-600 (shade 600 of the scale)
foreground-700 (shade 700 of the scale)
foreground-800 (shade 800 of the scale)
foreground-900 (shade 900 of the scale)
// dark mode (reversed light mode)

foreground-50 (foreground-900 of the scale)
foreground-100 (foreground-800 of the scale)
foreground-200 (foreground-700 of the scale)
foreground-300 (foreground-600 of the scale)
foreground-400 (foreground-500 of the scale)
foreground-500 (foreground-400 of the scale) <---
foreground-600 (foreground-300 of the scale)
foreground-700 (foreground-200 of the scale)
foreground-800 (foreground-100 of the scale)
foreground-900 (foreground-50 of the scale)

This setup makes the shades of the dark color scale lighter, resolving the contrast issue.

What's been done?

  • Removed the extra 950 shade from the theme color scales

Checklist

  • My code follows the project's coding style and guidelines.
  • I have included inline docs for my changes, where applicable.
  • I have added, updated or removed tests according to my changes.
  • All tests are passing.
  • There's an open issue for the PR that I am making.

Additional Notes

Summary by CodeRabbit

  • New Features

    • Introduced a method to exclude the last color entry from theme color selections, enhancing the color palette management for both Light and Dark modes.
  • Bug Fixes

    • Updated expected counts for theme color properties in unit tests to reflect the new color configuration.
  • Chores

    • Updated documentation to specify version 4.0.9 for downloading Tailwind CSS CLI, ensuring compatibility and stability.

@desmondinho desmondinho self-assigned this Mar 12, 2025
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2025

Walkthrough

This pull request introduces a new static class DictionaryExtensions with a method TakeAllExceptLast that returns all entries of an input dictionary except for the last specified count. The method includes appropriate error handling and uses LINQ for selection. Additionally, the theme color definitions in SemanticColors.cs now use this method to exclude the final color in each collection, and related tests have been updated: obsolete CSS variable checks were removed and expected color counts were adjusted accordingly.

Changes

File(s) Change Summary
src/LumexUI/Extensions/DictionaryExtensions.cs Added new static class with TakeAllExceptLast method performing safe removal of the last N entries from a dictionary.
src/LumexUI/Theme/Colors/SemanticColors.cs Replaced direct spread operator usage with .TakeAllExceptLast() for color selections in both Light and Dark themes.
tests/LumexUI.Tests/Components/Providers/ThemeProviderTests.cs
tests/LumexUI.Tests/Theme/ThemeTests.cs
Removed several CSS variable declarations from tests and updated expected color counts to reflect the modifications in color collections.
docs/LumexUI.Docs/LumexUI.Docs.csproj Updated URLs for downloading Tailwind CSS CLI to specify version 4.0.9 for Windows and Linux.

Sequence Diagram(s)

sequenceDiagram
    participant Theme as Theme Configuration
    participant Colors as Colors Collection
    participant Ext as DictionaryExtensions

    Theme->>Colors: Retrieve Colors (e.g., Colors.Zinc)
    Colors->>Ext: Invoke .TakeAllExceptLast(count)
    Ext-->>Colors: Return filtered dictionary (without last count entries)
    Colors->>Theme: Apply updated color set to properties
Loading

Possibly related PRs

  • feat(docs): add the Theme page #72: The changes in the main PR, which introduce the TakeAllExceptLast method in the DictionaryExtensions class, are directly utilized in the SemanticColors.cs file to modify how theme colors are selected.
  • docs(theme): add missing types; improve the 'Usage' section #73: The changes in the main PR, specifically the introduction of the TakeAllExceptLast method in DictionaryExtensions, are directly utilized in the SemanticColors.cs file to modify how color values are selected.
  • feat(docs): add the Customize Theme page #116: The changes in the main PR, which introduce the TakeAllExceptLast method in the DictionaryExtensions class, are related to the modifications in the retrieved PR that utilize this method to alter color selections in the SemanticColors.cs file.

Poem

In the coding burrow, I hop and cheer,
A new method brings colors ever so clear.
With a skip of the last, my steps feel light,
Themes refined in day and dark of night.
CodeRabbit Inc leaps with joy in each byte! 🐇


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@desmondinho desmondinho added 📦 Scope: Components Improvements or additions to components ♿️ Scope: Accessibility labels Mar 12, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
tests/LumexUI.Tests/Theme/ThemeTests.cs (1)

17-109: 💡 Verification agent

🧩 Analysis chain

Verify theme consistency with generated colors

While the test count updates are correct, consider adding assertions to explicitly verify that shade 950 is not present in any color scale. This would provide a more robust test that directly validates the PR's objective.


🏁 Script executed:

#!/bin/bash
# Check that no 950 shade is present in any color scale

# Look for '950' keys in color definitions
rg -A 5 -B 5 '"950"' src/LumexUI/Theme/

Length of output: 15767


Ensure the '950' shade is explicitly excluded from theme color scales

The updated test counts are correct, but the tests do not currently validate that the unintended '950' shade is completely removed. To provide a more robust check aligned with the PR's objective, please add assertions in tests/LumexUI.Tests/Theme/ThemeTests.cs (or the appropriate test file) that iterate through each color scale and assert that the '950' key is not present. For example, after initializing your theme instance, add tests such as:

  • theme.Light.Colors.Default.Should().NotContainKey("950");
  • theme.Dark.Colors.Default.Should().NotContainKey("950");
  • (and similar assertions for other color scales)

This additional validation will directly confirm that the theme generation process filters out the '950' shade as expected.

🧹 Nitpick comments (2)
src/LumexUI/Extensions/DictionaryExtensions.cs (2)

1-27: Clean implementation with a minor error message inconsistency

The implementation of TakeAllExceptLast is well-structured with proper error handling. However, there's a discrepancy in the error message on line 15 - it states "The count must be greater than one" but the check is for count < 1, which means count should be greater than or equal to one.

-			throw new ArgumentOutOfRangeException( nameof( count ), count, "The count must be greater than one." );
+			throw new ArgumentOutOfRangeException( nameof( count ), count, "The count must be greater than or equal to one." );

Also, consider whether this utility method should be excluded from code coverage, as it's an important component now being used throughout the theme system.


5-6: Consider making this class public

Since this utility method provides functionality that could be useful throughout the codebase, consider making the class public instead of internal to allow broader reuse.

-internal static class DictionaryExtensions
+public static class DictionaryExtensions
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3708bc2 and cea6b11.

📒 Files selected for processing (4)
  • src/LumexUI/Extensions/DictionaryExtensions.cs (1 hunks)
  • src/LumexUI/Theme/Colors/SemanticColors.cs (2 hunks)
  • tests/LumexUI.Tests/Components/Providers/ThemeProviderTests.cs (0 hunks)
  • tests/LumexUI.Tests/Theme/ThemeTests.cs (3 hunks)
💤 Files with no reviewable changes (1)
  • tests/LumexUI.Tests/Components/Providers/ThemeProviderTests.cs
🔇 Additional comments (5)
src/LumexUI/Theme/Colors/SemanticColors.cs (3)

5-6: LGTM: Proper import for the new extensions

The import for the LumexUI.Extensions namespace is correctly added to utilize the new TakeAllExceptLast extension method.


28-28: Effective implementation of the color scale fix

The use of TakeAllExceptLast() effectively removes the 950 shade from the color scales in the Light theme, addressing the issue of maintaining an even number of shades for proper contrast in dark mode.

Also applies to: 53-53, 58-58, 63-63, 68-68, 73-73, 78-78, 83-83


98-98: Consistent application in Dark theme

The same pattern is correctly applied to the Dark theme with ReverseColorValues(Colors.*.TakeAllExceptLast()), ensuring consistent color scale size between themes.

Also applies to: 123-123, 128-128, 133-133, 138-138, 143-143, 148-148, 153-153

tests/LumexUI.Tests/Theme/ThemeTests.cs (2)

20-20: Tests correctly updated for Foreground counts

The expected counts for Foreground colors have been properly adjusted from 12 to 11 to match the removal of the 950 shade.

Also applies to: 36-36


55-55: Tests correctly updated for all other color property counts

The expected counts for Default, Primary, Secondary, Success, Warning, Danger, and Info colors in both Light and Dark themes have been properly adjusted from 13 to 12.

Also applies to: 59-59, 63-63, 67-67, 71-71, 75-75, 79-79, 83-83, 87-87, 91-91, 95-95, 99-99, 103-103, 107-107

@desmondinho desmondinho mentioned this pull request Mar 12, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
docs/LumexUI.Docs/LumexUI.Docs.csproj (2)

31-32: Explicit Version Pinning for Windows Tailwind CLI
The URL now explicitly points to version v4.0.9 which helps ensure consistent behavior and prevents unexpected breaking changes that might occur if the "latest" release was used.


35-36: Explicit Version Pinning for Linux Tailwind CLI
The URL has been updated to reference version v4.0.9, aligning the Linux download with the Windows version. This change improves reproducibility by avoiding potential issues from using a moving target (latest).

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cea6b11 and fa7c18a.

📒 Files selected for processing (1)
  • docs/LumexUI.Docs/LumexUI.Docs.csproj (1 hunks)

@desmondinho desmondinho merged commit 8d21401 into dev Mar 12, 2025
4 checks passed
@desmondinho desmondinho deleted the fix/dark-theme branch March 12, 2025 12:45
desmondinho added a commit that referenced this pull request Mar 12, 2025
…tency in dark mode (#199) (#200)

* fix(theme): remove extra key (950) from the color scales for consistency in dark mode

* build(docs): explicitly set Tailwind v4.0.9
desmondinho added a commit that referenced this pull request Mar 15, 2025
* fix(theme): remove extra shade (950) from the color scales for consistency in dark mode (#199)

* fix(theme): remove extra key (950) from the color scales for consistency in dark mode

* build(docs): explicitly set Tailwind v4.0.9

* feat(components): introduce Avatar and AvatarGroup components (#201)

* feat: add baseline implementation

* feat: add slots

* feat: add basic slots styles

* feat: add appearance params, such as `Color`, `Radius`, `Size`

* feat: add `Bordered` and `Disabled` params

* feat: add compound variants styles

* feat: apply slots styles

* docs: add baseline examples page

* feat: add `data-loaded` attribute on img

* feat: add `ShowFallback` parameter

* chore: fix compound style variants

* chore: set `showFallback` on after first render

* feat(utils): add implicit cast to string for the `ElementClass`

* feat: add LumexAvatarGroup component

* feat: take into account when LumexAvatar is rendered inside the LumexAvatarGroup

* feat: add `AvatarClasses` parameter in the avatar group component

* docs: add Avatar page

* build(docs): explicitly set Tailwind v4.0.9

* test: add tests for LumexAvatar and LumexAvatarGroup components

* chore: simplify condition for fallback render

* fix(docs): replace usages of `-foreground-950` CSS classes with `-foreground-900`

* fix(docs): remove `dark:prose-invert` CSS class until dark theme is properly configured

* feat(components): introduce Skeleton component (#202)

* feat(skeleton): add baseline implementation of the component

* feat(skeleton): add slots and styles

* feat(skeleton): add XML summaries

* fix(skeleton): return back `after` pseudo CSS classes to prevent flickering on state change

* docs(skeleton): add Skeleton page

* test(skeleton): add tests

* docs(skeleton): fix Loading example button text

* fix(navbar): add a check before toggling navbar menu on navigation (#204)

* v2.0.0-preview.3
desmondinho added a commit that referenced this pull request Aug 24, 2025
* feat: support Tailwind CSS v4 (#183)

* build(deps): bump TailwindMerge.NET from 0.3.0 to 1.0.0

* feat: add new CSS theme file

* feat/build: add custom targets file to improve library usability

* chore: move `Plugin` folder one level higher; remove `Scripts` folder

* feat/build: pack new theme and custom `.targets` files

* build(docs): add `Directory.Build.props` and `Directory.Build.targets`

* chore(docs): remove tailwind npm deps; use standalone CLI instead

* docs: apply `static` on theme

* refactor(theme-provider): simplify names of box-shadow css variables

* refactor(theme-provider): opacities are percentage to match `color-mix` function syntax

* chore(components): apply  `static` on theme; fix some vars

* refactor(components): drop Tailwind CSS v3 support

* feat(theme): add custom transition variables

* fix(theme): correct `default` color; add `default-foreground` color

* chore(theme): add reference for the custom transitions approach (it's not in docs afaik)

* fix: rename `shadow-sm` to `shadow-xs`

* fix: rename `rounded-sm` to `rounded-xs`

* fix: rename `rounded` to `rounded-sm`

* fix: rename `outline-none` to `outline-hidden`

* fix: rename `ring-1` to `ring`

* fix(button): add base `cursor-pointer` class

* docs: remove `children` custom variant in favor of `*`

* fix(theme): correct `enter` custom animation

* chore(components): cleanup styles

* fix(theme): add missing comma separator in custom transition vars

* docs: configure typography

* refactor(theme): simplify `scrollbar-hide` utility

* chore(theme): apply `inline` on theme

* refactor: replace `theme` function with CSS vars

* fix(components): correct scale/translate transitions

* feat(theme): update colors from hex to oklch

* docs(installation): update installation guide

* feat(theme): add leading CSS vars

* chore(docs): fix prose `<code>` tag ticks

* refactor(utils): remove hex luminance calculator

* docs(customization): update Theme and Colors pages

* docs(colors): remove 'common colors are not configurable' callout

* fix(checkbox): correct radius styles

* fix(data-grid): correct striped styles

* fix(input/select): correct label placement out transitions

* fix(input/select): correct outlined variant focus styles

* fix(input): add cursor-pointer style on the clear button

* fix(input/select): correct flat variant focus styles

* fix(docs): correct some component examples

* build(docs): adjust Tailwind standalone CLI file download for Linux

* build(docs): adjust Tailwind standalone CLI file download for Linux

* ci(deploy): try add staging env in the ci/cd

* ci(build-test): change trigger branch

* ci(deploy): update trigger branches

* ci(deploy): change env vars usage (test)

* ci: add deploy-dev.yml; revert deploy.yml

* ci(deploy): test staging

* chore(docs): nits

* chore(components): tweak styles of some components

* chore(docs): tweak some components examples

* chore: coderabbit comments

* ci: remove deploy-dev.yml

* fix(theme): remove extra shade (950) from the color scales for consistency in dark mode (#199)

* fix(theme): remove extra key (950) from the color scales for consistency in dark mode

* build(docs): explicitly set Tailwind v4.0.9

* feat(components): introduce Avatar and AvatarGroup components (#201)

* feat: add baseline implementation

* feat: add slots

* feat: add basic slots styles

* feat: add appearance params, such as `Color`, `Radius`, `Size`

* feat: add `Bordered` and `Disabled` params

* feat: add compound variants styles

* feat: apply slots styles

* docs: add baseline examples page

* feat: add `data-loaded` attribute on img

* feat: add `ShowFallback` parameter

* chore: fix compound style variants

* chore: set `showFallback` on after first render

* feat(utils): add implicit cast to string for the `ElementClass`

* feat: add LumexAvatarGroup component

* feat: take into account when LumexAvatar is rendered inside the LumexAvatarGroup

* feat: add `AvatarClasses` parameter in the avatar group component

* docs: add Avatar page

* build(docs): explicitly set Tailwind v4.0.9

* test: add tests for LumexAvatar and LumexAvatarGroup components

* chore: simplify condition for fallback render

* fix(docs): replace usages of `-foreground-950` CSS classes with `-foreground-900`

* fix(docs): remove `dark:prose-invert` CSS class until dark theme is properly configured

* feat(components): introduce Skeleton component (#202)

* feat(skeleton): add baseline implementation of the component

* feat(skeleton): add slots and styles

* feat(skeleton): add XML summaries

* fix(skeleton): return back `after` pseudo CSS classes to prevent flickering on state change

* docs(skeleton): add Skeleton page

* test(skeleton): add tests

* docs(skeleton): fix Loading example button text

* fix(navbar): add a check before toggling navbar menu on navigation (#204)

* feat(components): introduce Spinner component (#207)

* feat(spinner): add baseline implementation

* feat(spinner): add variants and styles

* feat(spinner): add slots

* docs(spinner): add Spinner page

* docs: nits

* test(spinner): add tests

* docs: map static assets

* build(docs): remove extra MSBuild target for the Tailwind prod build

* docs: revert static assets changes

* docs: update static assets usage

* Revert "docs: update static assets usage"

This reverts commit 94ae9ec.

* feat(components): introduce Chip component (#211)

* feat(chip): add baseline implementation

* feat(chip): add ChipVariant enum

* feat(chip): add appearance parameters and styles

* feat(chip): add AvatarContent parameter

* feat(chip): adjust paddings when chip has start/end content

* docs(chip): add Chip page

* feat(chip): add XML summaries

* test(chip): add tests

* chore(components): add missing XML documentation summaries

* feat(components): add new Badge component (#222)

* feat(badge): initial

* feat(badge): add badge slots

* feat(badge): add badge baseline implementation

* feat(badge): add base visual-related params

* feat(badge): add majority of badge styles

* feat(badge): add outline around badge

* feat(badge): add `Invisible` param to control badge visibility

* feat(badge): add `IsOneChar` param to make badge equilateral

* feat(badge): decrease badge dimensions if no content provided

* refactor(badge): rename `IsOneChar` param to `OneChar`

* fix(badge): use correct type for `Variant` param

* feat(badge): apply CSS classes directly to the badge slot

* fix(badge): ensure correct placement styles

* fix(badge): correct `Content` check condition

* fix(badge): allow null for content

* fix(badge): properly render Content as RenderFragment

* docs(badge): add Badge docs page

* test(badge): add tests

* test(badge): add more tests

* fix(badge): ensure `OneChar` param is taken into account

* fix(badge): fix one char switch

* chore: apply CodeRabbit suggestions

* build(deps): bump requests from 2.32.0 to 2.32.4 in /scripts (#219)

Bumps [requests](https://github.com/psf/requests) from 2.32.0 to 2.32.4.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](psf/requests@v2.32.0...v2.32.4)

---
updated-dependencies:
- dependency-name: requests
  dependency-version: 2.32.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(components): add Tooltip component (#224)

* feat(tooltip): initial

* refactor(popover): introduce PopoverWrapper to simplify open state

* fix(popover): ensure arrow is positioned correctly

* fix(popover): ensure popover closes on trigger click if already opened

* fix(popover): position flicker

* test(popover/dropdown): adjust tests

* refactor(popover): remove LastShown meta from popover service

* feat(tooltip): add baseline implementation

* feat(tooltip): add common visual-related parameters to pass into popover

* feat(tooltip): add OpenDelay and CloseDelay params

* docs(tooltip): add Tooltip page

* feat(tooltip): pass slots to popover

* chore(popover): add full radius styles

* test(tooltip): add tests

* docs(tooltip): minor tweaks

* docs(tooltip): typo

* feat(components): add Alert component (#225)

* feat(alert): add baseline implementation

* feat(alert): add styles (may be not complete)

* feat(alert): complete styles

* feat(button): add full radius styles

* feat(alert): apply styles

* feat(alert): add close button handler

* chore(alert): complete XML docs summaries

* chore(docs): adjust background colors for preview and toolbar

* chore(components): darken text color for warning flat variant

* chore(alert): styling tweaks

* feat(docs): add Alert page

* chore(alert): add missing close-button slot attribute

* chore(alert): ensure TitleContent takes precedence over Title

* docs(alert): add callout regarding Title and TitleContent parameters usage

* test(alert): add tests

* fix(theme): add tw custom CSS class-based dark mode variant (#226)

* refactor(theme): replace C# theme config with a new CSS-first approach (#229)

* feat(theme): add light and dark theme CSS files

* refactor(components): cleanup theme provider

* refactor(theme): remove Theme directory

* test(theme): remove Theme directory

* docs(theme): remove theme config

* fix(alert): correct RenderFragment parameters usage

* chore(theme): correct theme variables

* docs(customization): replace Customization section with Theming

* test(theme-provider): remove all tests

* feat(theme): introduce a mechanism to toggle light/dark modes (#230)

* feat(theme): introduce Theme service to manage and persist theme settings (JS)

* feat(theme): introduce Theme service to manage and persist theme settings

* docs(*): rename ComponentStatus enum to PageStatus

* docs(theming): add Dark Mode page

* chore(docs): component rename

* feat(button): add new `IconOnly` parameter

* docs(button): add demo for `IconOnly` parameter

* refactor(*): remove all bundled Google Material Icons and related code (#232)

* build: add new shared icons project

* feat(icons): add base icon component

* feat(icons): add dynamic icon component

* feat(icons): add some icons

* build(deps): reference icons in components

* refactor(accordion): use new icon components

* docs(components): use new icons in Callout components

* docs(*): use new icons

* refactor(icons): add "Icon" suffix; add more icons

* docs(*): use new icons

* test(*): fix tests

* refactor(components): remove `LumexIcon` component

* docs(datagrid): formatting

* refactor(icons): remove all Google Material Icons

* refactor(icons): remove script for downloading/updating icons

* feat(components): add dark mode support (#234)

* feat(alert): add dark mode support

* feat(button): add dark mode support

* feat(chip): add dark mode support

* feat(datagrid): add dark mode support

* feat(textbox/numbox): add dark mode support

* feat(listbox): add dark mode support

* feat(menu): add dark mode support

* feat(select): add dark mode support

* feat(tabs): add dark mode support

* fix(theme): ensure default values are of correct shade in dark mode

* feat(theme): add `color-scheme` in light theme

* fix(icons): use better icons for alert component

* docs: add dark mode support + theme toggle (#235)

* docs: add dark mode support

* docs: add missing border for the preview component

* docs: remove extra border in the preview code component

* chore(badge): improve flat variant contrast in light theme

* chore(tabs): remove `EditorRequired` attribute from `Id` param

* docs: add null check and theme class cleanup to prevent issues

* docs: remove IPopoverService injection from theme toggle component

* chore(components): remove unused / redundant types

* fix(data-grid): correct outside click handler creation

* feat(popover): enable position autoUpdate

* refactor(popover): make use of popover trigger component instead of service

* feat(dropdown): introduce dropdown trigger component instead of relying on popover service

* docs(dark-mode): update theme toggle dropdown example

* docs: add Home page with library usage examples (#241)

* feat(icons): add more icons

* docs: add showcases on home page

* chore(components): adjust some styles

* docs(overview): update paths

* chore(docs): nits

* fix(components): add missing popover js parts

* chore(docs): nits

* fix(popover): use overlay to close instead of custom outside click event

* fix(tooltip): remove pressed effect from on trigger hover

* chore(showcases): complete column visibility toggling in UserTable example

* chore(showcases): adjust legend color in usage chart

* test(popover): update tests

* chore(docs): coderabbit suggestions

* chore(*): migrate to DigitalOcean app platform

* fix(*): update custom LumexUI targets to copy theme files before build

* chore(*): add missing css files in the pack

* v2.0.0-preview.4

* perf(*): optimize fonts in docs app

* fix(docs): stylesheets import ordering

* perf(docs): optimize docs CSS output

* fix(docs): correct linux tailwind executable file name

* chore(*): delete update-icons.yml

* perf(docs): enable stream rendering on all pages

* fix(docs): ensure initial theme is set

* docs(overview): update content

* docs(installation): update content

* docs(design-tokens): update content

* docs(customization): update content

* docs(dark-mode): update content

* docs(accordion): update content

* refactor(docs): replace `Callout` with `LumexAlert`

* docs(avatar): update content

* docs(components): replace `Code` component usages with HTML tag

* fix(docs): ensure ThemeSelector sets correct theme value on init

* docs(landing): make adaptive

* docs(customization): add dark mode for global theme sample

* refactor(components): remove deprecated `Root` slot

* refactor(utils): remove redundant; update access modifiers

* docs(card): update slot names

* refactor(docs): make stream rendering global

* docs(header): remove active state from links; update stars counter

* ci(*): remove deploy.yml

* ci: run build-test on PR to main

* v2.0.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

♿️ Scope: Accessibility 📦 Scope: Components Improvements or additions to components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dark mode - DataGrid

1 participant